Skip to main content

a2a-dotnet EUVDEUVD-2026-110071

| CVE-2026-116476 MEDIUM
Race Condition (CWE-362)
2026-10-26 VulDB GHSA-xrh4-gq3g-5r95
5.3
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to A2A server (PR:L)
  2. Exploit
    Send concurrent requests for same TaskId
  3. Execution
    Win race in TaskProjection.ApplyStatus
  4. Impact
    Corrupt task status or orphan cancellation

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Concurrency control, locking
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

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

Exploitation Conditions

Exploitation requires the ability to submit concurrent/overlapping task requests (SendMessage or SendStreamingMessage) targeting the SAME TaskId against an a2a-dotnet A2AServer instance, which per the CVSS vector needs low-privilege authenticated access (PR:L). The flaw lives in TaskProjection.ApplyStatus and the associated background-cancellation registration in A2AServer.cs, where the fix PR replaces an unsynchronized GetOrAdd/CTS pattern with lock-guarded (AcquireTaskLockAsync) reservation and release - indicating the trigger is concurrent manipulation of a single task's status/cancellation state. Limiting factors: the attacker must win a narrow timing window (race condition, CWE-362), must be authenticated at a low privilege level, and the affected code is present only up to version 1.0.0-preview3. The available sources do not describe a specific deployment configuration toggle required to trigger it beyond concurrent same-TaskId requests.

Impact

This is a medium-severity, low-urgency issue rather than an emergency. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:L, score 5.3) describes a network-reachable but privilege-requiring (PR:L) flaw with no confidentiality impact and only low integrity and availability impact - consistent with a concurrency bug that corrupts task state rather than one that leaks data or grants code execution. No EPSS score was provided, the CVE is not listed in CISA KEV, and no proof-of-concept or exploit reference appears in the input, so there is no public exploit identified at time of analysis. The vuln.today decision label is 'this_month' (not act_now/emergency), which aligns with the modest impact metrics. One conflict should be flagged: the input Tags include 'Information Disclosure,' but the CVSS vector sets VC:N (no confidentiality impact) and instead shows VI:L/VA:L - the labeled impact category and the scored impact disagree; treat the confidentiality framing as unverified and prefer the integrity/availability reading. Note also that CWE-362 (race condition) inherently requires winning a timing window, which the input vector models as AT:N/AC:L but which realistically limits reliable exploitation. Overall: a genuine but low-priority defect, appropriate for routine patching rather than crisis response.

Exploit ScenarioDerived

A low-privilege authenticated client issues concurrent or overlapping SendMessage/SendStreamingMessage requests for the same TaskId, racing the TaskProjection.ApplyStatus logic and the background-cancellation bookkeeping in A2AServer. Winning the timing window can leave task status inconsistent or orphan the per-task CancellationTokenSource, degrading the integrity and availability of task processing. No public exploit code was identified in the provided sources; the only code artifact is the pending fix PR #453.

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

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

Alert me

AnalysisAIv1 – Oct 26, 2026

Race condition in a2a-dotnet through 1.0.0-preview3 allows a low-privilege authenticated remote client to disturb task status and background-cancellation bookkeeping by submitting concurrent SendMessage or SendStreamingMessage requests for the same TaskId, producing limited integrity and availability impact. The trigger is a CWE-362 race in TaskProjection.ApplyStatus and the A2AServer cancellation-registration path, which the proposed fix in PR #453 replaces with lock-guarded reservation and release. Severity is moderate (CVSS 5.3), no public exploit code has been identified at time of analysis, and the fix has not yet been accepted or released.

RemediationAI

Apply the upstream fix in PR #453 (https://github.com/a2aproject/a2a-dotnet/pull/453) once it is accepted, and upgrade to a release published after 1.0.0-preview3; no released patched version is independently confirmed at time of analysis. Until then, serialize client SendMessage and SendStreamingMessage calls per TaskId so two requests for the same task cannot overlap, for example by placing a per-task queue or lock in front of the server, accepting reduced concurrency and added latency for chatty clients. Because exploitation requires low-privilege authenticated access, limiting who can submit task messages to trusted principals also reduces exposure. Vendor and advisory references: https://vuldb.com/vuln/426389, https://vuldb.com/cve/CVE-2026-116476 and https://github.com/a2aproject/a2a-dotnet/.

Affected VersionsENISA

a2a-dotnet 1.0.0-preview3

Affected Packages

euvd a2a_dotnet 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-dotnet is the .NET SDK for the A2A agent-to-agent protocol; A2AServer handles SendMessage and SendStreamingMessage and tracks in-flight background drains in a _backgroundCancellations dictionary keyed by TaskId, each entry holding a CancellationTokenSource. Before the fix, registration used ConcurrentDictionary.GetOrAdd plus a dispose-and-retry loop without a per-task lock, so a completing drain disposing a CTS could interleave with a new request registering or reading the token; TaskProjection.ApplyStatus has the same exposure when status events for one task are applied concurrently. CWE-362 is the root cause: unsynchronized check-then-act sequences over shared per-task state. PR #453 introduces AcquireTaskLockAsync plus ReserveBackgroundOperationAsync and ReleaseBackgroundCancellationAsync to serialize reservation, execution and release per TaskId. The CPE cpe:2.3:a:a2aproject:a2a-dotnet:*:*:*:*:*:*:*:* covers all versions up to and including 1.0.0-preview3. The reporter's CVSS 4.0 vector rates AC:L, while the independent assessment rates AC:H because a narrow timing window must be won; both agree on remote, low-privilege access and limited integrity/availability impact with no confidentiality impact.

Know when A2A Dotnet 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 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N
vuln.today AI 4.2 MEDIUM

Network-reachable but low-privilege (PR:L); AC:H because a race condition (CWE-362) requires winning a timing window; C:N as no data disclosure, with only low integrity/availability impact on task state.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:L
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:L/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
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

A weakness has been identified in a2aproject a2a-dotnet up to 1.0.0-preview3. The affected element is the function TaskProjection.ApplyStatus of the component TaskProjection. Executing a manipulation can lead to race condition. The attack may be performed from remote. The pull request to fix this issue awaits acceptance.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Low
emerging pre-1.0 (preview3) .NET A2A-protocol SDK, limited production adoption
Social Media
1
Sightings
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.2%
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
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Race conditions occur when multiple concurrent requests exploit the brief time gap between checking a condition and acting upon it (TOCTOU - Time of Check, Time of Use).

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