Docker исправила критическую уязвимость в Docker Hub, позволявшую переназначать персональные токены доступа (PATs) новому владельцу при преобразовании личного аккаунта в организацию без ротации или отзыва токена и без получения согласия нового владельца. Уязвимость получила номер CVE-2026-105445, и компания сочла её угрозой для цепочки поставок программного обеспечения.
Исследователи Peter Molnar и Krisztian Hozak сообщили о проблеме 30 сентября 2026 года через программу раскрытия уязвимостей. Docker подтвердила, что выпустила исправление менее чем через четыре часа — примерно в 19:10 по всемирному координированному времени. Потенциальный период воздействия продолжался с 26 августа 2024 года, 20:33 по всемирному координированному времени, до публикации исправления.
Как можно было эксплуатировать уязвимость?
Docker Hub позволяет преобразовать личный аккаунт в организацию, чтобы сохранить тот же путь к репозиторию, например преобразовать alice/app в репозиторий, принадлежащий организации, не нарушая существующие операции загрузки. Во время преобразования пользователь указывал существующий аккаунт, который становился владельцем новой организации.
После внедрения дефектного поведения PAT, принадлежавшие преобразованному аккаунту, передавались аккаунту, указанному в качестве владельца, тогда как секрет токена оставался у его создателя. Новому владельцу не требовалось подтверждать операцию, и он не получал уведомления о ней. Таким образом, злоумышленник мог использовать токен так, будто он принадлежал целевому владельцу на уровне реестра Docker.
В зависимости от области действия токена это могло позволить загружать, отправлять или удалять образы из репозиториев жертвы либо организаций, к которым жертва имела доступ. Однако сам интерфейс Docker Hub через уязвимость был недоступен, а изменить пароль, адрес электронной почты или настройки двухфакторной аутентификации либо захватить аккаунт было невозможно.
Результаты расследования и меры локализации
Docker проверила все операции преобразования аккаунтов начиная с 26 августа 2024 года и сопоставила их с журналами аутентификации, использования Docker Hub, управления идентификацией и токенами. Компания также изучила около 304 тысяч операций отправки, выполненных с использованием переданных токенов, и заявила, что не обнаружила признаков эксплуатации уязвимости.
Все проверенные компанией операции отправки выполнялись внутри преобразованных репозиториев организации или репозиториев нового владельца; операций в аккаунтах или организациях, не связанных с ними, зафиксировано не было. Компания также постоянно анализировала наиболее рискованные общедоступные образы и не обнаружила вредоносного программного обеспечения, инструментов майнинга, активности управления и контроля, кражи учётных данных, механизмов закрепления или вмешательства в образы.
Тем не менее Docker пояснила, что журналы реестра показывают использование токена, но не доказывают его наличие, если токен не использовался. Поэтому компания считала затронутым каждый PAT, переданный в ходе операции преобразования в период воздействия, независимо от наличия записей об использовании.
Что изменилось на практике?
Docker полностью прекратила передачу PAT во время преобразования аккаунтов и 2 октября отправила уведомления затронутым пользователям и соответствующим владельцам организаций. 8 октября компания отключила выявленные переданные токены, за исключением токенов, владельцы которых до установленного срока попросили сохранить их.
Кроме того, теперь компания требует согласия пользователя, прежде чем назначить его владельцем организации, и уведомляет его после этого. Docker также будет вести аудируемую историю каждого изменения права собственности на токены. Сейчас компания проверяет другие процессы, которые могут изменять право собственности на учётные данные, в поисках аналогичной проблемы.
Компания рекомендует проверить персональные токены доступа в настройках аккаунта Docker Hub и отозвать любой неизвестный или больше не используемый токен. Для автоматизации работы организаций она рекомендует использовать токены доступа организаций вместо персонального токена, связанного с конкретным человеком.