Найти тему
ИТ разнообразно

Безопасность начинается до развёртывания в рабочей среде. Часть 2.

Оглавление

Небезопасные образы Docker?

Вы когда-нибудь задумывались о безопасности образов Docker, которые вы запускаете в продакшене? Если мы используем текущий образ Ubuntu LTS, в нём установлено 106 пакетов:

docker run --rm ubuntu:jammy dpkg -l | wc -l
106

Не используете Ubuntu? В Alpine всего 15 предустановленных пакетов:

docker run --rm alpine:latest apk list -i | wc -l
15

Если в образе Docker установлено 15 или более 100 пакетов, любой из этих пакетов потенциально может быть уязвим для атаки. Если вы думаете: "Хорошо, я исправлю, как только увижу отчёт в новостях" (например, Heartbleed или Log4Shell), вы "упускаете" большую часть возможностей для исправления. Большинство (серьёзных) уязвимостей безопасности не публикуются на первой полосе Hacker News.

Нет необходимости просматривать базу данных CVE вручную. Вместо этого мы можем работать над рабочим процессом, напоминающим Dependabot GitHub. Мы можем сканировать образы Docker по мере их создания, чтобы узнать, есть ли какие-либо уязвимые пакеты, и исправить их. Хотя мы никогда не достигнем 100% безопасности, мы приближаемся на шаг ближе благодаря процессу с низкими накладными расходами.

Как сканировать образы Docker

Представляем KubeClarity. KubeClarity — это проект с открытым исходным кодом, который поможет вам поставлять более безопасное программное обеспечение. Хотя KubeClarity охватывает множество различных вариантов использования, давайте пока сосредоточимся на сканировании образов.

Установка

Ознакомьтесь с README KubeClarity, чтобы найти инструкции по установке для вашей конкретной платформы. В этом руководстве мы в основном используем интерфейс командной строки, но вы можете установить панель инструментов для визуализации.

Сканирование образа

Для иллюстрации сканирования образа мы используем этот репозиторий, содержащий пример рабочей нагрузки Rust с уязвимой версией OpenSSL. Выполните следующую команду:

kubeclarity-cli scan ghcr.io/schultyy/rust-workload:0.0.3 --input-type image -o table
NAME INSTALLED FIXED-IN VULNERABILITY SEVERITY SCANNERS
perl-base 5.28.1-6+deb10u1 CVE-2023-31484 HIGH grype
libgcc1 1:8.3.0-6 CVE-2018-12886 HIGH grype
libsystemd0 241-7~deb10u9 CVE-2019-3844 HIGH grype
openssl 1.1.1n-0+deb10u3 1.1.1n-0+deb10u4 CVE-2023-0215 HIGH grype
ncurses-base 6.1+20181013-2+deb10u3 CVE-2023-29491 HIGH grype
libudev1 241-7~deb10u9 CVE-2019-3844 HIGH grype
openssl 1.1.1n-0+deb10u3 1.1.1n-0+deb10u5 CVE-2023-0464 HIGH grype
libstdc++6 8.3.0-6 CVE-2019-15847 HIGH grype
openssl 1.1.1n-0+deb10u3 1.1.1n-0+deb10u5 CVE-2023-2650 HIGH grype
openssl 1.1.1n-0+deb10u3 1.1.1n-0+deb10u4 CVE-2023-0286 HIGH grype
libc-bin 2.28-10+deb10u2 CVE-2020-1751 HIGH grype
openssl 1.1.1n-0+deb10u3 1.1.1n-0+deb10u4 CVE-2022-4450 HIGH grype
libss2 1.44.5-1+deb10u3 CVE-2022-1304 HIGH grype
libsystemd0 241-7~deb10u9 CVE-2021-3997 MEDIUM grype
libsystemd0 241-7~deb10u9 CVE-2022-3821 MEDIUM grype
openssl 1.1.1n-0+deb10u3 1.1.1n-0+deb10u5 CVE-2023-0466 MEDIUM grype
libudev1 241-7~deb10u9 CVE-2022-3821 MEDIUM grype
openssl 1.1.1n-0+deb10u3 1.1.1n-0+deb10u4 CVE-2022-2097 MEDIUM grype
libudev1 241-7~deb10u9 CVE-2021-3997 MEDIUM grype
libsystemd0 241-7~deb10u9 CVE-2022-4415 MEDIUM grype
libudev1 241-7~deb10u9 CVE-2022-4415 MEDIUM grype
openssl 1.1.1n-0+deb10u3 1.1.1n-0+deb10u4 CVE-2022-4304 MEDIUM grype
openssl 1.1.1n-0+deb10u3 1.1.1n-0+deb10u5 CVE-2023-0465 MEDIUM grype
libpcre3 2:8.39-12 CVE-2020-14155 MEDIUM grype
libgcrypt20 1.8.4-5+deb10u1 CVE-2019-13627 MEDIUM grype
login 1:4.5-1.1 CVE-2023-29383 LOW grype
bsdutils 1:2.33.1-0.1 CVE-2021-37600 LOW grype

(Выходные данные усечены для краткости).

Команда kubeclarity scan выводит список пакетов, для которых были зарегистрированы CVE. openssl появляется несколько раз с версией, которая устраняет проблему (см. столбец FIXED-IN).

Продолжение следует...

Перевод с некоторыми авторскими заголовками.

Автор оригинала: Jan Schulte.