Skip to main content

Obot CVE-2026-105140

| EUVDEUVD-2026-94311 LOW
Race Condition (CWE-362)
2026-10-07 VulnCheck
2.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    User's group revoked in identity provider
  2. Exploit
    Concurrent group refreshes race for same user
  3. Execution
    Out-of-order commit re-persists stale membership
  4. Impact
    User retains revoked group access ~10 minutes

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 that (1) a user's group membership was just revoked in the upstream auth/identity provider, and (2) two or more group-refresh operations for that same identity run concurrently and commit to the database out of order - the specific condition the fix addresses by serializing refreshes with golang.org/x/sync/singleflight and adding an auth_provider_groups_last_checked claim check in persistGroups. Limiting factors that reduce real-world risk: the attacker (or affected user) must already be authenticated (PR:L), the race is timing-dependent and not attacker-controllable (AT:P, AC:H), the stale access self-heals after roughly ten minutes (bounded by the group check period), and impact is confined to retaining previously-held group-based access rather than gaining new privileges. This is only meaningful where group refreshes legitimately overlap during an active revocation.

Impact

This is a genuinely low-priority issue, and the signals are internally consistent rather than conflicting. The vendor-assigned CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:L/UI:N) scores only 2.3: exploitation requires an already-authenticated user (PR:L), high attack complexity (AC:H), and a present-but-uncontrollable race condition (AT:P), with only low confidentiality and integrity impact (VC:L/VI:L) and no availability impact. There is no CISA KEV listing and no public exploit code identified, so this is neither actively exploited nor weaponized. EPSS is not provided in the input, but given the timing-dependent, non-attacker-controlled nature of the flaw, meaningful exploitation probability would be expected to be very low. The one caveat is window of exposure rather than attacker capability: the flaw silently extends revoked access for roughly ten minutes, which matters for high-assurance environments performing emergency de-provisioning (e.g., offboarding or incident response) but is not a broadly exploitable vulnerability. No key signals conflict with the description; the main gap is the absence of EPSS data in the input.

Exploit ScenarioDerived

An administrator revokes a user's group membership in the upstream identity provider (for example, during offboarding or an access incident). Because two group-refresh operations for that same user commit to Obot's database out of order, the stale membership is re-persisted, and the user continues to hold the revoked group-based access for about ten minutes. No public exploit code exists, the condition is not attacker-controlled (AT:P), and triggering it reliably requires winning a narrow timing race (AC:H).

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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 07, 2026

Obot versions 0.25.0 through 0.25.5 and 0.26.0 can persist stale group memberships after an administrator revokes a user's group in the upstream identity provider, leaving the user with revoked group-based access for roughly ten minutes. The flaw is a race condition (CWE-362) in the auth provider group-refresh path: when two refreshes for the same identity overlap and commit out of order, an older refresh overwrites the newer one and restores memberships that were just removed. It is a genuinely low-priority issue - the CVSS 4.0 score is 2.3 (assessed independently as CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N), exploitation requires an already-authenticated user (PR:L), the timing is not attacker-controllable (AC:H), impact is limited to retaining previously held access rather than gaining new privileges, and the condition self-heals within the group check period; no public exploit code has been identified at time of analysis and there is no CISA KEV entry.

RemediationAI

Vendor-released patch: upgrade to Obot 0.25.6 or 0.26.1 (release tag v0.26.1 at https://github.com/obot-platform/obot/releases/tag/v0.26.1), or apply the upstream fixes in commits 6f81dac8d344cf6b2161f500460fb7b2a975c415 and 09e4d5b5d1e4a5f35a6cbcff96f3c460c3f9e278; see advisory GHSA-929v-v9hq-5xhr. Because the race only manifests when two refreshes for the same identity overlap, until patched the most effective compensating control is to serialize group refreshes: run a single gateway replica or restrict the affected identity's traffic to one instance, accepting the loss of horizontal scalability and failover. A second option is to force an immediate manual group re-sync (or remove/re-add the user's identity in Obot) right after revoking a group in the identity provider, which shrinks the roughly ten-minute stale-access window but increases refresh load and races if done repeatedly; shortening the group check period similarly reduces exposure while increasing provider traffic. Where access must be terminated instantly, revoke the user's Obot session/account or block the identity at the gateway rather than relying on the IdP group revocation alone, at the cost of losing the user's associated configuration and requiring re-provisioning. Detection should focus on gateway logs and the auth_provider_groups_last_checked column for out-of-order or duplicate refreshes for the same identity, and note that no vendor-released mitigation short of the 0.25.6/0.26.1 upgrade removes the race itself.

Affected VersionsENISA

obot 0.25.0 <0.25.6
obot 0.26.0 <0.26.1

Affected Packages

euvd obot fix: 0.25.6, 0.26.1

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

Obot is a Go-based platform whose gateway client resolves a user's group memberships from an external auth/identity provider and caches them in its own database (CPE cpe:2.3:a:obot-platform:obot). The vulnerable code path in pkg/gateway/client/group.go fetches groups from the provider over HTTP in a 'fetch phase' and then reconciles them in a short-lived 'persist phase' transaction; because the fetch happens outside the transaction and the persist step had no optimistic-concurrency guard, two concurrent refreshes for the same identity (for example across multiple gateway replicas, or an automatic refresh overlapping a revocation-triggered one) could both read the pre-revocation state and commit in the wrong order, with the older commit landing last and resurrecting revoked memberships. This is a classic CWE-362 race condition on shared state, aggravated by the fact that group data is also cached per identity with a periodic refresh window (about ten minutes) that bounds how long the stale state survives. The upstream fix (commit 6f81dac8d344cf6b2161f500460fb7b2a975c415, with related commit 09e4d5b5d1e4a5f35a6cbcff96f3c460c3f9e278) serializes refreshes per identity using golang.org/x/sync/singleflight so peers block and adopt the leader's result, adds a ten-second refresh timeout and a one-minute failure cooldown, and introduces an auth_provider_groups_last_checked claim check (a compare-and-set on the identity row) inside persistGroups so a writer whose lastChecked value no longer matches discards its stale fetch and re-reads cached groups.

Know when Obot 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 (VulnCheck) PRIMARY 2.3 LOW
CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.2 MEDIUM

AC:H because exploitation depends on winning a non-controllable commit-ordering race; PR:L because the affected principal is an authenticated user; C:L/I:L for retained group access and stale membership persisted, A:N as no availability impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

Obot 0.25.0 before 0.25.6 and 0.26.0 before 0.26.1 contains a race condition in auth provider group refreshes that can restore group memberships just revoked in the identity provider. When overlapping refreshes for the same user commit out of order, stale memberships are persisted and the user retains revoked group-based access for about ten minutes.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Low
Obot is a niche, emerging open-source AI agent platform with limited production footprint
Data Quality
4 sources
Confidence: Medium

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 LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

12
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +12
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