Сканирование образов на уязвимости
Откуда в образах уязвимости, как работают сканеры и почему сканер — процесс и один из сигналов, а не приговор.
Откуда в образе уязвимости
Образ из урока про Docker — базовый слой плюс установленные пакеты и зависимости приложения. В любом из них может найтись известная уязвимость: старая версия openssl в базовом образе, библиотека с дырой в зависимостях. Эти уязвимости публикуются с идентификаторами CVE. Сканер образа сравнивает то, что лежит внутри, с базами CVE и сообщает о совпадениях.
Что делает сканер
Сканер разбирает образ по слоям, собирает список пакетов и их версий и сверяет с базой известных уязвимостей. На выходе список находок с уровнем критичности.
$ scan myimage:1.4
PKG VERSION SEVERITY CVE
openssl 1.1.1k HIGH CVE-2022-xxxx
libxml2 2.9.10 MEDIUM CVE-2021-xxxx
Конкретных инструментов много (Trivy, Grype, Clair и другие), и они взаимозаменяемы. Из урока про CI сканирование встраивают в пайплайн как этап перед публикацией образа: нашли критичную уязвимость, и образ дальше не едет.
Как меньше сканировать
Лучший способ иметь меньше уязвимостей — иметь меньше содержимого:
- минимальный базовый образ (alpine, slim, distroless) несёт меньше пакетов, а значит меньше потенциальных дыр;
- multi-stage build из урока про Dockerfile выкидывает компиляторы и dev-зависимости из финального образа;
- свежие базовые образы и зависимости закрывают уже исправленные CVE.
Меньше слоёв и пакетов означает меньше площади для уязвимостей.
Сканер — один из сигналов, а не приговор
Важная оговорка, и относиться к ней стоит серьёзно. Сканер полезен, но доверять ему слепо нельзя:
- Базы у инструментов разные. Один найдёт CVE, другой пропустит. На критичных образах разумно проверять не одним инструментом.
- Бывают ложные срабатывания. Уязвимость числится, но в твоём контексте не эксплуатируется (пакет есть, но код к нему не обращается). Находки приоритизируют по реальному риску, а не по числу алертов.
- У самих вендоров случаются инциденты. Полагаться на единственный сервис как на истину рискованно.
- Зелёный сканер не равно «безопасно». Он ловит известное и опубликованное, а не всё.
Поэтому сканирование — процесс: регулярно, обновляемыми базами, с разбором находок, а не разовая галочка «прогнали инструмент».
Что важно запомнить
Уязвимости попадают в образ через базовый слой и пакеты; сканер сверяет содержимое с базами CVE и встраивается в пайплайн перед публикацией.
Меньше содержимого означает меньше дыр: минимальный базовый образ, multi-stage, свежие версии. Это надёжнее, чем чинить найденное.
Сканер — процесс и один из сигналов: базы у инструментов разные, бывают ложные срабатывания и пропуски, у вендоров случаются инциденты. Зелёный сканер не означает «безопасно», поэтому находки разбирают по реальному риску.
В следующем уроке разберём минимум привилегий и роли.
Прошли материал до конца? Отметьте урок пройденным.
Прогресс сохранён в этом браузере
Почистишь историю или откроешь с телефона, и отметки пропадут. Оставь почту, они переедут в аккаунт. Пароль придумывать не нужно.
Готово. теперь в аккаунте: прогресс виден с любого устройства. Мой прогресс