Mobile menu

COI

Уразливість Meltdown/Spectre

Новий, 12018, рік розпочався просто «чудово», з одного критичного баґу. Далі трохи історії/хронології та свіжих новин щодо нього.


Про критичну уразливість в чіпах Intel 2 січня написав блоґ The Register, після чого багато виробників пристроїв і розробників ПЗ анонсували випуск оновлень для захисту від виявлених уразливостей.

Третього січня цього року зняли ембарґо з інформації про апаратну уразливість процесорів. Це планувалося зробити дев’ятого числа, але занадто багато «витоків» інформації вже було на цей момент.

Головний корінь проблеми — так зване «спекулятивне виконання команд». Спрощено, це технологія в сучасних мікропроцесорах, яка дозволяє «передбачати», які команди буде потрібно виконати в майбутньому.

Наприклад, програма А виконує складну математичну операцію, в ході якої буде використана сума якихось змінних. Програма B заздалегідь (коли процесор менш завантажений) обраховує цю суму, щоб прискорити роботу процесу в майбутньому, і в потрібний момент підсовує результат програмою A. Якщо результат програми B не потрібен програмі A, то нічого страшного — будь-які зміни скасовуються і результати ігноруються, а якщо потрібен — то процесор прискорив свою роботу і зменшив затримку.

Все це відбувається у внутрішній пам'яті процесора на кількох шарах кешу (в залежності від архітектури чіпа). Уразливість спекулятивного виконання полягає в тому, що зловмисники можуть отримати доступ до даних, які знаходяться в цій загальній пам'яті, — а це дає зловмисникам доступ до програм та функцій, які оперують цими даними.


 

Спочатку мова йшла лише про процесори Intel (випущені за останні 20 років!), але потім виявилося, що це зачіпає й інші платформи.

Microsoft випустила програмний патч для Windows у листопаді (для учасників програми Microsoft Insiders). І ще один великий патч від Microsoft випустили вже в переддень Нового року — ймовірно, команда працювала на знос у цей час, але користувачі не здогадувалися про справжні причини випуску апдейтів. 14 грудня користувачам AWS (Amazon Web Server) повідомили, що хвиля серверних перезавантажень, запланована на 5 січня, може позначитися на продуктивності. Патч до ядра Linux від групи дослідників з технічного університету Граза був остаточно прийнятий розробниками ядра на початку січня. Зміни в вихідному коді Linux були доступні публіці, але з них було вилучено коментарі, які пояснювали причини того, що відбувалося. Власне через ці патчі і піднялася буча, через яку Intel і зняла невдовзі ембарґо (а ще через те, що пройшло дуже багато часу з початкового відкриття — див. репортаж Верґе щодо цього).


Строго кажучи, мова йде про 3 уразливості: bounds check bypass CVE-2017-5753, branch target injection CVE-2017-5715 і rogue data cache load CVE-2017-5754.

Вони отримали умовні назви Meltdown («Крах») і Spectre («Привид»). Meltdown дозволяє порушити бар'єр між додатками і внутрішньою пам'яттю операційної системи (назва символізує злам цього бар'єру), що відкриває доступ до даних, які зберігаються в пам'яті ОС.

Spectre порушує такий бар'єр між самими додатками: умовно, один сервіс може «залізти» в пам'ять іншого. Spectre більш складна у виконанні, але її і важче перемогти, тому дослідники вважають, що атака буде ще якийсь час переслідувати користувачів та розробників, як привид.

Цікаво, що уразливості одночасно знайшли дві незалежні групи дослідників. Перша — зоряний Project Zero з Google. Вони відправили листи виробникам процесорів ще 1 червня (!) 12017 (публічне ревю). Друга — група дослідників з універів. Project Zero опублікував чудовий технічний розбір, а університети максимально відпрацювали PR-сторону, нагнавши остраху на масову аудиторію «дизайнерськими лендінґами» (Meltdown / Spectre).


На перший погляд, це було найбільш страшно «хмарам», суть яких якраз у тому, що програми різних людей ділять один фізичний сервер. Зараз модно називати такий підхід віртуалізацією. Мова йде про більш ефективне використання серверів: якщо дві програми (два клієнти) можуть поміститися на один фізичний сервер — так і робимо. Принципова обіцянка «віртуалізації» в тому, що ваші дані так само захищені, як ніби вони на окремому сервері. Але є одне «але»!

І вже через день проблема торкалася не лише серверів. Майже через пару годин після «засвічення» проблеми почалася експлуатація CVE-2017-5753 в Firefox для крадіжки паролів з джаваскрипта. Mozilla, звісно, оперативно випустила оновлення, але сам факт. І оновлення таке собі — вони зменшили точність таймерів і API отримання часу до 20μs (sic, 20 мікросекунд!), поки не полагодять корінь проблеми. Нагадаю, що атака заснована на вимірі швидкості виконання операцій процесором, так що, не маючи точного часу, провести її не можна.

В Ґуґла є постійно оновлювана статус-сторінка відносно цих уразливостей і їхнього [не] впливу на власні проекти: https://support.google.com/faqs/answer/7622138


Спершу і Ґуґл, і решта постачальників хмарних сервісів та операційних систем казали, що падіння продуктивності на 10–30 % (як страхали журналісти різних видань) не спостерігається і все чудово. Але в дійсності все було не так райдужно.

Ось, наприклад, сервери Stack Overflow після патча Meltdown.

Ми використовуємо майкрософтівський Azure, і спочатку там теж запевняли, що все добре і майже немає різниці в продуктивності, але на форумах народ дуже масштабно жалівся і наводив приклади падіння (у нас теж цей тиждень були суттєві трабли з віртуальними машинами і білдами та тестами, що на них бігали) — і MS все ж визнали проблему і написали детальніші пояснення.

Intel опублікувала результати власного тестування процесорів після використання патчів, що знімають уразливості. Власне, ці результати синтетичних і напівсинтетичних тестів підтверджують попередні дані Microsoft щодо того, що на машинах з процесорами Skylake, Kaby Lake або новішими чіпами зниження продуктивності є несуттєвим, і більшість нічого не помітить. Ось тільки Intel для свого тестування вибрала чіпи трьох останніх поколінь і всі зі старшої лінійки Core i7. Говорячи конкретніше — для тестів були обрані моделі Core i7-8700K, Core i7-8650U, Core i7-7920HQ і Core i7-6700K. А на лінійках Haswell та Broadwell ситуація була набагато гірша — мимовільні перевантаження тощо. CEO (Брайан Кржаніч) навіть звернувся з відкритим листом до інших компаній із закликом бути більш відкритими по ситуації з усуненням уразливостей в процесорах.

А ще через тиждень Intel зізнався, що проблеми є в процесорах Broadwell і Haswell, але також у попередників і наступників.

Ще через день стало відомо і про BSOD’и через ці, трохи наспіх зроблені, патчі.


Врешті ж Intel взагалі порадили поки що не оновлюватися: «Ми рекомендуємо OEM-виробникам, провайдерам хмарних сервісів, розробникам операційних систем і програмного забезпечення, а також кінцевим користувачам припинити установку поточних патчів, оскільки вони можуть приводити до більш частого, ніж зазвичай, перезавантаження, а також викликати інші проблеми в роботі системи».

Intel також доклала до заяви список чіпів, які не рекомендує оновлювати. До нього увійшли багато процесорів усіх основних лінійок останнього десятиліття: Broadwell, Haswell, Coffee Lake, Kaby Lake, Skylake і Ivy Bridge. Сервери на багатьох моделях Xeon і Ivy Bridge теж схильні до цієї проблеми.

Лінус Торвальдс (творець ядра Linux) особливо ніколи не стримував себе у висловлюваннях. У 12012 році він обматюкав NVIDIA за небажання випускати офіційні підтримувані драйвери для ОС Linux і прямим текстом сказав, куди треба йти чіпмейкеру. Після такої заяви від Intel Торвальдс не витримав і у властивій йому манері без цензури та політкоректності висловився на її адресу.

RedHat теж відкотила патчі Intel через нестабільність системи після них. Як і HP. Як і VMware.

Microsoft же випустила окремий екстрений апдейт, щоб знешкодити попередній збійний патч Intel проти Spectre.


І, власне, на днях стало відомо про нові способи атаки MeltdownPrime та SpectrePrime. Обидві атаки побудовані на роботі з двома ядрами багатоядерного процесора і використовують особливості роботи протоколу узгодження вмісту кешу для різних ядер CPU (Invalidation-Based Coherence Protocol). Якщо в старих способах атаки по сторонніх каналах використовувалося відновлення вмісту кешу на основі техніки FLUSH + RELOAD, то в нових застосований метод “Prime and Probe”.

Автори дослідження стверджують, що нові методи забезпечують ту ж результативність, що і старі, і навіть вище. Демонстраційний експлойт SpectrePrime при 100 тестових запусках продемонстрував точність роботи 99,95 %, тоді як показник експлойта Spectre — 97,9 %.

Доброю новиною є те, що поточні програмні патчі, що випускаються виробниками, забезпечують захист і від нових атак. З іншого боку, на апаратному рівні знадобиться впроваджувати додаткові захисні заходи, вважають дослідники. В Intel заяви дослідників про необхідність додаткових апаратних поліпшень спростовують, заявляючи, що вже розроблені апаратні методи захисту від Meltdown і Spectre будуть ефективні і для нових варіантів атак.

Але варто врахувати, що на цей момент відомо як мінімум про 32 випадки судових розглядів з Intel, пов'язаних з цими уразливостями. З них три позови — заяви від акціонерів, які звинувачують раду директорів і керівництво Intel у зловживанні інсайдерською інформацією про проблеми з безпекою (див. той самий комікс на початку). AMD теж не лишається осторонь — проти неї теж є позови (бо спочатку відхрещувалася про вразливість до Spectre 2).


Що ж робити звичайним користувачам?

Основні варіянти два:

  • Чекати наступних оновлень і встановлювати їх, коли з’являються.

  • Ігнорувати повідомлення, але при цьому піддавати свої дані та систему ризику.

Я рекомендую саме перший варіянт попри можливі проблеми з уповільненням/перезавантаженнями тощо — виходять (і будуть виходити) апдейти та патчі, що це фіксять.

 

Поділитися посиланням