Що насправді показує розділ «помилки» / proc / cpuinfo?


23

У системі Debian Stretch і тестування / Buster з поточним ядром та встановленим мікрокодом я все ще бачу зрив та привид, зазначені як помилки /proc/cpuinfo.

Однак показ spectre-meltdown-checkerшоу не вразливий.

Тож мені цікаво, що /proc/cpuinfoпоказує. Це лише вразливості цього процесора і чи завжди вони будуть перераховані, незважаючи на наявність виправленої системи?

Відповіді:


22

Намір поля «помилки» /proc/cpuinfoописаний у повідомленні про компіляцію, яке його ввело :

x86/cpufeature: Додати прапори помилок у /proc/cpuinfo

Скиньте прапори, які позначають, що ми виявили та / або застосували вирішення помилок до ЦП, який ми виконуємо, аналогічно прапорам функцій.

Перевага полягає в тому, що вони не накопичуються з часом, як функції процесора.

Раніше апаратні помилки, які було виявлено ядром, були перераховані як окремі функції ( наприклад, сумнозвісна помилка F00F, яка має власний f00f_bugзапис у /proc/cpuinfo32-бітних системах x86). Запис «помилок» був введений, щоб вони містили одну функцію вперед, у тому ж стилі, як прапорці процесора x86 .

Що стосується того, що означають записи на практиці, як ви бачите в повідомленні, все, що гарантовано - це те, що ядро виявило апаратну помилку. Вам потрібно буде шукати в іншому місці (повідомлення про завантаження або конкретні /procзаписи або /sysзаписи, такі як файли /sys/devices/system/cpu/vulnerabilities/), щоб визначити, чи вирішуються проблеми.

Корисність записів "помилок" обмежена двома способами. Перший полягає в тому, що справжні негативи не можна відрізнити від невідомих: якщо поле не вказує "cpu_meltdown", ви не можете знати (лише з поля), чи означає це, що ядро ​​не знає про Meltdown, або що на ваш процесор не впливає Meltdown. Друга полягає в тому, що виявлення може бути занадто спрощеним; вона помиляється з боку обережності, тому може повідомити, що ваш процесор вразливий, коли його немає. Оскільки "виявлення" керується таблицею, його точність залежить від того, яку версію ядра ви використовуєте.

У випадку помилок Meltdown та Spectre процес виявлення, який подає значення, /proc/cpuinfo працює наступним чином на x86:


2
Що стосується привидів та краху, вони навіть не виявляються, а лише припускаються . У мене є порядок x86, на який не впливає жоден, але ядро ​​повідомляє, що це все-таки через жорстке кодове правило, яке в основному говорить, що "будь-який процесор Intel старший за X без застосованого патча мікрокоду вразливий до збитку".
R ..

2
@R .. ваш CPU включений до таблиць порядку в ядрі? (Шукайте тут "cpu_no_speculation", щоб побачити останні таблиці.) Це дійсно одна з проблем із записом "помилки". Meltdown, Spectre та ін., Його точність дійсно залежить від того, наскільки недавнє ваше ядро, оскільки їх "виявлення" керується таблицею.
Стівен Кітт

Ні, це Centerton Bonnell, і він звідти відсутній. Я побачу про подання патча.
Р ..

Хтось знає, чи це все-таки правильно, коли оновлення мікрокоду застосовувалися під час завантаження, але після завантаження ядра?
Бахсау

12

Уразливості Meltdown / Spectre є в дизайні / архітектурі чіпсетів процесора, і, не маючи придбання нового майбутнього обладнання, патчі є гарною ілюзією безпеки на тривалий термін . Нові методи експлуатації вад можуть з часом виходити на поверхню, які можуть обійти поточні виправлення.

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

Однак, як правильно заявляє @Gilles, наявність цього попередження не означає, що поточні відомі подвиги методів Spectre / Meltdown будуть працювати; вони не працюватимуть, якщо встановлені патчі.

У випадку, згаданому у запитанні, ядро ​​перевіряє лише наявність процесорних моделей, на які, як відомо, впливає Specter / Meltdown (зараз усі процесори x86, якщо ми говоримо лише про x86), а значить, cpu-insecureвсе ще перераховані в розділі помилок / рядок в /proc/cpuinfo.

Іди перевіри своє /proc/cpuinfo. Він буде містити cpu_insecure, якщо у вашому ядрі є патч KPTI

Я виявив, що в патчі KPTI є такий фрагмент коду:

   /* Assume for now that ALL x86 CPUs are insecure */
   setup_force_cpu_bug(X86_BUG_CPU_INSECURE);

А після оновлення ядра ви отримуєте:

bugs      : cpu_insecure

PS. Вже відбувся раунд оновлень нового методу експлуатації "помилок" Spectre / Meltdown. Мабуть, це буде не останній раз


2
Наприклад, якщо ви можете затримати покупку hw на деякий час, зачекайте на нове покоління процесорів. Моя кришталева куля скаже мені, що у нас буде багато серверів, які продають арахіс у середньостроковій перспективі.
Rui F Ribeiro

Помилки CPU перераховані /proc/cpuinfoнавіть у тому випадку, якщо вони повністю пом'якшені програмним виправленням. Їх присутність не означає, що ваша система вразлива саме до цієї помилки.
Жил "ТАК - перестань бути злим"

@ Дозволено, ви не зможете застосувати відомі подвиги. Однак у нас уже був цикл подвигів, що відбулися навколо 1-го покоління патчів, і я б ризикну сказати, що там багато комерційних інтересів, замовчуючи критиків, що це фундаментальний недолік дизайну, який змусить серйозну модернізацію процесора.
Rui F Ribeiro

1
Це справедливо для подвигів типу Spectre / Meltdown, вони є основними проблемами дизайну, які будуть надалі надавати. Але ви писали, що це вірно з bugsпоказів рядків, і це просто неправильно. Більшість помилок дизайнерського процесора мають повне вирішення програмного забезпечення, що вимагає лише невеликої продуктивності. Якщо ядро ​​застосовує спосіб вирішення, то помилка нешкідлива.
Жил "ТАК - перестань бути злим"

1
@Rui о, я думаю, я не висловився досить чітко - я мав на увазі, що стаття не відповіла на запитання, яке задала її власна назва, а не те, що вона не відповіла на це питання ;-). (Як і в заголовку статті: «Як помилка Spectre, що порушує галузь, залишалася таємницею протягом семи місяців», але стаття не пояснює, як IMO.)
Стівен Кітт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.