отново, е открита уязвимост в системата за изпълнение на спекулативни инструкции на процесорите на Intel, и този път изследовател на Google, обяви, че е идентифицирал нова уязвимост (вече каталогизирана под CVE-2022 40982-), наречена „Падане“
Downfall, е уязвимост, която позволява определяне на съдържанието на XMM, YMM и ZMM векторни регистри, използвани преди това от други процеси при изпълнение на AVX инструкции на същото ядро на процесора.
Относно Падението
По отношение на уязвимостта се споменава, че непривилегирован нападател с възможността да стартирате свой собствен код в системата, може да използва уязвимостта за изтичане на данни от други потребителски процеси, системното ядро, изолирани Intel SGX анклави и виртуални машини.
Филтрираните векторни регистри се използват широко в криптиране, функции за копиране на паметта и обработка на низове, например, тези регистри се използват в библиотеката Glibc във функциите memcpy, strcmp и strlen, наред с други неща. От практическа гледна точка, уязвимостта може да се използва за определяне на данните, които се обработват в AES-NI или REP-MOVS инструкции (използвани във функцията memcpy) в други процеси, които могат да изтекат ключове за криптиране, чувствителни данни и потребителски пароли.
Уязвимостта се проявява в процесорите на Intel които поддържат разширени набори от инструкции AVX2 и AVX-512 (което означава, че засяга процесори от 6-то до 11-то поколение), докато процесорите на Intel, базирани на микроархитектурите Alder Lake, Raptor Lake и Sapphire Rapids, не изглеждат засегнати.
Както при наскоро откритата уязвимост на Zenbleed, засягаща процесорите AMD Zen2, в Downfall, причината за уязвимостта е изтичане на данни от регистрационни файлове, които се използват за споделяне на регистрационно съдържание във всички приложения на едно и също процесорно ядро.
Изтичането се дължи на спекулативен трансфер на данни при изпълнение на оператора GATHER, наличен в разширения AVX2 и AVX-512 и предназначен да осигури бърз достъп до различни данни в паметта. По време на изпълнението на оператора GATHER, старите данни в регистрационния файл се използват при спекулативното изпълнение на зависими инструкции. Тези данни не се отразяват директно в софтуерните регистрационни файлове, но могат да бъдат определени с помощта на техники за атака на страничен канал, предназначени за атаки на Meltdown, като анализиране на остатъчни данни в кеша на процесора.
За да се възползвате от Downfall, беше разработена техника за атака, наречена Gather Data Sampling (GDS) и за които са публикувани прототипи на експлойт за извличане на криптографски ключове от процес на друг потребител, изтичане на данни, след като са били копирани в ядрото на Linux от функцията memcpy, и прихващане на отпечатани символи, останали във векторни регистри, след като други процеси работят. Например, той демонстрира способността да се дефинират AES ключове, които се използват за криптиране на данни в процес на друг потребител, използвайки библиотеката OpenSSL.
Методът показа висока ефективност: чрез провеждане на експеримент със 100 различни ключа, 100% от ключовете AES-128 и 86% от ключовете AES-256 бяха определени с продължителност на всеки опит за определяне не повече от 10 секунди. В облачните системи може да се използва атака, за да се определи какви данни се обработват в други виртуални машини. Възможно е уязвимостта да бъде използвана чрез изпълнение на JavaScript код в уеб браузър.
Трябва да се спомене, че Иntel разбра за проблема миналата година (именно през месец август) и че уязвимостта беше оповестена публично едва тази година на конференцията BlackHat USA. и корекциите за защита срещу уязвимостта вече са включени в различните актуализации на ядрото на Linux, вариращи от версия 6.4.9 6.1.44 до 4.14.321.
В допълнение към това, сред възможните мерки за избягване на отрицателното въздействие на защитата срещу уязвимостта на Downfall върху производителността, се споменава извършването на промени в компилаторите, за да се деактивира използването на оператора GATHER или добавянето на израза веднага след GATHER LFENCE, което деактивира превантивното изпълнение на последващи изрази, преди всички предишни ангажименти да са завършени.
За системи, където корекциите на фърмуера не са налични, поддръжката за всички разширения на AVX е деактивирана, докато за частта за актуализация на микрокода на Intel също така предоставя възможност за използване на интерфейса MSR за селективно деактивиране на защитата на фърмуера в контекста на отделни процеси.
И накрая, ако се интересувате да научите повече за това, можете да проверите подробностите в следваща връзка.