1 час назад
200-долларовую майнинговую карту CMP 170HX удалось превратить в подобие Tesla A100
В эпоху «бума майнинга», глядя на то, как любое железо, способное добывать криптовалюты, моментально сметается с прилавков, корпорация NVIDIA приняла подход выпустить на рынок чипы, не прошедшие полноценный контроль качества. При обычных обстоятельствах такие микросхемы утилизируются, но если неликвид можно продать, то почему бы и нет?
Так появились сначала видеокарты P100, P104 и P106 на ядре Pascal, а затем серия CMP (ядра Turing и Ampere). Они отличались от своих «полноценных» собратьев:
отсутствием видеовыходов;
урезанной версией шины и её шириной (PCIe 1.1 x4);
меньшим объёмом памяти;
отсутствием поддержки определённых технологий (NVENC, NVLink).
Некоторые из ограничений обусловлены дефектами кристаллов, а другие соображениями экономии (например, шина x4 превращается в x16 после распайки недостающих SMD-элементов).
Эти карты могут даже служить 3D-ускорителями (если выводить изображения через интегрированное в чип видеоядро или вторую видеокарту), хотя NVIDIA относится к этому негативно и, как только тема «играем на дешёвых картах для майнинга» стала набирать обороты, компания внесла блокирующие изменения в драйверы. Впрочем, энтузиасты быстро научились этому противостоять.
Среди майнинговых карт особняком стоит самая малоизученная и дорогая (на старте продаж цена составляла сумасшедшие 5000 долларов, но с потерей актуальности опустилась до 200-300) — CMP 170HX. В противовес остальных, она является отбраковкой не от игровых видеокарт GTX/RTX, а от серверной Tesla A100 и, подобно ей, наделена памятью HBM2e, которая располагается на одной подложке с видеочипом. Как следствие, все CMP 170HX имеют на борту столько же памяти, сколько их старшие собратья, карты Tesla. Однако эта хранилище не прошла контроль качества и урезана до 8 или 10 ГБ (существуют две версии CMP 170HX: 8-гигабайтная представляет собой отбраковку от 40-гигабайтной A100, а 10-гигабайтная — от 80-гигабайтной).
Исследователь Jon Pry утверждает, что сумел обойти многие из упомянутых ограничений, в том числе разблокировал искусственно урезанную хранилище.
Главной задачей было найти метод модифицировать защищённые от записи со стороны хоста регистры, переопределяющие фьюзы GPU, в которых хранятся заданные производителем «урезанные» значения. Снять с них защиту может только Falcon (особый сопроцессор — “движок безопасности”, присутствующее в каждом графическом чипе NVIDIA). Казалось бы, проще всего модифицировать прошивку, но, начиная с поколения Pascal, она подписана виртуальный подписью (механизм RSA-3072), а GPU содержит в себе публичный ключ, с помощью которого проверяет подлинность прошивки и отказывается работать, если подпись повреждена.
Исследователь сосредоточился на поиске уязвимостей в прошивке. Он обнаружил, что в загрузчике (который поставляется в составе драйверов) есть баг с переполнением буфера памяти. Предположительно, подобные ошибки сложнее обнаруживать статическими анализаторами, поскольку запись выполняет DMA-движок, а не обычный memcpy. Возможно, именно вследствие чего инженеры NVIDIA пропустили баг. Однако, они предусмотрели защиту от такого класса атак — так называемую «стековую канарейку» (в стек помещается значение, а перед возвратом функции проверяется, что оно не изменилось). Сделано всё как по учебнику: значение генерируется аппаратным генератором случайных чисел и меняется при каждом запуске. Но дальше программисты допустили фатальную ошибку, сводящую защиту на нет — значение хранится в области данных, которую физически может перезаписать то самое переполнение буфера, от которого канарейка должна была защищать.

Переполнение буфера, в свою очередь, даёт возможность выполнить произвольный код. Что самое приятное, исходник выполняется уже после того, как подпись проверена. А значит, с точки зрения прошивки всё в порядке: подпись корректна, безопасность загрузки не нарушена.
Следующей сложностью стало то, что Falcon не позволяет хосту читать свою хранилище (за исключением одного mailbox-регистра). Пришлось написать эмулятор прошивки. Поскольку Falcon не имеет собственной операционной системы, потоков или прерываний, то можно в любой момент воспроизвести состояние памяти и отладить полезную нагрузку, не имея возможности видеть стек на реальном железе.
Дальше выполняем наш исходник, который в режиме Heavy Secure способен открыть PLM (priv-level masks), защищающие регистры-переопределители фьюзов. После этого можно обычным образом писать в регистры с хоста и менять их значения на нужные.
Что удалось получить:
снять ограничение производительности вычислительных блоков (SM), производительность FP32/64 выросла в десятки раз;
объём памяти увеличился в 8 раз;
удвоилась пропускная способность шины PCIe. Попытки поднять её до Gen3 оказались безуспешными. Возможно это уже физическое ограничение со стороны дефектного чипа (помним про отбраковку). Как упоминалось выше, ширину шины можно увеличить ещё вчетверо, но потребуется физическое вмешательство (распайка SMD-элементов возле слота PCIe).

Что не удалось:
завести хранилище на полной скорости (выдаёт ошибки в стресс-тестах). Оказалось, что на штатной частоте способна функционировать лишь половина памяти, очевидно, это и есть причина того, что GPU списали в брак. Пришлось увеличить тайминги памяти — ошибки пропали, но производительность памяти упала на треть;
включить поддержку ECC;
разогнать шину PCIe до Gen3 (не найден регистр-переопределитель).
В работе подчёркивается, что два последних пункта не являются принципиально невозможными, просто исследователь не смог их победить.
В настоящий момент сообщество энтузиастов пытается повторить описанное в этой работе и создать рабочий эксплоит. Уже удалось снять ограничение производительности SM. На очереди разблокировка памяти
Есть слабые свидетельства того, что это можно будет адаптировать к другим CMP-картам и, возможно, даже к линейке RTX. Впрочем, это далеко не первоочередная цель, хотя функция благодаря более широкой шины превратить 60-долларовую CMP 90HX в нечто близкое к RTX 3080 по игровой производительности выглядит тоже весьма заманчиво (сейчас эти карты в играх буквально задыхаются из-за PCIe 1.1).
Уже можно смело сказать, что это самый серьёзный взлом прошивки видеочипов NVIDIA за последние 10 лет, открывающий весьма заманчивые перспективы.
Читают сейчас

1 час назад
Unicode представила восемь новых эмодзи
Unicode утвердил стандарт Emoji 18.0. Восемь новых эмодзи начнут появляться на устройствах после обновления ОС весной 2027 года. Читать далее

2 часа назад
Карьерные советы от экс-сотрудника OpenAI и Google DeepMind в эпоху ИИ
Бывший исследователь OpenAI и софтверный инженер в Google DeepMind и Scale AI Фил Чен, основатель собственного ИИ-стартапа, поделился карьерными советами в эпоху ИИ. Читать далее
4 часа назад
Кампания HelloNet использует систему обновления ViPNet для закрепления и загрузки вредоносных модулей
Специалисты «Лаборатории Касперского» выявили кампанию HelloNet. В ней злоумышленники используют новые вредоносные модули и систему обновления ViPNet. Атака началась не позднее мая 2026 года и продолж

4 часа назад
«Уэбб» разглядел странную атмосферу на адской планете, покрытой лавой
С помощью космического телескопа НАСА имени Джеймса Уэбба учёные исследовали «суперземлю» 55 Cancri e (55 Cnc e) — обладающую экстремальными условиями каменную экзопланету, расположенную на расстоянии

5 часов назад
Sunlu представила сушильную камеру для Bambu Lab AMS Lite
Китайская компания Sunlu представила сушильную камеру для системы многоцветной печати Bambu Lab AMS Lite, которая предназначена для 3D-принтеров A1, A1 mini и A2L. Девайс представляет собой короб для