{"id":5275,"date":"2026-10-12T16:14:14","date_gmt":"2026-10-12T16:14:14","guid":{"rendered":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/10\/12\/docker-hub-security-advisory-personal-access-tokens-transferred-during-account-to-organization-conversions\/"},"modified":"2026-10-12T16:14:14","modified_gmt":"2026-10-12T16:14:14","slug":"docker-hub-security-advisory-personal-access-tokens-transferred-during-account-to-organization-conversions","status":"publish","type":"post","link":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/10\/12\/docker-hub-security-advisory-personal-access-tokens-transferred-during-account-to-organization-conversions\/","title":{"rendered":"Docker Hub security advisory: personal access tokens transferred during account-to-organization conversions"},"content":{"rendered":"<p class=\"wp-block-paragraph\">On September 30, 2026, security researchers reported a vulnerability in Docker Hub\u2019s identity and access management through our Vulnerability Disclosure Program. We confirmed the report and deployed a fix to production the same afternoon, less than four hours after receiving it. We then reviewed every account conversion back to the date the flaw was introduced, and on October 2, notified every user and organization owner whose account could have been impacted by this vulnerability. This post explains what the vulnerability was, what it could and could not do, what we found, and what we have changed.<\/p>\n<p class=\"wp-block-paragraph\">We want to thank Peter Molnar and Krisztian Hozak of mptrdev.com for finding the issue, reporting it responsibly, and coordinating disclosure with us. Their technical write-up is available at <a href=\"https:\/\/ghostpat.com\/\" rel=\"nofollow noopener\" target=\"_blank\">ghostpat.com<\/a>. This issue is tracked as CVE-2026-105445.<\/p>\n<h2 class=\"wp-block-heading\">Was I or any member of my organization exposed to the vulnerability?<\/h2>\n<p class=\"wp-block-paragraph\">On October 2 at 5:30PM EST, we sent out an email with the subject line \u201cDocker Hub Vulnerability Identified &amp; Resolved\u201d to the limited number of users exposed to this vulnerability. If you did not receive an email, you and any members of the organizations you administer were not exposed and there are no actions for you to take.<\/p>\n<h2 class=\"wp-block-heading\">What the vulnerability was<\/h2>\n<p class=\"wp-block-paragraph\">Docker Hub lets you convert a personal account into an organization. People do this because Hub has no way to move a repository from one account to another: conversion is how alice\/app becomes an organization-owned alice\/app without breaking every Docker pull that references it. During conversion, the user names an existing Docker Hub account as the new organization\u2019s owner.<\/p>\n<p class=\"wp-block-paragraph\">Beginning\u00a0 August 26, 2024, conversion also re-assigned the converted account\u2019s personal access tokens (PATs) to that new owner. It did this by changing the token\u2019s owner record, without rotating or revoking the token secret. The named owner was not asked to confirm and was not notified. Together, those two gaps made the following possible:<\/p>\n<ol class=\"wp-block-list\">\n<li>An attacker creates an account and generates a PAT on it.<\/li>\n<li>The attacker converts that account to an organization and names a target user as the owner.<\/li>\n<li>The attacker\u2019s PAT is re-assigned to the target user. The attacker still holds the secret and the PAT remains active now with the target user\u2019s scope.<\/li>\n<li>The token now authenticates to the registry as the target user.<\/li>\n<\/ol>\n<h2 class=\"wp-block-heading\">What an attacker could and could not do<\/h2>\n<p class=\"wp-block-paragraph\">Within the scope of the token, a re-assigned PAT acted as the target user at the registry level, meaning an attacker could potentially pull, push, and\/or delete images in the target\u2019s repositories and in organizations where the target had access. Because that includes publishing images under a legitimate name, we treated this as a software supply chain risk and rated it critical.<\/p>\n<p class=\"wp-block-paragraph\">The vulnerability did not give access to the Docker Hub web interface, and it could not be used to change the target\u2019s password, email address, or two-factor settings, or to take over the account.<\/p>\n<p class=\"wp-block-paragraph\">The exposure window ran from August 26, 2024, 20:33 UTC, until the fix was deployed on September 30, 2026, at approximately [19:10] UTC.<\/p>\n<h2 class=\"wp-block-heading\">Timeline (all times U.S. Eastern)<\/h2>\n<ul class=\"wp-block-list\">\n<li><strong>Sept 30, 11:40 AM:<\/strong> Report received at security@docker.com.<\/li>\n<li><strong>Sept 30, ~1:30 PM:<\/strong> We independently reproduced the issue with internal test accounts.<\/li>\n<li><strong>Sept 30, ~3:10 PM:<\/strong> Fix deployed to production and verified against the original proof of concept. Conversion no longer transfers PATs.<\/li>\n<li><strong>Sept 30, ~3:23 PM:<\/strong> Documentation updated to state that PATs do not transfer and must be recreated by the new owner, with organization access tokens recommended.<\/li>\n<li><strong>Sept 30, 4:59 PM:<\/strong> Researchers informed of the fix. Both parties agreed to coordinate disclosure.<\/li>\n<li><strong>Oct 2, 5:30 PM:<\/strong> Exposed users and their organization owners notified by email.<\/li>\n<li><strong>Oct 8, 3:45 PM:<\/strong> Forced deactivation of all PATs transferred through conversion, except where the account holder opted out.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\">What we investigated and found<\/h2>\n<p class=\"wp-block-paragraph\">We enumerated every account conversion performed since August 26, 2024 and correlated them with registry authentication logs, Docker Hub usage data, and IAM token records. We looked for any token used under more than one identity, and we examined every push made with a transferred token, about 304,000 in all.<\/p>\n<p class=\"wp-block-paragraph\"><strong>We found no evidence that the vulnerability was exploited.<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li>Every push made with a transferred token landed either in the converted organization\u2019s own repositories or in the new owner\u2019s own repositories. None went into an unrelated user\u2019s or organization\u2019s account. In the large majority of cases, the account converted and the account named as owner belonged to the same person or team, which is the normal, legitimate use of this feature.<\/li>\n<\/ul>\n<ul class=\"wp-block-list\">\n<li>We statically analyzed the highest-risk public images without executing them: images pushed after a conversion where we could not establish that the same person controlled both accounts. We found no malware, cryptominers, command-and-control activity, credential harvesting, persistence, or tampering.<\/li>\n<li>We found no evidence that Docker\u2019s own infrastructure or services were affected.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">We also want to be clear about the limits of that finding:registry logs show when a token is used, not that it exists, so a transferred token that was never used leaves no trace. For that reason, we did not rely on detection to decide who was exposed. We treated every PAT that moved through conversion during the window as potentially affected, whether or not we saw it used.<\/p>\n<h2 class=\"wp-block-heading\">What we did for affected users<\/h2>\n<p class=\"wp-block-paragraph\">On October 2, we emailed the limited number of users whose accounts received transferred PATs. Each email listed the in-scope tokens by description and creation date so users could find them in Docker Hub. We separately notified the associated organization owners. On October 8th at 3:45 PM EST, we deactivated the identified transferred PATs. Tokens that their owners asked to keep before the deadline were excluded.<\/p>\n<p class=\"wp-block-paragraph\">Once again, if you did not receive the above email, no PAT on your account was transferred through this flow. Your account was therefore not exposed to this vulnerability and there is no action for you to take.<\/p>\n<h2 class=\"wp-block-heading\">What we are changing<\/h2>\n<p class=\"wp-block-paragraph\">The immediate fix removed PAT transfer from conversion entirely. Beyond that, we are now:<\/p>\n<ul class=\"wp-block-list\">\n<li>requiring consent from a user before they are named as an organization owner, and notifying them when it happens;<\/li>\n<li>recording an auditable history of every token ownership change, so questions like this can be answered from records rather than inference;<\/li>\n<li>reviewing other flows that change credential ownership for the same pattern.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\">What you can do<\/h2>\n<p class=\"wp-block-paragraph\">Review the personal access tokens on your account in Docker Hub under Account settings, Personal access tokens, and revoke any you don\u2019t recognize or no longer use. For automation that belongs to an organization, use organization access tokens rather than a person\u2019s PAT. If you have questions about this notice, contact Docker Support at <a href=\"https:\/\/app.docker.com\/support\/contact\" rel=\"nofollow noopener\" target=\"_blank\">app.docker.com\/support\/contact<\/a>.<\/p>\n<p class=\"wp-block-paragraph\">Responsible disclosure works when researchers and vendors treat each other as partners. Peter and Krisztian did that here, and our users are safer for it. If you find a security issue in a Docker product, please report it to <a href=\"mailto:security@docker.com\">security@docker.com<\/a>.<\/p>\n<p class=\"wp-block-paragraph\">\n<\/p>","protected":false},"excerpt":{"rendered":"<p>On September 30, 2026, security researchers reported a vulnerability in Docker Hub\u2019s identity and access management through our Vulnerability Disclosure [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":94,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[4],"tags":[],"class_list":["post-5275","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/5275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/comments?post=5275"}],"version-history":[{"count":0,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/5275\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media\/94"}],"wp:attachment":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media?parent=5275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/categories?post=5275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/tags?post=5275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}