Skip to main content
Vulnerability Database/CVE-2026-90819

CVE-2026-90819: a2a-java HTTP Response Splitting Vulnerability

CVE-2026-90819 is an HTTP response splitting vulnerability in a2aproject a2a-java 1.2.0 affecting the Authorization Header Construction component. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-90819 Overview

CVE-2026-90819 is an HTTP Response Splitting vulnerability in the a2aproject a2a-java SDK version 1.2.0. The flaw resides in the BasePushNotificationSender.dispatchNotification function within server-common/src/main/java/org/a2aproject/sdk/server/tasks/BasePushNotificationSender.java. The affected component constructs Authorization headers without validating input for carriage return (CR) or line feed (LF) characters. Attackers can inject CRLF sequences into the Authorization header to split HTTP responses, poison caches, or manipulate downstream request handling. The vulnerability is remotely exploitable and requires no authentication or user interaction. The a2a-java project addresses this issue in version 1.3.0.Final via commit 247a655043f145f6f8e3853724b6a543eaa02001.

Critical Impact

Remote attackers can inject CRLF sequences into outbound push notification headers, enabling HTTP response splitting, header injection, and potential cache poisoning against downstream systems.

Affected Products

  • a2aproject a2a-java SDK version 1.2.0
  • Component: server-common push notification sender
  • File: BasePushNotificationSender.java (Authorization Header Construction)

Discovery Timeline

  • 2026-09-14 - CVE-2026-90819 published to NVD
  • 2026-09-15 - Last updated in NVD database

Technical Details for CVE-2026-90819

Vulnerability Analysis

The vulnerability is classified as HTTP Response Splitting under CWE-93 (Improper Neutralization of CRLF Sequences). The upstream patch also references CWE-113 (HTTP Response Splitting in headers). The dispatchNotification function accepts authentication information used to build the Authorization header of outbound push notification HTTP requests. Because the value is not sanitized for \r or \n characters, an attacker who can influence the authentication input can terminate the Authorization header and inject arbitrary additional headers, or split the request into two logical HTTP messages.

Downstream impact depends on how the receiving push notification endpoint parses the crafted traffic. Attackers can leverage this to smuggle requests, poison shared caches, or inject malicious content that misleads intermediaries.

Root Cause

The root cause is missing input validation on values passed into the Authorization header during push notification dispatch. Java HTTP client libraries do not universally reject CR/LF in header values, so the responsibility for neutralization sits with the caller. Prior to version 1.3.0.Final, BasePushNotificationSender constructed headers directly from AuthenticationInfo fields without checking for control characters.

Attack Vector

The attack is executed remotely over the network. An attacker who can influence the authentication metadata associated with a push notification configuration submits values containing embedded \r\n sequences followed by attacker-controlled header data. When the server dispatches the notification, the malformed headers are written to the outbound HTTP stream, and downstream receivers interpret the injected content as legitimate protocol elements.

java
// Patch excerpt from commit 247a655043f145f6f8e3853724b6a543eaa02001
// File: server-common/src/main/java/org/a2aproject/sdk/server/tasks/BasePushNotificationSender.java
 import org.a2aproject.sdk.client.http.A2AHttpClient;
 import org.a2aproject.sdk.client.http.A2AHttpClientFactory;
 import org.a2aproject.sdk.jsonrpc.common.json.JsonUtil;
+import org.a2aproject.sdk.spec.AuthenticationInfo;
 import org.a2aproject.sdk.spec.ListTaskPushNotificationConfigsParams;
 import org.a2aproject.sdk.spec.ListTaskPushNotificationConfigsResult;
 import org.a2aproject.sdk.spec.Message;

Source: GitHub Commit 247a655. The patch introduces AuthenticationInfo handling that rejects CR/LF characters in push notification headers, and adds junit-jupiter-params for parameterized regression tests.

Detection Methods for CVE-2026-90819

Indicators of Compromise

  • Outbound HTTP requests from a2a-java server processes containing %0d%0a, \r\n, or literal CR/LF byte sequences within Authorization header values.
  • Push notification target logs showing unexpected duplicate headers or split HTTP responses originating from a2a-java clients.
  • Application logs referencing BasePushNotificationSender.dispatchNotification with authentication payloads containing non-printable characters.

Detection Strategies

  • Inventory Java applications and Maven artifacts to identify any dependency on a2a-java version 1.2.0 or earlier.
  • Perform static analysis on codebases that consume the a2a SDK to flag flows where untrusted input reaches AuthenticationInfo fields.
  • Deploy web application firewall (WAF) or proxy rules that inspect outbound header values from application servers for embedded CRLF sequences.

Monitoring Recommendations

  • Log all push notification dispatch events with the resolved Authorization header length and a hash to detect anomalies.
  • Alert when application logs record HTTP client exceptions consistent with malformed header injection attempts.
  • Correlate outbound push notification traffic with upstream configuration-change events to identify tampering with authentication metadata.

How to Mitigate CVE-2026-90819

Immediate Actions Required

  • Upgrade a2a-java to version 1.3.0.Final or later across all deployments.
  • Audit all stored push notification configurations for authentication values containing CR, LF, or other control characters and purge malicious entries.
  • Restrict who can create or modify push notification targets and their authentication payloads.

Patch Information

The fix is delivered in commit 247a655043f145f6f8e3853724b6a543eaa02001 and shipped in GitHub Release v1.3.0.Final. The change rejects CR/LF characters in push notification headers. Additional context is available in GitHub Pull Request #1053 and GitHub Pull Request #1043. See the VulDB CVE-2026-90819 entry for the vendor tracking record.

Workarounds

  • If immediate upgrade is not possible, wrap calls to BasePushNotificationSender.dispatchNotification with a validator that rejects any AuthenticationInfo value containing \r or \n.
  • Enforce input validation at the API layer that ingests push notification configurations, refusing control characters in credential fields.
  • Route push notification traffic through an egress proxy that normalizes or rejects malformed HTTP headers.
bash
# Update Maven dependency to the patched release
mvn versions:use-dep-version \
  -Dincludes=io.a2a:a2a-java-sdk-server-common \
  -DdepVersion=1.3.0.Final \
  -DforceVersion=true

# Verify no vulnerable 1.2.0 artifacts remain
mvn dependency:tree | grep 'a2a-java'

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.