FortiWeb CVE-2025-64446: 인증 없는 관리 명령 실행 분석
FortiWeb 경로 탐색 취약점과 보안 장비 침해 조사 포인트
TL;DR
- 원인: FortiWeb GUI의 relative path confusion/path traversal(CWE-23)
- 공격 조건: HTTP/HTTPS 관리 GUI에 네트워크로 접근 가능
- 결과: 인증 없이 administrative command 실행 가능
- 즉시 조치: 관리 GUI의 인터넷 접근을 끊고 branch별 수정 버전으로 업그레이드한 뒤 관리자·정책 변경을 감사한다.
영향 버전과 수정선
| Branch | 영향 버전 | 수정 버전 |
|---|---|---|
| 8.0 | 8.0.0–8.0.1 | 8.0.2 이상 |
| 7.6 | 7.6.0–7.6.4 | 7.6.5 이상 |
| 7.4 | 7.4.0–7.4.9 | 7.4.10 이상 |
| 7.2 | 7.2.0–7.2.11 | 7.2.12 이상 |
| 7.0 | 7.0.0–7.0.11 | 7.0.12 이상 |
| 6.4 | 영향 없음 | 해당 없음 |
버전만 보고 우선순위를 정하지 않는다. 관리 GUI가 어느 interface에 bind됐고 인터넷·서버망·VPN 사용자망에서 실제로 도달 가능했는지를 함께 기록한다.
취약점 개요
CVE-2025-64446은 GUI route의 상대 경로 해석이 인증 경계를 혼동하면서 조작된 HTTP/HTTPS 요청이 administrative command handler에 도달하는 취약점이다. WAF는 backend 주소, 인증 연동, 인증서와 정책을 보유하므로 침해 범위가 appliance 자체에 머물지 않는다.
crafted GUI request
└─ path normalization/confusion
└─ authentication boundary bypass
└─ administrative command
└─ account·policy·backend 변경 가능
증거 보존과 침해 조사
- 알 수 없는 관리자와 API 계정
- WAF 정책·backend·fabric 연동 변경
- 장비에서 내부 관리망으로 향한 연결
- 패치 전후 로그 공백과 시간 변경
- 동일 자격 증명을 사용하는 다른 Fortinet 장비
장비 내부 로그만으로 결론을 내리지 않는다. 공격자가 로그 설정을 바꿀 수 있으므로 외부 Syslog, TACACS+/RADIUS, 방화벽 flow, 관리용 jump host 기록을 동일 시간대로 정렬한다. 특히 다음 세 가지 불일치가 강한 신호다.
- GUI audit에는 계정 생성이 있으나 IdP/AAA 인증이 없음
- configuration revision은 바뀌었으나 승인된 change ticket이 없음
- 장비발 관리망 연결이 있으나 정상 health-check 대상이 아님
업그레이드 전에 configuration backup, 현재 관리자 목록, interface별 administrative access, routing/backend 설정과 log export를 보존한다. 단, 손상 가능성이 있는 backup을 새 장비에 즉시 복원하지 않는다.
비파괴 검증
Fortinet PSIRT의 영향 버전과 수정 버전을 대조한다. 운영 WAF에는 경로 탐색 payload를 보내지 않고 관리 콘솔과 CLI에서 버전·구성 무결성을 확인한다. 외부에서는 GUI banner 추정값보다 승인된 자산 inventory와 CLI 결과를 우선한다.
검증 산출물에는 serial, branch, exact build, management interface, allowed source CIDR, external exposure start/end, patch time을 남긴다. 이렇게 해야 “취약했지만 노출되지 않은 장비”와 “패치됐지만 이미 침해됐을 수 있는 장비”를 구분할 수 있다.
대응과 패치 후 확인
수정 버전 적용, 관리면 접근 제한, 모든 관리자 세션·Token 폐기, 정책 diff 검토를 수행한다. 임시 완화는 인터넷-facing interface에서 HTTP/HTTPS administrative access를 끄는 것이다. 명령 실행 정황이 있으면 연결된 인증 정보 교체와 신뢰 가능한 firmware 재설치를 고려한다.
업그레이드 성공은 로그인 가능 여부가 아니라 다음으로 판정한다.
- 정확한 수정 build 확인
- 관리 GUI allowlist와 interface binding 재검토
- 미승인 administrator/API account 없음
- backend·fabric·인증 연동·인증서 설정이 기준선과 일치
- 외부 Syslog가 연속적으로 수집되고 장비 시간이 정확함
오탐과 한계
관리자 계정 변경은 정상 운영에서도 발생한다. change ticket·AAA·jump host를 결합해 판정한다. 반대로 로그에 exploit URI가 없다는 사실만으로 침해를 배제할 수 없다. reverse proxy가 없거나 appliance log가 순환·변조됐을 수 있기 때문이다.