[공격] 분석 — CVE-2026-9773
CVE-2026-9773 is an authenticated RCE vulnerability in Unraid's ToggleState.php due to command injection, requiring immediate update to version 7.3.0 or higher.
📋 요약
- 심각도 high · CVSS 8.8 · EPSS 0.01128 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: ToggleState.php 엔드포인트로 전달되는 사용자 입력값이 적절한 검증 없이 시스템 셸 호출 함수(예: exec, system, passthru)에 직접 전달될 때 발생함. 세미콜론(;), 파이프(|), 백틱(`) 등의 셸 메타문자를 삽입하여 의도하지 않은 명령어를 실행시키는 Command Injection 결함임.
(2) 공격 단계:
- 정찰: Unraid 웹 관리 인터페이스 접근 및 버전 확인 (7.3.0 미만 여부).
- 초기접근: 유효한 사용자 계정으로 인증 수행 (
PR:L조건). - 실행·권한 획득:
ToggleState.php에 조작된 파라미터를 전송하여www-data권한으로 임의 명령어 실행. (지표: 웹 서버 로그 내 비정상적인 특수문자 포함 요청) - 지속 및 영향:
www-data권한에서 리버스 셸을 생성하거나, 시스템 설정 파일을 수정하여 지속성 확보.
(3) 공격 표면:
- 엔드포인트:
/ToggleState.php(추정) - 파라미터: 상태 변경을 위해 전달되는 입력 변수 (추정)
- 프로토콜: HTTP/HTTPS
(4) CVSS 벡터 분석: AV:N(네트워크 접근 가능), AC:L(공격 복잡도 낮음), PR:L(낮은 수준의 권한 필요), UI:N(사용자 상호작용 불필요). 즉, 인증된 사용자라면 특별한 기술적 장벽 없이 원격에서 명령어를 실행할 수 있는 구조임.
악용 가능성: 본 취약점은 네트워크를 통해 원격으로 접근 가능(AV:N)하고 공격 복잡도가 낮으나(AC:L), 반드시 유효한 계정 권한이 필요(PR:L)하므로 실제 공격 난이도는 Hard로 판정됩니다. 공격자는 ToggleState.php 엔드포인트에 도달하여 사용자 입력값이 시스템 콜로 전달되는 파라미터를 조작함으로써 Command Injection을 트리거할 수 있습니다. EPSS 수치가 0.01128로 낮고 KEV에 등재되지 않은 점은 현재 대규모 자동화 공격이 이루어지고 있지는 않음을 시사하지만, 내부망 진입 후 권한 상승이나 횡적 이동을 노리는 타겟팅 공격에는 치명적인 경로가 됩니다. 특히 www-data 권한으로 코드가 실행되므로, 공격자는 초기 접근 후 웹 서버의 파일 시스템 접근 권한을 이용해 추가 설정 파일을 탈취하거나 로컬 권한 상승(LPE) 취약점과 체이닝하여 Root 권한 획득을 시도할 가능성이 높습니다. 결과적으로 본 취약점은 외부 노출보다 인증된 사용자의 내부 악용 또는 계정 탈취 후의 포스트 익스플로잇 단계에서 실질적인 위협으로 작용하는 구조입니다.
💥 영향 분석
(1) 기술적 위험:
- 시스템 장악:
www-data권한으로 OS 명령어 실행 가능. - 데이터 유출 및 변조: 웹 서버가 접근 가능한 설정 파일, 로그, 사용자 데이터 탈취 및 수정.
- 횡적 이동: 내부 네트워크 내 다른 서비스로의 공격 거점으로 활용.
(2) 비즈니스 영향: Unraid는 NAS/서버 솔루션이므로 저장된 모든 데이터의 기밀성·무결성이 파괴될 수 있으며, 관리자 권한 탈취 시 전체 스토리지 인프라 제어권 상실로 이어짐.
🔗 관련 취약점·체이닝
- 체이닝 경로:
인증 우회/계정 탈취$\rightarrow$CVE-2026-9773 (RCE)$\rightarrow$Privilege Escalation (LPE)순으로 진행될 가능성이 높음. - 추정: 현재 실행 권한이
www-data로 제한적이므로, 커널 취약점이나 잘못 설정된 SUID 바이너리를 이용한 Local Privilege Escalation(LPE) 유형의 결함과 체이닝하여root권한을 획득하는 시나리오가 예상됨.
🔎 탐지
(1) 로그 지표: 웹 서버 Access Log 내 /ToggleState.php 요청 경로 및 쿼리 스트링/POST 바디에 셸 메타문자(;, &, |, $(), `) 또는 명령어 패턴(whoami, id, cat /etc/passwd, curl, wget) 포함 여부.
(2) 탐지 규칙:
- Rule 1 (HTTP Request):
request_uri == "/ToggleState.php" AND (payload matches /[;|&]\s*(?:ls|id|whoami|sh|bash|nc|curl|wget)/)` - Rule 2 (Process Monitoring):
parent_process == "php-fpm" OR "apache2/nginx" AND child_process IN ("sh", "bash", "nc")
(3) 오탐 시나리오 및 튜닝: 정상적인 상태 변경 요청에 특수문자가 포함되는 경우가 있는지 확인 필요. 특정 파라미터 값의 정규식 화이트리스트를 정의하여 허용되지 않은 문자열이 들어오는 경우만 탐지하도록 튜닝.
🛡️ 완화 방안
- 즉시(긴급 차단): 웹 관리 인터페이스에 대한 외부 노출을 차단하고, 신뢰할 수 있는 내부 IP에서만 접근 가능하도록 ACL/방화벽 설정 (난이도: 하 / 영향: 낮음 / 검증: 외부 접속 테스트).
- 단기(완화): WAF(Web Application Firewall)에 Command Injection 패턴 탐지 및 차단 룰 적용 (난이도: 중 / 영향: 매우 낮음 / 검증: 페이로드 전송 테스트).
- 근본(해결): Unraid 버전을 7.3.0 이상으로 업데이트하여
ToggleState.php내 입력값 검증 로직 수정본 적용 (난이도: 하 / 영향: 재부팅 필요 / 검증: 버전 확인).
[분석 근거] 본 리포트는 다중 소스 데이터의 일관성이 확인된 결과이며, EPSS 0.01128(백분위 0.62999) 수치는 현재 실제 악용 사례가 적어 이론적 심각도(CVSS 8.8)에 비해 실측 위험도는 낮음을 의미함. 이에 따라 즉시 대응보다는 이번 주 내 처리하는 scheduled 우선순위로 결정됨.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=8.8 · non-KEV · EPSS=0.01128 · exploit=hard · in_scope=None