200-долларовую майнинговую карту CMP 170HX удалось превратить в подобие Tesla A100

5 мин

В эпоху «бума майнинга», глядя на то, как любое железо, способное добывать криптовалюты, моментально сметается с прилавков, корпорация 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 лет, открывающий весьма заманчивые перспективы.

Читают сейчас

В США предъявили обвинения россиянину в заражении компьютеров более 80 тысяч фрилансеров вредоносным ПО

2 часа назад

В США предъявили обвинения россиянину в заражении компьютеров более 80 тысяч фрилансеров вредоносным ПО

Коллегия присяжных в штате Калифорния предъявила обвинения 40-летнему гражданину России Серажудину Актулаеву за участие в фишинговой кампании, в результате которой компьютеры 80 тыс. фрилансеров были

3 часа назад

Лиды по осени считают: 6 мероприятий для продуктивного сентября

Осенью прогноз простой: где-то обязательно польет. С рекламным рынком сложнее. Где подорожает лид? Какой канал упрется в потолок? Сработает ли UGC? Что уже можно поручить ИИ? И какие изменения в закон

Организация Postgres Professional первой среди коммерческих форков закрыла критические уязвимости PostgreSQL

3 часа назад

Организация Postgres Professional первой среди коммерческих форков закрыла критические уязвимости PostgreSQL

Postgres Professional выпустила «нулевые» релизы корпоративных редакций СУБД Postgres Pro с исправлениями актуальных уязвимостей PostgreSQL. Компания первой и пока единственной среди коммерческих форк

Дайджест GetAClass: август 2026

3 часа назад

Дайджест GetAClass: август 2026

Поздравляем всех с началом нового учебного года! Каникулы закончились – значит, пора подвести итоги последнего летнего месяца. Читать далее

НАСА выбрало компанию Blue Origin в качестве поставщика телекоммуникационной сети для Марса

3 часа назад

НАСА выбрало компанию Blue Origin в качестве поставщика телекоммуникационной сети для Марса

Американское космическое агентство заключило с Blue Origin контракт на разработку Mars Telecommunications Network — системы обеспечения высокоскоростной связи и навигации для текущих и будущих миссий