Бесплатно Экспресс-аудит сайта:

10.10.2024

Зомби-слои: «мертвые» данные оживают в Docker-реестрах

Исследователи из GitGuardian обнаружили, что после удаления Docker -образа его слои могут продолжать существовать в реестре. Такие слои, названные «зомби-слоями», могут храниться в реестрах на протяжении нескольких недель, прежде чем будут удалены службой сборки мусора. Главная опасность заключается в том, что зомби-слои, содержащую конфиденциальную информацию, могут стать объектом внимания злоумышленников, которые отслеживают реестры на наличие уязвимостей.

Одной из таких ошибок является поведение Amazon Web Services ( AWS ) ECR, где даже при включенной неизменяемости тегов слои Docker-образа могут быть загружены перед тем, как система отклонит манифест. Это позволяет создавать зомби-слои даже в условиях, когда перезапись образов запрещена.

Docker-образы состоят из нескольких слоев, каждый из которых представляет собой архив файлов, таких как bash или определенные скрипты. Манифест Docker-образа описывает его содержимое, включая хеши слоев. Однако при изменении образа, например при удалении слоя с секретными данными, оригинальные слои остаются в реестре и могут быть восстановлены по хэшам.

Во время эксперимента исследователи загрузили тестовый Docker-образ в реестр и затем изменили его, удалив слой с конфиденциальной информацией. Затем специалисты проверили, могут ли восстановить удаленный слой, и обнаружили, что слой продолжает существовать в реестре и может быть скачан. Это происходит из-за того, что реестры не сразу удаляют неиспользуемые слои, даже если они больше не упоминаются в манифесте.

Особое внимание было уделено тому, как долго зомби-слои остаются доступными в реестрах. В ходе эксперимента с четырьмя реестрами, включая DockerHub, Quay.io, GitHub Packages и AWS ECR, было установлено, что зомби-слои оставались видимыми в течение месяца, за исключением Quay.io, который удалил слой через 17 дней. Для предотвращения подобных ситуаций GitGuardian рекомендует сканировать Docker-образы на наличие секретов перед их публикацией, чтобы предотвратить утечку.

Подобные проблемы затрагивают также и GitHub - данные из удалённых форков, репозиториев и даже приватных репозиториев могут оставаться доступными навсегда. Проблема не только известна самой компании, но и является частью архитектуры платформы.