Apa itu Stack Clash dan apa yang bisa saya lakukan?

27

Saya telah mendengar tentang kerentanan baru bernama Stack Clash yang tampaknya mempengaruhi banyak sistem mirip Unix (tidak hanya Linux, tetapi juga BSD, Solaris).

  • Apa itu? Bagaimana bug multi-OS terjadi?
  • Bagaimana cara melindungi sistem saya?
muru
sumber

Jawaban:

29

Stack Clash adalah eksploitasi berdasarkan teknik yang cukup lama. Memori yang digunakan oleh suatu proses dibagi menjadi dua wilayah - tumpukan dan tumpukan . Orang biasanya membayangkan tumpukan tumbuh ke bawah dan tumpukan tumbuh ke atas. Apa yang terjadi ketika salah satu tumbuh cukup untuk berbenturan dengan yang lain? Lebih umum, apa yang terjadi ketika tumpukan tumbuh cukup untuk merambah ruang memori yang tidak terkait? Kerentanan asli adalah 12 tahun, dan pengembang kernel Linux memperbaikinya sementara dengan menggunakan halaman penjaga . Namun, para peneliti di Qualys telah berhasil mengeksploitasi ini meskipun ada halaman penjaga.

Ars Arsica melaporkan :

Kerentanan Stack Clash perlahan-lahan memperoleh kesadaran luas, pertama pada tahun 2005 dengan temuan peneliti keamanan Gaël Delalleau dan lima tahun kemudian dengan rilis kerentanan Linux oleh peneliti Rafal Wojtczuk. Pengembang Linux memperkenalkan perlindungan yang dimaksudkan untuk mencegah bentrokan tumpukan, tetapi penelitian hari ini menunjukkan bahwa relatif mudah bagi penyerang untuk memotong ukuran itu.

Serangan proof-of-concept utama yang dikembangkan oleh Qualys mengeksploitasi kerentanan yang diindeks sebagai CVE-2017-1000364. Peneliti Qualys juga mengembangkan serangan yang menggunakan Stack Clash untuk mengeksploitasi kerentanan yang terpisah, termasuk CVE-2017-1000365 dan CVE-2017-1000367. Misalnya, ketika dikombinasikan dengan CVE-2017-1000367, cacat yang baru-baru ini diperbaiki di Sudo juga ditemukan oleh Qualys, pengguna lokal dapat mengeksploitasi Sudo untuk mendapatkan hak akses root penuh pada rentang OS yang jauh lebih luas. Qualys sejauh ini tidak dapat melakukan eksploitasi mengeksekusi kode. Satu-satunya aplikasi jarak jauh yang mereka selidiki adalah server email Exim, yang secara kebetulan ternyata tidak dapat dieksploitasi. Qualys mengatakan tidak bisa mengesampingkan kemungkinan eksploitasi eksekusi kode jarak jauh seperti itu ada. Qualys mengatakan akan merilis eksploitasi konsep bukti di kemudian hari,

[...] Lebih banyak informasi tersedia dalam konsultasi teknis terperinci ini dari Qualys dan analisis teknis dari grsecurity ini .

Mengutip artikel LWN tentang perbaikan asli dari 2010:

Karena Linux tidak memisahkan proses stack dan heap pages, memungkinkan overrunning halaman stack ke halaman heap yang berdekatan. Itu berarti bahwa tumpukan yang cukup dalam (dari panggilan rekursif misalnya) dapat berakhir menggunakan memori di heap. Suatu program yang dapat menulis ke halaman tumpukan itu (misalnya klien X) kemudian dapat memanipulasi alamat pengirim salah satu panggilan untuk melompat ke tempat yang dipilihnya. Itu berarti bahwa klien dapat menyebabkan server menjalankan kode pilihannya — eksekusi kode arbitrer — yang dapat dimanfaatkan untuk mendapatkan hak akses root.

Deskripsi di atas berlaku untuk berbagai kernel mirip Unix.

Sementara Ars Technica tidak mencatat solusi sementara yang disebutkan dalam laporan Qualys ("atur  RLIMIT STACK dan RLIMIT_AS  dari  pengguna lokal  dan  layanan jarak jauh  ke nilai rendah"), perlu dicatat bahwa ini tidak selalu melindungi dari eksploitasi ini . Satu-satunya jalan keluar yang aman saat ini adalah memutakhirkan. Menurut analisis grsecurity:

Seharusnya jelas bahwa hanya upaya kernel untuk menyelesaikan masalah ini akan selalu tidak lengkap, karena masalah sebenarnya terletak pada kurangnya stack probing. Karena solusi nyata alternatif tergantung pada pembangunan kembali semua lahan pengguna, ini kemungkinan merupakan satu-satunya solusi yang layak untuk masa mendatang.

Yang terbaik yang bisa kita lakukan sekarang adalah meningkatkan kernel ke versi yang ditambal.

Eksploitasi 2010 menggunakan server X, yang ini menggunakan sudo, yang berikutnya bisa berupa banyak program userland yang, di beberapa titik, dijalankan di bawah hak istimewa yang tinggi.

Qualys belum menerbitkan kode bukti konsep untuk eksploitasi (mereka berencana untuk melakukannya di kemudian hari).


Ada beberapa Pemberitahuan Keamanan Ubuntu yang terkait dengan CVE-2017-1000364:

Perhatikan juga bahwa pelacak CVE mencantumkan beberapa kombinasi rilis / kernel sebagai perbaikan yang tertunda.

Secara umum, perbaikan paling sederhana adalah memperbarui sistem Anda ke paket kernel terbaru ASAP.

Versi kernel yang relevan dari USN (dimusnahkan menggunakan for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)'):

Ubuntu 17.04:
linux-image-4.10.0-24-lowlatency 4.10.0-24.28
linux-image-generic-lpae 4.10.0.24.26
linux-image-generic 4.10.0.24.26
linux-image-4.10.0-24-generic-lpae 4.10.0-24.28
linux-image-4.10.0-24-generik 4.10.0-24.28
linux-image-lowlatency 4.10.0.24.26
Ubuntu 17.04:
linux-image-4.10.0-1008-raspi2 4.10.0-1008.11
linux-image-raspi2 4.10.0.1008.10
Ubuntu 16.10:
linux-image-powerpc-smp 4.8.0.56.69
linux-image-powerpc-e500mc 4.8.0.56.69
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61
linux-image-4.8.0-56-lowlatency 4.8.0-56.61
linux-image-generic 4.8.0.56.69
linux-image-4.8.0-56-generic 4.8.0-56.61
linux-image-powerpc64-emb 4.8.0.56.69
linux-image-virtual 4.8.0.56.69
linux-image-powerpc64-smp 4.8.0.56.69
linux-image-4.8.0-56-generic-lpae 4.8.0-56.61
linux-image-generic-lpae 4.8.0.56.69
linux-image-lowlatency 4.8.0.56.69
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61
Ubuntu 16.10:
linux-image-4.8.0-1040-raspi2 4.8.0-1040.44
linux-image-raspi2 4.8.0.1040.44
Ubuntu 16.04 LTS:
linux-image-powerpc64-smp-lts-utopic 4.4.0.81.87
linux-image-generic-lts-wily 4.4.0.81.87
linux-image-generic-lts-utopic 4.4.0.81.87
linux-image-4.4.0-81-generic-lpae 4.4.0-81.104
linux-image-powerpc64-emb-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc 4.4.0.81.87
linux-image-generic-lpae-lts-xenial 4.4.0.81.87
linux-image-generic-lpae-lts-utopic 4.4.0.81.87
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104
linux-image-powerpc-e500mc-lts-wily 4.4.0.81.87
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104
linux-image-generic-lpae-lts-wily 4.4.0.81.87
linux-image-virtual-lts-vivid 4.4.0.81.87
linux-image-virtual-lts-utopic 4.4.0.81.87
linux-image-virtual 4.4.0.81.87
linux-image-powerpc64-emb-lts-wily 4.4.0.81.87
linux-image-lowlatency-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc-lts-vivid 4.4.0.81.87
linux-image-powerpc64-emb 4.4.0.81.87
linux-image-powerpc-smp-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-generik 4.4.0-81.104
linux-image-powerpc64-smp-lts-vivid 4.4.0.81.87
linux-image-lowlatency-lts-wily 4.4.0.81.87
linux-image-4.4.0-81-lowlatency 4.4.0-81.104
linux-image-generic 4.4.0.81.87
linux-image-lowlatency-lts-xenial 4.4.0.81.87
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.87
linux-image-powerpc64-emb-lts-utopic 4.4.0.81.87
linux-image-generic-lts-xenial 4.4.0.81.87
linux-image-generic-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc-lts-utopic 4.4.0.81.87
linux-image-powerpc-smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104
linux-image-generic-lpae-lts-vivid 4.4.0.81.87
linux-image-generic-lpae 4.4.0.81.87
linux-image-powerpc64-smp-lts-wily 4.4.0.81.87
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.87
linux-image-powerpc-smp-lts-wily 4.4.0.81.87
linux-image-virtual-lts-wily 4.4.0.81.87
linux-image-powerpc64-smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104
linux-image-powerpc-smp-lts-utopic 4.4.0.81.87
linux-image-powerpc-smp-lts-vivid 4.4.0.81.87
linux-image-lowlatency 4.4.0.81.87
linux-image-virtual-lts-xenial 4.4.0.81.87
linux-image-lowlatency-lts-utopic 4.4.0.81.87
Ubuntu 16.04 LTS:
linux-image-4.4.0-1016-gke 4.4.0-1016.16
Ubuntu 16.04 LTS:
linux-image-snapdragon 4.4.0.1061.54
linux-image-4.4.0-1061-snapdragon 4.4.0-1061.66
Ubuntu 16.04 LTS:
linux-image-4.4.0-1020-aws 4.4.0-1020.29
Ubuntu 16.04 LTS:
linux-image-raspi2 4.4.0.1059.60
linux-image-4.4.0-1059-raspi2 4.4.0-1059.67
Ubuntu 16.04 LTS:
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-lowlatency 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-generic 4.8.0-56.61 ~ 16.04.1
linux-image-generic-hwe-16.04 4.8.0.56.27
linux-image-lowlatency-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-generic-lpae 4.8.0-56.61 ~ 16.04.1
linux-image-virtual-hwe-16.04 4.8.0.56.27
linux-image-generic-lpae-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61 ~ 16.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-smp-lts-xenial 4.4.0.81.66
linux-image-lowlatency-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-lowlatency 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-generic-lpae 4.4.0-81.104 ~ 14.04.1
linux-image-generic-lpae-lts-xenial 4.4.0.81.66
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-generik 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104 ~ 14.04.1
linux-image-generic-lts-xenial 4.4.0.81.66
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.66
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.66
linux-image-virtual-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104 ~ 14.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-e500mc 3.13.0.121.131
linux-image-lowlatency-pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-emb 3.13.0-121.170
linux-image-generic-pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc-smp 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500mc 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500 3.13.0-121.170
linux-image-3.13.0-121-generic-lpae 3.13.0-121.170
linux-image-generic-lts-quantal 3.13.0.121.131
linux-image-virtual 3.13.0.121.131
linux-image-powerpc-e500 3.13.0.121.131
linux-image-generic-lts- trusty 3.13.0.121.131
linux-image-3.13.0-121-generic 3.13.0-121.170
linux-image-omap 3.13.0.121.131
linux-image-powerpc64-emb 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-smp 3.13.0-121.170
linux-image-generic 3.13.0.121.131
linux-image-highbank 3.13.0.121.131
linux-image-generic-lts-saucy 3.13.0.121.131
linux-image-powerpc-smp 3.13.0.121.131
linux-image-3.13.0-121-lowlatency 3.13.0-121.170
linux-image-generic-lpae-lts-saucy 3.13.0.121.131
linux-image-generic-lts- raring 3.13.0.121.131
linux-image-powerpc64-smp 3.13.0.121.131
linux-image-generic-lpae-lts- trusty 3.13.0.121.131
linux-image-generic-lpae 3.13.0.121.131
linux-image-lowlatency 3.13.0.121.131
Ubuntu 12.04 ESM:
linux-image-powerpc-smp 3.2.0.128.142
linux-image-3.2.0-128-virtual 3.2.0-128.173
linux-image-3.2.0-128-generic-pae 3.2.0-128.173
linux-image-generic 3.2.0.128.142
linux-image-generic-pae 3.2.0.128.142
linux-image-highbank 3.2.0.128.142
linux-image-3.2.0-128-highbank 3.2.0-128.173
linux-image-3.2.0-128-powerpc-smp 3.2.0-128.173
linux-image-virtual 3.2.0.128.142
linux-image-powerpc64-smp 3.2.0.128.142
linux-image-3.2.0-128-omap 3.2.0-128.173
linux-image-3.2.0-128-powerpc64-smp 3.2.0-128.173
linux-image-omap 3.2.0.128.142
linux-image-3.2.0-128-generic 3.2.0-128.173
Ubuntu 12,04 LTS:
linux-image-3.13.0-121-generic 3.13.0-121.170 ~ presisi1
linux-image-generic-lpae-lts- trusty 3.13.0.121.112
linux-image-generic-lts- trusty 3.13.0.121.112
linux-image-3.13.0-121-generic-lpae 3.13.0-121.170 ~ presisi1

Sudo

Bug sudo tersebut dicakup oleh USN-3304-1 , mulai 30 Mei 2017:

Ubuntu 17.04:
sudo-ldap 1.8.19p1-1ubuntu1.1
sudo 1.8.19p1-1ubuntu1.1
Ubuntu 16.10:
sudo-ldap 1.8.16-0ubuntu3.2
sudo 1.8.16-0ubuntu3.2
Ubuntu 16.04 LTS:
sudo-ldap 1.8.16-0ubuntu1.4
sudo 1.8.16-0ubuntu1.4
Ubuntu 14.04 LTS:
sudo-ldap 1.8.9p5-1ubuntu1.4
sudo 1.8.9p5-1ubuntu1.4
muru
sumber
Jadi, secara ringkas seharusnya sudah diperbaiki di sebagian besar versi Ubuntu yang masih didukung, hanya perlu memperbarui?
CJCombrink
@TheBadger tidak, seperti dicatat oleh pelacak CVE, beberapa kombinasi masih terdaftar sebagai rilis tertunda. Saya kira lebih banyak USN akan diterbitkan ketika perbaikan dirilis.
muru
4
Tapi, ya, memperbarui seharusnya sudah cukup, konfigurasi tambahan tidak diperlukan.
muru
Jika itu mempengaruhi, bagaimana cara memverifikasi?
Daisy
1
@immibis menurut artikel berikut, tetapi implementasi yang ada tidak berfungsi dengan benar: Penjelasan bug Stackguard oleh Qualys Research Labs
Igor B
1

Bagaimana bug multi-OS terjadi?

Untuk membahas bagian ini dari pertanyaan Anda secara khusus:

Masalah ini muncul karena penggunaan ruang alamat bersama untuk heap (yang tumbuh ke atas) dan tumpukan (yang tumbuh ke bawah).

Desain ini umum di banyak sistem, karenanya mengapa banyak sistem rentan terhadap kelas kerentanan yang sama.

pengguna7761803
sumber