
Атаки на микропрограмму представляют значительный риск для цепочки поставок программного обеспечения, как показала пресловутая задняя дверь микропрограммы Gigabyte UEFI. Уязвимости в микропрограмме часто труднее выявить, они находятся вне поля зрения большинства решений по безопасности конечных точек и могут сохраняться даже после переустановки ОС. В этом техническом блоге вы узнаете, как работают задние двери микропрограмм, почему случай с Gigabyte потряс отрасль, как современные инструменты выявляют такие угрозы и что могут сделать специалисты по безопасности, чтобы защититься от этих передовых атак. Мы рассмотрим как начальные, так и продвинутые концепции, разберем реальные случаи и покажем практические методы криминалистической экспертизы — с примерами кода на Bash и Python для сканирования и автоматизации.
Микропрограмма — это самый нижний уровень программного обеспечения, которое непосредственно взаимодействует с оборудованием — обычно хранится на перезаписываемых микросхемах флэш-памяти, которые можно найти на материнских платах, дисковых накопителях, сетевых картах и т.д. Из-за их привилегированного положения и стойкости, задние двери микропрограмм представляют значительный риск. Единственное скомпрометированное обновление микропрограммы может создать скрытый канал, обойти защиту на уровне ОС и поддерживать незаметное присутствие даже после полного удаления всех дисков.
Недавние громкие случаи — особенно задняя дверь в UEFI микропрограмме материнских плат Gigabyte — продемонстрировали, что даже доверенные поставщики могут случайно поставлять уязвимые или вредоносные микропрограммы, подвергая риску миллионы систем. Эта угроза подчеркивает как проблемы, стоящие перед современной безопасностью цепочек поставок, так и необходимость в надежной криминалистике микропрограмм.
Микропрограмма важна для загрузки современных вычислительных платформ. Она не только инициализирует оборудование при загрузке, но также может безопасно обновляться через пакеты, подписанные поставщиком. Однако ее повсеместное распространение и сложность представляют значительные риски:
Цепочка поставок — это сеть поставщиков, разработчиков и интеграторов, которые вместе обеспечивают готовое устройство. Если любая связь вводит уязвимость — будь то случайно, из-за вредоносного ПО или действия госактера — каждое нижестоящее устройство может быть скомпрометировано.
В мае 2023 года исследователи из Eclypsium и ReversingLabs опубликовали шокирующие результаты: более 270 моделей материнских плат Gigabyte были поставлены с скрытой задней дверью, которая могла быть удаленно использована.
Задняя дверь Gigabyte появилась в результате бинарного кода микропрограммы UEFI — обычно находящегося в SPI флэш-чипе на материнской плате — который содержал следующую логику:
GigabyteUpdateService.exe или аналогичный, получал код с облачных серверов Gigabyte по HTTP (незашифрованный!) и исполнял его на хосте с системными привилегиями.Критично, что все это происходило без явного согласия пользователя или ОС, а конечная точка обновления использовала обычный HTTP-канал, что противоречит современным предположениям о безопасности.
+-----------------------+
| Микропрограмма UEFI |----> Устанавливает
+-----------------------+ (при загрузке ОС)
|
v
+--------------------------+
| GigabyteUpdateService.exe|
+--------------------------+
|
v
Получает обновления через HTTP ---> Исполняет с правами SYSTEM
Задняя дверь Gigabyte демонстрирует хрупкость наших цепочек поставок программного обеспечения:
Обнаружение и разбор задних дверей в микропрограмме требует специализированной криминалистики, отличающейся от типичного анализа вредоносного ПО на уровне ОС. Рассмотрим практический анализ, от различий через обратное проектирование ELF.
В зависимости от устройства, извлеките микропрограмму с использованием инструментов поставщика или низкоуровневых утилит, таких как flashrom:
# В Linux, с правами superuser и поддерживаемым оборудованием
sudo flashrom -p internal -r gigabyte_spi_dump.bin
Чтобы найти вредоносные модификации, сравните извлеченные образы микропрограмм:
# Побайтовое различие
cmp -l firmware_v1.bin firmware_v2.bin
# Используя hd, xxd или radare2 для визуальных различий
xxd firmware_v1.bin > f1.hex
xxd firmware_v2.bin > f2.hex
diff f1.hex f2.hex
Используйте binwalk для извлечения разделов микропрограммы:
# Извлечение UEFI модулей и сжатых сущностей
binwalk -e gigabyte_spi_dump.bin
# Список извлеченных файлов и анализ PE/ELF секций:
ls _gigabyte_spi_dump.bin.extracted/
file _gigabyte_spi_dump.bin.extracted/*
Злоумышленники часто добавляют или изменяют модули. Извлекая временные метки сборки и сопоставляя их с событиями в цепочке поставок, команды реагирования на инциденты могут поместить подозрительные изменения в организационный контекст.
import pefile
pe = pefile.PE("GigabyteUpdateService.exe")
print("Compile time:", pe.FILE_HEADER.TimeDateStamp)
Сравните файлы манифеста или метаданные UEFI капсулы:
strings firmware_old.bin | grep -i "Build" > old_buildinfo.txt
strings firmware_new.bin | grep -i "Build" > new_buildinfo.txt
diff old_buildinfo.txt new_buildinfo.txt
Многие компоненты UEFI микропрограмм являются стандартными PE32 (Windows) или ELF (Linux) бинарными файлами.
find _extracted_firmware/ -type f | xargs file | grep -E "ELF|PE32"
Например, проверьте подозрительный бинарный файл:
radare2 -A suspicious_module.efi
# или
ghidraRun
# Затем загрузите и декомпилируйте suspicious_module.efi
strings suspicious_module.efi | grep -i -E "http|socket|connect"
Подозрительная сет
евая логика в контексте микропрограммы является красным флажком.
Напишите правило YARA для обнаружения "жестко закодированных" IP-адресов C2 или HTTP-узлов:
rule GigabyteUEFI_HTTP {
strings:
$http = "http://mb.download.gigabyte.com"
condition:
$http
}
Сканируйте на наличие совпадений:
yara GigabyteUEFI_HTTP.yara _extracted_firmware/
Инцидент BombShell, обнаруженный на устройствах Framework, показывает еще одну заднюю дверь в цепочке поставок — на этот раз на подписанном драйвере UEFI. Драйвер был отправлен непосредственно конечным пользователям, его подписи создавали ложное ощущение легитимности.
Команды безопасности все чаще полагаются на специализированные сканеры для UEFI/BIOS, такие как:
Пример: сканирование с CHIPSEC
# Установка зависимостей
sudo apt install python3-pip build-essential
pip3 install chipsec
# Запуск базовых проверок
sudo chipsec_util uefi decode
sudo chipsec_main -m tools.uefi.find_guids
Если журналы Eclypsium или EDR выявляют подозрительное постоянство, анализируйте вывод программно:
# Образец вывода
cat eclypsium_scan.log | grep -i suspicious
import re
with open("chipsec_results.txt") as f:
for line in f:
if "suspicious" in line.lower() or re.search(r"http://", line):
print("ALERT:", line.strip())
ls -l /Windows/System32/drivers/ | grep -v "Microsoft"
title: Detect Unauthorized Firmware Updaters
logsource:
product: windows
service: system
detection:
selection:
Image|contains: 'GigabyteUpdateService.exe'
ParentImage|contains: 'wininit.exe'
condition: selection
level: high
Формирование надежной стратегии против угроз на уровне микропрограмм в цепочке поставок требует многопланового подхода.
Задние двери в микропрограммах—как те, что наблюдаются в случаях Gigabyte и BombShell—представляют собой новый фронт как для нападающих, так и для защитников. Поскольку микропрограмма незаметно соединяет аппаратное и программное обеспечение, даже самые сознательные в плане безопасности организации уязвимы, если цепочка поставок скомпрометирована.
Главные уроки:
Освоив как техники анализа микропрограмм, так и культуру обеспечения безопасности в управлении цепочкой поставок, организации смогут противостоять этим возникающим угрозам и уменьшить потенциальное воздействие будущих задних дверей.
Хотите увидеть больше практических примеров криминалистики микропрограмм или обсуждения безопасности цепочки поставок? Оставьте комментарий или свяжитесь через Twitter!
Если вы нашли этот контент ценным, представьте, чего вы могли бы достичь с нашей комплексной 47-недельной элитной обучающей программой. Присоединяйтесь к более чем 1200 студентам, которые изменили свою карьеру с помощью техник Подразделения 8200.