From: kmeaw
Date: 2026-03-05 23:05:35Z
> Но не представляю как их можно эксплуатировать.
На каждый цикл процессора сложить побайтово все регистры общего
назначения и отсортировать.
Если в полученной последовательности будет подпоследовательность
{0x13, 0x37, 0xba, 0xbe, 0xca, 0xfe}, то считать это кодом A,
если {0xab, 0xba, 0xba, 0xbe, 0xc0, 0xde}, то считать это кодом B.
Подмешать такие байты будет несложно в сетевые пакеты, раскладка их
по регистрам достаточно стабильна и предсказуема для фиксированной
версии ОС.
Берём все такие коды за последние 200мс, применяем какие-нибудь
фильтры, чтобы убрать повторы, проверить целостность и аутентичность,
и получаем чистый поток бит, который медленно пишем куда-нибудь в SMRAM.
Когда накопили достаточно данных, генерируем прерывание и исполняем.
Результат кодируем с помощью задержек сетевых пакетов.
Необязательно встраиваться в процессор, это может быть NIC, которая
подгрузит нужный код в память хоста на следующей перезагрузки, её
можно вызвать импульсом на reset или срабатыванием защиты источника
питания. Большинство прошивок материнских плат либо не проверяют
такой код совсем, либо доверяют всему, что подписал производитель.
Аналогично может произойти с GPU, когда WebGL загрузит специальный
злодейский шейдер (или для пользователей браузеров без js на экран
выведется хитрый узор), диск может внезапно материализовать что-то
в загрузочной области по характерному профилю нагрузки (пользователь
качает большой файл на диск, а злодей отдаёт его с плавающей скоростью)
или записи в нешифрованную область (там мог бы быть /var/log/auth.log).
Если злодей близко, то почти любой электронный компонент мог бы быть
радиоприёмником и/или передатчиком, иногда даже тогда, когда изначально
не был для этого спроектирован.
> А где гарантия что по моему IP/стране/AS они не подсунут мне
> какой-то особенный, не такой как у всех? Можно же будет сделать
> целенаправленную атаку supply chain? Когда я в магазине приобретаю CPU,
> то можно подсунуть для страны особые CPU, но никто же заранее не знает
> кто и когда именно возьмёт в магазине физический процессор?
А не наоборот ли? Грузовик процессоров едет по понятному фиксированному
маршруту, его могут перехватить как спецслужбы, так и организованные
преступники, в оверлейную сеть его так просто не спрячешь, маршруты
меняются редко. Когда CPU до меня доедет, я не увижу разницы. Если мой
текущий процессор испортить, а в магазине рядом по хорошей цене будет
замена, то именно её я скорее всего и куплю.
Микрокод я хотя бы сравнить могу. Вот тут, например, пытаются собрать все
известные: https://github.com/platomav/CPUMicrocodes
Таким образом, ситуация, когда
> сам привод просто скотчем закрыт
сильно лучше, чем когда что-то зафиксировано на уровне flash/ROM или даже
топологии интегральной микросхемы. Ведь в этом случае я могу скотч отклеить,
вытащить диск и сравнить его содержимое с таким же у других людей.
А в случае, когда вместе соберётся достаточное количество замотивированных
и квалифицированных людей, они смогут сделать свой диск со свободным софтом.
Вот что действительно зло - это когда в устройстве есть eFUSE, которые
включены по-умолчанию, препятствующие откату микрокода/прошивки. Механизм
в целом полезный для безопасности, но на его включение, на мой взгляд, должно
быть явно санкционировано владельцем устройства, желательно отламыванием
какой-нибудь части, чтобы это было видно при покупке б/у.
From: Sergey Matveev
Date: 2026-03-06 07:18:22Z
*** kmeaw@kmeaw.com [2026-03-03 12:37]:
>Подмешать такие байты будет несложно в сетевые пакеты [...]
Всё так, согласен. Я имел в виду air-gapped случай. С наличием сетевых
подключений всё печально. Это не отменяет возможность DoS, конечно,
порче данных, при получении, как предложено, картинки особой.
>Если злодей близко, то почти любой электронный компонент мог бы быть
>радиоприёмником и/или передатчиком, иногда даже тогда, когда изначально
>не был для этого спроектирован.
Это да. Даже без явных backdoor-ов, само по себе железо может неплохо
сливать данные по побочным каналам.
>А не наоборот ли? Грузовик процессоров едет по понятному фиксированному
>маршруту, его могут перехватить как спецслужбы, так и организованные
>преступники, в оверлейную сеть его так просто не спрячешь, маршруты
>меняются редко. Когда CPU до меня доедет, я не увижу разницы. Если мой
>текущий процессор испортить, а в магазине рядом по хорошей цене будет
>замена, то именно её я скорее всего и куплю.
Но как убедиться, что именно мне попал "нужный" процессор? Подкупить
продавца? Внедрить продавца нужного? Тут уж можно проще и домой ко мне
залезть и поменять всё что угодно. Тут будет атаковано уже множество
людей. Однозначно, вне всяких сомнений, это запросто делается, спору
нет, но не целенаправлено же ради одного человека.
>Микрокод я хотя бы сравнить могу.
Это если есть источники откуда можно взять их эталонный хэш. А сколько
людей будет качать ничего не проверяя? Впрочем, это на их совести, как и
скачивание бинарных пакетов, JS и прочего. Но да, хотя бы есть
потенциальная возможность сравнения. Насколько вижу, fw_update в
OpenBSD, судя по man, должен качать с их сайта, где есть подписанные
SHA256 хэши файлов. Железо же простому смертному нет возможности
проверить, согласен.
>Вот тут, например, пытаются собрать все
>известные: https://github.com/platomav/CPUMicrocodes
Здорово!
>> сам привод просто скотчем закрыт
>сильно лучше, чем когда что-то зафиксировано на уровне flash/ROM или даже
>топологии интегральной микросхемы. Ведь в этом случае я могу скотч отклеить,
>вытащить диск и сравнить его содержимое с таким же у других людей.
Если речь про то, что CD проще достать и прочитать штатными средствами,
нежели чем что-то в микросхеме -- это да. Если речь про то, что
накопитель с данными есть нечто хорошее, то вопрос "можно ли его
перезаписать?". Если можно, то используя недокументированные возможности
или уязвимости/баги, можно код обновить зловредом. Не заниматься же
проверкой содержимого flash перед каждой загрузкой?
Лично я не против заклеенного CD-ROM. Для меня это равносильно ROM.
Главное что не предполагается, что я должен туда что-то загружать
самостоятельно. Это устройство само в себе, законченное и готовое к
работе. Если бы не было бы скотча и мне надо бы было вставлять диск,
то это уже другая история, хотя для компьютера/устройства разницы,
конечно же, нет.
>А в случае, когда вместе соберётся достаточное количество замотивированных
>и квалифицированных людей, они смогут сделать свой диск со свободным софтом.
Ну и по факту много ли мы видим прошивок свободных? Не, возможно их
мало, потому что производители железа делают так, чтобы усложнить всем
жизнь, плюс отсутствует документация и всё такое прочее. А может не так
много заинтересованных в этом людей? Поэтому только на очень особенных
компьютерах мы можем иметь свободный BIOS (UEFI?). С WiFi вообще,
насколько помню (но специально давно не выяснял, вообще WiFi не
использую уже лет 15), всё настолько плохо, что вроде нет современных
решений (для быстрых версий WiFi) не требовавших закрытый blob. Лично
меня не интересует возня с железками: я хочу купить готовое к работе
устройство. Конструктор штука полезная, но предоставляйте его тем кто
заинтересован. Это как GNU/Linux: не законченная ОС, а конструктор.
Когда производитель даёт мне устройство, но где только RAM, а ты уж сам
загружай в него мозги -- то он мне даёт конструктор, framework, мол сам
делай из него полноценное устройство. Он конечно даёт и свой вариант
блоба, но нефиг меня заставлять выполнять его работу. Если он даёт
возможность перепрошить flash, но в нём изначально есть уже что-то,
делающее устройство из коробки работающим: то ok, уже лучше, но вопрос
как защитить flash от перезаписи (это выполнимая задача, можно сделать).
>Вот что действительно зло - это когда в устройстве есть eFUSE, которые
>включены по-умолчанию, препятствующие откату микрокода/прошивки. Механизм
>в целом полезный для безопасности, но на его включение, на мой взгляд, должно
>быть явно санкционировано владельцем устройства, желательно отламыванием
>какой-нибудь части, чтобы это было видно при покупке б/у.
Согласен и про полезность, и про явное санкционирование.