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

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/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 스크립트를 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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 구성 파일에 쓰고 서비스를 다시 시작합니다. 취약점은 바로 이 쓰기 경로에 존재합니다.


    취약점 심층 분석

    아키텍처 이해

    root@kitploit:~
    +------------------+            +------------------+               +------------------+
    |   관리 패널      |  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= 지시문으로 씁니다:

    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
    

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

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

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

    root@kitploit:~
    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 아키텍처)

    버전 확인 방법:

    root@kitploit:~
    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 — 취약한 경우 다섯 가지 관련 개행 문자 주입 권고 모두 플래그 지정

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

    사용법:

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

    출력 예시:

    root@kitploit:~
    ╔══════════════════════════════════════════════════════════════╗
    ║  CVE-2026-35517 - Pi-hole FTLDNS RCE 탐지기                  ║
    ║  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: dns.hostRecord 개행 문자 주입을 통한 RCE
        [-] GHSA-28g5-gg88-wh5m: dns.cnameRecords 개행 문자 주입을 통한 RCE
        [-] GHSA-fqv2-qhfh-ghcj: dhcp.leaseTime 개행 문자 주입을 통한 RCE
        [-] GHSA-vfmq-jrx3-wv3c: dhcp.hosts 개행 문자 주입을 통한 RCE
    
      수정 조치:
        1. Pi-hole FTL을 버전 6.6 이상으로 업그레이드
        2. 실행: pihole -up
        3. 확인: pihole -v
        4. API 접근 제어 및 인증 설정 검토
        5. 악용 징후(비정상적인 DNS 구성 변경)에 대한 로그 확인
    

    Nmap NSE 스크립트

    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 <target>
    
    # 일반적인 Pi-hole 포트 스캔
    nmap -p 80,443,8080,4711 --script CVE-2026-35517_PiHole_FTLDNS <target>
    
    # 서브넷 스캔 — 네트워크의 모든 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 <target>
    
    # 파일에서 대상 스캔
    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:
    |   취약:
    |   업스트림 DNS 구성을 통한 Pi-hole FTLDNS RCE
    |     상태: 취약
    |     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
    

    수동 버전 확인

    Pi-hole 호스트에 SSH 접근 권한이 있는 경우:

    root@kitploit:~
    # FTL 버전 확인
    pihole-FTL --version
    
    # 또는 Pi-hole CLI를 통해
    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 접근 제한 — 신뢰할 수 있는 IP에서만 API 연결을 수락하도록 Pi-hole 구성
    2. 관리자 비밀번호 변경 — 강력하고 고유한 비밀번호 사용: pihole -a -p
    3. 네트워크 격리 — Pi-hole 관리 인터페이스가 관리 VLAN에서만 접근 가능하도록 보장
    4. 원격 API 비활성화 — 로컬 웹 UI만 사용하는 경우 API를 localhost로 제한

    패치 후 조치:

    1. DNS 구성 감사 — 주입된 지시문에 대한 모든 dnsmasq 구성 파일 검토
    2. 업스트림 서버 확인 — DNS 업스트림 설정이 올바른지 확인
    3. 지속성 확인 — 승인되지 않은 cron 작업, SSH 키 또는 수정된 시스템 파일 확인
    4. DHCP 임대 검토 — DHCP가 Pi-hole에서 관리되는 경우 임대 구성 확인
    5. DNS 동작 모니터링 — 향후 며칠 동안 비정상적인 해석 패턴 관찰

    참고 자료

    • GitHub 보안 권고 — GHSA-23w8-7333-p9fj (dns.upstreams)
    • GitHub 보안 권고 — GHSA-wxhv-w77q-6qwp (dns.hostRecord)
    • GitHub 보안 권고 — GHSA-28g5-gg88-wh5m (dns.cnameRecords)
    • GitHub 보안 권고 — GHSA-fqv2-qhfh-ghcj (dhcp.leaseTime)
    • GitHub 보안 권고 — GHSA-vfmq-jrx3-wv3c (dhcp.hosts)
    • Pi-hole FTL v6.6 릴리스 노트

    작성자

    Kerem Oruç - 사이버보안 엔지니어

    • GitHub: @keraattin
    • Twitter: @keraattin
    도구 다운로드