
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.
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 cinq paramètres de configuration différents, tous corrigés ensemble dans FTL v6.6.
| Champ | Détail |
|---|---|
| ID CVE | CVE-2026-35517 |
| Fournisseur | Projet Pi-hole |
| Produit | FTLDNS (pihole-FTL) |
| Versions affectées | 6.0 à < 6.6 |
| CVSS v3.1 | 8.8 (Élevé) |
| CWE | CWE-93 — Neutralisation incorrecte des séquences CRLF |
| Vecteur d'attaque | Réseau |
| Authentification | Requise (accès admin/API Pi-hole) |
| Interaction utilisateur | Aucune |
| Publié | 7 avril 2026 |
| Corrigé dans | FTL v6.6 (publié le 3 avril 2026) |
| Découvert par | T0X1Cx |
| Avis associés | GHSA-23w8-7333-p9fj, GHSA-wxhv-w77q-6qwp, GHSA-28g5-gg88-wh5m, GHSA-fqv2-qhfh-ghcj, GHSA-vfmq-jrx3-wv3c |
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 :
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é.
+------------------+ +------------------+ +------------------+
| 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 :
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= :
# 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 :
# 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.
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 :
É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.
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 :