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

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

П01. Стенд WSL2 Docker и базовая гигиена

Цель

Получить рабочую изолированную среду для всех последующих практик курса: WSL2 на ядре v2, работающий Docker, установленный git. Проверяемый результат — три зафиксированных факта: wsl -l -v показывает дистрибутив с VERSION 2, docker run hello-world печатает приветствие, версии git и Docker записаны в журнал стенда. После этой практики у вас есть «песочница», в которой анализ запускается не на рабочем хосте, а в контейнере или WSL.

Почему отдельная практика про стенд SCA/OSA-инструменты распаковывают чужие архивы, читают чужие lockfile и иногда исполняют чужие build-скрипты. Делать это прямо на рабочей машине — значит смешивать доверенный и недоверенный код. WSL2 + Docker дают дешёвую изоляцию и, что важнее для курса, воспроизводимость: один и тот же образ даёт один и тот же набор findings у преподавателя и у студента.

Команда или действие

# 1. Версия WSL и режим ядра дистрибутива (выполнять в PowerShell)
wsl -l -v

# 2. Внутри WSL — зафиксировать версии инструментов стенда
docker --version
git --version

# 3. Проверить, что Docker реально запускает контейнеры
docker run --rm hello-world

# 4. Гигиена: завести каталог под тестовый проект, не трогая хост
mkdir -p ~/sca-lab/sample && cd ~/sca-lab
git init sample

Гигиена стенда — четыре правила, а не лозунг 1. Анализ запускаем внутри WSL/контейнера, а не в Windows-окружении хоста. 2. Версии инструментов фиксируем (--version в журнал): findings без версии генератора невоспроизводимы. 3. Работаем на выделенном тестовом проекте (~/sca-lab/sample), а не на боевом репозитории. 4. Никогда не запускаем неизвестные build-скрипты из чужого архива напрямую — только в одноразовом контейнере (--rm).

Что вы должны увидеть

wsl -l -v — дистрибутив в состоянии Running и именно VERSION 2 (не 1):

  NAME              STATE           VERSION
* Ubuntu            Running         2

docker run --rm hello-world — приветствие, означающее, что демон жив и образ скачался:

Hello from Docker!
This message shows that your installation appears to be working correctly.

Версии — конкретные строки вида (числа у вас будут свои, важно, что команда не падает):

Docker version 27.5.1, build 9f9e405
git version 2.43.0

Если не получилось

Критерий зачёта

Показать преподавателю терминал WSL2, где подряд проходят: wsl -l -v с VERSION 2, docker run --rm hello-world с приветствием, docker --version и git --version. Версии записаны в журнал стенда (любой текстовый файл) — это базовая дисциплина воспроизводимости, на которую опираются все дальнейшие практики.

Нормативная связка

Стенд — это «безопасная среда разработки», а не SBOM-практика: соответствующий пласт требований — поддержание изолированного и управляемого toolchain. См. NIST SP 800-218 SSDF (практики PO.3 «Support toolchains» и PO.5 «Implement and maintain secure environments for software development»; формулировки уточняйте по официальному источнику) и общий принцип управляемости работ из ГОСТ Р 56939-2024. Дальше на этом стенде запускаются П03. Генерация SBOM через Syft и смежные сканеры; ручное чтение результата — в П02. Чтение CycloneDX JSON руками. Навигация по курсу: М00. Ориентация в курсе и карта решений.