Anrhefn - ymosodiad llygredd cof i osgoi sudo a dilysiad OpenSSH

Mae ymchwilwyr o Sefydliad Polytechnig Caerwrangon (UDA) wedi cyflwyno math newydd o ymosodiad Mayhem sy'n defnyddio techneg ystumio bit cof mynediad ar hap deinamig Rowhammer i newid gwerthoedd newidynnau pentwr a ddefnyddir fel baneri yn y rhaglen i benderfynu a oes gan wiriadau dilysu a diogelwch pasio. Dangosir bod enghreifftiau ymarferol o'r ymosodiad yn osgoi dilysu yn SUDO, OpenSSH a MySQL, yn ogystal Γ’ newid canlyniad gwiriadau diogelwch yn llyfrgell OpenSSL.

Gellir cymhwyso'r ymosodiad i geisiadau sy'n defnyddio gwiriadau i gymharu gwerthoedd sy'n wahanol i sero. Enghraifft o god bregus: int auth = 0; ... // cod dilysu sy'n newid gwerth yr awdurdod rhag ofn y bydd dilysiad llwyddiannus os bydd(auth!= 0) yn dychwelyd AUTH_SUCCESS; arall dychwelyd AUTH_FAILURE;

Yng nghyd-destun yr enghraifft hon, ar gyfer ymosodiad llwyddiannus mae'n ddigon i lygru unrhyw ddarn yn y cof sy'n gysylltiedig Γ’'r newidyn auth 32-bit ar y pentwr. Os bydd unrhyw ddarn yn y newidyn wedi'i lygru, ni fydd y gwerth bellach yn sero a bydd y gweithredwr amodol yn pennu a yw'r dilysu wedi'i gwblhau'n llwyddiannus. Mae patrymau dilysu o'r fath yn eithaf cyffredin mewn cymwysiadau ac fe'u canfyddir, er enghraifft, yn SUDO, OpenSSH, MySQL ac OpenSSL.

Anrhefn - ymosodiad mangling bit cof i osgoi sudo a dilysiad OpenSSH

Gellir cymhwyso'r ymosodiad hefyd i gymariaethau o'r ffurf β€œif(auth == 1)”, ond yn yr achos hwn mae ei weithrediad yn dod yn fwy cymhleth, gan fod angen ystumio nid unrhyw ddarn o 32, ond y rhan olaf. Gellir defnyddio'r dull hefyd i ddylanwadu ar werthoedd newidynnau mewn cofrestrau proseswyr, oherwydd gellir fflysio cynnwys y cofrestrau dros dro i'r pentwr pan fydd switsh cyd-destun, galwad swyddogaeth, neu driniwr signal yn tanio. Yn ystod y cyfnod o amser tra bod gwerthoedd cofrestr yn y cof, gellir cyflwyno ystumiadau i'r cof hwn a bydd y gwerth newydd yn cael ei adfer i'r gofrestr.

Anrhefn - ymosodiad mangling bit cof i osgoi sudo a dilysiad OpenSSH

I ystumio'r darnau, defnyddir un o'r addasiadau i ymosodiad dosbarth RowHammer. Gan fod cof DRAM yn arae dau ddimensiwn o gelloedd, pob un yn cynnwys cynhwysydd a transistor, mae perfformio darlleniadau parhaus o'r un rhanbarth cof yn arwain at amrywiadau foltedd ac anomaleddau sy'n achosi colled bychan o wefr mewn celloedd cyfagos. Os yw'r dwysedd darllen yn uchel, yna efallai y bydd y gell gyfagos yn colli swm digon mawr o dΓ’l ac ni fydd gan y cylch adfywio nesaf amser i adfer ei gyflwr gwreiddiol, a fydd yn arwain at newid yng ngwerth y data a storir yn y gell. . Er mwyn amddiffyn yn erbyn RowHammer, mae gweithgynhyrchwyr sglodion wedi ychwanegu mecanwaith TRR (Target Row Refresh), sy'n blocio llygredd celloedd mewn achosion arbennig, ond nid yw'n amddiffyn rhag pob amrywiad ymosodiad posibl.

Er mwyn amddiffyn rhag ymosodiad Mayhem, argymhellir defnyddio mewn cymariaethau nid gwerthusiad o wahaniaethau o sero neu gyd-ddigwyddiad ag un, ond gwiriad paru gan ddefnyddio gwerth hadau ar hap gydag octetau di-sero. Yn yr achos hwn, i osod gwerth dymunol y newidyn, mae angen ystumio'n gywir nifer sylweddol o ddarnau, sy'n afrealistig, yn wahanol i ystumio un did. Enghraifft o god na ellir ymosod arno: int auth = 0xbe406d1a; ... // cod dilysu sy'n gosod gwerth yr auth i 0x23ab8701 rhag ofn y bydd dilysu llwyddiannus os yw(auth == 0x23ab8701) yn dychwelyd AUTH_SUCCESS; arall dychwelyd AUTH_FAILURE;

Mae'r dull amddiffyn penodedig eisoes wedi'i ddefnyddio gan y datblygwyr sudo ac fe'i cynhwyswyd yn natganiad 1.9.15 fel atgyweiriad ar gyfer bregusrwydd CVE-2023-42465. Maen nhw'n bwriadu cyhoeddi prototeip o'r cod ar gyfer cynnal yr ymosodiad ar Γ΄l i atebion gael eu gwneud i'r prif brosiectau bregus.

Ffynhonnell: opennet.ru

Ychwanegu sylw