Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain Pi-hole admin plus filesystem write
-
DeliveryPlace decoy and symlink, add file:// adlist
-
ExploitReadability check resolves to pihole-readable decoy
-
Executioncurl as root normalizes path to root-only file
-
ImpactDomain-shaped lines leak into gravity list
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Symlink resolution safety
|
| Exploitation Conditions | Exploitation requires an authenticated Pi-hole administrator who can add adlists AND can write to the host filesystem to pre-position both a symlink and a pihole-readable decoy file. The flaw is triggered specifically through file:// scheme adlists whose path contains dot segments (e.g. '/l/../../etc/shadow') or /proc/self components, exploiting that 'sudo -u pihole test -r' resolves symlinks-then-.. through the kernel while curl strips dot segments from the URL text before opening - so the two resolve to different files. The root-only read only occurs when gravity runs as root (via 'pihole -g' or cron). Limiting factors: admin privilege plus local filesystem placement are both mandatory (hence not remotely exploitable against a default install), and the companion FTL fix removes reflected sample lines, so only domain-shaped lines from the target leak. Versions <= 6.4.3 are affected; 6.5 is fixed. |
| Impact | All signals point to a genuinely low-priority issue rather than a high-CVSS-but-overstated one. The CVSS 3.1 base score is 2.2 with vector AV:N/AC:H/PR:H/UI:N, meaning high attack complexity and high privileges required, and only low confidentiality impact (C:L, I:N, A:N). This aligns with the vuln.today decision label of 'monitor' and the GHSA description, which stresses that exploitation needs an administrator who can add adlists AND the ability to place a symlink plus a decoy file on the host filesystem - a combination that already implies substantial access. No EPSS score, KEV listing, or standalone exploit reference is present in the input, so there is no public exploit identified at time of analysis; note, however, that the fix commit itself ships a bats test demonstrating the file-confusion technique (reading /etc/shadow via a crafted file:// adlist), which documents the mechanism publicly even though it is not packaged as a weaponized exploit. One tension worth flagging: the provided CVSS vector uses AV:N, yet the described exploitation is fundamentally local/config-dependent (the attacker must already place filesystem artifacts and hold admin), so the network vector likely overstates remote reachability - verify against deployment reality. The practical confidentiality leak is further constrained by the companion FTL fix (GHSA-667h-gpmh-7gxc), which stops sample lines being reflected, so only domain-shaped lines from a root-only target can leak. |
| Exploit ScenarioDerived | A Pi-hole administrator (or an attacker who has already compromised an admin account) places a pihole-readable decoy file and a symlink on the host, then adds a file:// adlist whose path contains dot segments or /proc/self components. The 'sudo -u pihole test -r' readability check resolves to the harmless decoy and passes, but curl - running as root during 'pihole -g' or cron - normalizes the URL differently and opens a root-only target such as /etc/shadow, leaking domain-shaped lines from it into gravity. No standalone public exploit is identified, though the fix commit includes a bats test that demonstrates the exact technique. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Local file disclosure in Pi-hole 6.4.3 and earlier lets an authenticated Pi-hole administrator who can add adlists - and who can pre-position a symlink plus a pihole-readable decoy on the host filesystem - cause gravity.sh to read a root-only file through a crafted file:// adlist. The flaw is a check-versus-read path resolution mismatch: the readability test runs as the pihole user via the kernel (symlinks first, then dot segments) while curl strips dot segments from the URL text before opening the file, so the two operations can land on different files; the root-only read only occurs when gravity is launched as root via 'pihole -g' or cron. With a vendor severity of 2.2 (CWE-59), mandatory admin privileges and mandatory local filesystem write access, this is a low-priority issue: no public exploit code was identified at time of analysis, no CISA KEV confirmation, and vuln.today priority is 'monitor'. A vendor fix ships in Pi-hole 6.5.
RemediationAI
Vendor-released patch: upgrade Pi-hole to version 6.5, which reads local (file://) adlists with 'cat' as the same user whose access was checked, instead of letting curl re-resolve the URL path; the fix is in commit 14554737be53c392abffc69677f6b9df02ae7971 and pull request https://github.com/pi-hole/pi-hole/pull/6719, released under https://github.com/pi-hole/pi-hole/releases/tag/v6.5, with full details in https://github.com/pi-hole/pi-hole/security/advisories/GHSA-g63w-24cr-p3w6. Because exploitation requires a Pi-hole administrator who can add adlists and can also place a symlink and decoy on the host filesystem, the practical interim controls are to restrict administrative access to the Pi-hole web interface and CLI to trusted operators, and to limit who can write to the filesystem paths referenced by configured file:// adlists - with the trade-off that this narrows the admin population rather than removing the resolution mismatch itself. Applying the companion FTL fix (GHSA-667h-gpmh-7gxc) limits the leak to domain-shaped lines, but per the vendor the complete fix for this issue is updating to 6.5.
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
Pi-hole's gravity.sh builds blocklists from adlists, and for file:// entries it first validates readability with 'sudo -u pihole test -r' and then historically fetched the list with curl, which runs as root when gravity is invoked through 'pihole -g' or cron. The root cause class is CWE-59 (improper link resolution before file access, i.e. link following). The kernel-side test resolves the path component by component - following symlinks first and then applying '..' against the resolved directory - whereas curl normalizes the URL text by removing dot segments before opening, and /proc/self paths additionally resolve against whichever process is doing the lookup (the test process versus curl). An attacker-chosen path such as 'file:///lf/l/../../etc/shadow' therefore passes the pihole-user readability check against a decoy while curl opens a root-only target. The upstream fix replaces curl for file:// URLs with 'cat' run as the same user the check was performed as (sudo -u pihole when gravity runs as root), eliminating the divergent resolution. The related FTL advisory GHSA-667h-gpmh-7gxc is the companion issue whose read check this bypasses; with the FTL part applied, sample lines from file: lists are no longer reflected, so leakage is narrowed to domain-shaped lines. Note the scoring variance: the recorded vector is CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:N/A:N for 2.2, while the independent assessment treats the attack vector as local (AV:L); both agree on high privileges, high attack complexity and confidentiality-only, low impact.
Know when Pi Hole 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
AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:N/A:N
Requires admin plus on-host symlink/decoy placement and a path-resolution race, so PR:H, AC:H and local vector AV:L; only domain-shaped lines leak (C:L), no integrity or availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
Pi-hole is a DNS sinkhole that protects devices from unwanted content without installing any client-side software. Prior to 6.5, gravity.sh checks file:// adlist readability with sudo -u pihole test -r but then allows curl, sometimes running as root, to normalize URL dot segments and open a different file. A pihole-readable decoy can therefore pass the check while curl reads a root-only target, and /proc/self paths can similarly resolve against different processes. Exploitation requires an administrator who can add adlists and can place a symlink and decoy on the filesystem. This issue is fixed in version 6.5.
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.
Pi-hole versions up to 3.3 contain an authenticated command injection via the domain allowlist functionality. When addin
The Gravity updater in Pi-hole through 4.4 allows an authenticated adversary to upload arbitrary files. Rated high sever
Pi-hole is a Linux network-level advertisement and Internet tracker blocking application. Rated medium severity (CVSS 6.
Pi-hole Web v4.3.2 (aka AdminLTE) allows Remote Code Execution by privileged dashboard users via a crafted DHCP static l
Pi-hole is a DNS sinkhole that protects devices from unwanted content without installing any client-side software. Rated
Pi-hole®'s Web interface (based off of AdminLTE) provides a central location to manage your Pi-hole. Rated high severity
Pi-hole's Web interface provides a central location to manage a Pi-hole instance and review performance statistics. Rate
Pi-hole is a Linux network-level advertisement and Internet tracker blocking application. Rated high severity (CVSS 8.8)
HTTP response splitting in Pi-hole Admin Interface before 6.3 lets unauthenticated remote attackers inject CRLF sequence
An issue was discovered in Pi-Hole through 5.0. Rated high severity (CVSS 7.8), this vulnerability is low attack complex
Pi-hole 4.4 allows a user able to write to /etc/pihole/dns-servers.conf to escalate privileges through command injection
Pi-hole before 6 allows unauthenticated admin/api.php?setTempUnit= calls to change the temperature units of the web dash
EUVD-2026-114437
NVD
CVE.org
EPSS
GitHub
Exploit-DB