[방어] 분석 — 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등)이고uid가www-data인 프로세스가sh,bash,nc,curl,wget등을 실행하는지 감시.
- Web Access Log:
- 탐지 규칙 예시:
- WAF/IDS 정규식 (Payload):
- 필드:
HTTP POST Body(multipart/form-data) - 패턴:
(?i)(?:;|\|||$(|\b(bash|sh|wget|curl|python|perl|php)\b)`
- 필드:
- SIEM 프로세스 쿼리:
- 조건:
parent_process_name == "php-fpm"ANDprocess_name IN ("sh", "bash", "nc", "netcat")ANDuser == "www-data"
- 조건:
- FIM (File Integrity Monitoring):
- 대상: 추정 업로드 경로 (
/tmp/및 웹 루트 내 upload 폴더) - 조건:
event_type == "create"ANDfile_extension IN (".php", ".sh", ".py", ".pl")
- 대상: 추정 업로드 경로 (
- WAF/IDS 정규식 (Payload):
- 오탐 튜닝:
- 정상적인 플러그인 업데이트 시 발생하는 파일명 패턴과 시스템 관리 스크립트의 동작을 화이트리스트에 등록하여 제외.
🛡️ 완화 방안
FileUpload.php는 백업 및 업데이트 필수 기능이므로 단순 차단은 서비스 마비를 초래함. 따라서 계층적 방어를 적용함.
- 즉시 (긴급 차단): Web UI 접근 제어(ACL) 제한
- 조치: 외부망 노출을 즉시 차단하고, 신뢰할 수 있는 내부 관리자 IP 대역에서만 Web UI에 접근 가능하도록 방화벽 설정.
- 난이도: 낮음 / 운영 영향: 낮음 (관리 경로 확보 시) / 검증: 외부 IP 접속 시 Drop 확인 / 우선순위: 최상.
- 단기 (완화): 실행 권한 제거 및 WAF 적용
- 조치 1: 업로드 파일 저장 디렉터리를
noexec옵션으로 마운트하여 웹쉘 실행을 원천 차단. - 조치 2: WAF에 상기 탐지 패턴을 적용하여 1차 필터링 (단, Chunked Encoding 등 우회 가능성 인지 필요).
- 난이도: 중간 / 운영 영향: 중간 (일부 플러그인 실행 제약 가능성) / 검증: 업로드 폴더 내 스크립트 실행 시
Permission denied확인 / 우선순위: 높음.
- 조치 1: 업로드 파일 저장 디렉터리를
- 근본 (해결): 버전 업데이트
- 조치: Unraid 7.3.0 이상 버전으로 업데이트하여 입력값 검증 로직 패치 적용.
- 난이도: 낮음 / 운영 영향: 낮음 (재부팅 필요) / 검증: UI 상의 버전 정보 확인 / 우선순위: 필수.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=8.8 · non-KEV · EPSS=0.01115 · exploit=hard · in_scope=None