Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPlant crafted reference URL in document
-
DeliveryVictim runs citation checker
-
ExploitGuard validates attacker-controlled public DNS
-
ExecutionRebind hostname to internal address at connect
-
PersistFetch internal HTTP(S) service
-
ImpactCapture 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
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.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
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
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
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
EUVD-2026-96907
GHSA-53wh-3r96-488v
NVD
CVE.org
EPSS
Exploit-DB