A2A Java SDK has a fail-open default task authorization
Draft text for GHSA-qw47-mcm5-934w. The body below drops into the GitHub advisory description field; the metadata block maps to the form fields. Set the patched version at release; publish when the fix ships._ --- - **Ecosystem:** Maven - **Affected package:** `org.a2aproject.sdk:a2a-java-sdk-server-common` (task store / authorization) - **Affected versions:** `<= 1.2.0.Final` (and `1.2.1.Final-SNAPSHOT` on `main` prior to the fix) - **Patched version:** _(the release that carries the fix, e.g. 1.2.1.Final)_ - **CWE:** CWE-1188 (Insecure Default Initialization), CWE-862 (Missing Authorization) - **Severity:** High - **CVSS v3.1:** `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N` (7.5, High) --- ## Details The default task store performs no authorization on task reads. `InMemoryTaskStore`'s no-arg constructor sets `authorizationProvider = null`, and `InMemoryTaskStore.get(String taskId)` is a bare map lookup with no authorization check regardless of provider: ```java public InMemoryTaskStore() { this.authorizationProvider = null; // default wiring } @Override public @Nullable Task get(String taskId) { return tasks.get(taskId); // no owner / caller check } ``` Authorization is enforced only when the application both supplies a `TaskAuthorizationProvider` *and* routes requests through `AuthorizationRequestHandlerDecorator` (via CDI), which checks ownership before delegating. A server that uses the default store, or wires `DefaultRequestHandler.builder().build()` manually, or integ
- Products
- org.a2aproject.sdk:a2a-java-sdk-server-common
- Affected versions
- 1.0.0.Alpha4, 1.0.0.Beta1, 1.0.0.CR1, 1.0.0.Final, 1.1.0.Final, 1.2.0.Final
- Fixed versions
- 1.3.0.Final
- CVEs
- CVE-2026-111764
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 13:26 UTC · Revision 1
Source evidence
A2A Java SDK has a fail-open default task authorization
core-osv · Original sourcePublished 20 Oct 2026, 21:05 UTC
Draft text for GHSA-qw47-mcm5-934w. The body below drops into the GitHub advisory description field; the metadata block maps to the form fields. Set the patched version at release; publish when the fix ships._ --- - **Ecosystem:** Maven - **Affected package:** `org.a2aproject.sdk:a2a-java-sdk-server-common` (task store / authorization) - **Affected versions:** `<= 1.2.0.Final` (and `1.2.1.Final-SNAPSHOT` on `main` prior to the fix) - **Patched version:** _(the release that carries the fix, e.g. 1.2.1.Final)_ - **CWE:** CWE-1188 (Insecure Default Initialization), CWE-862 (Missing Authorization) - **Severity:** High - **CVSS v3.1:** `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N` (7.5, High) --- ## Details The default task store performs no authorization on task reads. `InMemoryTaskStore`'s no-arg constructor sets `authorizationProvider = null`, and `InMemoryTaskStore.get(String taskId)` is a bare map lookup with no authorization check regardless of provider: ```java public InMemoryTaskStore() { this.authorizationProvider = null; // default wiring } @Override public @Nullable Task get(String taskId) { return tasks.get(taskId); // no owner / caller check } ``` Authorization is enforced only when the application both supplies a `TaskAuthorizationProvider` *and* routes requests through `AuthorizationRequestHandlerDecorator` (via CDI), which checks ownership before delegating. A server that uses the default store, or wires `DefaultRequestHandler.builder().build()` manually, or integ
osv:GHSA-qw47-mcm5-934w
org.a2aproject.sdk:a2a-java-sdk-server-common
Fixed versions: 1.3.0.Final
Complete source record
{
"id": "b6f82b0e7b78528596d023a164a596958f324df82cea96698726d27caf824d3e",
"url": "https://osv.dev/vulnerability/GHSA-qw47-mcm5-934w",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "A2A Java SDK has a fail-open default task authorization",
"summary": "Draft text for GHSA-qw47-mcm5-934w. The body below drops into the GitHub advisory description field; the metadata block maps to the form fields. Set the patched version at release; publish when the fix ships._ --- - **Ecosystem:** Maven - **Affected package:** `org.a2aproject.sdk:a2a-java-sdk-server-common` (task store / authorization) - **Affected versions:** `<= 1.2.0.Final` (and `1.2.1.Final-SNAPSHOT` on `main` prior to the fix) - **Patched version:** _(the release that carries the fix, e.g. 1.2.1.Final)_ - **CWE:** CWE-1188 (Insecure Default Initialization), CWE-862 (Missing Authorization) - **Severity:** High - **CVSS v3.1:** `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N` (7.5, High) --- ## Details The default task store performs no authorization on task reads. `InMemoryTaskStore`'s no-arg constructor sets `authorizationProvider = null`, and `InMemoryTaskStore.get(String taskId)` is a bare map lookup with no authorization check regardless of provider: ```java public InMemoryTaskStore() { this.authorizationProvider = null; // default wiring } @Override public @Nullable Task get(String taskId) { return tasks.get(taskId); // no owner / caller check } ``` Authorization is enforced only when the application both supplies a `TaskAuthorizationProvider` *and* routes requests through `AuthorizationRequestHandlerDecorator` (via CDI), which checks ownership before delegating. A server that uses the default store, or wires `DefaultRequestHandler.builder().build()` manually, or integ",
"evidence": "osv:GHSA-qw47-mcm5-934w",
"products": [
{
"name": {
"value": "org.a2aproject.sdk:a2a-java-sdk-server-common",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "1.3.0.Final",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": [
{
"value": "1.0.0.Alpha4",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.0.Beta1",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.0.CR1",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.0.Final",
"evidence": "/affected/0/versions"
},
{
"value": "1.1.0.Final",
"evidence": "/affected/0/versions"
},
{
"value": "1.2.0.Final",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "high",
"structured": {
"id": "GHSA-qw47-mcm5-934w",
"aliases": [
"CVE-2026-111764",
"GHSA-qw47-mcm5-934w"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "1.3.0.Final"
}
]
}
],
"package": {
"name": "org.a2aproject.sdk:a2a-java-sdk-server-common",
"purl": "pkg:maven/org.a2aproject.sdk/a2a-java-sdk-server-common",
"ecosystem": "Maven"
},
"versions": [
"1.0.0.Alpha4",
"1.0.0.Beta1",
"1.0.0.CR1",
"1.0.0.Final",
"1.1.0.Final",
"1.2.0.Final"
],
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-qw47-mcm5-934w/GHSA-qw47-mcm5-934w.json"
}
}
],
"modified": "2026-10-20T21:15:04.046382128Z",
"provider": "osv",
"references": [
"https://github.com/a2aproject/a2a-java/security/advisories/GHSA-qw47-mcm5-934w",
"https://nvd.nist.gov/vuln/detail/CVE-2026-111764",
"https://github.com/a2aproject/a2a-java/pull/1095",
"https://github.com/a2aproject/a2a-java/commit/efb4e985e99390c4fc1f78c0a187a4254c0a2553",
"https://github.com/a2aproject/a2a-java",
"https://github.com/a2aproject/a2a-java/releases/tag/v1.3.0.Final"
],
"provider_metadata": {
"cwe_ids": [
"CWE-1188",
"CWE-862"
],
"severity": "HIGH",
"github_reviewed": true,
"nvd_published_at": "2026-10-20T16:17:00Z",
"github_reviewed_at": "2026-10-20T21:05:09Z"
}
},
"related_cves": [
{
"value": "CVE-2026-111764",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/database_specific/severity"
},
"source_id": "core-osv",
"document_id": 390708,
"published_at": "2026-10-20T21:05:09+00:00"
}