Retbleed - Intel және AMD процессорларының алыпсатарлық орындау механизміне жасалған жаңа шабуыл

ETH Zurich зерттеушілері орталық процессордағы жанама ауысуларды алыпсатарлық орындау механизміне жаңа шабуылды анықтады, бұл ядро ​​жадынан ақпаратты шығаруға немесе виртуалды машиналардан хост жүйесіне шабуылды ұйымдастыруға мүмкіндік береді. Осалдықтардың кодтық атауы Retbleed (CVE-2022-29900, CVE-2022-29901) және табиғаты бойынша Spectre-v2 шабуылдарына жақын. Айырмашылық «jmp» инструкциясы арқылы жанама секірудің орнына адресті жүктеу, стектен секіру үшін адресті алатын «ret» (қайтару) нұсқауын өңдеу кезінде ерікті кодтың алыпсатарлық орындалуын ұйымдастырумен байланысты. жад немесе орталық процессор регистрі.

Шабуылшы қате ауысуды болжау үшін жағдай жасай алады және бағдарламаның орындалу логикасында қарастырылмаған код блогына мақсатты, алыпсатарлық көшуді ұйымдастыра алады. Сайып келгенде, процессор салалық болжамның ақталмағанын анықтайды және операцияны бастапқы күйіне қайтарады, бірақ алыпсатарлық орындау кезінде өңделген деректер кэште және микроархитектуралық буферлерде аяқталады. Егер қате орындалған блок жадқа кірсе, оның алыпсатарлық орындалуы жадтан оқылған деректердің ортақ кэшке сақталуына әкеледі.

Алыпсатарлық операциялардан кейін кэште қалған деректерді анықтау үшін шабуылдаушы қалдық деректерді анықтау үшін бүйірлік арна әдістерін пайдалана алады, мысалы, кэштелген және кэштелмеген деректерге кіру уақытындағы өзгерістерді талдау. Басқа артықшылық деңгейіндегі аймақтардан (мысалы, ядро ​​​​жадынан) ақпаратты мақсатты түрде алу үшін «гаджеттер» пайдаланылады - әсер етуі мүмкін сыртқы жағдайларға байланысты деректерді жадтан алыпсатарлық түрде оқуға жарамды ядродағы командалар тізбегі. шабуылшы.

Шартты және жанама секіру нұсқауларын қолданатын классикалық 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 ұрпақтары үшін және 1 жылдың 1 тоқсанына дейін шығарылған Zen 2, Zen 2021+ және Zen 3 микроархитектураларына негізделген AMD процессорлары үшін расталды. 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» нұсқауының алыпсатарлық орындалуы стекке арнайы буферге (қайтару адресі стек) сілтемесіз жүзеге асырылады және тармақты болжау блогы «ret» нұсқауын басқару қайтарымы ретінде емес, жанама тармақ ретінде қарастырады. , және сәйкесінше жанама ауысуларды болжау үшін деректерді пайдаланады. Бұл шарттарда жүйелік шақыру арқылы қол жеткізуге болатын іс жүзінде кез келген «рет» операциясы пайдаланылуы мүмкін.

Сонымен қатар, жалған тармақтарды іске асыруға байланысты AMD процессорларында (CVE-2022-23825, Филиал түрінің шатасуы) тағы бір мәселе анықталды - тармақты болжау жағдайлары филиалды болжау буферіне әсер етуге мүмкіндік беретін қажетті салалық нұсқауларсыз да орын алуы мүмкін. «ret» нұсқауынсыз. Бұл мүмкіндік қорғауды жүзеге асыруды айтарлықтай қиындатады және тармақты болжау буферін белсендірек тазалауды талап етеді. Ядроға толық қорғауды қосу үстеме шығындарды 209%-ға арттырады деп күтілуде.

Ақпарат көзі: opennet.ru

пікір қалдыру