Skip to main content

Shepherd EUVDEUVD-2026-96907

| CVE-2026-108741 LOW
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-10-11 VulnCheck GHSA-53wh-3r96-488v
2.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Plant crafted reference URL in document
  2. Delivery
    Victim runs citation checker
  3. Exploit
    Guard validates attacker-controlled public DNS
  4. Execution
    Rebind hostname to internal address at connect
  5. Persist
    Fetch internal HTTP(S) service
  6. Impact
    Capture response in evidence file

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
Exploitation Conditions

Exploitation requires the citation-checker extra (shepherd_citation_checker) to be in use and to process an attacker-influenced document containing a reference URL. The attacker must control authoritative DNS for the URL's hostname to win the time-of-check/time-of-use race: return a guard-passing public IP during validation, then rebind to an internal address before fetch re-resolves at connect time. Limiting factors: a victim must actually run the citation check on the attacker-planted document (UI:P), the DNS-rebind timing window must be won (AT:P), and impact is limited to reading internal HTTP(S) responses captured in evidence files (no write/RCE). Affects shepherd-ai versions through 0.3.1.

Impact

All signals point to a genuinely low-priority issue. The CVSS 4.0 base score is 2.3 and the vector (AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:N/VA:N) describes a network-reachable but heavily conditioned flaw: it needs a present attack requirement (AT:P - the DNS re-bind race window) and active user interaction (UI:P - a victim must run the citation checker against an attacker-planted document). Impact is confined to low confidentiality (VC:L) with no integrity or availability effect and no subsequent-system scope. There is no EPSS score, no KEV listing, and no flagged POC in the input, so there is no evidence of active or opportunistic exploitation - the risk is theoretical and targeted rather than wormable. The one caveat: the CVE is classified CWE-367 (TOCTOU) and the description is explicit that the public_url guard validates a resolved address while fetch re-resolves at connect time, so the root cause is well-understood and credible even though real-world exploitability is narrow. Note also that VulnCheck and a public HackMD write-up describe the technique in detail; this raises the chance that working exploit code could surface, but as of this analysis none is confirmed in the provided data.

Exploit ScenarioDerived

An attacker authors or edits a document that Shepherd's citation-checker will process, embedding a reference URL on a domain whose DNS the attacker controls. When the citation checker validates the URL, the attacker's DNS answers with a public address that passes the public_url guard; at fetch/connect time the attacker rebinds the hostname to an internal address (e.g., 169.254.169.254 or an internal admin service), so Shepherd issues the GET to the internal service and writes the response into an evidence file the attacker can later read. No public exploit code is identified at time of analysis, though VulnCheck and a HackMD post document the DNS-rebinding method.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 11, 2026

Shepherd (shepherd-ai) through 0.3.1 contains a DNS-rebinding bypass of the citation-checker's public_url SSRF guard, letting an attacker who controls authoritative DNS for a reference URL planted in a checked document redirect the outbound fetch to internal HTTP(S) services and capture the responses inside evidence files. Exploitation requires the shepherd_citation_checker extra to be in use and a victim to actually run a citation check on the attacker-influenced document, then win a time-of-check/time-of-use race in which the guard validates a public IP but the connection re-resolves the hostname to an internal address; no public exploit identified at time of analysis. Impact is read-only information disclosure (low confidentiality, no integrity or availability effect), consistent with the low CVSS 4.0 base score of 2.3 and the assessed CVSS 3.1 vector AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N, and the attacker does not need credentials but does need user interaction and DNS control.

RemediationAI

No vendor-released patch identified at time of analysis, and the referenced GitHub links point to the vulnerable source files (network.py lines 9-17 and fetch.py lines 34-55 at commit d34d5ca334871dfcb5a3dc76dd78045829fa4e56) rather than a fix, so upgrading alone is not a confirmed remedy. The most direct mitigation is to disable or stop invoking the citation-checker extra (shepherd_citation_checker) and avoid running citation checks on documents from untrusted or attacker-influenceable sources, at the cost of losing citation-verification functionality. If the feature must remain enabled, deploy it in a network-isolated sandbox with egress controls that deny connections to RFC1918 ranges, loopback, link-local and cloud metadata endpoints such as 169.254.169.254, and only permit fetching to an explicit allowlist of external domains - this may break legitimate citation retrieval to arbitrary sites. Where the code can be modified, pin the validated IP address and reuse it for the actual connection (resolving once, then connecting to that IP with the original Host header) or re-validate the peer address after connect, which closes the rebinding window generated by the separate re-resolution in fetch.py; firewall and DNS-level filtering alone are bypassable by rebinding to a permitted public hostname and should be treated as defense in depth rather than a fix.

Affected VersionsENISA

Shepherd 0 ≤0.3.1

Affected Packages

euvd shepherd 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

The root cause is a time-of-check-to-time-of-use (TOCTOU) flaw, CWE-367, in the citation-checker extra of Shepherd. The SSRF guard in shepherd/extras/citation-checker/src/shepherd_citation_checker/_engine/network.py (lines 9-17) resolves the target hostname and validates the resulting address against a public_url policy, but the fetch path in _engine/fetch.py (lines 34-55) performs its own DNS resolution when the HTTP client actually connects. Because the validation result is not pinned to the address used for the connection, an attacker who controls authoritative DNS for the hostname can answer with a benign public IP during the guard check and then return an internal address for the connect-time lookup - classic DNS rebinding. The affected technology is Python-based URL fetching for citation verification in an AI agent framework; the fetch issues plain GET requests over HTTP(S) and stores the returned body in evidence files, which is why the weakness only yields reading of internal service responses. CPE data (cpe:2.3:a:shepherd-agents:shepherd:*:*:*:*:*:*:*:*) identifies the shepherd-agents project, and the referenced source snapshot at commit d34d5ca334871dfcb5a3dc76dd78045829fa4e56 shows the vulnerable network.py and fetch.py logic.

Know when Shepherd 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:L/AT:P/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.1 LOW

AC:H because the attacker must control DNS and win the TOCTOU re-resolution race; UI:R because a victim must run the checker on the planted document; impact limited to low confidentiality from captured internal responses.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

Shepherd (shepherd-ai) through 0.3.1 contains a server-side request forgery guard bypass in the citation-checker extra because the public_url guard validates a resolved address but fetch re-resolves the hostname at connect time. Attackers who plant a crafted reference URL in a checked document and control its DNS can rebind it to internal addresses, sending GET requests to internal HTTP(S) services and capturing responses in evidence files.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Rare
obscure early-stage open-source AI agent, tiny deployment footprint
Social Media
2
Sightings
Data Quality
5 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 No
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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

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

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

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