CVE-2026-53471 Overview
CVE-2026-53471 is an authorization flaw in the migration-planner agent-API middleware. The middleware processes JSON Web Tokens (JWTs) for authentication but fails to validate the source_id claim against the requested source ID. The UpdateSourceInventory and UpdateAgentStatus handlers accept any valid agent token regardless of which tenant owns the target source. An authenticated attacker holding a valid agent token can manipulate data belonging to other tenants. The weakness maps to [CWE-639] Authorization Bypass Through User-Controlled Key.
Critical Impact
Authenticated attackers can overwrite victim inventory, plant malicious credential URLs, and corrupt migration assessments across tenant boundaries.
Affected Products
- Red Hat migration-planner (kubev2v/migration-planner)
- migration-planner agent-API middleware
- Deployments exposing UpdateSourceInventory and UpdateAgentStatus handlers
Discovery Timeline
- 2026-06-10 - CVE-2026-53471 published to NVD
- 2026-06-10 - Last updated in NVD database
Technical Details for CVE-2026-53471
Vulnerability Analysis
The migration-planner agent-API authenticates clients using JWTs that include a source_id claim identifying the tenant resource the token is scoped to. The vulnerable handlers extract the target source from the request path or body but never compare it to the source_id carried in the token. Any authenticated agent can therefore submit updates referencing source identifiers belonging to other tenants. This produces a complete collapse of tenant isolation in multi-tenant deployments. The scope change reflects impact extending beyond the attacker's authorization boundary.
Root Cause
The root cause is missing object-level authorization in the agent-API middleware. The handlers trust the requested source ID without binding it to the JWT subject. This is a classic broken object-level authorization (BOLA) pattern: authentication succeeds, but per-object access checks are absent. The fix introduced in GitHub Pull Request #1213 enforces equality between the token claim and the requested resource ID.
Attack Vector
An attacker first obtains a valid agent token, typically by registering or operating a legitimate agent in the same deployment. The attacker then issues authenticated requests to UpdateSourceInventory or UpdateAgentStatus, substituting a victim tenant's source_id in the request. The server processes the write because the source_id token claim is never compared to the targeted resource. The attacker can overwrite inventory records, inject attacker-controlled credential URLs that downstream agents may fetch, and corrupt assessment data used for migration decisions. See the Red Hat CVE Advisory and the Red Hat Bug Report for additional technical details.
Detection Methods for CVE-2026-53471
Indicators of Compromise
- Agent-API requests where the source_id claim in the JWT does not match the source ID in the request path or body.
- Unexpected modifications to source inventory records, including new or altered credential URLs pointing to attacker-controlled hosts.
- Repeated UpdateSourceInventory or UpdateAgentStatus calls from a single agent identity targeting multiple source IDs.
Detection Strategies
- Log every call to UpdateSourceInventory and UpdateAgentStatus with the JWT source_id claim and the requested source ID, and alert on mismatches.
- Baseline normal agent behavior and flag agents that update sources outside their historical scope.
- Review migration assessment diffs for unexplained inventory changes or credential URL modifications.
Monitoring Recommendations
- Forward agent-API access logs to a centralized analytics platform for correlation across tenants.
- Alert on outbound connections from agents to credential URLs that were recently added or modified.
- Track the rate of write operations per agent identity to detect bulk cross-tenant manipulation.
How to Mitigate CVE-2026-53471
Immediate Actions Required
- Upgrade migration-planner to a release that includes the fix from GitHub Pull Request #1213.
- Rotate all agent JWTs and any credentials referenced by source inventory records.
- Audit inventory entries and credential URLs created or modified before patching and revert unauthorized changes.
Patch Information
The upstream fix adds validation that compares the JWT source_id claim to the source ID specified in UpdateSourceInventory and UpdateAgentStatus requests. Requests where the values do not match are rejected. Refer to the Red Hat CVE Advisory for distribution-specific package versions and errata.
Workarounds
- Restrict agent-API network exposure so only trusted agents can reach UpdateSourceInventory and UpdateAgentStatus endpoints.
- Deploy an API gateway or reverse proxy that decodes the JWT and rejects requests where the source_id claim does not match the target resource.
- Reduce agent token lifetimes and scope tokens to the minimum set of sources required.
# Example reverse-proxy check (pseudocode): reject requests where
# the JWT source_id claim does not match the URL source ID
# token_source_id=$(decode_jwt "$AUTH_HEADER" | jq -r .source_id)
# url_source_id=$(echo "$REQUEST_PATH" | awk -F/ '{print $4}')
# [ "$token_source_id" = "$url_source_id" ] || deny_request 403
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

