Skip to main content

a2a-go CVE-2026-117503

| EUVDEUVD-2026-110861 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-10-27 VulDB GHSA-cpqw-hg34-p3wx
6.9
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Open REST SSE subscribe stream remotely
  2. Exploit
    Disconnect to force select loop exit
  3. Execution
    Streaming goroutine panics into unread channel
  4. Impact
    Goroutine blocks forever, resources leak

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation targets the REST SSE handler in a2asrv/rest.go (handleStreamingRequest) and requires a live server-sent-events subscription stream. The concrete condition shown by the regression test is a sequence: the client disconnects (cancelling the request context) so the main select loop returns, and the streaming/event-producing goroutine then panics - at which point the panic is sent on an unbuffered panicChan with no remaining reader, parking the goroutine indefinitely. Limiting factors: the leak only occurs when a panic happens in the streaming goroutine after disconnect, which is not purely attacker-controlled, and each event leaks resources incrementally rather than causing instant denial of service; no authentication is required per the CVSS vector (PR:N).

Impact

Signals point to a moderate, availability-only issue rather than an urgent priority. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) scores 6.9 but carries impact only on VA:L - no confidentiality or integrity effect (VC:N/VI:N) - which matches CWE-400 resource consumption. The source diff confirms the mechanism: in a2asrv/rest.go the SSE streaming goroutine sends panics on an unbuffered panicChan, and the added regression test (TestSSE_PanicAfterClientDisconnectDoesNotLeak) shows that when the client disconnects the main select loop exits, leaving no reader; if the streaming goroutine then panics it blocks forever on the unread channel and leaks. The fix simply makes panicChan buffered (size 1) so the goroutine can exit. No EPSS score, KEV listing, or exploit PoC is present in the input, so there is no evidence of active exploitation; exploitation status is 'no public exploit identified at time of analysis'. One conflicting signal to note: the vendor rates AC:L, but the regression test shows exploitation requires the streaming goroutine to panic AFTER a client disconnect - a condition not fully attacker-controlled - so real-world triggerability is lower than AC:L implies. The vuln.today decision label is 'this_month', consistent with a patch-on-normal-cadence item rather than an emergency.

Exploit ScenarioDerived

A remote client opens a REST SSE subscription (e.g. /tasks/{id}:subscribe) against an a2a-go server and then disconnects while the stream is active, causing the handler's select loop to return. If the backing event-producing goroutine subsequently panics, it attempts to report the panic on an unbuffered channel that now has no reader, so the goroutine blocks permanently and leaks; repeated occurrences accumulate leaked goroutines and memory until availability degrades. No public PoC or exploit code is referenced in the input.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.7% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 28, 2026

Resource exhaustion in the a2a-go A2A SDK (versions 2.0 through 2.4.0) allows an unauthenticated remote client to leave server goroutines permanently parked in the REST server-sent-events streaming handler. The trigger shown by the vendor's regression test is a sequence rather than a single packet: the client disconnects, the main select loop in handleStreamingRequest returns, and the event-producing goroutine then panics and blocks forever trying to send on a panic channel that no longer has a reader. Impact is availability-only and incremental - each occurrence leaks resources instead of causing instant denial of service - no public exploit code was identified at time of analysis, and the vendor has released a fix in v2.5.0.

RemediationAI

Vendor-released patch: upgrade a2a-go to v2.5.0 (release https://github.com/a2aproject/a2a-go/releases/tag/v2.5.0), which contains commit ff6035bd21e44bb3ee1bfa547885b8c08327fa01 from PR https://github.com/a2aproject/a2a-go/pull/396 and converts the unbuffered panicChan in a2asrv/rest.go into a capacity-1 buffered channel so the streaming goroutine can no longer block after the client disconnects. The vendor's stated remediation is the version upgrade and no alternative product-level mitigation is documented in the available sources; organizations that cannot move to v2.5.0 immediately can cherry-pick that single commit, though this leaves them on an unsupported fork without the accompanying goleak regression test and must be re-validated on every subsequent upstream change. Because the leak is incremental and only materializes when a panic occurs in the streaming goroutine after a disconnect, watching goroutine counts and recycling long-lived REST SSE worker processes can slow accumulation but does not remove the defect, and the complete fix remains the upgrade to v2.5.0.

Affected VersionsENISA

a2a-go 2.0
a2a-go 2.4.0
a2a-go 2.2
a2a-go 2.3
a2a-go 2.1

Affected Packages

euvd a2a_go no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

a2a-go is the Go implementation of the Agent2Agent (A2A) protocol, and a2asrv/rest.go hosts the SDK's REST transport, including an SSE handler (handleStreamingRequest) that streams a2a.Event values to a subscribed client. Internally the handler keeps a buffered-free sseChan and an unbuffered panicChan shared between the HTTP handler's select loop and a separate streaming goroutine; the streaming goroutine uses the panicChan to surface a panic raised while producing events. Go does not reap goroutines, so a send on an unbuffered channel with no live receiver blocks that goroutine permanently and retains everything it references. CWE-400 (Uncontrolled Resource Consumption) is the right class here: the root cause is the unbuffered panic channel combined with the handler's lifetime being tied to the client's request context. The upstream fix in commit ff6035bd21e44bb3ee1bfa547885b8c08327fa01 changes the allocation to make(chan error, 1), so the post-disconnect panic send completes without a reader, and PR #396 adds a goleak-based regression test (a2asrv/sse_test.go) that exercises both the JSON-RPC and REST handlers via a SubscribeToTask mock. Note that the code change and test both cover SSE paths generally, while the CVE is scoped to the REST handler in a2asrv/rest.go.

Know when A2A Go gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulDB) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 3.7 LOW

Remote and unauthenticated (AV:N/PR:N), but requires a streaming-goroutine panic to coincide with client disconnect so AC:H; impact is only incremental goroutine/memory leak, hence A:L and C:N/I:N.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

A vulnerability was determined in a2aproject a2a-go up to 2.4.0. Impacted is an unknown function of the file a2asrv/rest.go of the component REST SSE handler. This manipulation causes resource consumption. It is possible to initiate the attack remotely. Upgrading to version 2.5.0 is recommended to address this issue. Patch name: ff6035bd21e44bb3ee1bfa547885b8c08327fa01. It is recommended to upgrade the affected component.

Threat Intelligence Overview

EPSS Score
0.7%
Top 47% exploitable
Prevalence
Low
niche open-source Go SDK for A2A agent protocol, limited production footprint
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.7%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

35
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy