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

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

Конспект: SBOM for AI и честный SBOM контейнерных образов

Зачем модуль

Две темы, которые не закрываются обычным SBOM. Первая: AI-система — это не дерево npm/pypi-пакетов, а связка «модель + веса + датасеты + инфраструктура исполнения», и риски здесь другие (откуда взяты данные обучения, какова лицензия весов, на чём дистиллировали). Вторая: SBOM, сгенерированный по контейнерному образу, легко делается нечестным — он описывает то, что декларируется, а не то, что физически лежит в слоях. Аудитор, который верит распечатке SBOM, пропускает и приватный ключ в нижнем слое, и образ, в котором сканер «не нашёл ничего», потому что метаданные пакетов затёрты.

Ключевые идеи

SBOM for AI = обычный SBOM + семь кластеров. Документ G7 «SBOM for AI: Minimum Elements» (Avian, France, 2026; авторы — агентства BSI, ACN, ANSSI, CSE, CISA, NCSC, NCO и Еврокомиссия) прямо говорит: AI-система — тоже ПО, поэтому обычные минимальные элементы SBOM сохраняются, а сверху добавляются кластеры: Metadata, System Level Properties, Models, Datasets Properties, Infrastructure, Security Properties, KPI. Принципиально новое — в кластерах Models и Datasets:

Идентификаторы здесь шире привычных PURL/CPE: добавляются SWHID, OmniBOR, commit-хэши.

Честный SBOM образа = реальное содержимое слоёв, а не декларация. Сканеры образов (Trivy, Grype) работают так: скачивают образ, извлекают tar-ы слоёв из blobs/sha256/, проверяют пути пакетных БД (/var/lib/dpkg/status, /lib/apk/db/installed, /var/lib/rpm/), собирают результат. Это даёт три слепые зоны:

Как выглядит на практике

Минимальный воспроизводимый пример «секрет переживает rm»:

FROM busybox:latest
COPY key.api .
RUN rm key.api        # в финальном слое файла нет
$ docker save secrets-test:latest | tar -x -C .
$ find blobs/sha256/ -type f -exec file {} \; | grep tar
blobs/sha256/b00389...f17b98: POSIX tar archive
$ tar xvf blobs/sha256/b00389...f17b98
key.api
$ cat key.api
-----BEGIN OPENSSH PRIVATE KEY-----   # секрет жив в нижнем слое

И демонстрация нечестности SBOM через обфускацию метаданных:

Команда Результат grype
grype …/nodejs-demoapp:latest 97 vulnerability matches
mint slim --obfuscate-metadata … → grype …:obfuscated 0 vulnerability matches

Слепые зоны именно этой темы - AI: SBOM for AI описывает состав, но не достижимость/автономность — G7 сознательно не вынес «уровень автономности агента» в отдельный элемент. Открытые веса без Dataset provenance — это лицензионная и legal-ловушка (copyright/PII в обучении). - Контейнеры: «статика» защищает только от легитимного пользователя — вредоносный образ обходит сканер (multi-stage, внешние загрузки в рантайме, обфускация неисправимы статикой). Перевыпуск SBOM после компрометации реестра (имитация коммитов, tag poisoning) делает подпись бесполезной без attestations.

Связь с нормативкой

ГОСТ Р 56939-2024 (РБПО, общие требования) и проект ГОСТ Р по композиционному анализу требуют сохранять evidence и контролировать заимствованный код — для образов это значит фиксировать реальный, а не декларируемый состав. Целостность подтверждается attestations (in-toto, SLSA, подпись через Sigstore). См. 05 Нормативка и Регламент приёмки контейнерного образа.

Что уносим в работу

  1. Для AI-поставки заполняем кластеры Models и Datasets отдельно от обычного SBOM — особенно Model license (open weight/data/training) и Dataset provenance/sensitivity.
  2. Никогда не верим SBOM образа без сверки с реальными слоями: docker save + извлечение tar-ов.
  3. Секреты ищем во всех слоях, а не в финальной ФС — RUN rm не удаляет.
  4. Проверяем образ на обфускацию: расхождение «декларация vs реальность» — это red flag, а не «чистый образ».
  5. Доверяй, но проверяй: статику дополняем динамикой и attestations.

Практики: П37. Контейнерный образ слои секреты и удаленные файлы, П38. Честный SBOM контейнерного образа, П39. SBOM for AI minimum elements. Справочник: SBOM for AI - минимальные элементы.