Zenbleed: Всичко, което трябва да знаете за тази грешка в сигурността на AMD

Най-новият в дълга поредица от грешки в сигурността на процесорите, Zenbleed е още едно нещо, което трябва да бъде коригирано. Ето какво трябва да знаете.

След като експлойтите на Spectre и Meltdown CPU бяха публикувани през 2018 г., компютърният свят беше доста бдителен относно намирането на бъгове в сигурността и вратички в процесорите, а през последните пет години изследователите откриха много. На 24 юли беше публично разкрит още един експлойт, след като беше съобщено за първи път през май. Този път той е специфичен за процесорите на AMD, изградени върху архитектурата Zen 2, и е наречен "Zenbleed". Ето всичко, което трябва да знаете за Zenbleed и какво означава той за света.

Как работи Zenbleed?

Zenbleed е много подобен на други хардуерно базирани грешки в сигурността като Spectre, тъй като използва спекулативната способност на процесорите. За да се подобри производителността, процесорите спекулират или предвиждат следващото нещо, което трябва да направят, и откакто Spectre беше разкрит за първи път, светът научи, че спекулациите могат да бъдат много несигурни, ако бъдат направени неправилно.

Източник: Tavis Ormandy

Регистрите в процесора могат да съдържат малко количество данни, обикновено инструкция, адрес за съхранение или друг вид малки данни. Регистрите XMM в архитектура x86_64 (така че всеки от засегнатите Zen 2 процесори) могат да се използват само за извършване на изчисления върху данни, а не за адресиране на паметта. Това се разширява до 256 бита в случай на YMM регистри и 512 бита в ZMM регистри. В този случай XMM се отнася до долните 128 бита на обща сума 512 бита от ZMM регистрите.

Тези регистри са невероятно полезни за много различни неща, включително стандартни C функции. Уязвимостта злоупотребява със спекулативно изпълнение и грешни прогнози за разклоняване, за да изплюе по същество произволна част от данните от паметта, но тези данни могат да бъдат от нещо. Стандартните C библиотечни функции като strlen, които измерват дължината на низ, могат да използват тези регистри за преместване на данни наоколо и е възможно случайно парола, която използвате, да е попаднала в някое от тези регистри.

Предвиждането на клонове и спекулативното изпълнение в общи линии се отнасят до това, когато вашият компютър изпълнява операции, които все още не са необходими, но вероятно ще са необходими в следващите цикли. Често се прави в моменти, когато вашата система има свободни ресурси, тъй като ускорява цялостната обработка, когато инструкциите или данните иначе все още не биха били готови за процесора. Ако извършената работа не е необходима, тя обикновено се отхвърля и процесорът може да се върне там, където трябва, за да изпълни следващата правилна инструкция. Когато прави това, това се нарича погрешно предвиждане на клон.

Там, където възниква проблем, е в инструкцията vzeroupper, която нулира битовете в позиция 128 и по-висока от регистрите YMM и ZMM. Това се прави особено при преход между AVX и наследен SSE код, тъй като елиминира производителността наказания, причинени от фалшиви зависимости, като същевременно се избягва ефект, който е подобен на целочисленото промотиране в ° С.

Ако процесорът спекулативно изпълни инструкция vzeroupper, няма правилно връщане назад. Засегнатите Ryzen процесори обаче могат да бъдат принудени да се възстановят от него, макар и неправилно. Веднъж в това състояние, изпълняваната в момента програма може след това да шпионира тези регистри в реално време, преглеждайки данните, протичащи в цялата система във всеки един момент.

Какви процесори са засегнати от Zenbleed и кога ще бъдат налични корекции?

Както беше посочено по-рано, само процесорите на AMD, базирани на архитектурата Zen 2, са известни като уязвими към грешката в сигурността на Zenbleed, но Архитектурата Zen 2 захранва процесори в три серии, което прави объркващо да се разбере кои процесори са уязвими и кои не са. Ето таблица, която трябва да изясни всичко:

Засегнати процесори

Серия Ryzen 3000

Всички с изключение на APU (напр. Ryzen 3 3200G)

Епичен Рим

всичко

Серия Ryzen 4000

всичко

Серия Ryzen 5000

Само 5300U, 5500U и 5700U

Серия Ryzen 7000

Само 7020 APU (напр. Ryzen 3 7320U)

Това е доста голямо количество процесори на AMD и това са само тези, които са потвърдени досега. Zen 2 се използва и в APU, които захранват Steam Deck, Xbox Series S и X и PS5. И в двата случая не сме чули дали тези процесори също са засегнати, но съдейки по начина, по който работи този експлойт, бих се изненадал, ако те също не са засегнати. Изглежда малко вероятно AMD да го е закърпила в Xbox и PS5, тъй като чиповете от серия 7020, които са по-нови, също са засегнати.

към момента на писане, микрокодът е изпратен към ядрото на Linux който ще коригира тази уязвимост и вашата операционна система или BIOS може вече да има актуализация, която коригира този проблем.

Какво означава това за компютри, които използват уязвими процесори?

Това е трудно нещо за отговор, защото не всички компютри са равни. За нормалните хора, които просто използват настолни компютри и лаптопи за игри, вероятно няма нужда да се притеснявате толкова. Това е доста сложен експлойт и въпреки че вече е обществено достояние, все още няма известни примери за хакер, използващ Zenbleed, за да хакне нещо.

Въпреки това, залозите са много по-високи за центровете за данни и важни хора, които боравят с чувствителна информация на собствените си компютри. Има причина, поради която AMD беше много ясна, че Epyc Rome е бил коригиран, преди уязвимостта да бъде публикувана: много чувствителни информацията се обработва от процесори на Epyc и би било катастрофа, ако някои процесори, захранващи големи сървъри, успеят нападнат. Ядрото на Linux 6.4.6 вече е пуснато и поправя тази уязвимост чрез преобръщане на официален пач на микрокод от AMD. Изглежда вероятно Microsoft да включи нещо подобно в Windows.

тревожно, Официалните BIOS корекции на AMD може да не се пуснат няколко месеца, в който случай има "пилешка хапка", който можете да зададете, ако сте на Linux или FreeBSD машина. На Linux машини можете да използвате msr-tools и да изпълните следната команда.

wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

Във FreeBSD можете също да използвате следното.

cpucontrol(8)

Деактивирането на SMT не е достатъчно за смекчаване на уязвимостта.

Едно нещо, което прави Zenbleed особено лош е, че Zen 2 беше една от най-популярните CPU архитектури на AMD. Той стартира завръщането на AMD през 2019 и 2020 г. и много хора, компании и организации все още използват компютри с процесори Zen 2 през 2023 г., особено Epyc Rome процесори. Това не е толкова лошо, колкото Spectre (което засяга почти всички процесори преди 2019 г.) и Meltdown (което засяга почти всички процесори на Intel преди 2019 г.), но все пак е доста широко разпространен.

Пачовете за сигурност за уязвимости като тази също често водят до влошаване на производителността, но AMD каза Хардуерът на Том че това наказание ще зависи от процесора и натоварването. Спекулациите и прогнозите са доста важни за производителността на процесора, така че не е ясно дали някоя потенциална корекция ще доведе до значително намаляване на производителността.