1️⃣ Установить Go v1.19 или новее.
2️⃣ Собрать и установить runc.
3️⃣ Установить buildkit v0.10.5 или новее.
4️⃣ Собрать и установить copa.
Я кратко без пояснений покажу как это сделать на примере Debian. Все подробности есть в самих репозиториях программ.
✅ Устанавливаем GO.
# wget https://go.dev/dl/go1.19.5.linux-amd64.tar.gz# tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz# ln -s /usr/local/go/bin/go /usr/bin/go# go version✅ Устанавливаем runc.
# apt install make git gcc build-essential pkgconf libtool libsystemd-dev \libprotobuf-c-dev libcap-dev libseccomp-dev libyajl-dev libgcrypt20-dev \go-md2man autoconf python3 automake# git clone https://github.com/opencontainers/runc# cd runc# make# make install✅ Устанавливаем buildkit.
# wget https://github.com/moby/buildkit/releases/download/v0.11.0/buildkit-v0.11.0.linux-amd64.tar.gz# tar -C /usr -xzf buildkit-v0.11.0.linux-amd64.tar.gz✅ Устанавливаем copacetic.
# git clone https://github.com/project-copacetic/copacetic# cd copacetic# make# mv dist/linux_amd64/release/copa /usr/local/bin/Все необходимые компоненты установили. Теперь патчим уязвимый контейнер. Для этого предварительно в фоне запускаем buildkitd:
# buildkitd &# copa patch -i mcr.microsoft.com/oss/nginx/nginx:1.21.6 -r nginx.1.21.6.json -t 1.21.6-patchedCopa не перезаписывает старый образ, а создаёт новый с тэгом patched. Можете сразу его посмотреть и проверить:
# docker images# docker history mcr.microsoft.com/oss/nginx/nginx:1.21.6-patchedНу и убедиться, что он нормально запускается:
# docker run -it --rm --name nginx-test mcr.microsoft.com/oss/nginx/nginx:1.21.6-patchedCopa, используя информацию о версиях пакетов из отчёта Trivy, обновила все уязвимые системные пакеты в образе. Можете проверить уже пропатченный образ:
# trivy image --vuln-type os --ignore-unfixed mcr.microsoft.com/oss/nginx/nginx:1.21.6-patchedЯ показал набор софта и пример обновления контейнера. Получилась готовая инструкция, которую я лично проверил. Используя эту информацию и информацию из репозиториев, можно настроить подобные обновления для своей среды.
⇨ Исходники Copacetic
#security #docker #devops