Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
blint
Для чего
blint — анализатор бинарных файлов (ELF, PE, Mach-O), который извлекает их свойства безопасности и состав напрямую из исполняемого файла, без исходников и пакетного менеджера. Помимо проверки флагов защиты (PIE, RELRO, NX, canary) он умеет собирать SBOM по символам, импортируемым библиотекам и встроенным метаданным — это закрывает слепую зону, где обычные генераторы по манифестам ничего не видят.
Как применяют
Проверка свойств бинаря и генерация SBOM по нему:
blint -i ./build/app -o ./out
blint sbom -i ./build/app -o sbom.cdx.json
В отчёте — таблица hardening-флагов и список обнаруженных зависимостей/символов. SBOM выдаётся в CycloneDX и фиксирует найденные библиотеки как компоненты с эвристическими координатами.
| Флаг | Что значит | «Плохой» сигнал |
|---|---|---|
NX |
неисполняемый стек | no |
PIE |
позиционно-независимый код | no |
RELRO |
защита GOT/PLT | partial / no |
Canary |
стековый канарейка | no |
Два инструмента в одном файле blint совмещает аудит свойств безопасности бинаря (hardening) и инвентаризацию его состава. Для C/C++ это часто единственный способ хоть что-то увидеть, когда SBOM по манифестам пуст.
Сильные стороны
- Работает там, где нет ни менеджера, ни исходников — только готовый бинарь.
- Совмещает аудит свойств безопасности (hardening) и инвентаризацию в одном проходе.
- Полезен для статически слинкованных C/C++-артефактов, где SBOM по манифестам пуст.
- Кроссформатный: ELF, PE и Mach-O одним инструментом.
Ограничения
Stripped-бинарь почти ничего не отдаёт Полнота SBOM напрямую зависит от наличия символов. Если бинарь собран с
strip, blint видит крайне мало, а координаты компонентов эвристические — это оценка, а не доказанный состав.
- Координаты компонентов эвристические: точные имя/версию upstream-библиотеки из бинаря восстановить удаётся не всегда.
- Не строит граф транзитивных зависимостей — это срез того, что попало в бинарь.
- Результат сильно зависит от наличия символов; stripped-бинарь даёт скудный SBOM.
Offline / on-premise
Полностью офлайн: анализ идёт по локальному файлу, сеть не нужна. Подходит для закрытого контура, где собранные C/C++-артефакты нужно инвентаризировать без обращения к внешним реестрам.
Связанные темы
М09 C/C++ legacy · М05 Инструменты генерации SBOM · П22. ELF dynamic dependencies · П23. Статическая линковка как слепая зона · ldd readelf LIEF · cdxgen · CycloneDX