Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.

М09. C и C++ legacy без дисциплины пакетного менеджера

Зачем этот модуль

В экосистемах npm, PyPI, Go, Cargo состав ПО декларирован: есть lock-файл, есть устойчивый ключ компонента (PURL), и SBOM почти полностью восстанавливается из манифеста. В C/C++ без Conan или vcpkg ничего этого нет. #include <openssl/ssl.h> не говорит, какая версия OpenSSL слинкована и слинкована ли вообще; зависимость может прийти из системного apt-пакета, из ручного каталога third_party/, из внутреннего форка с собственными патчами или быть «вшита» статически в бинарь. Этот модуль учит восстанавливать состав там, где сборочный процесс не отдаёт метаданных, и честно отмечать слепые зоны вместо того, чтобы выдавать неполный SBOM за полный.

Это самый сложный модуль курса: здесь сходятся бинарный анализ ELF, маппинг на DEB-пакеты, граф линковки и роль build-scan. Модуль опирается на инструменты из М05 и готовит к корпоративному кейсу обогащения фактов в М11.

Ключевые понятия

Опорные заметки справочника: include ≠ зависимость · динамическая линковка · статическая линковка · ELF и DT_NEEDED · dpkg/apt metadata · stripped binaries · vendored source · unresolved libraries · кейс генератора фактов

Миникарта модуля

Схема: М09. М09. C и C++ legacy без дисциплины пакетного менеджера
Схема из авторского курса. Нажмите, чтобы открыть в полном размере.

Нормативная опора

ГОСТ Р 56939-2024 · NIST SP 800-218 SSDF (PS.3.2, PW.4, RV.1) · BSI TR-03183-2 v2.1.0 · CERT C C++ · MISRA C C++

Материалы модуля

Связанные практики

П19. C C++ make build inventory · П20. CMake dependency graph · П21. Conan graph и package identity · П22. ELF dynamic dependencies · П23. Статическая линковка как слепая зона · П24. PURL нормализация и private qualifiers · П25. CPE alias worklist

Связь с другими модулями

Практический результат

Слушатель умеет: собрать тестовый C/C++ проект; снять ldd/readelf -d и отличить динамическую зависимость от статической; сгенерировать cdxgen SBOM и увидеть, чего в нём не хватает; смаппить .so на DEB-пакеты через apt; оформить список unresolved libraries для ручной доразметки.