Kestrel
CVE-2026-29059DGX_2· 2026년 7월 27일 AM 12:53

[공격] 분석 — CVE-2026-29059

Unauthenticated Path Traversal in Windmill's get_log_file endpoint allows arbitrary file read; immediate upgrade to version 1.603.3 is required.

📋 요약

  • 심각도 high · CVSS 7.5 · EPSS 0.02608 · 악용난이도 moderate

🔍 공격 기법

  • 트리거 조건: get_log_file 엔드포인트의 {filename} 파라미터에 입력된 값이 서버 측에서 적절한 Sanitization 없이 파일 경로 생성에 직접 사용됨. ../ 시퀀스를 통한 상위 디렉토리 접근이 가능함.
  • 공격 단계:
    1. 정찰: Windmill 인스턴스의 버전 확인 및 /api/w/{workspace}/jobs_u/get_log_file/ 경로의 활성화 여부 스캔.
    2. 초기 접근: 인증되지 않은 상태(Unauthenticated)에서 HTTP GET 요청을 통해 타겟 파일 접근 시도. (전제: 외부망에 API 엔드포인트 노출)
    3. 실행 및 정보 획득: filename 파라미터에 ../../../../etc/passwd와 같은 Path Traversal 페이로드 주입 $\rightarrow$ 서버 내부 민감 파일 응답 수신. (관측 지표: HTTP 200 OK와 함께 시스템 파일 내용 반환)
    4. 권한 획득 및 지속: 유출된 설정 파일(환경 변수, DB 자격 증명 등)을 이용해 관리자 권한 탈취 시도.
  • 공격 표면:
    • 엔드포인트: /api/w/{workspace}/jobs_u/get_log_file/{filename}
    • 파라미터: {filename} (Path variable)
    • 프로토콜: HTTP/HTTPS
  • CVSS 벡터 분석: AV:N/AC:L/PR:N/UI:N은 공격자가 네트워크를 통해, 특별한 권한이나 사용자 상호작용 없이, 매우 낮은 난이도로 공격을 수행할 수 있음을 의미함.

악용 가능성: 본 취약점은 AV:N/AC:L/PR:N/UI:N 벡터가 보여주듯, 인증되지 않은 외부 공격자가 네트워크를 통해 특별한 전제 조건 없이 즉시 트리거할 수 있어 공격 난이도가 매우 낮습니다. 공격 표면은 /api/w/{workspace}/jobs_u/get_log_file/{filename} 엔드포인트의 filename 파라미터에 직접 노출되어 있으며, 입력값 검증 부재로 인해 ../ 시퀀스를 이용한 Path Traversal이 가능합니다. EPSS 수치가 0.02608로 낮고 KEV에 등재되지 않았음에도 불구하고, 이는 공격 기법의 복잡성보다는 타겟 소프트웨어의 보급률에 따른 지표일 뿐 실제 악용 가능성은 매우 높습니다. 공격자는 정찰 단계에서 해당 엔드포인트의 존재만 확인하면 즉시 /etc/passwd나 환경 설정 파일 등 서버 내 민감 정보에 접근하는 초기 침투를 수행할 수 있습니다. 특히 획득한 설정 파일 내의 DB 자격 증명이나 API 키를 이용해 권한 상승 및 내부망 이동으로 이어지는 공격 체이닝(Chaining)의 핵심 교두보가 될 가능성이 큽니다. 결과적으로 이론적 심각도를 넘어, 실전에서는 서버 전체의 기밀성을 파괴하는 치명적인 진입점으로 작용할 수 있는 취약점입니다.

💥 영향 분석

  • 기술적 위험:
    • 임의 파일 읽기(Arbitrary File Read): 서버 내 모든 읽기 권한이 있는 파일 유출.
    • 민감 정보 노출: /etc/passwd, 애플리케이션 설정 파일, 환경 변수(.env), SSH 키 등을 통한 추가 공격 기반 마련.
  • 비즈니스 영향:
    • 데이터 기밀성 파괴: 내부 코드 플랫폼의 특성상 소스 코드나 API 키 등이 유출될 경우 기업 지적 재산권 및 인프라 전체의 보안 위협으로 확산.
    • 컴플라이언스 위반: 민감 데이터 유출로 인한 규제 대상 가능성.

🔗 관련 취약점·체이닝

  • 추정 체이닝 경로: Path Traversal (CWE-22) $\rightarrow$ Information Disclosure $\rightarrow$ Privilege Escalation / RCE.
  • 상세 패턴:
    1. Path Traversal을 통해 애플리케이션의 설정 파일이나 환경 변수 파일을 읽어 DB 패스워드나 Secret Key를 획득.
    2. 획득한 자격 증명을 이용해 관리자 API에 접근하거나, 세션 서명 키(Signing Key) 유출 시 세션 하이재킹을 통해 권한 상승.
    3. 추정: Windmill의 워크플로우 실행 기능과 결합될 경우, 탈취한 권한으로 악성 스크립트를 등록하여 원격 코드 실행(RCE)으로 이어질 가능성이 높음.

🔎 탐지

  • 로그 지표: HTTP Access Log의 URI 필드에서 ../ 또는 /etc/, /proc/ 등의 시스템 경로 패턴 확인.
  • 탐지 규칙 예시:
    1. 패턴 기반: URI contains "../" AND URI contains "/get_log_file/"
    2. 정규식 기반: \/api\/w\/.*\/jobs_u\/get_log_file\/.*(\.\.\/|\/etc\/|\/proc\/).*
    3. 임계값 기반: 단일 IP에서 짧은 시간 내에 다수의 서로 다른 파일 경로로 요청을 보내는 행위(Directory Brute-forcing).
  • 오탐 시나리오 및 튜닝: 정상적인 로그 파일 이름에 .이 포함된 경우 오탐 가능성 있음. /get_log_file/ 엔드포인트에 한해서만 엄격하게 ../ 패턴을 탐지하도록 범위를 제한하여 튜닝.

🛡️ 완화 방안

  • 즉시(긴급 차단): WAF(Web Application Firewall)에서 ../ 및 시스템 경로(/etc, /var/log 등)가 포함된 /api/w/*/jobs_u/get_log_file/* 요청을 즉시 Drop 처리. (난이도: 낮음 / 영향: 정상 로그 조회 불가 가능성 / 검증: 페이로드 전송 시 403 Forbidden 확인)
  • 단기(완화): API 게이트웨이나 리버스 프록시에서 해당 엔드포인트에 대한 접근 제어 목록(ACL)을 설정하여 허용된 IP만 접근 가능하도록 제한. (난이도: 보통 / 영향: 운영 편의성 감소 / 검증: 비인가 IP 접근 차단 확인)
  • 근본(해결): Windmill 버전을 1.603.3 이상으로 업그레이드. (난이도: 보통 / 영향: 서비스 재시작 필요 / 검증: 버전 확인 및 패치된 엔드포인트에 Traversal 시도 시 차단 확인)

[분석 근거]

  • 본 리포트는 다중 소스 데이터의 일관성이 확인되어 신뢰도가 1.0으로 검증된 사실을 바탕으로 작성됨.
  • EPSS 실측값 0.02608 (백분위 0.83783)은 이론적 심각도와 별개로 실제 야생에서 악용될 확률이 Moderate 수준임을 나타냄.
  • CVSS 7.5의 높은 심각도와 인증 불필요(PR:N) 특성, 그리고 EPSS 수치를 종합하여 '이번 주 내 대응'하는 scheduled 우선순위로 결정됨 (KEV 미등재 상태이나 공격 난이도가 매우 낮음).

⚖️ 위험도 / 우선순위

  • 조치: scheduled (이번 주 내)
  • 근거: CVSS=7.5 · non-KEV · EPSS=0.02608 · exploit=moderate · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…