Severity by source
AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Local config-only vector (AV:L) needing existing pihole account (PR:L); low complexity; scope changes as pihole privilege escalates to root, yielding full C/I/A impact.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
3DescriptionGitHub Advisory
Pi-hole is a DNS sinkhole that protects devices from unwanted content without installing any client-side software. From 6.0 to before Core 6.4.2 and FTL 6.6.1, two shell scripts executed as root by systemd (pihole-FTL-prestart.sh and pihole-FTL-poststop.sh) read the files.pid path from this config without validation and use it in privileged file operations (install and rm -f). By writing an arbitrary path into files.pid, an attacker with pihole privilege can cause root to delete and then recreate any file on the system outside the ProtectSystem=full-restricted directories, gaining write access to it. On a default Pi-hole installation this yields local privilege escalation to root via SSH authorized keys manipulation. If /root/.ssh/authorized_keys does not exist (default on fresh installs), only ExecStartPre is required. If the file exists, ExecStopPost deletes it first, and the same restart triggers both hooks in sequence. This vulnerability is fixed in Core 6.4.2 and FTL 6.6.1.
AnalysisAI
Local privilege escalation in Pi-hole (Core 6.0 through before 6.4.2, FTL through before 6.6.1) lets a user with pihole privileges gain root by injecting an arbitrary path into the unvalidated files.pid config value, which root-run systemd hooks (pihole-FTL-prestart.sh and pihole-FTL-poststop.sh) use in privileged install and rm -f operations. On a default install this enables root-level write access via SSH authorized_keys manipulation. SSVC rates technical impact as total, but there is no public exploit identified at time of analysis and EPSS is negligible (0.01%).
Technical ContextAI
Pi-hole is a self-hosted DNS sinkhole; FTL is its embedded DNS/DHCP resolver daemon (pihole-FTL) managed by systemd. The flaw is a CWE-732 (Incorrect Permission Assignment / trust of an untrusted-writable resource) issue: the systemd unit's ExecStartPre (pihole-FTL-prestart.sh) and ExecStopPost (pihole-FTL-poststop.sh) helper scripts run as root and read the files.pid path from Pi-hole's configuration without validating or canonicalizing it. Because a lower-privileged pihole account can write that config value, the attacker controls a path that root then feeds into install and rm -f. The systemd hardening ProtectSystem=full protects most system directories but leaves paths such as /root writable to these hooks, which is the pivot the exploit relies on.
RemediationAI
Vendor-released patch: upgrade to Pi-hole Core 6.4.2 and FTL 6.6.1 or later, which fix the unvalidated files.pid handling - apply both since the issue spans Core scripts and the FTL config parser; see the advisory at https://github.com/pi-hole/pi-hole/security/advisories/GHSA-6w8x-p785-6pm4. Where immediate patching is not possible, reduce exposure by tightly restricting who can obtain pihole privileges and write to the Pi-hole config (the files.pid value), and by monitoring the config for changes to files.pid pointing outside the expected runtime directory; as a hardening measure you can further constrain the pihole-FTL systemd unit (e.g. add ReadWritePaths/ProtectHome=true or a stricter ProtectSystem) so its root hooks cannot touch /root, with the trade-off that overly strict paths may break legitimate PID/socket file creation and require testing. Do not rely on network controls - this is a local escalation, so the priority is limiting local pihole account access.
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)
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
adminlte is vulnerable to Sensitive Cookie Without 'HttpOnly' Flag. Rated high severity (CVSS 7.5), this vulnerability i
Same technique Privilege Escalation
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-29295