Kontrollpunkti ettevõte
Turvalist linkimist rakendavad paigad on ette valmistatud Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) ja Google TCMalloc jaoks ning neid pakutakse ka Chromiumi kaitse uuendamiseks (in
Alates 2012. aastast on Chromium juba sisse ehitanud MaskPtr kaitsetehnika, mille eesmärk on sama probleem lahendada, kuid Checkpointi lahendus näitab suuremat jõudlust).
Soovitatud plaastrid on juba augustikuu väljalaskega tarnimiseks heaks kiidetud
Arendajad
Turvalise linkimise tulemusel täidetakse 2–3 täiendavat koostekäsku iga kord, kui kutsutakse free() ja 3–4 käsku iga kord, kui malloc() kutsutakse. Initsialiseerimise ja juhusliku väärtuse genereerimise etappide käivitamine pole vajalik.
Turvalist linkimist saab kasutada mitte ainult erinevate hunnikute rakenduste turvalisuse parandamiseks, vaid ka terviklikkuse juhtelementide lisamiseks mis tahes andmestruktuuridele, mis kasutavad puhvrite endi kõrvale paigutatud osutite üksikult lingitud loendeid. Meetodit on väga lihtne rakendada ja see nõuab ainult ühe makro lisamist ja selle rakendamist koodi järgmise ploki osutitele (näiteks Glibc jaoks
+#define PROTECT_PTR(pos, ptr) \
+ ((__tüüp (ptr)) ((((suurus_t) pos) >> 12) ^ ((suurus_t) ptr)))
+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)
- nextp = p->fd;
+ nextp = REVEAL_PTR (p->fd);
...
Meetodi põhiolemus on kasutada ASLR-i aadresside randomiseerimismehhanismi (mmap_base) juhuslikke andmeid, et kaitsta üksikult lingitud loendeid, nagu Fast-Bins ja TCache. Enne väärtuse rakendamist loendi järgmisele elemendile osutavale kursorile teostab see maski teisenduse ja kontrollib lehe joondamist. Kursor asendatakse operatsiooni "(L >> PAGE_SHIFT) XOR (P)" tulemusega, kus P on kursori väärtus ja L on mälukoht, kuhu kursor on salvestatud.
Kui seda kasutatakse süsteemis
Meetod on tõhus kaitseks rünnakute eest, mis kasutavad osuti osalist ümberkirjutamist (madalate baitide muutmine), täielikku kursori ümberkirjutamist (ründaja koodile ümbersuunamist) ja loendi positsiooni muutmist joondamata aadressil. Näitena on näidatud, et Safe-Linkingi kasutamine mallocis võimaldaks hiljutist ärakasutamist blokeerida
Allikas: opennet.ru