Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-35517 — Scripts de détection pour la RCE Pi-hole FTLDNS (CVE-2026-35517) via injection de saut de ligne, incluant un scanner Python et un script Nmap NSE pour l'évaluation de la vulnérabilité basée sur la version. | Kitploit
Outils/GitHubGitHub/keraattin/cve-2026-35517
Scanners de VulnérabilitésExploitationCollecte d'InformationsSécurité WebSécurité RéseauTests d'Intrusion
GitHubkeraattin/cve-2026-35517

CVE-2026-35517

Scripts de détection pour la RCE Pi-hole FTLDNS (CVE-2026-35517) via injection de saut de ligne, incluant un scanner Python et un script Nmap NSE pour l'évaluation de la vulnérabilité basée sur la version.

Voir le dépôt
4il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-35517 - Exécution de code à distance dans Pi-hole FTLDNS via injection de saut de ligne

CVE-2026-35517 CVSS 8.8 CWE-93 FTLDNS 6.0-6.5

TL;DR

Une vulnérabilité d'exécution de code à distance dans le moteur FTLDNS de Pi-hole (versions 6.0 à 6.5) permet à un attaquant authentifié d'injecter des directives de configuration dnsmasq arbitraires en intégrant des caractères de saut de ligne (\n) dans le paramètre API dns.upstreams. Étant donné que dnsmasq prend en charge des directives qui exécutent des commandes shell, cette injection de saut de ligne se traduit directement par une exécution complète de commandes sur le système hôte.

Il ne s'agit pas d'un simple bug isolé, mais d'une classe d'injection qui affecte , tous corrigés ensemble dans FTL v6.6.

cinq paramètres de configuration différents

Table des matières

  • Faits rapides
  • Qu'est-ce que Pi-hole FTLDNS ?
  • Analyse approfondie de la vulnérabilité
    • Comprendre l'architecture
    • Le point d'injection
    • Du saut de ligne au shell — La chaîne d'attaque
    • La famille complète — Cinq vecteurs d'injection
  • Analyse d'impact
  • Versions affectées
  • Qui est à risque ?
  • Détection
    • Scanner Python
    • Script Nmap NSE
    • Vérification manuelle de la version
  • Indicateurs de compromission
  • Remédiation
  • Références
  • Auteur

Faits rapides

ChampDétail
ID CVECVE-2026-35517
FournisseurProjet Pi-hole
ProduitFTLDNS (pihole-FTL)
Versions affectées6.0 à < 6.6
CVSS v3.18.8 (Élevé)
CWECWE-93 — Neutralisation incorrecte des séquences CRLF
Vecteur d'attaqueRéseau
AuthentificationRequise (accès admin/API Pi-hole)
Interaction utilisateurAucune
Publié7 avril 2026
Corrigé dansFTL v6.6 (publié le 3 avril 2026)
Découvert parT0X1Cx
Avis associésGHSA-23w8-7333-p9fj, GHSA-wxhv-w77q-6qwp, GHSA-28g5-gg88-wh5m, GHSA-fqv2-qhfh-ghcj, GHSA-vfmq-jrx3-wv3c

Qu'est-ce que Pi-hole FTLDNS ?

Pi-hole est l'un des puits DNS (DNS sinkholes) les plus déployés au monde. Il se place sur votre réseau, gère les requêtes DNS et bloque les publicités et les traqueurs au niveau DNS avant même qu'ils n'atteignent votre navigateur. Il est utilisé partout, des simples configurations Raspberry Pi dans les appartements aux déploiements d'entreprise protégeant des milliers d'appareils.

FTLDNS (Faster Than Light DNS) est le moteur principal de Pi-hole. C'est un fork/enveloppe personnalisé autour de dnsmasq, le serveur DNS et DHCP bien connu. FTLDNS gère :

  • La résolution et la mise en cache des requêtes DNS
  • Le blocage au niveau DNS (la fonction principale de Pi-hole)
  • Les fonctionnalités de serveur DHCP
  • La journalisation et les statistiques des requêtes
  • L'API avec laquelle l'interface web communique

Voici le détail clé : FTLDNS génère les fichiers de configuration dnsmasq à partir des paramètres fournis par l'utilisateur via son API. Si vous modifiez le serveur DNS amont dans le panneau d'administration Pi-hole, FTLDNS écrit cette valeur dans un fichier de configuration dnsmasq et redémarre le service. C'est dans ce chemin d'écriture que se trouve la vulnérabilité.


Analyse approfondie de la vulnérabilité

Comprendre l'architecture

root@kitploit:~
+------------------+            +------------------+               +------------------+
|   Panneau admin  |  API/Web   |  Moteur FTLDNS   | Écriture config|    dnsmasq       |
|    (Interface)   | ---------> |  (pihole-FTL)    | ------------> |   (DNS/DHCP)     |
+------------------+            +------------------+               +------------------+
                                        |                                   |
                                  Lit les paramètres,                 Lit la config,
                                  écrit dans les fichiers             sert DNS/DHCP
                                  de configuration sur disque        au réseau

Lorsqu'un administrateur modifie les serveurs DNS amont via l'interface web ou l'API Pi-hole, le flux est le suivant :

  1. L'interface web envoie une requête à l'API FTLDNS avec la nouvelle valeur de DNS amont
  2. FTLDNS valide l'entrée (ou plutôt, ne parvient pas à la valider correctement)
  3. FTLDNS écrit la valeur dans une directive de configuration dnsmasq
  4. dnsmasq est redémarré et lit la nouvelle configuration

Le point d'injection

Le paramètre dns.upstreams est destiné à accepter des adresses de serveurs DNS comme 8.8.8.8 ou 1.1.1.1. FTLDNS les écrit dans la configuration dnsmasq sous forme de directives server= :

root@kitploit:~
# Entrée normale : "8.8.8.8"
# Génère :
server=8.8.8.8

Le problème : FTLDNS ne neutralise pas les caractères de saut de ligne dans l'entrée. Un attaquant peut injecter \n pour sortir de la directive server= prévue et injecter des lignes de configuration entièrement nouvelles :

root@kitploit:~
# Entrée malveillante : "8.8.8.8\ndhcp-option=6,evil.dns.server"
# Génère :
server=8.8.8.8
dhcp-option=6,evil.dns.server

Cela seul serait déjà préoccupant (détournement DNS via injection d'options DHCP). Mais cela devient pire.

Du saut de ligne au shell — La chaîne d'attaque

dnsmasq prend en charge une directive de configuration appelée dhcp-option qui peut référencer des scripts externes, et plus crucialement, il prend en charge plusieurs directives qui peuvent exécuter des commandes dans des scénarios spécifiques. La chaîne d'exploitation ressemble à ceci :

root@kitploit:~
Étape 1 : L'attaquant s'authentifie sur Pi-hole
        (identifiants par défaut, mot de passe faible, CSRF, session compromise)

Étape 2 : L'attaquant envoie une requête API pour mettre à jour dns.upstreams :

        POST /api/dns/upstream
        {
          "upstreams": ["8.8.8.8\n<directive dnsmasq malveillante>"]
        }

Étape 3 : FTLDNS écrit la valeur dans le fichier de configuration dnsmasq
        sans neutraliser le saut de ligne

Étape 4 : La directive dnsmasq injectée est analysée comme une
        option de configuration légitime

Étape 5 : Selon la directive injectée, l'attaquant obtient :
        - Détournement DNS (redirection de toutes les requêtes DNS)
        - Empoisonnement DHCP (envoi de configurations malveillantes aux clients)
        - Exécution de commandes via les capacités de script de dnsmasq
        - Écriture de fichiers vers des chemins arbitraires

Le point clé est qu'il ne s'agit pas d'exploiter une vulnérabilité de dnsmasq — dnsmasq fonctionne comme prévu. La vulnérabilité réside dans le fait que FTLDNS laisse des entrées non fiables s'infiltrer dans le fichier de configuration, transformant une API de gestion de configuration en point d'injection de configuration arbitraire.

La famille complète — Cinq vecteurs d'injection

Le chercheur (T0X1Cx) a découvert que le même modèle d'injection de saut de ligne affecte cinq paramètres de configuration FTLDNS différents. Il s'agit d'un problème systémique — le code manquait de neutralisation des entrées dans l'ensemble :

AvisParamètreCe qu'il contrôle
GHSA-23w8-7333-p9fjdns.upstreamsServeurs DNS amont
GHSA-wxhv-w77q-6qwpdns.hostRecordEnregistrements DNS hôtes personnalisés
GHSA-28g5-gg88-wh5mdns.cnameRecordsMappages d'enregistrements CNAME
GHSA-fqv2-qhfh-ghcjdhcp.leaseTimeDurée des baux DHCP
GHSA-vfmq-jrx3-wv3cdhcp.hostsAttributions DHCP statiques d'hôtes

Chacun de ces paramètres écrit dans les fichiers de configuration dnsmasq, et chacun n'a pas neutralisé les caractères de saut de ligne. Le correctif dans FTL v6.6 a ajouté une validation d'entrée appropriée qui rejette les caractères de saut de ligne (et autres caractères de contrôle) sur tous les paramètres de configuration.


Analyse d'impact

Sur l'hôte Pi-hole :

  • Exécution complète de commandes avec les privilèges du processus FTLDNS (généralement root ou utilisateur pihole)
  • Étant donné que Pi-hole s'exécute souvent sur des appareils dédiés (Raspberry Pi) ou en tant que conteneur privilégié, cela signifie fréquemment un accès root
  • Accès en lecture/écriture au système de fichiers de l'hôte
  • Persistance via des tâches cron, des clés SSH ou des fichiers système modifiés

Sur le réseau (impact en aval) :

  • Détournement DNS — redirection de toutes les requêtes DNS vers des serveurs contrôlés par l'attaquant
  • Empoisonnement DHCP — envoi de paramètres DNS, passerelle ou NTP malveillants à tous les clients DHCP
  • Position d'homme du milieu — en contrôlant le DNS, l'attaquant peut rediriger le trafic de n'importe quel domaine
  • Collecte d'identifiants — redirection des points de terminaison d'authentification vers des serveurs de phishing
  • Distribution de logiciels malveillants — redirection des domaines de mise à jour logicielle pour servir des charges utiles malveillantes

Facteurs d'amplification du risque :

  • Pi-hole est souvent le seul serveur DNS du réseau — le compromettre permet de contrôler la résolution de noms pour chaque appareil
  • De nombreuses installations Pi-hole utilisent des mots de passe administrateur par défaut ou faibles
  • Les instances Pi-hole sont fréquemment exposées à l'ensemble du réseau local, pas seulement aux administrateurs
  • Les attaques CSRF contre l'interface web Pi-hole pourraient déclencher l'exploitation sans authentification directe

Versions affectées

VersionStatut
FTLDNS 6.6+Corrigé
FTLDNS 6.0 – 6.5Vulnérable
FTLDNS 5.x et antérieuresNon affecté (architecture API différente)

Pour vérifier votre version :

root@kitploit:~
pihole -v
# ou
pihole-FTL --version

Qui est à risque ?

Risque élevé :

  • Instances Pi-hole accessibles depuis des segments réseau non fiables
  • Déploiements utilisant des mots de passe administrateur par défaut ou faibles
  • Pi-hole exposé sur Internet (étonnamment courant sur Shodan)
  • Environnements d'hébergement partagé où plusieurs utilisateurs accèdent au même réseau

Risque modéré :

  • Instances Pi-hole dans des réseaux domestiques bien segmentés avec des mots de passe forts
  • Déploiements derrière un VPN avec authentification multifacteur

Risque plus faible (mais à corriger quand même) :

  • Instances Pi-hole isolées ou déconnectées du réseau
  • Déploiements en lecture seule ou avec API désactivée

Détection

Scanner Python

Le script Python détecte les instances Pi-hole vulnérables via une analyse basée sur la version.

Comment cela fonctionne :

  1. Empreinte — Identifie Pi-hole via les indicateurs de l'interface d'administration (contenu de page, en-têtes)
  2. Requête de version API — Interroge les points de terminaison API Pi-hole v5 et v6 pour obtenir les informations de version FTL
  3. Comparaison de versions — Analyse la chaîne de version FTL et vérifie la plage vulnérable (6.0 ≤ v < 6.6)
  4. CVE associés — Si vulnérable, signale les cinq avis d'injection de saut de ligne associés

Aucune charge utile d'injection n'est envoyée. Le test est entièrement en lecture seule et sûr.

Utilisation :

root@kitploit:~
# Installer les dépendances
pip install -r requirements.txt

# Cible unique (HTTP, port par défaut 80)
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 192.168.1.1

# Port personnalisé
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t pi.hole -p 8080

# Mode HTTPS (bascule automatique vers le port 443)
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 10.0.0.1 --https

# Analyse groupée depuis un fichier
python CVE-2026-35517_PiHole_FTLDNS_detector.py -f targets.txt

# Sortie JSON enregistrée dans un fichier
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 192.168.1.1 --json -o results.json

# Délai d'attente augmenté
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 192.168.1.1 --timeout 20

Options :

OptionDescriptionDéfaut
-t, --targetIP ou nom d'hôte cible—
-f, --fileFichier avec les cibles, une par ligne (commentaires # pris en charge)—
-p, --portPort cible80
--httpsUtiliser HTTPS (bascule automatique du port vers 443 si le port est 80)Désactivé
--timeoutDélai d'attente de connexion en secondes10
--jsonSortie au format JSONDésactivé
-o, --outputEnregistrer les résultats dans un fichier—

Exemple de sortie :

root@kitploit:~
╔══════════════════════════════════════════════════════════════╗
║  CVE-2026-35517 - Détecteur RCE Pi-hole FTLDNS               ║
║  Injection de saut de ligne dans dns.upstreams → Exécution   ║
║  de commandes                                                ║
║  CVSS : 8.8 (Élevé) | Affecte : FTLDNS 6.0 - 6.5             ║
╚══════════════════════════════════════════════════════════════╝

[*] Analyse de 192.168.1.1:80...

Cible : 192.168.1.1:80
============================================================
  [*] Pi-hole détecté
      Interface d'administration : Accessible
      API accessible :  Oui
      Version FTL :     v6.4
      Version Core :    v6.3
      Version Web :     v6.4

  Évaluation CVE-2026-35517 :
    [VULNÉRABLE] FTLDNS 6.4 est dans la plage vulnérable (6.0 - 6.5).
    Mettez à niveau vers FTL v6.6 ou ultérieur immédiatement.

  Vulnérabilités associées (également corrigées dans FTL v6.6) :
    [-] GHSA-wxhv-w77q-6qwp : RCE via injection de saut de ligne dns.hostRecord
    [-] GHSA-28g5-gg88-wh5m : RCE via injection de saut de ligne dns.cnameRecords
    [-] GHSA-fqv2-qhfh-ghcj : RCE via injection de saut de ligne dhcp.leaseTime
    [-] GHSA-vfmq-jrx3-wv3c : RCE via injection de saut de ligne dhcp.hosts

  Remédiation :
    1. Mettez à niveau Pi-hole FTL vers la version 6.6 ou ultérieure
    2. Exécutez : pihole -up
    3. Vérifiez avec : pihole -v
    4. Examinez les contrôles d'accès API et les paramètres d'authentification
    5. Vérifiez les journaux pour détecter des signes d'exploitation (modifications DNS inhabituelles)

Script Nmap NSE

root@kitploit:~
# Installer le script NSE
sudo cp CVE-2026-35517_PiHole_FTLDNS.nse /usr/share/nmap/scripts/
sudo nmap --script-updatedb

# Analyse de base
nmap -p 80 --script CVE-2026-35517_PiHole_FTLDNS <cible>

# Analyser les ports Pi-hole courants
nmap -p 80,443,8080,4711 --script CVE-2026-35517_PiHole_FTLDNS <cible>

# Analyse de sous-réseau — trouver toutes les instances Pi-hole sur un réseau
nmap -p 80 --script CVE-2026-35517_PiHole_FTLDNS 192.168.1.0/24

# Combiné avec la détection de version
nmap -sV -p 80,443 --script CVE-2026-35517_PiHole_FTLDNS <cible>

# Analyser les cibles depuis un fichier
nmap -p 80 --script CVE-2026-35517_PiHole_FTLDNS -iL targets.txt

Exemple de sortie Nmap :

root@kitploit:~
PORT   STATE SERVICE
80/tcp open  http
| CVE-2026-35517_PiHole_FTLDNS:
|   VULNÉRABLE :
|   RCE Pi-hole FTLDNS via configuration DNS amont
|     État : VULNÉRABLE
|     ID :  CVE:CVE-2026-35517
|     Facteur de risque : Élevé (CVSS : 8.8)
|     Date de divulgation : 2026-04-07
|     Informations supplémentaires :
|       Version FTL : v6.4
|       Version Core : v6.3
|       Version Web : v6.4
|       Avis associés également corrigés dans FTL v6.6 :
|         GHSA-wxhv-w77q-6qwp (injection dns.hostRecord)
|         GHSA-28g5-gg88-wh5m (injection dns.cnameRecords)
|         GHSA-fqv2-qhfh-ghcj (injection dhcp.leaseTime)
|         GHSA-vfmq-jrx3-wv3c (injection dhcp.hosts)
|       Remédiation : Mettez à niveau vers Pi-hole FTL v6.6+ (pihole -up)
|     Références :
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-35517
|_      https://github.com/pi-hole/FTL/security/advisories/GHSA-23w8-7333-p9fj

Vérification manuelle de la version

Si vous avez un accès SSH à l'hôte Pi-hole :

root@kitploit:~
# Vérifier la version FTL
pihole-FTL --version

# Ou via l'interface CLI Pi-hole
pihole -v

# Vérifier via l'API (v6)
curl -s http://pi.hole/api/info/version | python3 -m json.tool

# Vérifier via l'API (v5)
curl -s http://pi.hole/admin/api.php?versions | python3 -m json.tool

Si la version FTL est comprise entre 6.0 et 6.5 (inclus), vous êtes vulnérable.


Indicateurs de compromission

Ce qu'il faut rechercher :

  • Entrées de configuration dnsmasq inhabituelles — Vérifiez /etc/dnsmasq.d/ et /etc/pihole/ pour des directives inattendues
  • Paramètres DNS amont modifiés — Vérifiez que vos serveurs amont configurés n'ont pas été changés
  • Appels API inattendus — Examinez le journal des requêtes et les journaux d'accès API de Pi-hole pour des demandes de modification de configuration
  • Comportement DNS anormal — Des clients résolvant des domaines vers des adresses IP inattendues
  • Nouvelles tâches cron ou clés SSH — Si l'hôte a été compromis via l'exécution de commandes
  • Anomalies de processus — Processus enfants inattendus générés par dnsmasq ou pihole-FTL

Commandes pour enquêter :

root@kitploit:~
# Vérifier les configurations dnsmasq pour des lignes injectées
grep -r "dhcp-option\|addn-hosts\|conf-file\|log-facility" /etc/dnsmasq.d/

# Vérifier les modifications récentes de configuration
find /etc/pihole /etc/dnsmasq.d -mtime -7 -ls

# Examiner le journal de débogage de Pi-hole
pihole -d

# Vérifier les processus en cours pour des anomalies
ps aux | grep -E "dnsmasq|pihole"

# Examiner le crontab pour la persistance
crontab -l
cat /etc/crontab
ls -la /etc/cron.d/

Remédiation

Action immédiate — mettez à niveau maintenant :

root@kitploit:~
# Mettre à jour Pi-hole (inclut FTL, Web et Core)
pihole -up

# Vérifier la mise à jour
pihole -v
# La version FTL doit être >= 6.6

Si vous ne pouvez pas mettre à niveau immédiatement :

  1. Restreignez l'accès API — Configurez Pi-hole pour n'accepter les connexions API que depuis des IP de confiance
  2. Changez le mot de passe administrateur — Utilisez un mot de passe fort et unique : pihole -a -p
  3. Isolement réseau — Assurez-vous que l'interface d'administration Pi-hole n'est accessible que depuis un VLAN de gestion
  4. Désactivez l'API distante — Si vous n'utilisez que l'interface web locale, restreignez l'API à localhost

Actions post-correctif :

  1. Auditez la configuration DNS — Examinez tous les fichiers de configuration dnsmasq pour des directives injectées
  2. Vérifiez les serveurs amont — Confirmez que vos paramètres DNS amont sont corrects
  3. Vérifiez la persistance — Recherchez des tâches cron non autorisées, des clés SSH ou des fichiers système modifiés
  4. Examinez les baux DHCP — Si le DHCP est géré par Pi-hole, vérifiez les configurations de bail
  5. Surveillez le comportement DNS — Surveillez les schémas de résolution anormaux dans les prochains jours

Références

  • Avis de sécurité GitHub — GHSA-23w8-7333-p9fj (dns.upstreams)
  • Avis de sécurité GitHub — GHSA-wxhv-w77q-6qwp (dns.hostRecord)
  • Avis de sécurité GitHub — GHSA-28g5-gg88-wh5m (dns.cnameRecords)
  • Avis de sécurité GitHub — GHSA-fqv2-qhfh-ghcj (dhcp.leaseTime)
  • Avis de sécurité GitHub — GHSA-vfmq-jrx3-wv3c (dhcp.hosts)
  • Notes de version Pi-hole FTL v6.6

Auteur

Kerem Oruç — Ingénieur en cybersécurité

  • GitHub : @keraattin
  • Twitter : @keraattin
Télécharger l’outil