Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-35517 — Pi-hole FTLDNS RCE(CVE-2026-35517) 개행 삽입 취약점 탐지 스크립트로, 버전 기반 취약점 평가를 위한 Python 스캐너와 Nmap NSE 스크립트를 포함합니다. | Kitploit
도구/GitHubGitHub/keraattin/cve-2026-35517
Vulnerability ScannersExploitationInformation GatheringWeb SecurityNetwork SecurityPenetration Testing
GitHubkeraattin/cve-2026-35517

CVE-2026-35517

Pi-hole FTLDNS RCE(CVE-2026-35517) 개행 삽입 취약점 탐지 스크립트로, 버전 기반 취약점 평가를 위한 Python 스캐너와 Nmap NSE 스크립트를 포함합니다.

저장소 보기
175개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-35517 - Pi-hole FTLDNS 개행 문자 주입을 통한 원격 코드 실행

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

TL;DR

Pi-hole의 FTLDNS 엔진(버전 6.0~6.5)에서 원격 코드 실행 취약점이 발견되었습니다. 인증된 공격자가 dns.upstreams API 파라미터에 개행 문자(\n)를 삽입하여 임의의 dnsmasq 구성 지시문을 주입할 수 있습니다. dnsmasq는 셸 명령을 실행하는 지시문을 지원하므로, 이 개행 문자 주입은 호스트 시스템에서의 전체 명령 실행으로 직접 이어집니다.

이것은 단일 버그가 아니라 다섯 가지 서로 다른 구성 파라미터에 영향을 미치는 주입 클래스이며, 모두 FTL v6.6에서 함께 패치되었습니다.


목차

  • 빠른 요약
  • Pi-hole FTLDNS란 무엇인가?
  • 취약점 심층 분석
    • 아키텍처 이해
    • 주입 지점
    • 개행 문자에서 셸까지 — 킬 체인
    • 전체 계열 — 다섯 가지 주입 벡터
  • 영향 분석
  • 영향받는 버전
  • 위험에 처한 대상
  • 탐지
    • Python 스캐너
    • Nmap NSE 스크립트
    • 수동 버전 확인
  • 침해 지표
  • 수정 조치
  • 참고 자료
  • 작성자

빠른 요약

필드세부 정보
CVE IDCVE-2026-35517
공급업체Pi-hole 프로젝트
제품FTLDNS (pihole-FTL)
영향받는 버전6.0 ~ 6.6 미만
CVSS v3.18.8 (높음)
CWECWE-93 — CRLF 시퀀스의 부적절한 중화
공격 벡터네트워크
인증필요 (Pi-hole 관리자/API 접근)
사용자 상호작용없음
공개일2026년 4월 7일
패치 버전FTL v6.6 (2026년 4월 3일 출시)
발견자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 싱크홀 중 하나입니다. 네트워크에 위치하여 DNS 쿼리를 처리하고, 광고와 추적기가 브라우저에 도달하기 전에 DNS 수준에서 차단합니다. 아파트의 단일 Raspberry Pi 설정부터 수천 대의 장치를 보호하는 엔터프라이즈 배포까지 다양한 환경에서 사용됩니다.

FTLDNS (Faster Than Light DNS)는 Pi-hole의 핵심 엔진입니다. 잘 알려진 DNS 및 DHCP 서버인 dnsmasq를 기반으로 한 커스텀 포크/래퍼입니다. FTLDNS는 다음을 처리합니다:

  • DNS 쿼리 해석 및 캐싱
  • DNS 수준 차단 (Pi-hole의 핵심 기능)
  • DHCP 서버 기능
  • 쿼리 로깅 및 통계
  • 웹 인터페이스가 통신하는 API

핵심 세부 사항은 다음과 같습니다: FTLDNS는 API를 통해 사용자가 제공한 설정에서 dnsmasq 구성 파일을 생성합니다. Pi-hole 관리 패널에서 업스트림 DNS 서버를 변경하면 FTLDNS가 해당 값을 dnsmasq 구성 파일에 쓰고 서비스를 다시 시작합니다. 취약점은 바로 이 쓰기 경로에 존재합니다.


취약점 심층 분석

아키텍처 이해

+------------------+            +------------------+               +------------------+
|   관리 패널      |  API/Web   |   FTLDNS 엔진    | 구성 쓰기      |    dnsmasq       |
|    (Web UI)      | ---------> |  (pihole-FTL)    | ------------> |   (DNS/DHCP)     |
+------------------+            +------------------+               +------------------+
                                        |                                   |
                                  설정을 읽고,                        구성을 읽고,
                                  디스크의 구성                     네트워크에 DNS/DHCP
                                  파일에 씀                           서비스 제공

관리자가 Pi-hole 웹 UI 또는 API를 통해 업스트림 DNS 서버를 변경하면 흐름은 다음과 같습니다:

  1. 웹 UI가 새 업스트림 DNS 값과 함께 FTLDNS API에 요청을 보냅니다
  2. FTLDNS가 입력을 검증합니다 (또는 오히려 제대로 검증하지 못합니다)
  3. FTLDNS가 값을 dnsmasq 구성 지시문에 씁니다
  4. dnsmasq가 다시 시작되고 새 구성을 읽습니다

주입 지점

dns.upstreams 파라미터는 8.8.8.8 또는 1.1.1.1과 같은 DNS 서버 주소를 수용하도록 설계되었습니다. FTLDNS는 이를 dnsmasq 구성에 server= 지시문으로 씁니다:

# 정상 입력: "8.8.8.8"
# 생성 결과:
server=8.8.8.8

문제는 다음과 같습니다: FTLDNS는 입력의 개행 문자를 살균하지 않습니다. 공격자는 \n을 주입하여 의도된 server= 지시문에서 벗어나 완전히 새로운 구성 줄을 주입할 수 있습니다:

# 악성 입력: "8.8.8.8\ndhcp-option=6,evil.dns.server"
# 생성 결과:
server=8.8.8.8
dhcp-option=6,evil.dns.server

이것만으로도 우려되는 상황입니다 (DHCP 옵션 주입을 통한 DNS 하이재킹). 하지만 더 심각해집니다.

개행 문자에서 셸까지 — 킬 체인

dnsmasq는 외부 스크립트를 참조할 수 있는 dhcp-option이라는 구성 지시문을 지원하며, 더 중요하게는 특정 시나리오에서 명령을 실행할 수 있는 여러 지시문을 지원합니다. 공격 체인은 다음과 같습니다:

1단계: 공격자가 Pi-hole에 인증합니다
        (기본 자격 증명, 약한 비밀번호, CSRF, 세션 탈취)

2단계: 공격자가 dns.upstreams를 업데이트하는 API 요청을 보냅니다:
        
        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.cnameRecordsCNAME 레코드 매핑
GHSA-fqv2-qhfh-ghcjdhcp.leaseTimeDHCP 임대 기간
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 중독 — 모든 DHCP 클라이언트에 악성 DNS, 게이트웨이 또는 NTP 설정 푸시
  • 중간자 공격 위치 — DNS를 제어함으로써 공격자는 모든 도메인의 트래픽을 리디렉션할 수 있습니다
  • 자격 증명 수집 — 인증 엔드포인트를 피싱 서버로 리디렉션
  • 악성코드 배포 — 악성 페이로드를 제공하도록 소프트웨어 업데이트 도메인 리디렉션

위험 증폭 요인:

  • Pi-hole은 종종 네트워크의 유일한 DNS 서버입니다. 이를 손상시키면 모든 장치의 이름 해석을 제어하게 됩니다
  • 많은 Pi-hole 설치가 기본 또는 약한 관리자 비밀번호를 사용합니다
  • Pi-hole 인스턴스는 관리자뿐만 아니라 전체 로컬 네트워크에 노출되는 경우가 많습니다
  • Pi-hole 웹 인터페이스에 대한 CSRF 공격은 직접 인증 없이도 악용을 트리거할 수 있습니다

영향받는 버전

버전상태
FTLDNS 6.6+패치됨
FTLDNS 6.0 – 6.5취약
FTLDNS 5.x 및 이전영향 없음 (다른 API 아키텍처)

버전 확인 방법:

pihole -v
# 또는
pihole-FTL --version

위험에 처한 대상

높은 위험:

  • 신뢰할 수 없는 네트워크 세그먼트에서 접근 가능한 Pi-hole 인스턴스
  • 기본 또는 약한 관리자 비밀번호를 사용하는 배포
  • 인터넷에 노출된 Pi-hole (Shodan에서 놀라울 정도로 흔함)
  • 여러 사용자가 동일한 네트워크에 접근하는 공유 호스팅 환경

중간 위험:

  • 강력한 비밀번호를 사용하는 잘 분리된 홈 네트워크의 Pi-hole 인스턴스
  • 다중 요소 인증이 있는 VPN 뒤의 배포

낮은 위험 (그래도 패치 필요):

  • 에어갭 또는 완전히 격리된 Pi-hole 인스턴스
  • 읽기 전용 또는 API 비활성화 배포

탐지

Python 스크래너

Python 스크립트는 버전 기반 분석을 통해 취약한 Pi-hole 인스턴스를 탐지합니다.

작동 방식:

  1. 핑거프린팅 — 관리 인터페이스 지표(페이지 콘텐츠, 헤더)를 통해 Pi-hole 식별
  2. API 버전 쿼리 — Pi-hole v5 및 v6 API 엔드포인트 모두에서 FTL 버전 정보 쿼리
  3. 버전 비교 — FTL 버전 문자열을 파싱하여 취약 범위(6.0 ≤ v < 6.6)와 대조
  4. 관련 CVE — 취약한 경우 다섯 가지 관련 개행 문자 주입 권고 모두 플래그 지정

주입 페이로드는 전송되지 않습니다. 테스트는 완전히 읽기 전용이며 안전합니다.

사용법:

# 의존성 설치
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
--httpsHTTPS 사용 (포트가 80이면 443으로 자동 전환)꺼짐
--timeout연결 타임아웃(초)10
--jsonJSON 형식으로 출력꺼짐
-o, --output결과를 파일로 저장—

출력 예시:

도구 다운로드