Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to A2A server (PR:L)
-
ExploitSend concurrent requests for same TaskId
-
ExecutionWin race in TaskProjection.ApplyStatus
-
ImpactCorrupt 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
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).
EUVD-2026-110071
GHSA-xrh4-gq3g-5r95
NVD
CVE.org
EPSS
VulDB
Exploit-DB