Pusat pemeriksaan mencadangkan teknik perlindungan Pautan Selamat, menjadikannya lebih sukar untuk mengeksploitasi kelemahan

Syarikat Checkpoint dibentangkan Mekanisme perlindungan Pautan Selamat, yang menyukarkan untuk mencipta eksploitasi yang memanipulasi takrifan atau pengubahsuaian penunjuk kepada penimbal yang diperuntukkan semasa melaksanakan panggilan malloc. Pautan Selamat tidak sepenuhnya menyekat kemungkinan mengeksploitasi kelemahan, tetapi dengan overhed minimum ia merumitkan dengan ketara penciptaan kategori eksploitasi tertentu, kerana sebagai tambahan kepada limpahan penimbal yang boleh dieksploitasi, adalah perlu untuk mencari kelemahan lain yang menyebabkan kebocoran maklumat tentang penempatan timbunan dalam ingatan.

Tampalan yang melaksanakan Pautan Selamat telah disediakan untuk Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) dan Google TCMalloc, dan juga dicadangkan untuk menaik taraf perlindungan dalam Chromium (dalam
Sejak 2012, Chromium telah pun membina teknik perlindungan MaskPtr yang bertujuan untuk menyelesaikan masalah yang sama, tetapi penyelesaian daripada Checkpoint menunjukkan prestasi yang lebih tinggi).
Tampalan yang dicadangkan telah pun diluluskan untuk penghantaran pada keluaran Ogos Glibc 3.32 dan Pautan Selamat akan didayakan secara lalai. uClibc-NG menyokong Safe-Linking memasuki disertakan dalam keluaran 1.0.33 dan didayakan secara lalai. Perubahan dalam gperftools (tcmalloc lama) diterima, tetapi akan ditawarkan sebagai pilihan dalam keluaran akan datang.

Pemaju TCMalloc (tcmalloc baharu) enggan menerima menukar, memetik kemerosotan prestasi yang teruk dan keperluan untuk menambah ujian yang meluas untuk sentiasa menyemak sama ada semuanya berfungsi seperti yang diharapkan. Ujian oleh jurutera Checkpoint menunjukkan bahawa kaedah Safe-Linking tidak membawa kepada penggunaan memori tambahan, dan prestasi semasa menjalankan operasi timbunan dikurangkan secara purata hanya 0.02%, dan dalam senario terburuk sebanyak 1.5% (sebagai perbandingan, overhed dalam kaedah yang digunakan dalam Chromium dianggarkan sebagai "kurang daripada 2%"). Kemasukan
Pautan Selamat menghasilkan 2-3 arahan pemasangan tambahan dilaksanakan setiap kali free() dipanggil, dan 3-4 arahan setiap kali malloc() dipanggil. Menjalankan peringkat permulaan dan penjanaan nilai rawak tidak diperlukan.

Pusat pemeriksaan mencadangkan teknik perlindungan Pautan Selamat, menjadikannya lebih sukar untuk mengeksploitasi kelemahan

Pautan Selamat boleh digunakan bukan sahaja untuk meningkatkan keselamatan pelbagai pelaksanaan timbunan, tetapi juga untuk menambah kawalan integriti pada mana-mana struktur data yang menggunakan senarai terpaut tunggal penunjuk yang diletakkan di sebelah penimbal itu sendiri. Kaedah ini sangat mudah untuk dilaksanakan dan hanya memerlukan penambahan satu makro dan menerapkannya pada penunjuk ke blok seterusnya dalam kod (contohnya, untuk Glibc sedang berubah hanya beberapa baris kod). Kaedah ini bermuara kepada perubahan berikut:

+#define PROTECT_PTR(pos, ptr) \
+ ((__jenis (ptr)) ((((saiz_t) pos) >> 12) ^ ((saiz_t) ptr)))

+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)

- nextp = p->fd;
+ nextp = REVEAL_PTR (p->fd);
...

Intipati kaedah ini adalah menggunakan data rawak daripada mekanisme rawak alamat ASLR (mmap_base) untuk melindungi senarai pautan tunggal seperti Fast-Bins dan TCache. Sebelum nilai digunakan pada penuding kepada elemen seterusnya dalam senarai, ia melakukan penukaran topeng dan menyemak penjajaran halaman. Penunjuk digantikan dengan hasil operasi "(L >> PAGE_SHIFT) XOR (P)", di mana P ialah nilai penunjuk dan L ialah lokasi memori di mana penunjuk disimpan.

Pusat pemeriksaan mencadangkan teknik perlindungan Pautan Selamat, menjadikannya lebih sukar untuk mengeksploitasi kelemahan

Apabila digunakan dalam sistem ASLR (Address Space Layout Randomization) sebahagian daripada bit L dengan alamat asas timbunan mengandungi nilai rawak yang digunakan sebagai kunci untuk mengekod P (diekstrak oleh operasi anjakan 12-bit untuk halaman 4096-bait). Manipulasi ini mengurangkan risiko rampasan penunjuk dalam eksploitasi, kerana penunjuk tidak disimpan dalam bentuk asalnya dan menggantikannya memerlukan pengetahuan tentang maklumat peruntukan timbunan. Selain itu, kod tampalan juga mengandungi semakan tambahan untuk penjajaran blok, yang tidak membenarkan penyerang menggantikan penunjuk dengan nilai tidak sejajar dan memerlukan pengetahuan tentang bilangan bit yang diselaraskan, yang pada sistem 64-bit juga membenarkan penyekatan 15 daripada 16 percubaan serangan yang tidak mengambil kira penjajaran .

Kaedah ini berkesan untuk melindungi daripada serangan yang menggunakan penulisan semula penuding separa (menukar bait rendah), menulis semula penuding lengkap (mengubah hala ke kod penyerang) dan menukar kedudukan senarai pada alamat yang tidak sejajar. Sebagai contoh, ditunjukkan bahawa penggunaan Pautan Selamat dalam malloc akan membenarkan eksploitasi menyekat baru-baru ini dikenalpasti oleh penyelidik kelemahan yang sama CVE-2020 6007- dalam lampu pintar Philips Hue Bridge, disebabkan oleh limpahan penimbal dan membolehkan anda mengawal peranti.

Sumber: opennet.ru

Tambah komen