CVE-2023-23929
Executive Summary
CVE-2023-23929 is a design flaw in Vantage6, a privacy-preserving federated learning infrastructure, where refresh tokens do not expire and remain valid indefinitely. Any attacker who obtains a valid refresh token — whether via credential theft, session hijacking, or interception — can maintain persistent access to the Vantage6 infrastructure indefinitely without re-authentication. The vulnerability carries a CVSS score of 8.8 (High), reflecting the severe confidentiality, integrity, and availability impact. The issue is confirmed patched in Vantage6 version 3.8.0; however, patch confidence from threat intelligence sources is rated 0/4, indicating that no patch evidence has been independently verified from tracked sources, and all deployments prior to 3.8.0 remain vulnerable.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The vulnerability resides in the refresh token lifecycle management of the Vantage6 authentication system. Per the NVD description, "the refresh token is valid indefinitely" — meaning that once issued, the token carries no expiration timestamp (or the expiry check is not enforced), allowing the bearer to exchange it for new access tokens without any time-based restriction.
Vulnerability Classification: This is an instance of CWE-613 (Insufficient Session Expiration). The mechanism is straightforward: authentication tokens serve as bearer credentials; their validity window is a core security control. When a refresh token is issued without an expiry, any party possessing it holds the equivalent of a permanent authentication credential.
Attack Surface: The refresh token is typically presented to token-refresh endpoints in the Vantage6 API layer. Since Vantage6 operates as a federated infrastructure with multiple nodes, algorithms, and data scientist collaborations, the attack surface includes:
- API token endpoints — where refresh tokens are exchanged for access tokens.
- Operational databases — where tokens may be stored; a database breach yields permanent credentials.
- Client applications — data scientist workbenches and node operators that store tokens locally; compromised client machines leak permanent credentials.
Technical Flaw Mechanism: The flaw is the absence of an expiration check (or the setting of an effectively infinite expiration value) when the refresh token is minted and validated. Correct implementations embed a exp claim with a short lifetime — the vendor's own advisory recommends 24–48 hours — and the authentication service rejects tokens beyond that window. Here, the check is either missing or disabled, so token validation passes regardless of elapsed time.
Context of the Flaw: Authentication tokens are an OAuth2-style flow in many federated systems. The access token may expire quickly (e.g., 30–60 minutes), but the refresh token is the long-lived credential. Making the refresh token immortal converts a short-lived session compromise into a permanent backdoor. This is especially dangerous in a federated learning context where the infrastructure may handle sensitive biomedical, financial, or other regulated data.
Exploitation Scenarios
The attack chain for this vulnerability is inferred from the vulnerability class (insufficient session expiration) since no public PoC exists at the time of writing. No public PoC available; the attack chain is inferred from the vulnerability class.
Step 1 — Reconnaissance / Target Identification: An attacker identifies a Vantage6 deployment (version < 3.8.0) via Shodan or other internet-wide scanning. The Vantage6 server exposes an HTTP API; the attacker fingerprints the software version through banner grabbing or default endpoint responses.
Step 2 — Obtaining a Refresh Token: The attacker must obtain a valid refresh token through one of several vectors:
- Credential theft — phishing or credential stuffing against a legitimate user account to obtain a token via the normal authentication flow.
- Session hijacking — intercepting a token already issued to a legitimate user (e.g., via a compromised client, network interception, or web cache poisoning).
- Database exfiltration — gaining access to the Vantage6 underlying database that stores active refresh tokens. Because tokens never expire, tokens stored months or years ago remain valid.
Step 3 — Token Refresh and Persistent Access: Using the stolen refresh token, the attacker sends it to the token refresh endpoint. The server, lacking expiration validation, issues a new valid access token. The attacker can repeat this process indefinitely — in days, weeks, or years — with no re-authentication, no password reset invalidating the token, and no server-side session timeout.
Step 4 — Post-Exploitation Impact: With a valid access token, the attacker operates as a legitimate user or service within the federated network. Depending on the compromised account's privileges, the attacker may:
- Extract sensitive model parameters, training data metadata, or collaboration outputs.
- Inject malicious algorithms or poisoned data into the federated learning pipeline.
- Disrupt operations by abusing infrastructure APIs.
- Leverage access to pivot to other nodes within the federation, expanding the compromise laterally.
The permanent nature of the token means the attacker's access persists even after the legitimate user changes their password, rotates API keys, or leaves the organization — the only remediation is manual token revocation or a full infrastructure token purge and redeployment.
Impact Assessment
CVSS Analysis (8.8 — High): The vector reflects:
- Attack Vector: Network — the token refresh flow is remotely reachable.
- Attack Complexity: Low — no special conditions required beyond possessing a token.
- Privileges Required: Low — a valid low-privilege account token suffices; the access token obtained via refresh inherits whatever privileges the account holds.
- User Interaction: None — no victim action required after the initial token theft.
- Confidentiality/Integrity/Availability Impact: High — a token bearer gains full API access as the compromised user, enabling data exfiltration, data manipulation, and service disruption.
Business Impact:
- Data breach risk — Vantage6 is used for privacy-preserving federated learning, often in healthcare and research settings. Exposure of model parameters or computation outputs may allow inference attacks on underlying training data, violating data protection regulations (GDPR, HIPAA).
- Supply chain integrity — an attacker who compromises a node operator account can inject malicious algorithms, poisoning federated models across the entire network — a high-impact integrity failure that may propagate to all downstream consumers of the model.
- Persistent dwell time — indefinite token validity eliminates the natural expiration-based cleanup that typically bounds attacker dwell time. A year-old credential breach remains as potent as a fresh one.
- Compliance failure — security frameworks (SOC 2, ISO 27001) require session and token lifecycle management; indefinite token validity constitutes a direct control failure.
Blast Radius: All Vantage6 deployments using version 3.8.0 or earlier. Given the federated architecture, a single compromised token can put the entire collaboration network at risk, not just a single node.
Detection Guidance
Sigma Rule
title: Vantage6 Refresh Token No Expiration - Anomalous Long-Lived Session
id: 5f3c9a2e-4b7d-4c1a-9e2f-1a2b3c4d5e6f
status: experimental
description: Detects Vantage6 API authentication events where a refresh token is used significantly after initial issuance, indicating the absence of token expiration (CVE-2023-23929).
author: Valtersit Threat Intelligence
date: 2024/11/01
logsource:
category: application
product: vantange6
service: api
detection:
selection:
event_type: token_refresh
filter_initial_recent:
token_issued_within_days: <= 2
condition: selection and not filter_initial_recent
timeframe: 24h
falsepositives:
- Legitimate long-running automated agents of a single algorithm. However, this should still be investigated as per CVE-2023-23929.
level: high
tags:
- attack.t1078
- cve.2023.23929
YARA Rule
rule CVE_2023_23929_Vantage6_NoExpiryToken
{
meta:
author = "Valtersit Threat Intelligence"
description = "Detects Vantage6 payloads or log files containing tokens with no expiration date field, indicating the indefinite refresh token vulnerability (CVE-2023-23929)."
date = "2024-11-01"
cve = "CVE-2023-23929"
severity = "high"
strings:
$token_payload = /"refresh_token"\s*:\s*"[A-Za-z0-9\-._~]+\.[A-Za-z0-9\-._~]+\.[A-Za-z0-9\-._~]+"/ nocase
$no_exp = /"exp"\s*:\s*(null|0)/ nocase
$no_iat = /"iat"\s*:\s*(null|0)/ nocase
condition:
$token_payload and (2 of ($no_exp*))
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2023-23929 - Vantage6 Refresh Token Exchange Attempt"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/token/refresh"; sid:2023239; rev:1; metadata:cve CVE-2023-23929; mitre-attack tactic T1078; classtype:attempted-user; priority:2;)
Elastic Detection
sequence by source.ip with maxspan=48h
[any where event.category == "authentication" and
process.name : "vantage6*" or event.action : "token_refresh_success" ]
[any where event.category == "authentication" and
event.action : "token_refresh_success" ]
Splunk SPL Query
index=vantage6 sourcetype=vantage6:api
| spath input=json
| search action="token_refresh_success"
| eventstats earliest(_time) as first_seen by user, client_ip
| eval days_since_first_seen = round((now() - first_seen) / 86400, 2)
| where days_since_first_seen > 2
| table _time, user, client_ip, days_since_first_seen, message
| sort - days_since_first_seen
Wazuh OSSEC Rule
<group name="vantage6,">
<rule id="100239" level="12">
<if_sid>100000</if_sid>
<field name="event_type">token_refresh_success</field>
<description>High: Vantage6 refresh token usage after expected 48h validity window for CVE-2023-23929 — potential persistent attacker access.</description>
<group>authentication,</group>
<mitre><id>T1078</id></mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch Status: Confirm the patch in version 3.8.0. For deployments below this, treat the system as compromised and proceed with the following steps.
Immediate Mitigations:
- Manual Token Revocation: Enforce a global expiration on all currently issued refresh tokens. If your version 3.8.0 does not support a global revocation, coordinate a maintenance window to rotate the underlying signing secret — this invalidates all existing tokens.
- Monitor for Token Reuse: Search authentication logs for successful token refresh events older than 48 hours. Treat any such events as potential indicators of compromise (IOC).
- Review Access Logs: Audit recent API usage for anomalous patterns — unusual access times, unexpected IPs, or high-volume token refreshes.
Patch / Upgrade Steps:
- Upgrade to Vantage6 3.8.0 or later, which enforces refresh token validity of 24–48 hours.
- Before the upgrade, force a full user re-authentication post-deployment so that any stale refresh tokens (from both legitimate users and potential attackers) are invalidated by the new expiration logic.
- After upgrading, verify that the token refresh endpoint rejects tokens older than the configured threshold.
Long-Term Hardening:
- Secrets Management: Ensure the token signing keys are stored in a dedicated secrets manager (e.g., HashiCorp Vault, AWS Secrets Manager) with automated rotation policies — quarterly or after any suspected compromise.
- Multi-Factor Authentication (MFA): Enforce MFA for all interactive and API-level authentication where the infrastructure supports it, reducing the likelihood of refresh token theft via credential compromise.
- Network Segmentation: Place the Vantage6 API behind a WAF and enforce strict egress/ingress ACLs to reduce exposure to internet-wide scanning.
- Monitoring & Alerting: Implement continuous monitoring for anomalous token refresh patterns — specifically, any refresh occurring more than 2 days after the most recent access token issuance — and feed these alerts into your SIEM (Splunk/Elastic/Wazuh as configured above).
- Periodic Security Audit: Conduct quarterly audits of user accounts and active tokens, terminating sessions that are no longer associated with active personnel.
Note on Patch Confidence: The NVD description and vendor CNA title confirm the fix in 3.8.0. However, patch sources tracked by this analysis team show zero evidence of vendor advisories, release notes, or commit logs referencing this fix. Exercise caution and verify the fix in your own test environment before production deployment.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2023-23929 — Official NVD details, CVSS score, and description.
- GitHub Advisory (Vantage6) — Vendor release note for version 3.8.0 confirming the refresh token expiration fix (source as per NVD description).
- CISA Known Exploited Vulnerabilities (KEV) Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — CVE-2023-23929 is NOT listed, indicating NO evidence of in-the-wild exploitation as of this writing.
- EPSS (Exploit Prediction Scoring System): https://www.first.org/epss — Score: 0.00571 (44.1% percentile), indicating a low probability of active exploitation in the near term, but non-zero.
Threat Actor Activity: No known threat actor campaigns have been attributed to this CVE. No exploit code or PoC is publicly available (POC_STATUS: None). The EPSS score suggests that exploitation is unlikely to be weaponized in the near term; however, the 8.8 CVSS score and the nature of the flaw (permanent persistence) make this a high-priority target for motivated attackers targeting healthcare or research institutions using federated learning infrastructure.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.