Checkpoint ti dabaa ilana aabo-ọna asopọ Ailewu, jẹ ki o nira siwaju sii lati lo nilokulo awọn ailagbara

Ile-iṣẹ Ṣayẹwo gbekalẹ Ailewu-Isopọ Idaabobo siseto, eyi ti o mu ki o soro lati ṣẹda explocs ti o riboribo itumọ tabi iyipada ti awọn itọka si awọn buffers soto nigbati o ba n ṣe ipe malloc kan. Ailewu-ọna asopọ ko ni idiwọ patapata ti o ṣeeṣe ti ilokulo awọn ailagbara, ṣugbọn pẹlu iwọn kekere o ṣe idiju ṣiṣẹda awọn ẹka kan ti awọn iṣiṣẹ, nitori ni afikun si aponsedanu ifipamọ ti iṣamulo, o jẹ dandan lati wa ailagbara miiran ti o fa jijo ti alaye nipa awọn placement ti okiti ni iranti.

Awọn abulẹ imuse Asopọmọra Ailewu ni a ti pese sile fun Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) ati Google TCMalloc, ati pe wọn tun daba fun aabo igbegasoke ni Chromium (ninu
Lati ọdun 2012, Chromium ti kọ tẹlẹ ninu ilana aabo MaskPtr ti o pinnu lati yanju iṣoro kanna, ṣugbọn ojutu lati Ṣayẹwo aaye ṣe afihan iṣẹ ṣiṣe ti o ga julọ).
Awọn abulẹ ti a daba ti jẹ ifọwọsi tẹlẹ fun ifijiṣẹ ni idasilẹ Oṣu Kẹjọ Glibc 3.32 ati Asopọmọra Ailewu yoo ṣiṣẹ nipasẹ aiyipada. uClibc-NG ṣe atilẹyin Asopọmọra Ailewu ti tẹ to wa ninu idasilẹ 1.0.33 ati pe o ṣiṣẹ nipasẹ aiyipada. Awọn iyipada ni gperftools (tcmalloc atijọ) gba, ṣugbọn yoo funni bi aṣayan ni itusilẹ ọjọ iwaju.

Awọn Difelopa TCMalloc (tcmalloc tuntun) kọ lati gba ayipada, Ti o tọka si ibajẹ iṣẹ ṣiṣe ti o lagbara ati iwulo lati ṣafikun awọn idanwo nla lati ṣayẹwo nigbagbogbo pe ohun gbogbo n ṣiṣẹ bi o ti ṣe yẹ. Idanwo nipasẹ awọn onimọ-ẹrọ Checkpoint fihan pe ọna Asopọ-Ailewu ko yori si afikun agbara iranti, ati pe iṣẹ ṣiṣe nigba ṣiṣe awọn iṣẹ okiti dinku ni apapọ nipasẹ 0.02% nikan, ati ni oju iṣẹlẹ ti o buru julọ nipasẹ 1.5% (fun lafiwe, oke ni ọna ti a lo ninu Chromium jẹ ifoju bi “kere ju 2%)). Ifisi
Awọn abajade Asopọmọra Ailewu ni awọn ilana apejọ afikun 2-3 ti n ṣiṣẹ ni akoko kọọkan ti a pe ni ọfẹ () ati awọn ilana 3-4 ni akoko kọọkan ti a pe ni malloc (). Ṣiṣe ibẹrẹ ibẹrẹ ati awọn ipele iran iye laileto ko nilo.

Checkpoint ti dabaa ilana aabo-ọna asopọ Ailewu, jẹ ki o nira siwaju sii lati lo nilokulo awọn ailagbara

Asopọmọra-Ailewu le ṣee lo kii ṣe lati ṣe ilọsiwaju aabo ti awọn imuse okiti pupọ, ṣugbọn tun lati ṣafikun awọn iṣakoso iduroṣinṣin si eyikeyi awọn ẹya data ti o lo awọn atokọ ti o sopọ mọ ẹyọkan ti awọn itọka ti a gbe lẹgbẹẹ awọn buffer funrara wọn. Ọna naa rọrun pupọ lati ṣe ati pe o nilo fifi macro kan kun ati lilo si awọn itọka si bulọki atẹle ninu koodu (fun apẹẹrẹ, fun Glibc ayipada o kan diẹ awọn ila ti koodu). Ọna naa ṣan silẹ si awọn ayipada wọnyi:

+#sọtumọ PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr)))

+#tumọ REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)

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

Koko-ọrọ ti ọna naa ni lati lo data laileto lati ẹrọ aileto adirẹsi ASLR (map_base) lati daabobo awọn atokọ ti o sopọ mọ ẹyọkan gẹgẹbi Yara-Bins ati TCache. Ṣaaju ki o to lo iye naa si itọka si nkan atẹle ninu atokọ naa, o ṣe iyipada iboju-boju ati ṣayẹwo fun titete oju-iwe. Atọka ti rọpo nipasẹ abajade iṣẹ naa "(L >> PAGE_SHIFT) XOR (P)", nibiti P jẹ iye ti ijuboluwole ati L jẹ ipo iranti nibiti a ti fipamọ itọka naa.

Checkpoint ti dabaa ilana aabo-ọna asopọ Ailewu, jẹ ki o nira siwaju sii lati lo nilokulo awọn ailagbara

Nigba ti lo ninu awọn eto ASLR (Adirẹsi Aaye Layout Randomization) apakan ti awọn L-bit pẹlu adirẹsi ipilẹ okiti ni awọn iye laileto ti a lo bi bọtini lati fi koodu P sii (yiyọ nipasẹ iṣẹ iṣipopada 12-bit fun awọn oju-iwe 4096-baiti). Ifọwọyi yii dinku eewu ifasilẹ awọn ijuboluwole ni ilokulo, nitori itọka naa ko ti fipamọ sinu fọọmu atilẹba rẹ ati rirọpo nilo imọ ti ipin okiti. Ni afikun, koodu patch naa tun ni ayẹwo afikun fun titete bulọọki, eyiti ko gba laaye ikọlu kan lati rọpo itọka kan pẹlu iye ti ko ni ibamu ati pe o nilo imọ ti nọmba awọn iwọn ti o ni ibamu, eyiti lori awọn eto 64-bit ni afikun ngbanilaaye idinamọ. 15 ninu 16 igbiyanju ikọlu ti ko gba titete sinu akoto.

Ọna naa jẹ doko fun aabo lodi si awọn ikọlu ti o lo atunkọ ijuboluwosi apakan (iyipada awọn baiti kekere), atunkọ ijuboluwole pipe (dari si koodu ikọlu) ati yiyipada ipo atokọ ni adirẹsi ti ko tọ. Gẹgẹbi apẹẹrẹ, o fihan pe lilo Aabo-Linking ni malloc yoo gba idinamọ ilokulo laipẹ. mọ nipasẹ awọn oniwadi ailagbara kanna CVE-2020-6007 ninu ina smart Philips Hue Bridge, ti o fa nipasẹ aponsedanu ifipamọ ati gbigba ọ laaye lati ni iṣakoso ti ẹrọ naa.

orisun: opennet.ru

Fi ọrọìwòye kun