Удаленные 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 - данные из удалённых форков, репозиториев и даже приватных репозиториев могут оставаться доступными навсегда. Проблема не только известна самой компании, но и является частью архитектуры платформы.
Сбалансированная диета для серого вещества