Checkpoint ngusulake teknik proteksi Safe-Linking, dadi luwih angel kanggo ngeksploitasi kerentanan

Perusahaan Checkpoint diwenehi Mekanisme pangayoman Aman-Linking, kang ndadekake angel kanggo nggawe exploitasi sing ngapusi definisi utawa modifikasi penunjuk kanggo buffer diparengake nalika nglakokaké telpon malloc. Safe-Linking ora rampung ngalangi kemungkinan ngeksploitasi kerentanan, nanging kanthi overhead minimal, nggawe rumit eksploitasi kategori tartamtu, amarga saliyane overflow buffer sing bisa dieksploitasi, perlu golek kerentanan liyane sing nyebabake bocor informasi babagan. panggonan seko numpuk ing memori.

Patch sing ngetrapake Safe-Linking wis disiapake kanggo Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) lan Google TCMalloc, lan uga diusulake kanggo nganyarke proteksi ing Chromium (ing
Wiwit 2012, Chromium wis dibangun ing teknik perlindungan MaskPtr kanggo ngrampungake masalah sing padha, nanging solusi saka Checkpoint nuduhake kinerja sing luwih dhuwur).
Patch sing disaranake wis disetujoni kanggo dikirim ing rilis Agustus Glibc 3.32 lan Safe-Linking bakal diaktifake kanthi gawan. uClibc-NG ndhukung Safe-Linking mlebu klebu ing release 1.0.33 lan diaktifake minangka standar. Owah-owahan ing gperftools (tcmalloc lawas) Ditampa, nanging bakal ditawakake minangka pilihan ing rilis mangsa ngarep.

Pengembang TCMalloc (tcmalloc anyar) ora gelem nampa ganti, nyatakake degradasi kinerja sing abot lan perlu kanggo nambah tes ekstensif kanggo mriksa kanthi rutin manawa kabeh bisa digunakake kaya sing dikarepake. Pengujian dening insinyur Checkpoint nuduhake yen metode Aman-Linking ora nyebabake konsumsi memori tambahan, lan kinerja nalika nindakake operasi tumpukan suda rata-rata mung 0.02%, lan ing skenario paling awon 1.5% (kanggo mbandhingake, overhead ing cara sing digunakake ing Chromium dianggep minangka "kurang saka 2%"). Gawan
Aman-Linking asil ing 2-3 instruksi Déwan tambahan kaleksanan saben free () disebut, lan 3-4 instruksi saben wektu malloc () disebut. Nglakokake initialization lan tataran generasi Nilai acak ora dibutuhake.

Checkpoint ngusulake teknik proteksi Safe-Linking, dadi luwih angel kanggo ngeksploitasi kerentanan

Aman-Linking bisa digunakake ora mung kanggo nambah keamanan saka macem-macem implementasine numpuk, nanging uga kanggo nambah kontrol integritas kanggo struktur data sing nggunakake dhaptar siji disambung saka penunjuk diselehake ing jejere buffer piyambak. Cara kasebut gampang banget kanggo dileksanakake lan mung mbutuhake nambah siji makro lan ngetrapake menyang penunjuk menyang blok sabanjure ing kode kasebut (contone, kanggo Glibc malih mung sawetara baris kode). Cara kasebut dadi owah-owahan ing ngisor iki:

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

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

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

Inti saka metode kasebut yaiku nggunakake data acak saka mekanisme acak alamat ASLR (mmap_base) kanggo nglindhungi dhaptar sing disambung kanthi siji kayata Fast-Bins lan TCache. Sadurunge nilai kasebut ditrapake menyang pointer menyang unsur sabanjure ing dhaptar, nindakake konversi topeng lan mriksa keselarasan kaca. Pointer diganti dening asil operasi "(L >> PAGE_SHIFT) XOR (P)", ngendi P punika Nilai saka pitunjuk lan L iku lokasi memori ngendi penunjuk disimpen.

Checkpoint ngusulake teknik proteksi Safe-Linking, dadi luwih angel kanggo ngeksploitasi kerentanan

Nalika digunakake ing sistem ASLR (Address Space Layout Randomization) bagéan saka bit L kanthi alamat basis tumpukan ngemot nilai acak sing digunakake minangka kunci kanggo encode P (diekstrak kanthi operasi shift 12-bit kanggo kaca 4096-byte). Manipulasi iki nyuda resiko pambajakan pointer ing eksploitasi, amarga pointer ora disimpen ing wangun asli lan ngganti mbutuhake kawruh saka alokasi numpuk. Kajaba iku, kode tembelan uga ngemot cek tambahan kanggo keselarasan blok, sing ora ngidini panyerang ngganti pointer kanthi nilai sing ora selaras lan mbutuhake kawruh babagan jumlah bit sing didadekake siji, sing ing sistem 64-bit uga ngidini pamblokiran. 15 saka 16 nyoba serangan sing ora njupuk alignment menyang akun.

Cara kasebut efektif kanggo nglindhungi serangan sing nggunakake nulis ulang pointer parsial (ngganti bita kurang), nulis ulang pointer lengkap (ngalih menyang kode penyerang) lan ngganti posisi dhaptar ing alamat sing ora selaras. Minangka conto, ditampilake yen panggunaan Safe-Linking ing malloc bakal ngidini eksploitasi pamblokiran bubar. dikenali dening peneliti kerentanan padha CVE-2020-6007 ing lampu pinter Philips Hue Bridge, disebabake kebanjiran buffer lan ngijini sampeyan kanggo gain kontrol piranti.

Source: opennet.ru

Add a comment