Software-update - Pi-hole Core 6.5 / Web 6.6.1 / FTL 6.8
Versie 6.5 van Pi-hole Core is uitgekomen. Ook zijn Pi-hole Web 6.6.1 en Pi-hole FTL 6.8 verschenen. Pi-hole is een advertising-aware dns- en webserver bedoeld om te draaien op een Raspberry Pi in het netwerk. Als op de router naar Pi-hole wordt verwezen voor dns-afhandelingen, zullen alle apparaten binnen het netwerk er automatisch gebruik van maken zonder dat er instellingen hoeven te worden aangepast. Vervolgens worden advertenties niet meer opgehaald, waardoor pagina's sneller laden. In potentie kan er ook malware mee buiten de deur worden gehouden. Voor meer informatie verwijzen we jullie door naar de uitleg en video's op deze pagina, deze handleiding van tweaker jpgview, of dit topic op ons forum. De releasenotes voor deze uitgave kunnen hieronder worden gevonden.
Pi-hole FTL v6.8, Web v6.6.1 and Core v6.5 releasedThis release fixes a number of security advisories across FTL, Web and Core. Thank you to everyone who reported them. Before updating, please read the changelogs below. Update with
pihole -up. If you want a safety net, take a backup of your configuration first with Teleporter (Settings -> Teleporter in the web interface, orpihole-FTL --teleporter).The Docker image is tagged
Security fixes2026.10.0.High
- Core: command execution via a crafted PID (GHSA-cf36-4hhc-8398, CVSS 7.8):
getFTLPID()now only accepts a PID naming a runningpihole-FTL, and logrotate uses it.- Core: root writing to config-supplied paths (GHSA-mff6-cjc4-5wq9, CVSS 7.3):
gravity.shre-executes aspihole, and the log flush writes aspihole.- Core: root following a symlink when writing the version file (GHSA-xcb-4qxw-g5vj, CVSS 7.8): the update checker and FTL prestart script no longer create or chmod files in the
pihole-owned/etc/piholeas root.- Core:
/opt/piholehardening (GHSA-j8vh-6fp9-cjcx, CVSS 7.8): read-only for the FTL service.- FTL: document root relocation via Teleporter import / symlink (GHSA-2h7g-g549-hf74, CVSS 7.7): an authenticated session could move the document root to
/and, withwebserver.serve_all, serve files unauthenticated.Medium
- FTL: local file contents echoed when parsing a
file://adlist (GHSA-667h-gpmh-7gxc, CVSS 6.5): an authenticated user could read files thepiholeuser can open. Needs the matching Core change (#6706).- FTL: app sessions could read password hashes and the TOTP secret (GHSA-v53r-4564-3449, CVSS 6.5; duplicate GHSA-846w-3j3v-2hx8): read-only app sessions could read both via
/api/configand/api/teleporter.- FTL: out-of-bounds write in the API TXT buffer (GHSA-8fc6-q9x4-892v, CVSS 5.9): needs a long upstream server list, no authentication.
- FTL: EDNS(0) data leaking between clients’ queries (GHSA-xj4x-gf2g-r6m7, CVSS 4.2): data from one packet could be applied to another client’s query.
Low
FTL v6.8
- Core:
file://adlist read check and curl could resolve different files (GHSA-g63w-24cr-p3w6, CVSS 2.2): a bypass of the read check that the FTLfile://fix relies on, needing an admin who can add adlists plus a symlink and decoy on the filesystem. Local lists are now read withcatas the user whose access was checked.- FTL: cross-site requests and DNS rebinding against a passwordless install (GHSA-322h-f873-hp54): with no password set, any website opened on the network could reach the API through the visitor’s browser. FTL now refuses cross-site browser requests and unrecognised
Hostnames when no password is set.- FTL: race when deleting a DHCP lease (GHSA-v8mj-cqgw-63rj, CVSS 2.2): needs an authenticated client and the DHCP server enabled.
- FTL: crash when searching domains during a list reload (GHSA-9828-2f2q-2c8v, CVSS 2.2): needs a valid session.
- FTL: crash on a malformed POSTed regex array (GHSA-mqr7-j2p5-5495, CVSS 2.7): needs a valid session.
- Web: stored XSS on three settings pages (GHSA-rmr4-hqc8-825f, GHSA-3vhj-5284-xrmm, GHSA-qfpp-28mj-pj6p, CVSS 3.5 / 3.1 / 3.1): Settings > All settings, Local DNS Records and DNS.
This is a minor release rather than v6.7.2: there are enough visible behaviour changes that a patch version would undersell it. It backports the bug fixes that landed on
developmentsince v6.7.1 and updates the embedded dnsmasq (v2.93+30) and SQLite (v3.53.3).Improvements
- The live log is now stored as a ring buffer instead of moving the whole buffer for every new line, which costs far less CPU per cached answer.
- Internationalised domain names on lists are converted to punycode with libidn2 and block, instead of being rejected as invalid.
- Long-term statistics are grouped before joining the name tables (faster), and two unused in-memory indexes are gone, saving about 22 MB per million queries.
Notable fixes
- Flushing the logs deleted the whole long-term history, not only the last 24 hours, and moved the graph a day into the future.
- Crashes with 257+ alias-clients, with a no-longer-forced
FTLCONF_array, and withdatabase.DBinterval = 0.- Group and list changes not reaching a client until the next reload, stale forced replies, and missing EDE on the first block.
- A file path containing
+(or any other printable ASCII) was reset to its default on start-up.- An open redirect in the
.lpcompatibility redirect, and/ignoringwebserver.serve_all.- Pi-hole’s own certificate for a custom
webserver.domainwas never renewed, and a domain longer than 64 characters ended up as an oversized CN.- The empty-DS DNSSEC loop, via dnsmasq, plus its double-free and information disclosure fixes.
- An API session could enable
misc.readOnlythrough a Teleporter archive, andpihole.toml.lockfailed on NFS.- Any LAN client could make FTL add a new PTR record for every spelling of its own address until a restart.
- The CLI password file and
pihole-tmp.dbwere briefly or permanently readable by everyone.- On ARM and RISC-V the MAC address of a new device was never looked up at query time, so its MAC-based groups only applied later.
- Raising
misc.privacylevelat runtime did not cover domains and clients already seen, and anntp.sync.intervalabove about 24.8 days made the NTP client sync back to back.- DNS stalls on list reloads and rate limiting, GC double processing, lost queries at shutdown, and wrong long-term statistics.
- Old queries were never deleted from
pihole-FTL.dbon a host that restarts FTL at least once a day.dhcp-discoverprinted the DNSSL labels of Router Advertisements unescaped.- Clients without a MAC address (e.g. a WireGuard peer) stayed in the default group until the next list reload, because the groups of a new client were resolved before its interface was known.
- The load check counted only the CPUs a container was limited to, while
/proc/loadavgshows the host’s load, so the long-term load warning fired spuriously and/api/info/systeminflated the load percentage in LXC/Docker with fewer cores. FTL now counts all present host CPUs.- Assorted API fixes: CORS headers on 204 and error responses, the reply shape of
/api/queriesat privacy level 3,/api/history/clientsat every privacy level, 64-bit swap figures in/api/info/system, and a rejectedPOST /api/teleporterupload whose import field does not parse.FTLCONF_files_log_ftlwas not used for log lines on early startup.Behaviour changes to be aware of
Web v6.6.1
- Invalid values found in
pihole.tomlare rejected and reset to the default:database.DBintervalof 0, awebserver.tls.certbelow the webroot, a non-base32webserver.api.totp_secret, relative paths for files FTL writes, and afiles.tmp_dbthat names another file Pi-hole keeps (e.g.pihole-FTL.db). Awebserver.api.maxHistoryabove 86400 is reduced to 86400. A list (e.g.dns.hosts) now loses only its invalid entries instead of being reset as a whole.- With
webserver.serve_all = false,/under a host other thanwebserver.domainnow returns a 404, so a customindex.htmlin the webroot no longer shows up athttp://<ip>/. Behind a proxy that does not stripwebserver.paths.prefix, the prefixed path returns a 404 as well.- A renewed self-signed certificate comes with a new CA, so an imported
tls_ca.crthas to be imported again.- FTL no longer hands a symbolic link (e.g.
pihole-FTL.dborFTL.loglinked to another disk) to thepiholeuser, and warns about it on every start. Such a target has to be owned bypiholealready.- When FTL runs as root it only changes ownership or permissions of regular files directly in
/etc/piholeand/var/log/pihole, and refuses a symbolic link as log file (includingfiles.log.dnsmasq). Started aspihole, a linked log file keeps working.- A blocking timer on an unchanged status now switches to the opposite mode when it expires.
- The host’s own interfaces show up in the network table, and shutdown may wait up to 30 seconds for a busy database thread.
- dnsmasq adds the
option4:syntax and DHCPv6 vendor classes.- Changing
ntp.sync.intervalrestarts FTL,ntp.sync.count = 0is rejected, andPOST /api/action/gravityanswers 409 while a run is in progress.- Queries older than
database.maxDBdaysare deleted in the first night after a start, 10000 at a time. A database that kept growing will lose its whole backlog in the first night after the update.- A v5 Teleporter import replaces the upstreams, reverse servers and excluded domains/clients instead of adding to them.
A patch release for the stable line while
developmentis mid-rework (AdminLTE 4 / Bootstrap 5).Core v6.5
- Query Log: show the actual API error (e.g. “The item is already present”) instead of a generic network error.
- Conditional Forwarding: reject CIDR and otherwise invalid server IPs.
- Static DHCP leases: fix the
tag:validation regex and allow internal underscores in hostnames.hexEncode()now handles code points aboveU+FFFF.- Login no longer blames the password for a refusal that is not about it.
- Query Log: the API URL is no longer encoded twice.
- Bundled Moment.js bumped to 2.31.0.
- DNS settings: clearer “local requests” wording, and an
emptyTabletypo fixed.
- Stop double-rotating logs now that
piholeis in/etc/logrotate.d.- Remove the deprecated
arpflushcommand in favour ofnetworkflush.- Improve gravity error handling.
- Fix unquoted variable expansion in
rmpaths.- Send
USR2after logrotate.- Keep
/etc/pihole/versionsreadable by all users.- Remove Debian 11 from the CI distro matrix.
- Fix URL parsing in
gravity.sh.- Improve the gravity database schema for performance:
WITHOUT ROWIDjunction tables, new indexes for group lookups and cheaper triggers. Existing databases are migrated to schema version 21 on update.- Store the
listsCachedirectory next togravity.dbinstead of always in/etc/pihole.- Run the update checker and the FTL prestart file fix-ups as the
piholeuser, and only trust git repositories thepiholeuser cannot modify.- Read local
file://adlists as the user whose access was checked, instead of via curl.- Parse local
file://adlist URIs with parameter expansion and path canonicalisation (RFC 8089)- Pass the adlist source URL to FTL’s
parseList(needed by the FTL v6.8file://adlist fix).- Flush the last 24 hours of queries through the FTL API instead of touching the database directly.
- Stop granting
CAP_CHOWNto everythingpihole-FTLexecutes (kept in the ambient set of the FTL service).

| Versienummer | 6.5 / 6.6.1 / 6.8 |
| Releasestatus | Final |
| Besturingssystemen | Scripttaal |
| Website | Pi-hole |
| Download | https://github.com/pi-hole/pi-hole/#one-step-automated-install |
| Licentietype | GPL |
Door Bart van Klaveren
Downloads en Best Buy Guide
Feedback • 17-10-2026 18:0051 • submitter: jpgview
Update-historie
Lees meer
Reacties (51)
Ik gebruik zelf deze:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://big.oisd.nl/
https://urlhaus.abuse.ch/downloads/hostfile/
https://phishing.army/download/phishing_army_blocklist_extended.txt
Ik heb niet het idee dat er in de praktijk veel doorheen komt.
Met oisd heb ik echt nooit problemen. Ik heb ook niet het idee dat er dingen doorheen gaan.
[Reactie gewijzigd door CH4OS op 17 oktober 2026 23:53]
Die OISD-lijst focust op ‘niks gaat stuk’. Wat ik zo lees over die Hagezi is dat ze zelf bij de ‘aanbevolen lijst’ al aangeven dat je problemen gaat krijgen. Maar dat kan ‘in de praktijk’ heel erg meevallen of juist heel erg tegenvallen.
Het totaal aantal geblokkeerde domeinen vind ik persoonlijk niet zo interessant (dat is statistiek). Waar het mij om gaat is hoe effectief het is. (Dus zie je geen advertenties meer, maar blijft wel alles het doen.)
Maar als jij aangeeft dat je geen problemen hebt, dan ga ik het wel een keer proberen en kijken of ik het verschil merk. En als het toch gedoe wordt ga ik gewoon weer terug naar oisd. 😊
[Reactie gewijzigd door CH4OS op 18 oktober 2026 07:59]
OISD focust op phishing/scam, hazegi pro focust op tracking (ze hebben maar ongeveer 23% overlap). Dus die vullen elkaar inderdaad goed aan.
De TIF-lijst van HaZeGi bevat vooral heel veel ‘wegwerpdomeinen’ (bijna 50% .xyz-domeinen) en dat soort zaken. Dus voor ‘actuele scams’.
OISD heeft veel (18k, ten opzichte van TIF), unieke subdomeinen van gratis hosting providers. (Pro en TIF bij elkaar hebben maar 2% van die lijst gratis hosting subdomeinen)
Pro en TIF bevatten samen bijna 80% van wat er in OISD staat. (OISD heeft ingeveer 40k domeinen die niet in Pro en TIF samen staan)
Het kan dus inderdaad een meerwaarde hebben ze alle drie te hebben.
Ik gebruik via Adguard Home:
Oisd blocklist big
Phishing Army
HaGeZi’s Threat Intelligence
Je zou dus naast OISD ook die andere twee kunnen doen, maar het ligt er net aan waar je focus ligt. Als het je echt primair om de advertenties gaat, is het om het even welke van de twee je gebruikt.
https://github.com/hagezi/dns-blocklists
Veel opties en mogelijkheden dus even goed doorlezen welke je wil.
Met de 'Multi Pro' en de 'Threat Intelligence Feeds' kom je al heel ver.
Kan je verder nog aanvullen met andere lijsten die je wil.
Voor Pi-hole heb je het Adblock formaat van de lijst nodig.
https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt
[Reactie gewijzigd door En-Cryption op 17 oktober 2026 20:23]
https://blocklistproject.github.io/Lists/smart-tv.txt
De naam zegt genoeg ;-)
Maar hier staan een aantal leuke lijsten in meerdere formaten w.o. Pihole en ADG
https://blocklistproject.github.io/Lists/
[Reactie gewijzigd door xxs op 18 oktober 2026 11:36]
Is PiHole echt veel beter dan dit? Kan het ook de advertenties binnen YouTube tegen houden bijvoorbeeld?
Het voordeel van een externe dienst is, is dat je niets hoeft te doen qua beheer. Je DHCP-server die dns-servers laten opsturen of eventueel je router zelf die laten gebruiken en klaar.
Dit kan prima werken voor veel (de meeste?) mensen. Als je echter een complexer netwerk hebt en daar je eisen hebt voor, bijvoorbeeld, lokale DNS-records per vlan, of andere zaken, heb je al snel wat anders nodig.
Ook is een lokale DNS theoretisch sneller, maar of je dat in de praktijk zal merken durf ik te betwijfelen.
Dus als jij alles doet wat je wil doen met AdGuard DNS, en je geen zin hebt om het lokaal te toen (geen oordeel. Niet iedereen vindt het leuk om met die soort dingen bezig te zijn), dan heb je voor jezelf een perfecte dienst in gebruik.
Ik ga wellicht even muggenziften, want de tools hebben overlap, maar zijn niet hetzelfde.pihole/AdGuard home/Technitium/blocky/enz zijn op het stuk adblocking DNS Sinkholes
Blocky en Technitium zijn in de eerste plaats meer DNS servers met ad blocking functionaliteiten. Pi-Hole en AdGuard Home zijn meer specifiek ad blocking sinkholes met daarnaast wat basale DNS functionaliteiten, zodat je beperkt een eigen DNS kan beheren. Dat geeft deze tools wel wat overlap, maar maakt ze niet hetzelfde. Zo gauw het DNS beheren wat specifieker wordt, ben je beter af met Technitium of Blocky, dan met Pi-Hole of AdGuard Home.
[Reactie gewijzigd door CH4OS op 18 oktober 2026 12:34]
Er zijn wel andere manieren om YouTube ads te verbergen middels browser plugins.
Het is dus net wat je belangrijk vindt.
Ik gebruik zelf Technitium. Dat is een wat completere DNS-server waar je met gedetailleerd low level zaken in kunt regelen, maar als je dat niet nodig hebt, heb je er niets aan.
Heb de nightly docker container al geprobeerd met DoT en dat werkte prima.
Eigenlijk is het jammer dat dat er nog niet in zit, maar als ze er mee bezig zijn is dat altijd goed. Eigenlijk is het raar dat iets fundamenteels als DNS niet al lang en breed standaard bij alles versleuteld is in de breedste zin. (Dus geen sneer naar de makers van pihole, maar gewoon in het algemeen)
Je krijgt dan je eigen upstream recursive dns server, zodat je niet de grote upstreams van Google , cloudflare etc gebruikt.
Ieder stuk software kan toch wissen omgebouwd naar een betaald abonnement?
Iemand ervaring mee of tips?
[Reactie gewijzigd door AvWijk op 18 oktober 2026 10:37]
Aan de andere kant zou ik DNS-filtering niet helemaal afschrijven. Voor veel huishoudens blokkeert het nog steeds een hoop advertenties, trackers en bekende malafide domeinen zonder dat je iets op de eindpunten hoeft te installeren.
Als securitymaatregel op zichzelf stelt het niet veel voor. Als extra laagje in een defence-in-depth strategie kan het nog steeds nuttig zijn. Zeker voor die "smart" apparaten waar je vaak helemaal geen agent of beveiligingssoftware op kunt zetten.
Ik snap dat een Pi-hole meer controle, vrijheid en privacy kan bieden, maar is het extra (eigen) beheer de moeite waard t.o.v. de set-and-forget van DNS4EU?
Dit dan weer gebenchmarked met Yet Another DNS Benchmark en GRC DNS Benchmark. De twee Piholes waren altijd het snelste, die met Unbound er bovenop won altijd. Adguard verloor altijd.
Als het je puur om Adblocking gaat: PiHole+Unbound.
Ik gebruik alleen OISD big en hoor zelfs geen klachten van de gamende tiktokkers hier in huis. Toch eens kijken of ik er stiekem eentje bij kan fietsen.
Ik was een tijdje geleden overgestapt naar Adguard home…
*knip*
[Reactie gewijzigd door Dirk op 18 oktober 2026 11:42]
Om te kunnen reageren moet je ingelogd zijn
:strip_icc():strip_exif()/u/378817/crop616a95fe85aa0_cropped.jpg?f=community)
/u/176086/crop5f0823fa5e8d6_cropped.png?f=community)
:strip_exif()/u/53522/crop583d477015a24.gif?f=community)
/u/254163/crop5815faf49e2d2_cropped.png?f=community)
/u/671425/crop56981d51f1c9f_cropped.png?f=community)
:strip_icc():strip_exif()/u/264008/crop5a3500e9cecd2_cropped.jpeg?f=community)
:strip_icc():strip_exif()/u/50284/icoon.jpg?f=community)
:strip_icc():strip_exif()/u/109144/IMG_2440.jpg?f=community)
/u/478795/crop5db3b45de6668_cropped.png?f=community)
/u/1250266/crop6999bd1b9fd1c_cropped.png?f=community)
:strip_icc():strip_exif()/u/21673/crop65674aee06c6d_cropped.jpg?f=community)