Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-35517 — Скрипты обнаружения для Pi-hole FTLDNS RCE (CVE-2026-35517) через инъекцию перевода строки, включая сканер на Python и Nmap NSE-скрипт для оценки уязвимости на основе версии. | Kitploit
Инструменты/GitHubGitHub/keraattin/cve-2026-35517
Сканеры уязвимостейЭксплуатацияСбор информацииВеб-безопасностьСетевая безопасностьТестирование на Проникновение
GitHubkeraattin/cve-2026-35517

CVE-2026-35517

Скрипты обнаружения для Pi-hole FTLDNS RCE (CVE-2026-35517) через инъекцию перевода строки, включая сканер на Python и Nmap NSE-скрипт для оценки уязвимости на основе версии.

Репозиторий
4 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-35517 — Удалённое выполнение кода в Pi-hole FTLDNS через инъекцию символа новой строки

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

TL;DR

Удалённое выполнение кода в движке FTLDNS от Pi-hole (версии 6.0–6.5) позволяет аутентифицированному злоумышленнику внедрять произвольные директивы конфигурации dnsmasq, встраивая символы новой строки (\n) в параметр API dns.upstreams. Поскольку dnsmasq поддерживает директивы, выполняющие команды оболочки, эта инъекция новой строки напрямую приводит к полному выполнению команд на хост-системе.

Это не просто отдельная ошибка, а целый класс инъекций, затрагивающий пять различных параметров конфигурации, все из которых были исправлены вместе в FTL v6.6.


Содержание

  • Краткие факты
  • Что такое Pi-hole FTLDNS?
  • Подробный анализ уязвимости
    • Понимание архитектуры
    • Точка инъекции
    • От новой строки к оболочке — цепочка атаки
    • Полное семейство — пять векторов инъекции
  • Анализ воздействия
  • Затронутые версии
  • Кто в зоне риска?
  • Обнаружение
    • Сканер на Python
    • NSE-скрипт для Nmap
    • Ручная проверка версии
  • Индикаторы компрометации
  • Устранение
  • Ссылки
  • Автор

Краткие факты

ПолеДетали
ID CVECVE-2026-35517
ВендорPi-hole Project
ПродуктFTLDNS (pihole-FTL)
Затронутые версии6.0 до < 6.6
CVSS v3.18.8 (Высокий)
CWECWE-93 — Некорректная нейтрализация CRLF-последовательностей
Вектор атакиСеть
АутентификацияТребуется (доступ к админ-панели/API Pi-hole)
Взаимодействие с пользователемНет
Опубликовано7 апреля 2026 г.
Исправлено вFTL v6.6 (выпущена 3 апреля 2026 г.)
ОбнаружилT0X1Cx
Связанные уведомленияGHSA-23w8-7333-p9fj, GHSA-wxhv-w77q-6qwp, GHSA-28g5-gg88-wh5m, GHSA-fqv2-qhfh-ghcj, GHSA-vfmq-jrx3-wv3c

Что такое Pi-hole FTLDNS?

Pi-hole — один из самых широко развёрнутых DNS-сверхфильтров (sinkhole) в мире. Он работает в вашей сети, обрабатывает DNS-запросы и блокирует рекламу и трекеры на уровне DNS, прежде чем они достигнут вашего браузера. Он используется повсюду: от одиночных Raspberry Pi в квартирах до корпоративных развёртываний, защищающих тысячи устройств.

FTLDNS (Faster Than Light DNS) — это основной движок Pi-hole. Это собственная модификация/обёртка вокруг dnsmasq, известного DNS- и DHCP-сервера. FTLDNS отвечает за:

  • Обработку и кэширование DNS-запросов
  • Блокировку на уровне DNS (основная функция Pi-hole)
  • Функциональность DHCP-сервера
  • Журналирование запросов и статистику
  • API, с которым взаимодействует веб-интерфейс

Вот ключевая деталь: FTLDNS генерирует файлы конфигурации dnsmasq из пользовательских настроек через свой API. Если вы меняете вышестоящий DNS-сервер в админ-панели Pi-hole, FTLDNS записывает это значение в файл конфигурации dnsmasq и перезапускает службу. Именно в этом пути записи и находится уязвимость.


Подробный анализ уязвимости

Понимание архитектуры

root@kitploit:~
+------------------+            +------------------+               +------------------+
|   Панель         |  API/Web   |   Движок FTLDNS  | Запись конфиг.|    dnsmasq       |
|   администратора | ---------> |  (pihole-FTL)    | ------------> |   (DNS/DHCP)     |
|    (Web UI)      |            +------------------+               +------------------+
+------------------+                                        |                                   |
                                  Читает настройки,                     Читает конфигурацию,
                                  записывает конфигурацию              обслуживает DNS/DHCP
                                  файлы на диск                        для сети

Когда администратор меняет вышестоящие DNS-серверы через веб-интерфейс или API Pi-hole, поток выглядит так:

  1. Веб-интерфейс отправляет запрос к API FTLDNS с новым значением вышестоящего DNS
  2. FTLDNS проверяет ввод (или, точнее, не проверяет его должным образом)
  3. FTLDNS записывает значение в директиву конфигурации dnsmasq
  4. dnsmasq перезапускается и читает новую конфигурацию

Точка инъекции

Параметр dns.upstreams предназначен для приёма адресов DNS-серверов, таких как 8.8.8.8 или 1.1.1.1. FTLDNS записывает их в конфигурацию dnsmasq как директивы server=:

root@kitploit:~
# Обычный ввод: "8.8.8.8"
# Генерирует:
server=8.8.8.8

Проблема: FTLDNS не очищает символы новой строки во вводе. Злоумышленник может внедрить \n, чтобы выйти за пределы предполагаемой директивы server= и внедрить совершенно новые строки конфигурации:

root@kitploit:~
# Вредоносный ввод: "8.8.8.8\ndhcp-option=6,evil.dns.server"
# Генерирует:
server=8.8.8.8
dhcp-option=6,evil.dns.server

Уже одно это вызывало бы беспокойство (угон DNS через инъекцию DHCP-опций). Но становится ещё хуже.

От новой строки к оболочке — цепочка атаки

dnsmasq поддерживает директиву конфигурации под названием dhcp-option, которая может ссылаться на внешние скрипты, и, что более важно, поддерживает несколько директив, которые могут выполнять команды в определённых сценариях. Цепочка эксплуатации выглядит так:

root@kitploit:~
Шаг 1: Злоумышленник аутентифицируется в Pi-hole 
        (учётные данные по умолчанию, слабый пароль, CSRF, скомпрометированная сессия)

Шаг 2: Злоумышленник отправляет API-запрос на обновление dns.upstreams:
        
        POST /api/dns/upstream
        {
          "upstreams": ["8.8.8.8\n<вредоносная директива dnsmasq>"]
        }

Шаг 3: FTLDNS записывает значение в файл конфигурации dnsmasq 
        без очистки символа новой строки

Шаг 4: Внедрённая директива dnsmasq интерпретируется как 
        легитимный параметр конфигурации

Шаг 5: В зависимости от внедрённой директивы злоумышленник достигает:
        - Угона DNS (перенаправление всех DNS-запросов)
        - Отравления DHCP (отправка вредоносных конфигураций клиентам)
        - Выполнения команд через скриптовые возможности dnsmasq
        - Записи файлов в произвольные пути

Ключевой вывод: это не эксплуатация уязвимости dnsmasq — dnsmasq работает как задумано. Уязвимость в том, что FTLDNS позволяет недоверенному вводу просачиваться в файл конфигурации, превращая API управления конфигурацией в точку произвольной инъекции конфигурации.

Полное семейство — пять векторов инъекции

Исследователь (T0X1Cx) обнаружил, что тот же паттерн инъекции новой строки затрагивает пять различных параметров конфигурации FTLDNS. Это системная проблема — коду не хватало очистки ввода во всех местах:

УведомлениеПараметрЧто он контролирует
GHSA-23w8-7333-p9fjdns.upstreamsВышестоящие DNS-серверы
GHSA-wxhv-w77q-6qwpdns.hostRecordПользовательские DNS-записи хостов
GHSA-28g5-gg88-wh5mdns.cnameRecordsСопоставления CNAME-записей
GHSA-fqv2-qhfh-ghcjdhcp.leaseTimeПродолжительность DHCP-аренды
GHSA-vfmq-jrx3-wv3cdhcp.hostsСтатические назначения DHCP-хостов

Каждый из этих параметров записывается в файлы конфигурации dnsmasq, и каждый не очищал символы новой строки. Исправление в FTL v6.6 добавило надлежащую проверку ввода, которая отклоняет символы новой строки (и другие управляющие символы) во всех параметрах конфигурации.


Анализ воздействия

На хост-системе Pi-hole:

  • Полное выполнение команд с привилегиями процесса FTLDNS (обычно root или пользователь pihole)
  • Поскольку Pi-hole часто работает на выделенных устройствах (Raspberry Pi) или как привилегированный контейнер, это часто означает доступ root
  • Доступ на чтение/запись файлов в файловой системе хоста
  • Постоянство через cron-задания, SSH-ключи или изменённые системные файлы

В сети (нисходящее воздействие):

  • Угон DNS — перенаправление всех DNS-запросов на серверы, контролируемые злоумышленником
  • Отравление DHCP — отправка вредоносных DNS, шлюзов или NTP-настроек всем DHCP-клиентам
  • Позиционирование «человек посередине» — контролируя DNS, злоумышленник может перенаправлять трафик для любого домена
  • Сбор учётных данных — перенаправление конечных точек аутентификации на фишинговые серверы
  • Распространение вредоносного ПО — перенаправление доменов обновления ПО для доставки вредоносных нагрузок

Факторы усиления риска:

  • Pi-hole часто является единственным DNS-сервером в сети — скомпрометируйте его, и вы контролируете разрешение имён для каждого устройства
  • Многие установки Pi-hole используют пароли администратора по умолчанию или слабые пароли
  • Экземпляры Pi-hole часто доступны всей локальной сети, а не только администраторам
  • CSRF-атаки на веб-интерфейс Pi-hole могут вызвать эксплуатацию без прямой аутентификации

Затронутые версии

ВерсияСтатус
FTLDNS 6.6+Исправлено
FTLDNS 6.0 – 6.5Уязвимо
FTLDNS 5.x и более ранниеНе затронуты (другая архитектура API)

Чтобы проверить свою версию:

root@kitploit:~
pihole -v
# или
pihole-FTL --version

Кто в зоне риска?

Высокий риск:

  • Экземпляры Pi-hole, доступные из недоверенных сетевых сегментов
  • Развёртывания с паролями администратора по умолчанию или слабыми паролями
  • Pi-hole, доступный из интернета (на удивление часто встречается на Shodan)
  • Среды общего хостинга, где несколько пользователей имеют доступ к одной сети

Умеренный риск:

  • Экземпляры Pi-hole в хорошо сегментированных домашних сетях с надёжными паролями
  • Развёртывания за VPN с многофакторной аутентификацией

Более низкий риск (но всё равно обновитесь):

  • Изолированные (air-gapped) или полностью изолированные экземпляры Pi-hole
  • Развёртывания с режимом только для чтения или отключённым API

Обнаружение

Сканер на Python

Скрипт на Python обнаруживает уязвимые экземпляры Pi-hole на основе анализа версии.

Как это работает:

  1. Снятие отпечатков — Идентифицирует Pi-hole по индикаторам админ-интерфейса (содержимое страницы, заголовки)
  2. Запрос версии API — Запрашивает конечные точки API Pi-hole v5 и v6 для получения информации о версии FTL
  3. Сравнение версий — Разбирает строку версии FTL и проверяет её на попадание в уязвимый диапазон (6.0 ≤ v < 6.6)
  4. Связанные CVE — Если уязвим, помечает все пять связанных уведомлений об инъекции новой строки

Никакие инъекционные нагрузки не отправляются. Тест полностью только для чтения и безопасен.

Использование:

root@kitploit:~
# Установка зависимостей
pip install -r requirements.txt

# Одиночная цель (HTTP, порт по умолчанию 80)
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 192.168.1.1

# Пользовательский порт
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t pi.hole -p 8080

# Режим HTTPS (автоматически переключается на порт 443)
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 10.0.0.1 --https

# Массовое сканирование из файла
python CVE-2026-35517_PiHole_FTLDNS_detector.py -f targets.txt

# Вывод JSON, сохранённый в файл
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 192.168.1.1 --json -o results.json

# Увеличенный таймаут
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 192.168.1.1 --timeout 20

Параметры:

ФлагОписаниеПо умолчанию
-t, --targetЦелевой IP или имя хоста—
-f, --fileФайл с целями, по одной на строку (поддерживаются комментарии #)—
-p, --portЦелевой порт80
--httpsИспользовать HTTPS (автоматически переключает порт на 443, если порт 80)Выкл.
--timeoutТаймаут соединения в секундах10
--jsonВывод в формате JSONВыкл.
-o, --outputСохранить результаты в файл—

Пример вывода:

root@kitploit:~
╔══════════════════════════════════════════════════════════════╗
║  CVE-2026-35517 - Детектор RCE Pi-hole FTLDNS                ║
║  Инъекция новой строки в dns.upstreams → Выполнение команд   ║
║  CVSS: 8.8 (Высокий) | Затрагивает: FTLDNS 6.0 - 6.5         ║
╚══════════════════════════════════════════════════════════════╝

[*] Сканирование 192.168.1.1:80...

Цель: 192.168.1.1:80
============================================================
  [*] Pi-hole обнаружен
      Админ-интерфейс: Доступен
      API доступен:    Да
      Версия FTL:      v6.4
      Версия Core:     v6.3
      Версия Web:      v6.4

  Оценка CVE-2026-35517:
    [УЯЗВИМО] FTLDNS 6.4 находится в уязвимом диапазоне (6.0 - 6.5).
    Немедленно обновитесь до FTL v6.6 или новее.

  Связанные уязвимости (также исправлены в FTL v6.6):
    [-] GHSA-wxhv-w77q-6qwp: RCE через инъекцию новой строки в dns.hostRecord
    [-] GHSA-28g5-gg88-wh5m: RCE через инъекцию новой строки в dns.cnameRecords
    [-] GHSA-fqv2-qhfh-ghcj: RCE через инъекцию новой строки в dhcp.leaseTime
    [-] GHSA-vfmq-jrx3-wv3c: RCE через инъекцию новой строки в dhcp.hosts

  Устранение:
    1. Обновите Pi-hole FTL до версии 6.6 или новее
    2. Выполните: pihole -up
    3. Проверьте с помощью: pihole -v
    4. Проверьте контроль доступа к API и настройки аутентификации
    5. Проверьте журналы на признаки эксплуатации (необычные изменения DNS-конфигурации)

NSE-скрипт для Nmap

root@kitploit:~
# Установка NSE-скрипта
sudo cp CVE-2026-35517_PiHole_FTLDNS.nse /usr/share/nmap/scripts/
sudo nmap --script-updatedb

# Базовое сканирование
nmap -p 80 --script CVE-2026-35517_PiHole_FTLDNS <цель>

# Сканирование распространённых портов Pi-hole
nmap -p 80,443,8080,4711 --script CVE-2026-35517_PiHole_FTLDNS <цель>

# Сканирование подсети — поиск всех экземпляров Pi-hole в сети
nmap -p 80 --script CVE-2026-35517_PiHole_FTLDNS 192.168.1.0/24

# В сочетании с определением версии
nmap -sV -p 80,443 --script CVE-2026-35517_PiHole_FTLDNS <цель>

# Сканирование целей из файла
nmap -p 80 --script CVE-2026-35517_PiHole_FTLDNS -iL targets.txt

Пример вывода Nmap:

root@kitploit:~
PORT   STATE SERVICE
80/tcp open  http
| CVE-2026-35517_PiHole_FTLDNS:
|   УЯЗВИМО:
|   RCE Pi-hole FTLDNS через конфигурацию вышестоящего DNS
|     Состояние: УЯЗВИМО
|     ID:  CVE:CVE-2026-35517
|     Фактор риска: Высокий (CVSS: 8.8)
|     Дата раскрытия: 2026-04-07
|     Дополнительная информация:
|       Версия FTL: v6.4
|       Версия Core: v6.3
|       Версия Web: v6.4
|       Связанные уведомления, также исправленные в FTL v6.6:
|         GHSA-wxhv-w77q-6qwp (инъекция в dns.hostRecord)
|         GHSA-28g5-gg88-wh5m (инъекция в dns.cnameRecords)
|         GHSA-fqv2-qhfh-ghcj (инъекция в dhcp.leaseTime)
|         GHSA-vfmq-jrx3-wv3c (инъекция в dhcp.hosts)
|       Устранение: Обновитесь до Pi-hole FTL v6.6+ (pihole -up)
|     Ссылки:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-35517
|_      https://github.com/pi-hole/FTL/security/advisories/GHSA-23w8-7333-p9fj

Ручная проверка версии

Если у вас есть SSH-доступ к хосту Pi-hole:

root@kitploit:~
# Проверка версии FTL
pihole-FTL --version

# Или через CLI Pi-hole
pihole -v

# Проверка через API (v6)
curl -s http://pi.hole/api/info/version | python3 -m json.tool

# Проверка через API (v5)
curl -s http://pi.hole/admin/api.php?versions | python3 -m json.tool

Если версия FTL находится в диапазоне от 6.0 до 6.5 (включительно), вы уязвимы.


Индикаторы компрометации

На что обращать внимание:

  • Необычные записи конфигурации dnsmasq — Проверьте /etc/dnsmasq.d/ и /etc/pihole/ на наличие неожиданных директив
  • Изменённые настройки вышестоящего DNS — Убедитесь, что ваши настроенные вышестоящие серверы не были изменены
  • Неожиданные вызовы API — Просмотрите журнал запросов Pi-hole и журналы доступа к API на предмет запросов на изменение конфигурации
  • Аномальное поведение DNS — Клиенты, разрешающие домены в неожиданные IP-адреса
  • Новые cron-задания или SSH-ключи — Если хост был скомпрометирован через выполнение команд
  • Аномалии процессов — Неожиданные дочерние процессы, порождённые dnsmasq или pihole-FTL

Команды для расследования:

root@kitploit:~
# Проверка конфигураций dnsmasq на внедрённые строки
grep -r "dhcp-option\|addn-hosts\|conf-file\|log-facility" /etc/dnsmasq.d/

# Проверка недавних изменений конфигурации
find /etc/pihole /etc/dnsmasq.d -mtime -7 -ls

# Просмотр отладочного журнала Pi-hole
pihole -d

# Проверка запущенных процессов на аномалии
ps aux | grep -E "dnsmasq|pihole"

# Просмотр crontab на предмет постоянства
crontab -l
cat /etc/crontab
ls -la /etc/cron.d/

Устранение

Немедленное действие — обновитесь сейчас:

root@kitploit:~
# Обновление Pi-hole (включает FTL, Web и Core)
pihole -up

# Проверка обновления
pihole -v
# Версия FTL должна быть >= 6.6

Если вы не можете обновиться немедленно:

  1. Ограничьте доступ к API — Настройте Pi-hole принимать API-соединения только с доверенных IP-адресов
  2. Смените пароль администратора — Используйте надёжный уникальный пароль: pihole -a -p
  3. Сетевая изоляция — Убедитесь, что админ-интерфейс Pi-hole доступен только из управляемой VLAN
  4. Отключите удалённый API — Если вы используете только локальный веб-интерфейс, ограничьте API только localhost

Действия после установки патча:

  1. Проверьте конфигурацию DNS — Просмотрите все файлы конфигурации dnsmasq на предмет внедрённых директив
  2. Проверьте вышестоящие серверы — Убедитесь, что ваши настройки вышестоящего DNS корректны
  3. Проверьте на постоянство — Ищите несанкционированные cron-задания, SSH-ключи или изменённые системные файлы
  4. Просмотрите DHCP-аренды — Если DHCP управляется Pi-hole, проверьте конфигурации аренды
  5. Отслеживайте поведение DNS — Следите за аномальными паттернами разрешения в течение следующих нескольких дней

Ссылки

  • Уведомление GitHub Security — GHSA-23w8-7333-p9fj (dns.upstreams)
  • Уведомление GitHub Security — GHSA-wxhv-w77q-6qwp (dns.hostRecord)
  • Уведомление GitHub Security — GHSA-28g5-gg88-wh5m (dns.cnameRecords)
  • Уведомление GitHub Security — GHSA-fqv2-qhfh-ghcj (dhcp.leaseTime)
  • Уведомление GitHub Security — GHSA-vfmq-jrx3-wv3c (dhcp.hosts)
  • Примечания к выпуску Pi-hole FTL v6.6

Автор

Kerem Oruç — Инженер по кибербезопасности

  • GitHub: @keraattin
  • Twitter: @keraattin
Скачать инструмент