Checkpoint ngusulkeun téknik panyalindungan Aman-Linking, sahingga leuwih hese mangpaatkeun vulnerabilities

Perusahaan Checkpoint ditepikeun mékanisme panyalindungan Aman-Linking, nu ngajadikeun hésé nyieun exploits nu ngamanipulasi harti atawa modifikasi tina pointers kana buffers disadiakeun nalika executing panggero malloc. Safe-Linking henteu lengkep meungpeuk kamungkinan ngeksploitasi kerentanan, tapi kalayan overhead minimal sacara signifikan nyusahkeun kreasi sababaraha kategori eksploitasi, sabab salian ti panyangga anu tiasa dieksploitasi, peryogi milarian kerentanan anu sanés anu nyababkeun bocor inpormasi ngeunaan panempatan numpuk dina mémori.

Patch anu nerapkeun Safe-Linking parantos disiapkeun pikeun Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) sareng Google TCMalloc, sareng ogé diusulkeun pikeun ningkatkeun panyalindungan dina Chromium (di
Kusabab 2012, Chromium parantos ngawangun téknik panyalindungan MaskPtr anu ditujukeun pikeun ngarengsekeun masalah anu sami, tapi solusi ti Checkpoint nunjukkeun kinerja anu langkung luhur).
Patch anu disarankeun parantos disatujuan pikeun pangiriman dina sékrési Agustus glibc 3.32 sareng Safe-Linking bakal diaktipkeun sacara standar. uClibc-NG ngarojong Aman-Linking diasupkeun kaasup dina release 1.0.33 sarta diaktipkeun sacara standar. Parobahan dina gperftools (tcmalloc heubeul) ditarima, tapi bakal ditawarkeun salaku pilihan dina release hareup.

pamekar TCMalloc (tcmalloc anyar) nampik nampi ngarobah, Citing degradasi kinerja parna sarta kabutuhan pikeun nambahkeun tés éksténsif pikeun rutin pariksa yen sagalana jalan sakumaha nu diharapkeun. Uji coba ku insinyur Checkpoint nunjukkeun yén métode Safe-Linking henteu ngakibatkeun konsumsi mémori tambahan, sareng kinerja nalika ngalakukeun operasi tumpukan dikirangan rata-rata ngan ukur 0.02%, sareng dina skenario anu paling parah ku 1.5% (pikeun babandingan, overhead di métode anu digunakeun dina Chromium diperkirakeun "kurang ti 2%"). Inklusi
Aman-Linking hasilna 2-3 parentah assembly tambahan dieksekusi unggal waktu bebas () disebut, jeung 3-4 parentah unggal waktos malloc () disebut. Ngajalankeun tahap inisialisasi sareng generasi nilai acak henteu diperyogikeun.

Checkpoint ngusulkeun téknik panyalindungan Aman-Linking, sahingga leuwih hese mangpaatkeun vulnerabilities

Aman-Linking bisa dipaké teu ngan pikeun ngaronjatkeun kaamanan rupa-rupa palaksanaan numpuk, tapi ogé pikeun nambahkeun kadali integritas kana sagala struktur data nu make daptar tunggal numbu of pointers disimpen gigireun buffers sorangan. Métodena saderhana pisan pikeun diimplementasikeun sareng ngan ukur peryogi nambihan hiji makro sareng nerapkeun kana petunjuk ka blok salajengna dina kode (contona, pikeun Glibc. parobahan ngan sababaraha baris kode). Metoda bisul handap kana parobahan handap:

+#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);
...

Intina métode nyaéta ngagunakeun data acak tina mékanisme randomization alamat ASLR (mmap_base) pikeun ngajaga daptar numbu tunggal kayaning Fast-Bins na TCache. Sateuacan nilaina diterapkeun kana pointer ka unsur salajengna dina daptar, éta ngalakukeun konvérsi topéng sareng mariksa alignment halaman. Pointer diganti ku hasil tina operasi "(L >> PAGE_SHIFT) XOR (P)", dimana P nyaéta nilai pointer jeung L nyaéta lokasi memori dimana pointer disimpen.

Checkpoint ngusulkeun téknik panyalindungan Aman-Linking, sahingga leuwih hese mangpaatkeun vulnerabilities

Nalika dianggo dina sistem ASLR (Address Space Layout Randomization) bagian tina bit L kalayan alamat base heap ngandung nilai acak nu dipaké salaku konci pikeun encode P (diekstrak ku operasi shift 12-bit pikeun kaca 4096-bait). Manipulasi ieu ngirangan résiko pangbajak pointer dina eksploitasi, sabab pointer henteu disimpen dina bentuk aslina sareng ngagentos peryogi pangaweruh ngeunaan alokasi tumpukan. Sajaba ti éta, kode patch ogé ngandung hiji dipariksa tambahan pikeun block alignment, nu teu ngidinan lawan pikeun ngaganti pointer kalawan nilai unaligned sarta merlukeun pangaweruh ngeunaan jumlah bit nu Blok, nu dina sistem 64-bit ogé ngamungkinkeun blocking. 15 ti 16 usaha serangan anu henteu nganggap alignment.

Metoda ieu mujarab pikeun ngajaga ngalawan serangan nu ngagunakeun parsial pointer nulis ulang (ngarobah bait low), lengkep pointer nulis balik (ngalihkeun kana kode lawan urang) jeung ngarobah posisi daptar di alamat unaligned. Salaku conto, ditémbongkeun yén pamakéan Safe-Linking di malloc bakal ngidinan blocking eksploitasi anyar-anyar ieu. dicirikeun ku peneliti kerentanan sarua CVE-2020-6007 dina lampu pinter Philips Hue Bridge, disababkeun ku panyangga mudal tur ngidinan Anjeun pikeun meunangkeun kadali alat.

sumber: opennet.ru

Tambahkeun komentar