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, оскільки це знижує продуктивність покарання, викликані хибними залежностями, а також уникаючи ефекту, подібного до просування цілих чисел у C.

Якщо процесор спекулятивно виконує інструкцію vzeroupper, належного відкату немає. Однак уражені процесори Ryzen можна змусити відновити, хоча й неправильно. Перебуваючи в цьому стані, програма, яка зараз виконується, може шпигувати за цими регістрами в режимі реального часу, переглядаючи дані, що надходять у систему в будь-який момент часу.

На які ЦП впливає Zenbleed і коли будуть доступні виправлення?

Як зазначалося раніше, відомо, що лише процесори AMD на основі архітектури Zen 2 вразливі до помилки безпеки Zenbleed, але Архітектура Zen 2 оснащена процесорами трьох серій, що ускладнює визначення того, які процесори вразливі, а які не є. Ось таблиця, з якої все повинно бути зрозуміло:

Постраждалі процесори

Серія Ryzen 3000

Усі, крім APU (наприклад, Ryzen 3 3200G)

Епічний Рим

всі

Серія Ryzen 4000

всі

Серія Ryzen 5000

Тільки 5300U, 5500U та 5700U

Серія Ryzen 7000

Лише APU 7020 (наприклад, 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 була однією з найпопулярніших процесорних архітектур AMD. Це стало поштовхом до повернення AMD у 2019 та 2020 роках, і багато людей, компаній та організацій досі використовують комп’ютери з процесорами Zen 2 у 2023 році, особливо Epyc Rome ЦП. Це не так погано, як Spectre (який впливає практично на всі ЦП до 2019 року) і Meltdown (який впливає майже на всі процесори Intel до 2019 року), але все одно досить широко поширені.

Виправлення безпеки для подібних уразливостей також часто призводять до зниження продуктивності, але AMD розповіла Обладнання Тома що цей штраф залежатиме від процесора та робочого навантаження. Припущення та передбачення були дуже важливими для продуктивності процесора, тому незрозуміло, чи призведе будь-яке потенційне виправлення до значного зниження продуктивності.