Skip to content
Heist/ feed
Back to feed
HighFix available

A2A Java SDK: Android synchronous POST forwards credentials across authorities after incomplete redirect fix

Type: advisorySources: OSV

The GHSA-9rhm fix added this safe setting in AndroidA2AHttpClient.createConnection(): connection.setInstanceFollowRedirects(false); The synchronous POST builder later overwrites it: private boolean followRedirects = true; public A2AHttpResponse post() throws IOException { HttpURLConnection connection = createConnection("POST", false); connection.setInstanceFollowRedirects(followRedirects); // ... } The second assignment wins. JSONRPCTransport and RestTransport both add interceptor-produced headers and call synchronous post() without setting followRedirects(false). On Android's repackaged OkHttp implementation, a cross-authority redirect strips Authorization but retains nonstandard request headers. AuthInterceptor permits four nonstandard authentication header names: X-API-Key API-Key X-Auth-Token X-Authentication I confirmed that the exact v1.3.1.Final Maven artifact forwards complete synthetic values under all four names to a second loopback authority. I also reproduced the supported AuthInterceptor to Android POST path. Explicitly calling followRedirects(false) returns the original 302 and produces no request to the collector. All test traffic stayed on two ephemeral 127.0.0.1 listeners. All credentials were synthetic FULCRUM-SYNTHETIC-* values. Reproduction I have attached AndroidA2AHttpClientRedirectTest.java. Copy it to: extras/http-client-android/src/test/java/org/a2aproject/sdk/client/http/android/ Run: mvn -pl extras/http-client-android -am \ -Dtest=AndroidA2AHttpClie

Products
org.a2aproject.sdk:a2a-java-sdk-http-client-android
Affected versions
1.3.0.Final, 1.3.1.Final
Fixed versions
1.3.2.Final
CVEs
CVE-2026-111765
Confirmed fixed CVEs
Not specified
Updated in this feed
31 Oct 2026, 13:39 UTC · Revision 1

Source evidence

A2A Java SDK: Android synchronous POST forwards credentials across authorities after incomplete redirect fix

core-osv · Original source

Published 20 Oct 2026, 21:08 UTC

The GHSA-9rhm fix added this safe setting in AndroidA2AHttpClient.createConnection(): connection.setInstanceFollowRedirects(false); The synchronous POST builder later overwrites it: private boolean followRedirects = true; public A2AHttpResponse post() throws IOException { HttpURLConnection connection = createConnection("POST", false); connection.setInstanceFollowRedirects(followRedirects); // ... } The second assignment wins. JSONRPCTransport and RestTransport both add interceptor-produced headers and call synchronous post() without setting followRedirects(false). On Android's repackaged OkHttp implementation, a cross-authority redirect strips Authorization but retains nonstandard request headers. AuthInterceptor permits four nonstandard authentication header names: X-API-Key API-Key X-Auth-Token X-Authentication I confirmed that the exact v1.3.1.Final Maven artifact forwards complete synthetic values under all four names to a second loopback authority. I also reproduced the supported AuthInterceptor to Android POST path. Explicitly calling followRedirects(false) returns the original 302 and produces no request to the collector. All test traffic stayed on two ephemeral 127.0.0.1 listeners. All credentials were synthetic FULCRUM-SYNTHETIC-* values. Reproduction I have attached AndroidA2AHttpClientRedirectTest.java. Copy it to: extras/http-client-android/src/test/java/org/a2aproject/sdk/client/http/android/ Run: mvn -pl extras/http-client-android -am \ -Dtest=AndroidA2AHttpClie

osv:GHSA-4fpj-g9jf-9rgg

org.a2aproject.sdk:a2a-java-sdk-http-client-android

Fixed versions: 1.3.2.Final

Complete source record
{
  "id": "48a0eebbef3caf78c681ce36e6962c7d6a865619f5b692b688cfaf838180ba10",
  "url": "https://osv.dev/vulnerability/GHSA-4fpj-g9jf-9rgg",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "A2A Java SDK: Android synchronous POST forwards credentials across authorities after incomplete redirect fix",
    "summary": "The GHSA-9rhm fix added this safe setting in AndroidA2AHttpClient.createConnection(): connection.setInstanceFollowRedirects(false); The synchronous POST builder later overwrites it: private boolean followRedirects = true; public A2AHttpResponse post() throws IOException { HttpURLConnection connection = createConnection(\"POST\", false); connection.setInstanceFollowRedirects(followRedirects); // ... } The second assignment wins. JSONRPCTransport and RestTransport both add interceptor-produced headers and call synchronous post() without setting followRedirects(false). On Android's repackaged OkHttp implementation, a cross-authority redirect strips Authorization but retains nonstandard request headers. AuthInterceptor permits four nonstandard authentication header names: X-API-Key API-Key X-Auth-Token X-Authentication I confirmed that the exact v1.3.1.Final Maven artifact forwards complete synthetic values under all four names to a second loopback authority. I also reproduced the supported AuthInterceptor to Android POST path. Explicitly calling followRedirects(false) returns the original 302 and produces no request to the collector. All test traffic stayed on two ephemeral 127.0.0.1 listeners. All credentials were synthetic FULCRUM-SYNTHETIC-* values. Reproduction I have attached AndroidA2AHttpClientRedirectTest.java. Copy it to: extras/http-client-android/src/test/java/org/a2aproject/sdk/client/http/android/ Run: mvn -pl extras/http-client-android -am \\ -Dtest=AndroidA2AHttpClie",
    "evidence": "osv:GHSA-4fpj-g9jf-9rgg",
    "products": [
      {
        "name": {
          "value": "org.a2aproject.sdk:a2a-java-sdk-http-client-android",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "1.3.2.Final",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "1.3.0.Final",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.3.1.Final",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "high",
    "structured": {
      "id": "GHSA-4fpj-g9jf-9rgg",
      "aliases": [
        "CVE-2026-111765",
        "GHSA-4fpj-g9jf-9rgg"
      ],
      "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": "1.3.0.Final"
                },
                {
                  "fixed": "1.3.2.Final"
                }
              ]
            }
          ],
          "package": {
            "name": "org.a2aproject.sdk:a2a-java-sdk-http-client-android",
            "purl": "pkg:maven/org.a2aproject.sdk/a2a-java-sdk-http-client-android",
            "ecosystem": "Maven"
          },
          "versions": [
            "1.3.0.Final",
            "1.3.1.Final"
          ],
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-4fpj-g9jf-9rgg/GHSA-4fpj-g9jf-9rgg.json",
            "last_known_affected_version_range": "<= 1.3.1.Final"
          }
        }
      ],
      "modified": "2026-10-21T03:11:56.305391879Z",
      "provider": "osv",
      "references": [
        "https://github.com/a2aproject/a2a-java/security/advisories/GHSA-4fpj-g9jf-9rgg",
        "https://github.com/a2aproject/a2a-java/security/advisories/GHSA-9rhm-2h4x-jwmx",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-111765",
        "https://github.com/a2aproject/a2a-java/pull/1141",
        "https://github.com/a2aproject/a2a-java/commit/2a36530d75e11bcf9b81f543464dbe193ca6478e",
        "https://github.com/a2aproject/a2a-java/commit/3ae82912a106a6765d7b78042b0ef96e6c2e29b5",
        "https://github.com/a2aproject/a2a-java",
        "https://github.com/a2aproject/a2a-java/blob/30e31086e24bea096b5f662088661269c9119100/SECURITY.md#L335-L342",
        "https://github.com/a2aproject/a2a-java/releases/tag/v1.3.2.Final"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-522"
        ],
        "severity": "HIGH",
        "github_reviewed": true,
        "nvd_published_at": "2026-10-20T16:17:00Z",
        "github_reviewed_at": "2026-10-20T21:08:06Z"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-111765",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 391581,
  "published_at": "2026-10-20T21:08:06+00:00"
}