Pi-hole 2026.11.0: FTL 6.9 und Core 6.6 schliessen elf Sicherheitslücken
Das Docker-Image Pi-hole 2026.11.0 bündelt FTL v6.9 und Core v6.6 und behebt unter anderem eine Admin-Code-Ausführung über files.gravity (CVSS 7.2) sowie mehrere Symlink-Lücken im Installer. Regex-Filter, webserver.acl und die Sessions-API verhalten sich teilweise anders; prüfen Sie diese Punkte nach dem Update.
Pi-hole hat am 11. November 2026 das Docker-Image 2026.11.0 veröffentlicht. Es enthält Pi-hole FTL v6.9 und Pi-hole Core v6.6, die am selben Tag erschienen sind; das Web Interface bleibt laut Hersteller auf v6.6.1. Die beiden Komponenten-Releases beheben elf Security Advisories, darunter vier mit Schweregrad High (CVSS 7.2 bis 7.3). FTL v6.9 aktualisiert zudem dnsmasq, SQLite und die Regex-Engine TRE und ändert das Verhalten von Regex-Filtern, webserver.acl und Teilen der API. Das Release richtet sich an alle Betreiber von Pi-hole, im Docker-Container ebenso wie als Bare-Metal-Installation. Der Vorgänger 2026.10.1 vom 31. Oktober 2026 brachte laut Release Notes vor allem ein aktualisiertes Alpine-Basisimage (3.24.3).
Die Versionen im Überblick
| Version | Datum | Art | Kernpunkte |
|---|---|---|---|
| Docker 2026.11.0 | 11.11.2026 | Image-Release | bündelt FTL v6.9, Core v6.6 und Web v6.6.1; setpriv statt sudo, Logrotate über die Crontab des Containers |
| FTL v6.9 | 11.11.2026 | Minor-Release | sieben Advisories (eines High), dnsmasq v2.93+42, SQLite 3.54.1, TRE-Update mit geändertem Regex-Verhalten |
| Core v6.6 | 11.11.2026 | Minor-Release | fünf Advisories (vier High, eines Medium), Installer schreibt in /etc/pihole nur noch als Benutzer pihole |
| Web v6.6.1 | 17.10.2026 | unverändert | keine neue Version in diesem Release |
Sicherheitskorrekturen mit Schweregrad High
Die Advisories sind seit dem 11. November 2026 veröffentlicht. Eine CVE-ID war für die geprüften Advisories zu diesem Zeitpunkt nicht vergeben; beim Advisory zu files.gravity ist sie laut Text beantragt (Stand 12. November 2026).
- GHSA-pj9m-9623-2g75 (FTL) und GHSA-cq9w-mv93-mxh7 (Core), CVSS 7.2: Code-Ausführung durch einen authentifizierten Admin (CWE-78, CWE-89). FTL 6.8 hatte die Pfadprüfung gelockert, sodass
files.gravityein einfaches Anführungszeichen enthalten durfte.gravity.shsetzte diesen Wert ungeschützt in ein SQL-ATTACH-Statement ein; über die sqlite3-Shell von FTL liessen sich so Betriebssystembefehle als Benutzerpiholeausführen, laut Advisory in Docker- wie in Bare-Metal-Installationen. Betroffen sind Core bis 6.5 und FTL 6.8. Core maskiert den Wert nun, FTL bindet den Pfad im Teleporter als Parameter. Der Hersteller betont, dass beide Pakete gemeinsam aktualisiert werden müssen. - GHSA-wp3p-45h3-2v82 (Core), CVSS 7.3: Unvollständige Korrektur der Symlink-Lücken aus dem Oktober (CWE-59, CWE-61).
pihole -rundpihole -upfolgten beim Schreiben voninstall.log,migration_backup_v6undhosts/custom.listweiterhin Symlinks in/etc/pihole. Voraussetzung ist Code-Ausführung als Benutzerpiholeund ein Administrator, der danach Reparatur oder Update als root startet. Betroffen sind Versionen bis 6.5. - GHSA-5w4v-f65m-323f (Core), CVSS 7.3: root folgte Symlinks und Pfaden aus der Konfiguration beim Download von
macvendor.db, beipihole checkoutund beipihole uninstall. - GHSA-jvg9-fm8x-2jqq (Core), CVSS 7.3:
pihole -dfolgte Symlinks in Verzeichnissen, die dem Benutzerpiholegehören. root konnte so beliebige Dateien ins Debug-Log kopieren und andere überschreiben oder deren Besitzer ändern.
Core v6.6 schreibt install.log, das Migrations-Backup, hosts/custom.list und macvendor.db deshalb nur noch als Benutzer pihole. Auch pihole -d arbeitet in diesen Verzeichnissen nicht mehr als root.
Passwort-Hashes im Debug-Log
GHSA-qfq3-88xg-765w (Core), CVSS 5.3: Das Debug-Log von pihole -d und damit auch Uploads an den Tricorder-Dienst enthielten den Hash des Web-Passworts, den Hash des App-Passworts und das TOTP-Secret. Core v6.6 nimmt diese Werte aus dem Log heraus. Haben Sie in der Vergangenheit ein Debug-Log hochgeladen, empfiehlt der Hersteller, das Passwort und die App-Passwörter zu ändern und die Zwei-Faktor-Authentifizierung neu einzurichten.
Sicherheitskorrekturen mit Schweregrad Low in FTL
- GHSA-x6xh-vxcm-g8rm, CVSS 3.8: App-Sessions ohne
webserver.api.app_sudound CLI-Sessions konnten alle API-Sessions auflisten und beliebige davon beenden. - GHSA-87wp-wm3p-8cxm, CVSS 3.7: IPv4-Einträge in
webserver.aclgriffen bei einem Dual-Stack-webserver.portwie+80nicht für IPv4-Clients. - GHSA-cg4p-5r3r-m54p, CVSS 3.1: Eine Passwortänderung über
pihole-FTL --configoderpihole setpasswordkonnte durch einen gleichzeitigen Konfigurationsschreibvorgang über die API rückgängig gemacht werden; das alte Passwort und seine Sessions blieben dann gültig. - GHSA-fj2f-pgf2-j888, CVSS 2.2: Abfragen, die mit
misc.privacylevel3 erfasst wurden, konnten nach dem Senken der Stufe in die Langzeitdatenbank gelangen. - GHSA-9mh9-95wj-4w4q und GHSA-9hh4-j8jf-6c96, je CVSS 2.2: Ein Absturz beim Lesen der Metriken während eines Neuladens der Hosts-Datei sowie ein Use-after-free bei einem Teleporter-Import im v5-Format. Beide setzen eine gültige Session voraus.
Geändertes Verhalten nach dem Update
FTL v6.9 ist laut Release Notes bewusst kein v6.8.1, weil das TRE-Update die Auswertung einiger gespeicherter Regex-Filter ändert:
- Regex: Eine fehlende Untergrenze (
{,n},{,}) bedeutet nun{0,n}bzw.{0,}. Mehr als drei verschachtelte Gruppen mit approximativem Matching und Back-References in unbegrenzten Wiederholungen werden abgelehnt. - Local DNS: Einträge in
dns.cnameRecordsmit ungültigem Domainnamen oder einer TTL, die nicht in einen Integer passt, werden abgelehnt. - webserver.acl: IPv4-Einträge gelten auf allen Ports, auch auf Dual-Stack-Ports. IPv6-Einträge ausser
::ffff:a.b.c.dpassen nur noch auf IPv6-Clients;[::]/0lässt damit keine IPv4-Clients mehr zu. - Sessions-API: App-Sessions ohne
webserver.api.app_sudound CLI-Sessions erhalten beiGET /api/auth/sessionsundDELETE /api/auth/session/{id}den Status 403. Eine Session kann sich weiterhin mitDELETE /api/authselbst beenden. - Webserver: Anfragen mit mehr als 64 Headern werden abgewiesen.
/api/info/systemliefert einen Fehler statt Nullwerten, wenn die Load Averages nicht lesbar sind. - DHCP-API:
DELETE /api/dhcp/leases/{ip}antwortet mit 503 statt 400, wenn der Resolver die Anfrage nicht rechtzeitig verarbeitet hat. - Passwort: Ein per
pihole setpasswordoderpihole-FTL --configgesetztes Passwort wird nicht mehr durch die nächste Konfigurationsänderung im Web Interface überschrieben.
Prüfen Sie nach dem Update die Regex-Filter mit Untergrenzen oder Back-References, die Einträge in webserver.acl (insbesondere [::]/0) und Skripte oder Integrationen, die mit App-Passwörtern Sessions auflisten oder beenden.
DNS, DHCP und weitere Korrekturen in FTL v6.9
Das eingebettete dnsmasq steht auf v2.93+42 und enthält zusätzlich eine Korrektur in blockdata_alloc(), die upstream noch nicht übernommen ist. Behoben sind laut Release Notes unter anderem ein Heap-Out-of-Bounds-Read in zone_status() (DNSSEC), ein Heap-Out-of-Bounds-Write in blockdata_read(), ein Überlauf des DNS-Namenspuffers, ein Off-by-one in der DHCPv6-FQDN-Option sowie SERVFAIL bei tieferen Wildcard-Antworten und verlorene Antworten bei TCP-Pipelining. Mit aktiviertem DNSSEC hält dnsmasq zusätzliche TCP-Slots für eigene Validierungsabfragen frei, damit die Validierung auch funktioniert, wenn Clients das TCP-Verbindungslimit ausschöpfen. Der ungefilterte Upstream von Quad9 ist nun als DNSSEC-validierend gekennzeichnet.
Bei Konfiguration und API behebt FTL v6.9 unter anderem verlorene Änderungen bei zwei gleichzeitigen Konfigurationsänderungen, einen TCP-Worker, der pihole.toml.lock bis zu 300 Sekunden hielt, und ignorierte FTLCONF_-Variablen, wenn FTL ohne pihole.toml startete. Der Webserver konnte zuvor mit 100 % CPU-Last hängen bleiben und keine Verbindungen mehr annehmen. In Containern meldete /api/info/system bisher die Last des Hosts. Für den Betrieb relevant ist ausserdem, dass gravity.db nur noch neu geöffnet wird, wenn sich die Datei geändert hat; das war laut Hersteller der grösste Teil der CPU-Last von FTL im Leerlauf. SQLite steht auf 3.54.1.
Änderungen in Core v6.6 und im Docker-Image
Core v6.6 wechselt beim Rechteabbau von root auf den Benutzer pihole von sudo zu setpriv; sudo ist damit keine Abhängigkeit mehr. Administrative Befehle wie pihole -up benötigen laut Hersteller weiterhin root-Rechte. Die Logrotation übernimmt nun das tägliche logrotate des Systems; die nächtliche erzwungene Rotation von Pi-hole entfällt, weil sie mit dem System-Lauf kollidierte und Logs doppelt rotierte. Weitere Korrekturen betreffen pihole flush quiet, pihole updatechecker und eine Warnung, wenn ein lokales Repository für git nicht als sicher markiert ist (bisher zeigte pihole -v dann nur N/A). Die nicht benötigte Capability CAP_IPC_LOCK wurde entfernt.
Das Docker-Image übernimmt den Wechsel auf setpriv und plant die Logrotation über die Crontab des Containers. Das nächtliche Image wird nun aus dem Branch development gebaut.
Empfohlenes Vorgehen
Zielversion ist das Docker-Image 2026.11.0 bzw. bei Bare-Metal-Installationen FTL v6.9 mit Core v6.6. Da die Lücke über files.gravity erst mit beiden Komponenten geschlossen ist, sollten Sie FTL und Core gemeinsam aktualisieren. Erstellen Sie vorher ein Backup mit Teleporter (Settings, Teleporter im Web Interface oder pihole-FTL --teleporter), wie es der Hersteller empfiehlt, und lesen Sie die Changelogs wegen der Verhaltensänderungen. Bare-Metal-Installationen aktualisieren Sie mit pihole -up. Im Container sind pihole -up und pihole -r laut Dokumentation deaktiviert; dort ersetzen Sie das Image. Mit Docker Compose führen Sie im Verzeichnis der docker-compose.yml laut Dokumentation folgende Befehle aus:
docker compose pull
docker compose down
docker compose up -d
Bei Installationen mit docker run nennt die Dokumentation docker pull pihole/pihole:latest, danach docker stop pihole und docker rm pihole und einen neuen docker run mit den bisherigen Argumenten. Haben Sie früher ein Debug-Log hochgeladen, ändern Sie zusätzlich die Passwörter und richten Sie 2FA neu ein. Hinweise zu Known Issues oder Supportfristen enthalten die Release Notes nicht (Stand 12. November 2026).
Kommentare
Die Kommentare werden von GitHub / Giscus geladen.