30 сентября 2026 года исследователи безопасности сообщили об уязвимости в системе управления идентификацией и доступом Docker Hub в рамках нашей программы раскрытия информации об уязвимостях. Мы подтвердили отчет и развернули исправление в рабочей среде в тот же день, менее чем через четыре часа после его получения. Затем мы проанализировали все преобразования учетных записей, начиная с даты появления ошибки, и 2 октября уведомили каждого пользователя и владельца организации, чья учетная запись могла быть затронута этой уязвимостью. В этой публикации объясняется, в чем заключалась уязвимость, что она могла и чего не могла делать, что мы обнаружили и что мы изменили.
Мы хотим поблагодарить Петера Молнара и Кристиана Хозака из mptrdev.com за обнаружение проблемы, ответственный подход к сообщению о ней и координацию раскрытия информации с нами. Их технический отчет доступен по адресу ghostpat.com. Данной проблеме присвоен идентификатор CVE-2026-105445.
Был ли я или кто-либо из членов моей организации подвержен этой уязвимости?
2 октября в 17:30 по восточному стандартному времени мы отправили электронное письмо с темой «Docker Hub Vulnerability Identified & Resolved» ограниченному числу пользователей, подвергшихся этой уязвимости. Если вы не получили электронное письмо, значит, вы и члены организаций, которыми вы управляете, не были подвержены риску, и вам не нужно предпринимать никаких действий.
В чем заключалась уязвимость
Docker Hub позволяет преобразовать личную учетную запись в организацию. Люди делают это, потому что в Hub нет способа переместить репозиторий из одной учетной записи в другую: преобразование — это способ превратить alice/app в alice/app, принадлежащий организации, не нарушая при этом все команды Docker pull, которые ссылаются на него. Во время преобразования пользователь указывает существующую учетную запись Docker Hub в качестве нового владельца организации.
Начиная с 26 августа 2024 года, при преобразовании также происходило переназначение персональных токенов доступа (PAT) преобразованной учетной записи новому владельцу. Это делалось путем изменения записи о владельце токена без ротации или отзыва секрета токена. Указанного владельца не просили подтвердить это действие и не уведомляли его. В совокупности эти два пробела сделали возможным следующее:
- Злоумышленник создает учетную запись и генерирует на ней PAT.
- Злоумышленник преобразует эту учетную запись в организацию и указывает целевого пользователя в качестве владельца.
- PAT злоумышленника переназначается целевому пользователю. Злоумышленник по-прежнему владеет секретом, а PAT остается активным, теперь уже с правами доступа целевого пользователя.
- Токен теперь проходит аутентификацию в реестре как целевой пользователь.
Что злоумышленник мог и чего не мог делать
В рамках области действия токена переназначенный PAT действовал как целевой пользователь на уровне реестра, что означает, что злоумышленник потенциально мог извлекать (pull), отправлять (push) и/или удалять образы в репозиториях цели и в организациях, к которым у цели был доступ. Поскольку это включает публикацию образов под законным именем, мы расценили это как риск для цепочки поставок программного обеспечения и оценили его как критический.
Уязвимость не давала доступа к веб-интерфейсу Docker Hub и не могла быть использована для изменения пароля, адреса электронной почты или настроек двухфакторной аутентификации цели, а также для захвата учетной записи.
Окно уязвимости было открыто с 26 августа 2024 года, 20:33 UTC, до момента развертывания исправления 30 сентября 2026 года, примерно в [19:10] UTC.
Хронология (время по восточному поясному времени США)
- 30 сентября, 11:40: Отчет получен на security@docker.com.
- 30 сентября, ~13:30: Мы независимо воспроизвели проблему с помощью внутренних тестовых учетных записей.
- 30 сентября, ~15:10: Исправление развернуто в рабочей среде и проверено на исходном доказательстве концепции. Преобразование больше не передает PAT.
- 30 сентября, ~15:23: Документация обновлена: указано, что PAT не передаются и должны быть воссозданы новым владельцем, при этом рекомендуется использовать токены доступа организации.
- 30 сентября, 16:59: Исследователи проинформированы об исправлении. Обе стороны договорились о координации раскрытия информации.
- 2 октября, 17:30: Пострадавшие пользователи и владельцы их организаций уведомлены по электронной почте.
- 8 октября, 15:45: Принудительная деактивация всех PAT, переданных в результате преобразования, за исключением случаев, когда владелец учетной записи отказался от этого.
Что мы исследовали и обнаружили
Мы перечислили все преобразования учетных записей, выполненные с 26 августа 2024 года, и сопоставили их с журналами аутентификации реестра, данными об использовании Docker Hub и записями токенов IAM. Мы искали любой токен, используемый под более чем одной личностью, и изучили каждую операцию push, выполненную с переданным токеном, всего около 304 000.
Мы не нашли доказательств того, что уязвимость была использована.
- Каждая операция push, выполненная с переданным токеном, попадала либо в собственные репозитории преобразованной организации, либо в собственные репозитории нового владельца. Ни одна из них не попала в учетную запись постороннего пользователя или организации. В подавляющем большинстве случаев преобразованная учетная запись и учетная запись, указанная в качестве владельца, принадлежали одному и тому же человеку или команде, что является нормальным, законным использованием этой функции.
- Мы провели статический анализ наиболее рискованных публичных образов без их выполнения: образов, отправленных после преобразования, где мы не могли установить, что один и тот же человек контролировал обе учетные записи. Мы не обнаружили вредоносного ПО, криптомайнеров, активности командных серверов, сбора учетных данных, средств обеспечения постоянного присутствия или несанкционированного вмешательства.
- Мы не нашли доказательств того, что инфраструктура или службы Docker были затронуты.
Мы также хотим внести ясность относительно ограничений этого вывода: журналы реестра показывают, когда токен используется, а не то, что он существует, поэтому переданный токен, который никогда не использовался, не оставляет следов. По этой причине мы не полагались на обнаружение при определении того, кто был подвержен риску. Мы рассматривали каждый PAT, который перемещался через преобразование в течение этого окна, как потенциально затронутый, независимо от того, видели ли мы его использование.
Что мы сделали для пострадавших пользователей
2 октября мы отправили электронные письма ограниченному числу пользователей, чьи учетные записи получили переданные PAT. В каждом письме были перечислены затронутые токены с описанием и датой создания, чтобы пользователи могли найти их в Docker Hub. Мы отдельно уведомили соответствующих владельцев организаций. 8 октября в 15:45 по восточному стандартному времени мы деактивировали идентифицированные переданные PAT. Токены, которые владельцы попросили сохранить до истечения срока, были исключены.
Еще раз: если вы не получили вышеуказанное электронное письмо, ни один PAT в вашей учетной записи не был передан через этот процесс. Следовательно, ваша учетная запись не была подвержена этой уязвимости, и вам не нужно предпринимать никаких действий.
Что мы меняем
Немедленное исправление полностью удалило передачу PAT из процесса преобразования. Кроме того, мы сейчас:
- требуем согласия пользователя, прежде чем он будет указан в качестве владельца организации, и уведомляем его, когда это происходит;
- записываем проверяемую историю каждого изменения владельца токена, чтобы на такие вопросы можно было ответить на основе записей, а не предположений;
- проверяем другие процессы, которые меняют владельца учетных данных, на наличие такого же шаблона.
Что вы можете сделать
Просмотрите персональные токены доступа в своей учетной записи в Docker Hub в разделе «Настройки учетной записи», «Персональные токены доступа» и отзовите все, которые вы не узнаете или больше не используете. Для автоматизации, принадлежащей организации, используйте токены доступа организации вместо PAT отдельного лица. Если у вас есть вопросы по этому уведомлению, свяжитесь со службой поддержки Docker по адресу app.docker.com/support/contact.
Ответственное раскрытие информации работает тогда, когда исследователи и поставщики относятся друг к другу как партнеры. Питер и Кристиан поступили именно так, и благодаря этому наши пользователи находятся в большей безопасности. Если вы обнаружили проблему безопасности в продукте Docker, пожалуйста, сообщите о ней по адресу security@docker.com.








