Checkpoint tau npaj cov txheej txheem kev tiv thaiv kev nyab xeeb-Txuas txuas, ua rau nws nyuaj rau kev siv qhov tsis zoo

Tuam txhab Checkpoint рСдставила Safe-Linking tiv thaiv mechanism, uas ua rau nws nyuaj rau tsim exploits uas manipulate lub ntsiab lus los yog kev hloov kho ntawm pointers rau buffers faib thaum ua ib tug malloc hu. Kev ruaj ntseg-Txuas tsis tau tag nrho qhov muaj peev xwm ntawm kev siv qhov tsis zoo, tab sis nrog tsawg kawg nkaus nyiaj siv ua haujlwm nws ua rau muaj kev cuam tshuam rau kev tsim ntawm qee yam ntawm kev siv, txij li ntxiv rau qhov kev siv tsis tau dhau los, nws yog ib qho tsim nyog yuav tsum nrhiav lwm qhov tsis zoo uas ua rau cov ntaub ntawv xau txog. qhov chaw ntawm lub heap hauv nco.

Patches siv Safe-Linking tau npaj rau Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) thiab Google TCMalloc, thiab kuj tau npaj rau kev txhim kho kev tiv thaiv hauv Chromium (hauv
Txij li thaum xyoo 2012, Chromium twb tau tsim nyob rau hauv MaskPtr cov txheej txheem kev tiv thaiv tsom rau kev daws qhov teeb meem tib yam, tab sis kev daws teeb meem los ntawm Checkpoint qhia tau tias muaj kev ua tau zoo dua).
Pom zoo thaj ua rau thaj twb tau pom zoo rau kev xa tawm thaum Lub Yim Hli tso tawm Glibc 3.32 Nws thiab Safe-Linking yuav qhib los ntawm lub neej ntawd. uCibc-NG txhawb kev ruaj ntseg-Txuas nkag mus suav nrog hauv kev tso tawm 1.0.33 thiab tau qhib los ntawm lub neej ntawd. Kev hloov pauv hauv gperftools ( qub tcmalloc ) txais, tab sis yuav muab ua ib qho kev xaiv hauv kev tso tawm yav tom ntej.

Developers TCMalloc (tcmalloc tshiab) tsis kam lees hloov, hais txog kev ua haujlwm tsis zoo thiab qhov yuav tsum tau ntxiv cov kev sim dav dav kom tsis tu ncua xyuas tias txhua yam ua haujlwm raws li qhov xav tau. Kev ntsuam xyuas los ntawm Checkpoint engineers pom tias txoj kev nyab xeeb-Txuas txuas tsis ua rau kev siv lub cim xeeb ntxiv, thiab kev ua haujlwm thaum ua haujlwm heap raug txo qis ntawm qhov nruab nrab tsuas yog 0.02%, thiab hauv qhov xwm txheej phem tshaj plaws los ntawm 1.5% (rau kev sib piv, nyiaj siv ua haujlwm hauv Txoj kev siv hauv Chromium yog kwv yees li "tsawg dua 2%"). suav nrog
Safe-Linking tshwm sim nyob rau hauv 2-3 ntxiv cov lus qhia los ua ke raug ua txhua lub sij hawm free() hu, thiab 3-4 cov lus qhia txhua lub sij hawm malloc() raug hu. Tsis tas yuav tsum khiav qhov pib thiab qhov nqi tsim cov theem.

Checkpoint tau npaj cov txheej txheem kev tiv thaiv kev nyab xeeb-Txuas txuas, ua rau nws nyuaj rau kev siv qhov tsis zoo

Safe-Txuas tuaj yeem siv tsis tau tsuas yog txhawm rau txhim kho kev ruaj ntseg ntawm ntau qhov kev siv heap, tab sis kuj ntxiv kev tswj hwm kev ncaj ncees rau txhua cov ntaub ntawv cov qauv uas siv cov npe sib txuas ib leeg ntawm cov taw qhia muab tso rau ib sab ntawm buffers lawv tus kheej. Txoj kev no yooj yim heev rau kev siv thiab tsuas yog yuav tsum tau ntxiv ib qho macro thiab siv nws rau cov taw qhia mus rau qhov thaiv tom ntej hauv cov cai (piv txwv li, rau Glibc kev hloov tsuas yog ob peb kab ntawm code). Txoj kev boils mus rau cov kev hloov hauv qab no:

+#define PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr)))

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

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

Lub ntsiab lus ntawm txoj kev yog siv cov ntaub ntawv random los ntawm ASLR chaw nyob randomization mechanism (mmap_base) los tiv thaiv cov npe sib txuas xws li Fast-Bins thiab TCache. Ua ntej tus nqi raug siv rau tus taw tes rau lub caij tom ntej hauv daim ntawv teev npe, nws ua lub ntsej muag hloov dua siab tshiab thiab kuaj xyuas cov nplooj ntawv sib dhos. Tus pointer hloov los ntawm qhov tshwm sim ntawm kev ua haujlwm "(L>> PAGE_SHIFT) XOR (P)", qhov twg P yog tus nqi ntawm tus pointer thiab L yog qhov chaw nco qhov chaw uas tus pointer khaws cia.

Checkpoint tau npaj cov txheej txheem kev tiv thaiv kev nyab xeeb-Txuas txuas, ua rau nws nyuaj rau kev siv qhov tsis zoo

Thaum siv hauv qhov system ASLR (Chaw Nyob Chaw Layout Randomization) ib feem ntawm L cov khoom nrog qhov chaw nyob heap muaj qhov tseem ceeb uas tau siv los ua tus yuam sij rau encode P (extracted los ntawm 12-ntsis ua haujlwm rau 4096-byte nplooj ntawv). Qhov kev tswj hwm no txo ​​qhov kev pheej hmoo ntawm tus pointer hijacking nyob rau hauv ib qho kev siv, txij li tus pointer tsis khaws cia rau hauv nws daim ntawv qub thiab hloov nws yuav tsum paub txog kev faib heap. Tsis tas li ntawd, thaj chaws code tseem muaj ib qho kev kuaj ntxiv rau kev thaiv kev sib raug zoo, uas tsis tso cai rau tus neeg tawm tsam los hloov tus taw tes nrog tus nqi tsis sib xws thiab yuav tsum muaj kev paub txog tus lej ntawm cov khoom sib dhos, uas ntawm 64-ntsis systems ntxiv rau kev thaiv. 15 ntawm 16 qhov kev sim tawm tsam uas tsis suav nrog kev sib haum xeeb.

Cov txheej txheem no zoo rau kev tiv thaiv kev tawm tsam uas siv ib feem ntawm tus taw tes rov sau dua (hloov cov bytes qis), ua kom tiav tus taw tes rov sau dua (redirecting mus rau tus neeg tawm tsam cov cai) thiab hloov cov npe txoj hauj lwm ntawm qhov chaw nyob unaligned. Ua piv txwv, nws tau pom tias kev siv Safe-Linking hauv malloc yuav tso cai rau kev txwv tsis pub siv tsis ntev los no txheeb xyuas los ntawm tib cov neeg tshawb nrhiav qhov tsis zoo CVE-2020-6007 nyob rau hauv Philips Hue Choj ntse lub teeb, tshwm sim los ntawm qhov tsis txaus thiab tso cai rau koj kom tau txais kev tswj hwm ntawm lub cuab yeej.

Tau qhov twg los: opennet.ru

Ntxiv ib saib