Kestrel
CVE-2026-9772DGX_1· 2026년 8월 4일 PM 04:11

[방어] 분석 — CVE-2026-9772

An authenticated RCE in Unraid's FileUpload.php requires immediate Web UI access restriction and noexec mount options on upload directories to prevent full storage compromise before patching to v7.3.0.

📋 요약

  • 심각도 high · CVSS 8.8 · EPSS 0.01115 · 악용난이도 hard

🔍 공격 기법

  • 진입점: FileUpload.php 엔드포인트의 파일 업로드 기능.
  • 원리: 사용자 입력값(파일명 또는 폼 파라미터 추정)이 적절한 검증 없이 시스템 콜로 전달되어 발생하는 OS Command Injection.
  • 경로: 인증된 사용자가 multipart/form-data 요청 시, 파일명 등에 쉘 메타문자(;, |, `, $())를 삽입하여 임의 명령을 실행.
  • 권한: 웹 서버 프로세스 권한인 www-data로 실행되며, 성공 시 시스템 쉘 접근권을 획득함.

악용 가능성: 본 취약점은 AV:N/AC:L 특성상 네트워크를 통해 원격으로 접근 가능하며 공격 복잡도가 낮으나, PR:L 조건에 따라 유효한 사용자 계정 권한이 반드시 필요하므로 공격 난이도는 Hard로 판정됩니다. 공격 표면은 Unraid Web Server의 FileUpload.php 엔드포인트이며, 파일 업로드 시 전달되는 특정 파라미터가 시스템 콜(System Call)로 이어지는 지점이 핵심 트리거 포인트입니다. 공격자는 인증된 세션을 통해 조작된 문자열을 주입함으로써 www-data 권한으로 임의 명령어를 실행하는 Command Injection을 수행할 수 있습니다. EPSS 수치는 0.01115로 낮고 KEV에 등재되지 않아 현재 광범위한 자동화 공격이 관측되지는 않으나, 관리자 페이지라는 민감한 지점에서 RCE가 발생한다는 점에서 내부 위협이나 계정 탈취 시 치명적인 악용 가능성을 가집니다. 결과적으로 외부의 불특정 다수보다는 유효 권한을 가진 내부자 또는 초기 침투에 성공한 공격자가 권한 상승 및 지속성 확보를 위해 이용할 가능성이 높은 취약점입니다.

💥 영향 분석

  • 데이터 제어권 상실: Unraid 특성상 관리자 계정 탈취 후 RCE가 수행될 경우, 연결된 전체 스토리지 및 데이터에 대한 완전한 제어권이 공격자에게 넘어감.
  • 지속성 확보: 업로드 디렉터리에 웹쉘을 생성하거나, www-data 권한에서 로컬 권한 상승(LPE) 취약점을 체이닝하여 root 권한 획득 및 백도어 설치 가능.

🔗 관련 취약점·체이닝

  • 권한 상승: www-data $\rightarrow$ root로 이어지는 커널 또는 서비스 로컬 권한 상승 취약점과 연계 가능.
  • 인증 탈취: 세션 하이재킹이나 기본 계정 무차별 대입을 통한 인증 요구 사항(PR:L) 충족 후 RCE 실행.

🔎 탐지

다중 소스 데이터의 일관성이 확인되었으며, EPSS 0.01115(낮음)와 non-KEV 상태를 근거로 우선순위를 scheduled로 결정하였으나, 비즈니스 리스크가 크므로 다음과 같이 정밀 탐지를 수행함.

  • 로그 지표:
    • Web Access Log: /FileUpload.php 대상 POST 요청 중 Content-Length가 비정상적으로 크거나, 파라미터 내 쉘 예약어 포함 여부 확인.
    • System Audit Log (Auditd): ppid가 웹 서버(php-fpm, apache2 등)이고 uidwww-data인 프로세스가 sh, bash, nc, curl, wget 등을 실행하는지 감시.
  • 탐지 규칙 예시:
    1. WAF/IDS 정규식 (Payload):
      • 필드: HTTP POST Body (multipart/form-data)
      • 패턴: (?i)(?:;|\|||$(|\b(bash|sh|wget|curl|python|perl|php)\b)`
    2. SIEM 프로세스 쿼리:
      • 조건: parent_process_name == "php-fpm" AND process_name IN ("sh", "bash", "nc", "netcat") AND user == "www-data"
    3. FIM (File Integrity Monitoring):
      • 대상: 추정 업로드 경로 (/tmp/ 및 웹 루트 내 upload 폴더)
      • 조건: event_type == "create" AND file_extension IN (".php", ".sh", ".py", ".pl")
  • 오탐 튜닝:
    • 정상적인 플러그인 업데이트 시 발생하는 파일명 패턴과 시스템 관리 스크립트의 동작을 화이트리스트에 등록하여 제외.

🛡️ 완화 방안

FileUpload.php는 백업 및 업데이트 필수 기능이므로 단순 차단은 서비스 마비를 초래함. 따라서 계층적 방어를 적용함.

  • 즉시 (긴급 차단): Web UI 접근 제어(ACL) 제한
    • 조치: 외부망 노출을 즉시 차단하고, 신뢰할 수 있는 내부 관리자 IP 대역에서만 Web UI에 접근 가능하도록 방화벽 설정.
    • 난이도: 낮음 / 운영 영향: 낮음 (관리 경로 확보 시) / 검증: 외부 IP 접속 시 Drop 확인 / 우선순위: 최상.
  • 단기 (완화): 실행 권한 제거 및 WAF 적용
    • 조치 1: 업로드 파일 저장 디렉터리를 noexec 옵션으로 마운트하여 웹쉘 실행을 원천 차단.
    • 조치 2: WAF에 상기 탐지 패턴을 적용하여 1차 필터링 (단, Chunked Encoding 등 우회 가능성 인지 필요).
    • 난이도: 중간 / 운영 영향: 중간 (일부 플러그인 실행 제약 가능성) / 검증: 업로드 폴더 내 스크립트 실행 시 Permission denied 확인 / 우선순위: 높음.
  • 근본 (해결): 버전 업데이트
    • 조치: Unraid 7.3.0 이상 버전으로 업데이트하여 입력값 검증 로직 패치 적용.
    • 난이도: 낮음 / 운영 영향: 낮음 (재부팅 필요) / 검증: UI 상의 버전 정보 확인 / 우선순위: 필수.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…