Zen+ жана Zen 2 микроархитектураларына негизделген AMD процессорлорунда Meltdown классындагы аялуу табылды.

Дрезден техникалык университетинин изилдөөчүлөрүнүн тобу Zen+ жана Zen 2020 микроархитектураларына негизделген AMD процессорлорунда Meltdown классынын чабуулуна жол ачкан алсыздыкты (CVE-12965-2) аныкташты. Алгач AMD Zen+ жана Zen 2 процессорлору Meltdown аялуулугуна кабылбайт деп болжолдонгон, бирок изилдөөчүлөр канондук эмес виртуалдык даректерди колдонууда корголгон эстутум аймактарына спекулятивдүү кирүүгө алып келген функцияны аныкташкан.

AMD64 архитектурасы виртуалдык даректин алгачкы 48 биттерин гана колдонот жана калган 16 битке көңүл бурбайт. 48ден 63кө чейинки биттер ар дайым 47 биттин маанисин (белги бит узартуу) көчүрүп алышы керек деп көрсөтүлгөн. Эгерде бул шарт бузулса жана жогорку биттердин ыктыярдуу маанилери бар дарекке жетүү аракети жасалса, процессор өзгөчө кырдаалды жаратат. Үстүнкү биттерди кайра-кайра толтуруу жеткиликтүү дарек мейкиндигин эки блокко бөлүүгө алып келет - төмөнкү блокко (0дон 00007FFFFFFFFFFFFFге чейин), анда жогорку биттер 800000000000гө орнотулган жана жогорку (FFFF1дон FFFFFFFFFFFFFFFFге чейин), анда бардык жогорку бит XNUMX коюлган.

Көрсөтүлгөн блокторго кирген даректер канондук деп аталат, ал эми жогорку биттердин ыктыярдуу мазмуну менен туура эмес даректер канондук эмес деп аталат. Канондук даректердин төмөнкү диапазону адатта процесстик маалыматтар үчүн бөлүнөт, ал эми жогорку диапазон ядро ​​маалыматтары үчүн колдонулат (колдонуучу мейкиндигинен бул даректерге жетүү артыкчылыктарды бөлүү деңгээлинде бөгөттөлгөн).

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

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

AMD Zen+ жана Zen 2 процессорлоруна таасир эткен жаңы кемчиликтин өзгөчөлүгү, процессорлор жараксыз канондук эмес даректерди колдонуу менен эстутумга кире турган алып сатарлык окуу жана жазуу операцияларына мүмкүндүк берет, жөн гана жогорку 16 битти этибарга албайт. Ошентип, спекулятивдүү кодду аткарууда процессор дайыма төмөнкү 48 битти гана колдонот жана даректин жарактуулугу өзүнчө текшерилет. Эгерде ассоциативдик котормо буфериндеги (TLB) канондук эмес виртуалдык даректи физикалык дарекке которууда даректин канондук бөлүгүндө дал келүү аныкталса, анда алып-сатарлык жүктөө операциясы мазмунду эсепке албастан маанини кайтарат. жогорку 16 бит, бул жиптер арасында эстутум бөлүштүрүүнү айланып өтүүгө мүмкүндүк берет. Кийинчерээк, операция жараксыз деп эсептелет жана жокко чыгарылат, бирок эстутумга кирүү аяктап, маалыматтар кэшке түшүп калат.

Эксперименттин жүрүшүндө FLUSH+RELOAD кэшинин мазмунун аныктоо ыкмасын колдонуу менен изилдөөчүлөр секундасына 125 байт ылдамдыкта жашыруун маалыматтарды берүү каналын уюштура алышты. AMD чиптеринен тышкары, көйгөй классикалык Meltdown аялуулугуна кабылган бардык Intel процессорлоруна да таасирин тийгизет. LFENCE нускамаларын колдонуу сыяктуу Meltdown чабуулдарына бөгөт коюуга жардам берген ошол эле ыкмаларды чабуулдун жаңы түрүнөн коргоо үчүн колдонсо болот. Мисалы, Intel процессорунда Meltdown каршы аппараттык коргоо камтылган болсо же системада программалык коргоо иштетилген болсо, анда мындай конфигурациялар чабуулдун жаңы вариантына кабылбайт.

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

Алсыздыгы жок программа өзүнүн жиптерине жетүү мүмкүнчүлүгүнө ээ болгондуктан, практикалык көз караштан алганда, бул ыкма кумдук обочолонууну кыйгап өтүү жана үчүнчү тараптын аткаруусуна мүмкүндүк берген программалардагы башка жиптердин ишине кийлигишүүнү уюштуруу үчүн кызыктуу. веб браузерлер жана JIT кыймылдаткычтары сыяктуу код. Окумуштуулар SpiderMonkey JavaScript кыймылдаткычынын жана Linux ядросунун чабуулга болгон аялуулугун карап чыгышты, бирок чабуул жасоо үчүн колдонула турган аялуу код ырааттуулугун таба алышкан жок. Колдонмолорго кол салуудан тышкары, ыкма башка микроархитектуралык алсыздыктардан пайдаланып, процессордун микроархитектуралык элементтеринин ортосунда кабыл алынгыс маалымат агымын мажбурлоо үчүн да колдонулушу мүмкүн.

Source: opennet.ru

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