Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
CERT C C++
О документе
Что это SEI CERT C / CERT C++ Coding Standard — свод правил безопасного программирования на C и C++, изданный SEI (Software Engineering Institute). Стандарт ориентирован на безопасность: его правила нацелены на устранение конструкций, ведущих к эксплуатируемым дефектам (переполнения буфера, целочисленные переполнения, use-after-free, неопределённое поведение). В курсе CERT нужен как явная граница SCA: компонентный анализ не видит ошибок в коде на уровне памяти, и их закрывает именно кодовая дисциплина.
CERT-правила сопровождаются оценкой риска (severity / likelihood / remediation cost) и приоритетом, а нарушения выявляются преимущественно статическим анализом исходного кода — не анализом состава зависимостей.
Ключевые требования
Зона, которую SCA не закрывает - Безопасность памяти. Правила против переполнений буфера, выхода за границы массива, разыменования нулевого/висячего указателя. - Целочисленная безопасность. Контроль переполнений и небезопасных преобразований целых. - Недопущение неопределённого поведения (UB). Конструкции, дающие UB, рассматриваются как дефект безопасности. - Безопасная работа с ресурсами. Корректное управление памятью, дескрипторами, временем жизни объектов (double-free, утечки, use-after-free). - Приоритизация по риску. Каждое правило имеет оценку severity/likelihood — для триажа нарушений. - Проверяемость статикой. Соответствие проверяется анализатором по исходникам, а не по SBOM.
Что считать evidence
Артефакты соответствия (это НЕ SBOM/VDR) - Отчёт статического анализатора с привязкой findings к идентификаторам CERT-правил. - Журнал отклонений (deviations) с обоснованием, почему конкретное нарушение принято. - Запись о пороге блокировки сборки по критическим CERT-нарушениям в CI. - Инвентаризация собственного C/C++-кода (что вообще анализируется) — стык с build inventory. - Тренд числа нарушений по релизам как доказательство дисциплины.
Почему здесь нет SBOM-евиденса SBOM/VDR/VEX доказывают состав и уязвимости зависимостей. CERT — про дефекты вашего исходного кода. Подмена одного другим — типичная ошибка трассировки.
Разграничение доказательной базы:
| Что проверяем | Чем доказываем | Чем НЕ доказываем |
|---|---|---|
| Дефекты памяти/UB в своём коде | Отчёт статического анализатора (CERT-rule ID) | SBOM, VDR, VEX |
| Принятые нарушения | Журнал отклонений с обоснованием | Реестр лицензий |
| Полнота анализа | Инвентаризация анализируемого кода | Сканер уязвимостей зависимостей |
Маппинг на практики и шаблоны
- Что попадает под анализ исходников: П19. C C++ make build inventory.
- Почему SCA слепнет на C/C++ и где граница: П23. Статическая линковка как слепая зона.
- Встраивание в общий процесс: Регламент композиционного анализа ПО.
- Контекст модуля: М09. C/C++ legacy. Смежная кодовая дисциплина: MISRA C C++.
Ограничение
Это учебная карточка Карточка показывает роль CERT как границы SCA и не воспроизводит каталог правил. Точные формулировки правил, оценки риска и рекомендации для аудита сверять с официальным SEI CERT Coding Standard и регламентами Организации.