Retbleed - бул Intel жана AMD процессорлорунун спекуляциялык аткаруу механизмине жаңы чабуул

ETH Zurich изилдөөчүлөрүнүн тобу CPUдагы кыйыр өткөөлдөрдүн спекуляциялык аткаруу механизмине жаңы чабуулду аныкташты, бул өзөк эс тутумунан маалыматты алууга же виртуалдык машиналардан хост системасына чабуулду уюштурууга мүмкүндүк берет. Абалдардын коддуу аты Retbleed (CVE-2022-29900, CVE-2022-29901) жана мүнөзү боюнча Spectre-v2 чабуулдарына жакын. Айырмачылык "jmp" инструкциясын колдонуу менен кыйыр секирүүнүн ордуна, даректи жүктөө, стектен секирүү үчүн даректи алып келүүчү "ret" (кайтаруу) инструкциясын иштеп чыгууда ыктыярдуу коддун спекулятивдүү аткарылышын уюштурууга байланыштуу. эстутум же CPU реестри.

Чабуулчу өтүүнү туура эмес болжолдоо үчүн шарттарды түзүп, программанын аткарылышынын логикасында каралбаган код блогуна максаттуу, спекулятивдүү өтүүнү уюштура алат. Акыр-аягы, процессор бутагын болжолдоосу акталбаганын аныктайт жана операцияны баштапкы абалына кайтарат, бирок спекулятивдүү аткарууда иштетилген маалыматтар кэште жана микроархитектуралык буферлерде бүтөт. Эгерде ката аткарылган блок эстутумга кирсе, анда анын спекуляциялык аткарылышы эстутумдан окулган маалыматтардын жалпы кэшке сакталышына алып келет.

Спекуляциялык операциялардан кийин кэште калган маалыматтарды аныктоо үчүн, чабуулчу калган маалыматтарды аныктоо үчүн капталдагы канал ыкмаларын колдоно алат, мисалы, кэштелген жана кэштелбеген маалыматтарга кирүү убакыттарындагы өзгөрүүлөрдү талдоо. Башка артыкчылык деңгээлиндеги аймактардан (мисалы, ядронун эс тутумунан) маалыматты максаттуу алуу үчүн "гаджеттер" колдонулат - ядродо болгон буйруктардын ырааттуулугу, алар таасир этиши мүмкүн болгон тышкы шарттарга жараша эстутумдан маалыматтарды спекулятивдүү окуу үчүн ылайыктуу. чабуулчу.

Шарттуу жана кыйыр секирүү инструкцияларын колдонгон классикалык Spectre классынын чабуулдарынан коргоо үчүн көпчүлүк операциялык системалар кыйыр секирүү операцияларын "ret" инструкциясы менен алмаштырууга негизделген "retpoline" ыкмасын колдонушат, ал үчүн процессорлор өзүнчө стек абалын болжолдоо бирдигин колдонушат. . Ретполин 2018-жылы киргизилгенде, Spectre сыяктуу дарек манипуляциялары "ret" инструкциясын колдонуп алып-сатарлык бутактандыруу үчүн практикалык эмес деп эсептелген.

Retbleed чабуул ыкмасын иштеп чыккан изилдөөчүлөр "ret" инструкциясын колдонуу менен алып-сатарлык өтүүнү баштоо үчүн микроархитектуралык шарттарды түзүү мүмкүнчүлүгүн көрсөтүштү жана Linux ядросунун кемчилигин колдонуу үчүн ылайыктуу инструкциялардын (гаджеттердин) ырааттуулугун аныктоо үчүн даяр инструменттерди жарыялашты, мындай шарттар өзүн көрсөтөт.

Изилдөөнүн жүрүшүндө Intel процессорлору бар системаларда колдонуучу мейкиндигинде артыкчылыксыз процесстен секундасына 219 байт ылдамдыкта жана 98% тактыкта ​​ядро ​​эс тутумунан ыктыярдуу маалыматтарды чыгарууга мүмкүндүк берген жумушчу эксплойт даярдалды. AMD процессорлорунда эксплуатациянын натыйжалуулугу алда канча жогору — агып кетүү ылдамдыгы секундасына 3.9 КБ. Практикалык мисал катары, биз /etc/shadow файлынын мазмунун аныктоо үчүн сунушталган эксплуатацияны кантип колдонууну көрсөтөбүз. Intel процессорлору бар системаларда колдонуучунун түпкү паролунун хэштерин аныктоо чабуулу 28 мүнөттө, ал эми AMD процессорлору бар системаларда 6 мүнөттө ишке ашкан.

Чабуул 6-жылдын 8-чейрегине чейин чыгарылган Intel процессорлорунун (анын ичинде Skylake) жана 3-жылдын 2019-чейрегине чейин чыгарылган Zen 1, Zen 1+ жана Zen 2 микроархитектураларына негизделген AMD процессорлорунун 2021-3 муундары үчүн тастыкталды. AMD ZenXNUMX жана Intel Alder Lake сыяктуу жаңы процессорлордун моделдеринде, ошондой эле ARM процессорлорунда көйгөй учурдагы коргоо механизмдери тарабынан бөгөттөлгөн. Мисалы, IBRS (Indirect Branch Restricted Speculation) нускамаларын колдонуу чабуулдардан коргоого жардам берет.

Linux ядросу жана Xen гипервизору үчүн өзгөртүүлөр топтому даярдалды, алар эски процессорлордогу программалык камсыздоодогу көйгөйдү бөгөттөйт. Linux ядросу үчүн сунушталган патч 68 файлды өзгөртөт, 1783 сапты кошот жана 387 сапты жок кылат. Тилекке каршы, коргоо олуттуу кошумча чыгымдарга алып келет - AMD жана Intel процессорлорунда жүргүзүлгөн тексттерде өндүрүмдүүлүктүн төмөндөшү 14% дан 39% га чейин бааланат. Intel процессорлорунун жаңы муундарында бар жана Linux ядросунан 4.19 баштап колдоого алынган IBRS нускамаларына негизделген коргоону колдонуу артык.

Intel процессорлорунда алып-сатарлык кыйыр секирүү үчүн даректи алмаштыруу Return Stack буфериндеги төмөнкү чек (толуп кетүү) аркылуу ашып кеткенде пайда болгон функциянын аркасында ишке ашырылат. Мындай шарттар пайда болгондо, "ret" инструкциясы кадимки кыйыр секирүү үчүн колдонулганга окшош даректи тандоо логикасын колдоно баштайт. Linux ядросунда мындай артка агымды баштоо үчүн шарттарды түзгөн миңден ашык орундар табылган жана системалык чалуулар аркылуу жеткиликтүү.

AMD процессорлорунда "ret" инструкциясын алып-сатарлык аткаруу стек үчүн атайын буферге (Return Address Stack) шилтеме кылбастан ишке ашырылат жана тармактык болжолдоо бирдиги "ret" инструкциясын контролдук кайтаруу катары эмес, кыйыр бутак катары карайт. , жана, демек, кыйыр өтүүлөрдү болжолдоо үчүн маалыматтарды колдонот. Бул шарттарда, системалык чалуу аркылуу жетүүгө мүмкүн болгон дээрлик бардык "ret" операциясы пайдаланылышы мүмкүн.

Кошумчалай кетсек, AMD процессорлорунда (CVE-2022-23825, Филиал тибинин баш аламандыгы) жасалма бутактарды ишке ашырууга байланыштуу дагы бир маселе аныкталган - тармакты болжолдоо үчүн шарттар филиалдын алдын ала буферине таасир этүүгө мүмкүндүк берүүчү керектүү тармактык көрсөтмөлөрсүз да пайда болушу мүмкүн. көрсөтмөсү жок "ret". Бул өзгөчөлүк коргоону ишке ашырууну кыйла татаалдантат жана буферди алдын ала буферди активдүү тазалоону талап кылат. Ядрого толук коргоону кошуу ашыкча чыгымды 209% га жогорулатат деп күтүлүүдө.

Source: opennet.ru

Комментарий кошуу