[공격] 분석 — CVE-2026-9773
CVE-2026-9773 is an authenticated command‑injection in Unraid < 7.3.0’s ToggleState.php that allows www‑data RCE; patch immediately and enforce strict access control/monitoring until the fix is applied.
📋 요약
- 심각도 high · CVSS 8.8 · EPSS 0.01128 · 악용난이도 hard
🔍 공격 기법
-
공격 표면
- 엔드포인트:
http(s)://<host>/ToggleState.php(HTTP POST/GET) - 주요 파라미터:
state– 사용자가 입력한 문자열이 그대로exec()혹은 유사 시스템 호출에 전달됨.
- 엔드포인트:
-
트리거 조건
- 인증된 세션 확보(관리자 또는 권한이 낮은 사용자). → 사전 침투(피싱·크리덴셜 스터핑·세션 하이재킹 등) 필요.
- CSRF 토큰 검증을 우회하거나 유효한 토큰을 포함시켜야 함(Unraid UI는 기본적으로 CSRF 토큰을 사용).
-
공격 단계
- 정찰 –
/ToggleState.php존재 여부 확인(HTTP 200 응답) 및 로그인 페이지에서 CSRF 토큰 패턴 수집. - 초기 접근 – 확보한 쿠키·세션 ID와 유효 토큰을 사용해 인증된 POST 요청 전송.
- 명령 주입 –
state=파라미터에; <악성 명령>혹은 백틱(```) 등 쉘 메타문자를 삽입 → 시스템 호출 실행, www‑data 권한으로 임의 코드 수행. - 지속화 – 웹쉘 업로드,
/etc/rc.local·cron 추가, Docker 컨테이너 생성 등을 통해 영구화. - 영향 확대 – 파일 삭제·암호화, NAS 데이터 무결성 파괴, 랜섬웨어 전파 등으로 비즈니스 연속성 위협.
- 정찰 –
-
CVSS ↔ 실제 조건 매핑
- AV:N → 네트워크만으로 접근 가능(엔드포인트가 외부에 노출될 경우).
- AC:L → 입력 검증 부재로 난이도 낮음, 다만 인증(PR:L)과 CSRF 토큰(UI:N) 요구가 실제 장벽.
- PR:L → 인증된 저권한 계정이면 충분, 따라서 사전 자격 증명 확보가 핵심 전제.
-
실제 악용 난이도 – EPSS 0.01128(≈1 %)는 현재 관찰된 공격 시도가 매우 적음을 의미하지만, 인증 절차를 우회할 수 있다면 고위험 RCE가 즉시 실현됨.
악용 가능성: AV:N은 취약점이 네트워크를 통해 원격에서 접근 가능한 ToggleState.php 엔드포인트에 존재함을 의미합니다. AC:L(낮은 복잡도)이라서 인증된 사용자가 조작한 파라미터만 전달하면 바로 시스템 호출이 실행되지만, PR:L(낮은 권한)·UI:N(사용자 상호 작용 불필요) 조건 때문에 공격자는 인증된 www‑data 계정을 먼저 확보해야 합니다. 따라서 인증 절차를 우회하거나 합법적인 자격 증명을 탈취하는 것이 실제 난이도의 핵심이며, 이 단계가 존재하기 때문에 등급이 hard으로 판정되었습니다. EPSS = 0.01128(≈1 % 수준)과 KEV에 미등재된 점은 현재까지 실전에서 관측된 악용 사례가 매우 드물다는 것을 보여주어, 이론적 심각도와는 별개로 실제 위협이 제한적임을 뒷받침합니다. 공격 표면은 HTTP POST/GET 요청의 state 또는 유사 파라미터이며, 해당 값이 바로 PHP shell_exec()에 전달되는 구조이므로 입력 검증 부재가 직접적인 RCE 경로가 됩니다. 요약하면, 인증 확보 → 악성 파라미터 전송 → www‑data 권한으로 명령 실행이라는 단계적 체인이 필요하고, 인증 장벽이 존재하기 때문에 공격 난이도는 “hard”이며 활용 가능성은 현재 관측된 실전 사례가 적어 낮게 평가됩니다.
💥 영향 분석
- 실행 권한:
www-data(Unraid 웹 서버 기본 사용자) – 대부분 파일 시스템에 읽·쓰기 권한 보유, Docker/VM 설정 변경 가능. - 비즈니스 리스크: NAS 내 저장 데이터 무결성 파괴, 백업 탈취·암호화, 추가 악성 코드 배포로 전체 인프라 침해 확대, 서비스 마비(웹 UI 기능 손실) 등.
🔗 관련 취약점·체이닝
- CWE‑78 (OS Command Injection) – 입력값 검증 부재가 근본 원인.
- 가능한 체인
- 세션 하이재킹 → ToggleState.php 명령 주입 → www‑data 쉘 실행 → sudo 설정 오류·커널 취약점 활용 시 root 권한 상승.
- Docker API 노출 → www‑data 권한으로 컨테이너 생성·조작 → 호스트 탈취.
- 추정: 동일 제품 내 다른 인증 우회(CSRF) 취약점과 결합될 경우 완전 무인 RCE가 가능할 수 있음(현재 확인된 증거는 없음).
🔎 탐지
- 웹 서버 접근 로그에
ToggleState.php호출 시state=파라미터에;,`,&&,|등 쉘 메타문자 포함 여부. www-data사용자로 실행되는 비정상적인 프로세스(sh -c,bash -i)가 시스템 로그(/var/log/syslog,audit.log)에 기록될 경우 알림.- WAF/IPS에서 위 패턴 감지 시 403/403 + 로그 생성 규칙 적용.
🛡️ 완화 방안
- 패치 – Unraid 7.3.0 이상으로 즉시 업그레이드(공식 보안 업데이트).
- 엔드포인트 차단·입력 검증 – 내부 방화벽 또는 WAF에서
ToggleState.php접근을 제한하고,state파라미터에 쉘 메타문자 포함 시 403 응답 규칙 적용. - 인증 강화 – MFA 도입, 세션 쿠키 유효기간 축소, 사용되지 않는 계정 비활성화 및 기존 세션 강제 만료.
- 서버‑측 방어 –
state값 화이트리스트(예: 정수·불린) 적용,escapeshellarg()등 안전 함수 사용. - 모니터링 – www-data 사용자 프로세스와 웹 접근 로그를 SIEM에 연동하여 실시간 알림 설정.
우선순위: CVSS 8.8·non‑KEV·EPSS 0.01128·exploit hard → 이번 주 내(“scheduled”) 패치 및 위 완화 조치를 동시에 진행.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=8.8 · non-KEV · EPSS=0.01128 · exploit=hard · in_scope=None