
Прошивка — это фундаментальное программное обеспечение, которое соединяет аппаратное обеспечение и системы более высокого уровня. В современной вычислительной технике атаки на прошивку становятся все более серьёзной угрозой, представляя собой постоянную цель для злоумышленников и государственных противников. Для противодействия этим угрозам Национальный институт стандартов и технологий (NIST) выпустил SP 800-193: Рекомендации по устойчивости платформной прошивки, определяющие надёжные механизмы для обеспечения защиты, обнаружения и восстановления платформной прошивки.
Этот подробный гид изучает NIST SP 800-193 и концепцию устойчивости платформной прошивки (PFR), предоставляя информацию от основ до передовых приложений. Мы включаем реальные примеры, методы сканирования и примеры кода на Bash и Python. Эта статья является единственным источником для ИТ-профессионалов, инженеров безопаности и организаций, стремящихся соответствовать современным стандартам безопасности прошивки.
Устойчивость платформной прошивки (PFR) означает архитектурный подход, который предоставляет механизмы для защиты, обнаружения и восстановления платформной прошивки от киберугроз. Прошивка встроена почти во все аппаратные компоненты: материнские платы, сетевые карты, устройства хранения и т. д. Это программное обеспечение низкого уровня часто неизменно или редко обновляется, что делает его привлекательной целью для злоумышленников, желающих получить постоянный, низкоуровневый контроль.
Многие высокопрофильные кибератаки использовали уязвимости прошивки для получения привилегированного, скрытого доступа к системе, часто оставаясь без изменений даже после переустановки ОС или пере-загрузки.
NIST SP 800-193 является руководством, стандартизирующим требования и методы, позволяющие организациям достичь устойчивости в платформной прошивке, обеспечивая непрерывность бизнеса и снижение поверхностей атак.
Прошивка, из-за своего фундаментального положения в вычислительной структуре, имеет уникальные атрибуты:
Влияние в реальном мире:
Традиционные средства защиты недостаточны для прошивки. Поэтому обязательны специализированные фреймворки и строгая защита, такие как определяемые в SP 800-193, для критических платформ.
Специальная публикация NIST (SP) 800-193: Рекомендации по устойчивости платформной прошивки была опубликована как ответ на возрастающую волну атак на основе прошивки. Она предоставляет рекомендации проектировщикам, производителям и операторам платформ по внедрению механизмов для защиты прошивки и обеспечения киберустойчивости.
SP 800-193 фокусируется на платформной прошивке, такой как UEFI, BIOS, BMC (контроллер управления базовой платой), Option ROM и прошивка устройств в серверах, ноутбуках, настольных компьютерах и сетевом оборудовании.
NIST SP 800-193 организует устойчивость прошивки в три основных столпа:
Давайте углубимся в каждый.
Цель: Предотвратить несанкционированную модификацию или повреждение платформной прошивки и данных конфигурации.
Процесс обновления прошивки UEFI проверяет подписи перед разрешением записи в флеш-память:
# Проверьте подпись изображения прошивки UEFI (с помощью 'sbverify' из sbsigntools в Linux)
sbverify --list /path/to/firmware_update.cap
Вывод:
подпись 1
владелец: X.509 Cert SHA1:11:22:33:..
издатель: CN=Vendor Signer, O=Vendor..
Если подпись отсутствует или недействительна, обновление отклоняется.
Цель: Обнаружить несанкционированные или вредоносные изменения в прошивке или данных конфигурации как при загрузке, так и во время работы.
Используйте TPM (модуль надёжной платформы) для измерения прошивки UEFI при загрузке:
Вы можете использовать tpm2-tools на Linux:
# Читать PCR 0, который может хранить хеш, относящийся к состоянию системной прошивки.
tpm2_pcrread sha256:0
# Вывод:
# sha256:
# 0 : 6e5e144f3e10a0a79f0e7d1bdfbbae1bcad9b7e5d480442e1edb3448c3816a3a
Сравните это значение с ожидаемым эталонным (золотым) хешем.
Цель: Восстановить надёжную прошивку и данные конфигурации безопасности, если обнаружена злобная модификация.
Корень доверия — это набор аппаратных, прошивных и/или программных компонентов, выполняющих критические функции безопасности. В SP 800-193 RoT обычно:
Вот пример на Python с использованием библиотеки tpm2-pytss для чтения PCRs с устройства TPM 2.0 и сравнения с известным-золотым хешем.
from tpm2_pytss import *
import binascii
# Известно-хороший хеш для региона прошивки
GOLDEN_PCR0 = "6e5e144f3e10a0a79f0e7d1bdfbbae1bcad9b7e5d480442e1edb3448c3816a3a"
with ESAPI() as sapi:
pcrs = sapi.PCR_Read(
pcrSelectionIn=[TPM2_PCR_SELECTION(hash=TPM2_ALG.SHA256, pcrSelect=[0])]
)
actual_pcr0 = binascii.hexlify(pcrs.pcrValues[0]).decode()
if actual_pcr0 == GOLDEN_PCR0:
print("Измерение прошивки соответствует известному хорошему значению.")
else:
print("Измерение прошивки не соответствует! Возможно нарушение.")
Измерение прошивки включает в себя хеширование кода и регионов данных и хранение значений в защиющеном от подделки хранилище.
Предположим, что вы находитесь на системе Linux и знаете, что ваша прошивка хранится в /dev/mtd0 (замените по мере необходимости):
sudo sha256sum /dev/mtd0
# Вывод: <значение хеша> /dev/mtd0
Сравните это значение с хранящимся золотым хешем.
Уязвимости прошивки используются:
Первый обнаруженный в дикой природе руткит UEFI; модифицировал код UEFI для обеспечения сохранности вредоносных модулей и переживания переустановок ОС. Нацелен на флеш-чип SPI.
Пользовательские модули прошивки позволяли чтение/запись даже после форматирования дисков.
Описаны методы внедрения вредоносного кода в Thunderbolt Option ROMs.
NIST SP 800-193 поощряет регулярное сканирование целостности прошивки и правильное управление обновлениями.
fwupd для проверки целостности прошивкиfwupd — это демон Linux, отвечающий за обновления системной прошивки и проверку прошивки устройства на соответствие известным-добрым версиям.
# Перечислить все поддерживаемые устройства и версии прошивки
fwupdmgr get-devices
# Получить историю обновлений прошивки
fwupdmgr get-history
# Провести проверку безопасности на выявление известных уязвимостей
fwupdmgr security
Bash:
sudo flashrom -p internal -r bios_dump.bin
sha256sum bios_dump.bin
Храните известный-добры хеш в защищенном месте для последующего сравнения.
flashrom с PythonПредположим, вам нужно автоматизировать обнаружение изменений в BIOS.
import subprocess
import hashlib
def dump_and_hash_bios(output_file='bios_dump.bin'):
subprocess.run(['sudo', 'flashrom', '-p', 'internal', '-r', output_file], check=True)
with open(output_file, 'rb') as f:
bios_data = f.read()
sha256_hash = hashlib.sha256(bios_data).hexdigest()
print(f"SHA256: {sha256_hash} {output_file}")
return sha256_hash
# Известно-добрый хеш (из защищенного хранилища)
GOLDEN_HASH = "xxx..."
if __name__ == "__main__":
current_hash = dump_and_hash_bios()
if current_hash == GOLDEN_HASH:
print("Прошивка соответствует золотому образу.")
else:
print("ПРЕДУПРЕЖДЕНИЕ: Прошивка изменилась! Возможное компрометация.")
Опираясь на NIST SP 800-193 и промышленную экспертизу, вот практические руководства:
fwupd, flashrom, PCRs TPM).Прошивка является основным базовым строительным блоком в вычислительной инфраструктуре, делая её защиту первостепенной в любой всеобъемлющей стратегии кибербезопасности. NIST SP 800-193 предоставляет действенную, независимую от поставщиков основу для создания устойчивых, ориентированных на будущее платформ. Будь то защита серверов предприятия, промышленных систем управления или критической инфраструктуры IoT, следование модели "Защита, Обнаружение, Восстановление" обеспечивает устойчивость вашей организации против одного из самых изощрённых и опасных векторов атак.
Регулярное сканирование, использование безопасных механизмов обновления, аппаратный корень доверия и оперативные лучшие практики — в сочетании с рекомендациями NIST SP 800-193 — повысят барьер для злоумышленников и позволят быстро восстановиться после любой компрометации.
Для получения дополнительной информации о защитной кибер-архитектуре, подпишитесь на наш технический блог и следуйте этим лучшим практикам для безопасной архитектуры с аппаратными корнями доверия!
Если вы нашли этот контент ценным, представьте, чего вы могли бы достичь с нашей комплексной 47-недельной элитной обучающей программой. Присоединяйтесь к более чем 1200 студентам, которые изменили свою карьеру с помощью техник Подразделения 8200.