/

CVE-2026-111764

Severity:

HIGH RISK

(7.5)

Missing Authorization (CWE-862) in A2A Java Task Store

CVE-2026-111764

Awaiting Analysis

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862, CWE-1188

Impact:

Unauthorized Information Disclosure

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A2A Java SDK versions before 1.3.0.Final may allow task reads without verifying that the requesting caller is authorized to access the task. In multi-caller deployments using default or incompletely configured request handling, an unauthenticated caller who knows or guesses a task ID may retrieve task status, context identifiers, message history, and artifacts.

A2A Java SDK versions before 1.3.0.Final may allow task reads without verifying that the requesting caller is authorized to access the task. In multi-caller deployments using default or incompletely configured request handling, an unauthenticated caller who knows or guesses a task ID may retrieve task status, context identifiers, message history, and artifacts.

Affected context

The issue occurs in deployments using the A2A Java SDK's in-memory task store when no effective task authorization provider and authorization request-handler decorator are configured. The default store constructor leaves authorization disabled, and manually constructed or framework-integrated request handlers may omit the decorator. Exposure is most significant when multiple callers share a service and transport endpoints do not independently enforce authentication.

The issue occurs in deployments using the A2A Java SDK's in-memory task store when no effective task authorization provider and authorization request-handler decorator are configured. The default store constructor leaves authorization disabled, and manually constructed or framework-integrated request handlers may omit the decorator. Exposure is most significant when multiple callers share a service and transport endpoints do not independently enforce authentication.

Exploit preconditions

  • Attack surface: A2A task-read request handling and the in-memory task store
  • Required access: Network reachability to a task-reading endpoint; the default/reference transport may permit unauthenticated access
  • Trigger point: A request to read a task using a known or guessed task identifier
  • Why exploitation is possible: The default store can return task data without checking the caller or task owner when no effective authorization provider and decorator check are installed
  • Attack surface: A2A task-read request handling and the in-memory task store
  • Required access: Network reachability to a task-reading endpoint; the default/reference transport may permit unauthenticated access
  • Trigger point: A request to read a task using a known or guessed task identifier
  • Why exploitation is possible: The default store can return task data without checking the caller or task owner when no effective authorization provider and decorator check are installed

Why this happens

The underlying bug is a missing authorization check in the default task-read path. InMemoryTaskStore can be created with a null authorization provider, and its read operation returns stored task data without verifying ownership or caller permissions. Authorization is implemented as an optional integration through a TaskAuthorizationProvider and AuthorizationRequestHandlerDecorator, so default wiring or manually built handlers can leave the security control absent. This maps primarily to CWE-862: Missing Authorization, with CWE-1188: Insecure Default Initialization of Resource, because the default configuration does not establish a protective authorization boundary.

The underlying bug is a missing authorization check in the default task-read path. InMemoryTaskStore can be created with a null authorization provider, and its read operation returns stored task data without verifying ownership or caller permissions. Authorization is implemented as an optional integration through a TaskAuthorizationProvider and AuthorizationRequestHandlerDecorator, so default wiring or manually built handlers can leave the security control absent. This maps primarily to CWE-862: Missing Authorization, with CWE-1188: Insecure Default Initialization of Resource, because the default configuration does not establish a protective authorization boundary.

Potential impact

  • An attacker may retrieve another caller's task status
  • Task context identifiers and message history could be disclosed
  • Stored artifacts may be exposed to unauthorized callers
  • Sensitive workflow or agent interaction data can be inferred
  • Information disclosure could support follow-on attacks against connected systems
  • An attacker may retrieve another caller's task status
  • Task context identifiers and message history could be disclosed
  • Stored artifacts may be exposed to unauthorized callers
  • Sensitive workflow or agent interaction data can be inferred
  • Information disclosure could support follow-on attacks against connected systems

General mitigation guidance

Mitigation generally focuses on making authorization mandatory for every task-read path rather than treating it as an optional integration.

Common defensive patterns include:

  • Require an effective authorization provider before serving task data
  • Apply authorization checks consistently through framework, default, and manually constructed request handlers
  • Enforce authentication and authorization at the transport boundary
  • Bind task identifiers to authenticated principals or tenant scopes
  • Fail closed when authorization configuration is absent or incomplete
  • Limit task contents and artifact access according to least privilege
  • Avoid exposing shared in-memory task stores across unrelated callers unless isolation is enforced

Mitigation generally focuses on making authorization mandatory for every task-read path rather than treating it as an optional integration.

Common defensive patterns include:

  • Require an effective authorization provider before serving task data
  • Apply authorization checks consistently through framework, default, and manually constructed request handlers
  • Enforce authentication and authorization at the transport boundary
  • Bind task identifiers to authenticated principals or tenant scopes
  • Fail closed when authorization configuration is absent or incomplete
  • Limit task contents and artifact access according to least privilege
  • Avoid exposing shared in-memory task stores across unrelated callers unless isolation is enforced

How teams detect issues like this

Organizations can look for:

  • Static analysis rules identifying task-store reads that lack authorization checks
  • Code review signals such as nullable authorization providers or request handlers built without authorization decorators
  • Integration tests that attempt cross-user task reads with valid and invalid identities
  • Configuration and policy checks requiring authentication on task transport endpoints
  • Runtime monitoring for repeated task-ID enumeration or reads across tenant boundaries

Automated code review and dependency analysis tools may help identify insecure defaults and missing authorization paths, but should be supplemented with end-to-end access-control tests.

Organizations can look for:

  • Static analysis rules identifying task-store reads that lack authorization checks
  • Code review signals such as nullable authorization providers or request handlers built without authorization decorators
  • Integration tests that attempt cross-user task reads with valid and invalid identities
  • Configuration and policy checks requiring authentication on task transport endpoints
  • Runtime monitoring for repeated task-ID enumeration or reads across tenant boundaries

Automated code review and dependency analysis tools may help identify insecure defaults and missing authorization paths, but should be supplemented with end-to-end access-control tests.

Sources

SourceLink
github.comgithub.com/a2aproject/a2a-java/commit/efb4e985e99390c4fc1f78c0a187a4254c0a2553
github.comgithub.com/a2aproject/a2a-java/pull/1095
github.comgithub.com/a2aproject/a2a-java/releases/tag/v1.3.0.Final
github.comgithub.com/a2aproject/a2a-java/security/advisories/GHSA-qw47-mcm5-934w

Frequently asked

questions

Yes, when a task-reading endpoint is network reachable and does not require authentication, an unauthenticated caller may be able to request task data by knowing or guessing a task ID.

The attacker generally needs network access to the relevant A2A endpoint and a task identifier. A privileged account is not necessarily required when transport-level authentication is absent.

Require authentication and enforce per-task authorization on every read path. Authorization should fail closed when the provider or request-handler protection is missing.

Treat authorization as mandatory security infrastructure, test cross-tenant and cross-user access boundaries, and apply policy checks to default, framework-integrated, and manually constructed handlers.

Yes, when a task-reading endpoint is network reachable and does not require authentication, an unauthenticated caller may be able to request task data by knowing or guessing a task ID.

The attacker generally needs network access to the relevant A2A endpoint and a task identifier. A privileged account is not necessarily required when transport-level authentication is absent.

Require authentication and enforce per-task authorization on every read path. Authorization should fail closed when the provider or request-handler protection is missing.

Treat authorization as mandatory security infrastructure, test cross-tenant and cross-user access boundaries, and apply policy checks to default, framework-integrated, and manually constructed handlers.

Find out what's already
exploitable in your codebase.