Mokhoa oa ts'ireletso oa Safe-Linking o hlahisitsoeng ke Checkpoint, o etsa hore ho be thata le ho feta ho sebelisa hampe bofokoli

Khampani ea Checkpoint hlahisoa Mokhoa oa ts'ireletso oa Safe-Linking, o etsang hore ho be thata ho theha lits'ebetso tse laolang tlhaloso kapa phetoho ea lisupa ho li-buffers tse fanoeng ha ho etsoa mohala oa malloc. Safe-Linking ha e thibele ka botlalo monyetla oa ho sebelisa hampe bofokoli, empa ka bofokoli bo fokolang haholo e thatafatsa ho thehoa ha mekhahlelo e itseng ea ts'ebetso, kaha ntle le ts'ebeliso e mpe ea buffer, hoa hlokahala ho fumana ts'oaetso e 'ngoe e bakang ho lutla ha tlhahisoleseling mabapi le ts'ebetso ea ts'ireletso. ho bewa hoa qubu mohopolong.

Li-patches tse kenyang ts'ebetsong Safe-Linking li lokiselitsoe Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) le Google TCMalloc, 'me li boetse li reretsoe ho ntlafatsa tšireletso ho Chromium (ho
Ho tloha 2012, Chromium e se e hahile ka mokhoa oa tšireletso oa MaskPtr o reretsoeng ho rarolla bothata bo tšoanang, empa tharollo e tsoang ho Checkpoint e bonts'a ts'ebetso e phahameng).
Lipache tse sisintsoeng li se li amohetsoe hore li ka tlisoa tokollong ea Phato Glibc 3.32 'me Safe-Linking e tla etsoa ka mokhoa oa kamehla. uClibc-NG e tšehetsa Safe-Linking kene e kenyellelitsoe tokollong ea 1.0.33 'me e nolofalloa ke kamehla. Liphetoho ho gperftools (tcmalloc ea khale) amoheloa, empa e tla fanoa e le khetho tokollong e tlang.

Bahlahisi TCMalloc (tcmalloc e ncha) e hanne ho amohela fetola, ho qotsa ho senyeha ho matla ha ts'ebetso le tlhokahalo ea ho eketsa liteko tse pharaletseng ho hlahloba kamehla hore ntho e 'ngoe le e' ngoe e sebetsa kamoo ho lebeletsoeng kateng. Liteko tse entsoeng ke baenjiniere ba Checkpoint li bonts'itse hore mokhoa oa Safe-Linking ha o lebise ts'ebelisong e eketsehileng ea memori, mme ts'ebetso ha o etsa ts'ebetso ea qubu e fokotsehile ka karolelano ke 0.02% feela, mme maemong a mabe ka ho fetesisa ke 1.5% (ha ho bapisoa, litšenyehelo tse holimo. ka mokhoa o sebelisoang ho Chromium ho hakanngoa e le "tlase ho 2%). Kenyeletso
Safe-Linking e fella ka litaelo tse ling tse 2-3 tsa kopano tse etsoang nako le nako ha ho bitsoa mahala(), le litaelo tse 3-4 nako le nako ha malloc() e bitsoa. Ho tsamaisa mekhahlelo ea ho qala le ho hlahisa boleng bo sa reroang ha ho hlokahale.

Mokhoa oa ts'ireletso oa Safe-Linking o hlahisitsoeng ke Checkpoint, o etsa hore ho be thata le ho feta ho sebelisa hampe bofokoli

Safe-Linking e ka sebelisoa eseng feela ho ntlafatsa ts'ireletso ea lits'ebetso tse fapaneng tsa qubu, empa hape le ho kenyelletsa taolo ea bots'epehi meahong efe kapa efe ea data e sebelisang lethathamo le le leng la lintlha tse behiloeng haufi le li-buffer ka botsona. Mokhoa ona o bonolo haholo ho o kenya ts'ebetsong mme o hloka feela ho kenyelletsa macro e le 'ngoe le ho e sebelisa ho li-pointers ho block e latelang ea khoutu (mohlala, bakeng sa Glibc. liphetoho mela e 'maloa feela ea khoutu). Mokhoa o ipapisitse le liphetoho tse latelang:

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

Moko oa mokhoa ona ke ho sebelisa lintlha tse sa reroang tse tsoang ho aterese ea ASLR (mmap_base) ho sireletsa manane a hokahaneng a le mong joalo ka Fast-Bins le TCache. Pele boleng bo sebelisoa ho pointer ho karolo e latelang lethathamong, e etsa phetoho ea maske le ho hlahloba tlhophiso ea leqephe. Pointer e nkeloa sebaka ke sephetho sa ts'ebetso "(L >> PAGE_SHIFT) XOR (P)", moo P e leng boleng ba pointer le L ke sebaka sa mohopolo moo pointer e bolokiloeng teng.

Mokhoa oa ts'ireletso oa Safe-Linking o hlahisitsoeng ke Checkpoint, o etsa hore ho be thata le ho feta ho sebelisa hampe bofokoli

Ha e sebelisoa tsamaisong ASLR (Adress Space Layout Randomization) karolo ea L bits e nang le aterese ea heap base e na le litekanyetso tse sa sebetseng tse sebelisoang e le senotlolo sa ho kenyelletsa P (e ntšitsoeng ke ts'ebetso ea 12-bit bakeng sa maqephe a 4096-byte). Ho qhekella hona ho fokotsa kotsi ea ho koeteloa ha li-point ka tlatlapo, kaha pointer ha e bolokoe ka sebopeho sa eona sa mantlha mme ho e nkela sebaka ho hloka tsebo ea tlhaiso-leseling ea kabo ea qubu. Ntle le moo, khoutu ea patch e boetse e na le cheke e eketsehileng bakeng sa ho lokisoa ha block, e sa lumelleng mohlaseli ho nka sebaka sa pointer ka boleng bo sa tsitsang mme e hloka tsebo ea palo ea li-bits tse tsamaellanang, tseo lits'ebetsong tsa 64-bit li lumellang ho thibela. Ba 15 ho ba 16 ba lekile litlhaselo tse sa nkeng teka-tekano .

Mokhoa ona o sebetsa hantle bakeng sa ho itšireletsa khahlanong le litlhaselo tse sebelisang mokhoa oa ho ngola bocha (ho fetola li-byte tse tlase), ho ngola sesupa ka botlalo (ho lebisa ho khoutu ea mohlaseli) le ho fetola boemo ba lenane atereseng e sa laoleheng. Mohlala, ho bonts'oa hore ts'ebeliso ea Safe-Linking ho malloc e ka lumella ho thibela tlhekefetso haufinyane. tsebahatsoa ke bafuputsi ba ts'oanang ba ts'oaetso CVE-2020-6007 ka har'a leseli le bohlale la Philips Hue Bridge, le bakoang ke ho phalla ha buffer le ho u lumella ho fumana taolo ea sesebelisoa.

Source: opennet.ru

Eketsa ka tlhaloso