[공격] 분석 — CVE-2025-10035
Critical unauthenticated RCE in GoAnywhere MFT License Servlet (CVE-2025-10035) requires immediate patching and temporary network isolation of the servlet.
📋 요약
- 심각도 critical · CVSS 10.0 · EPSS 0.99614 · 악용난이도 easy · KEV
🔍 공격 기법
-
공격 표면
- 엔드포인트:
/*/LicenseServlet(또는/goanywhere/LicenseServlet) - 파라미터:
licenseResponse(Base64 직렬화 객체) 및 서명 헤더(X-License-Signature등)
- 엔드포인트:
-
전제 조건
- 네트워크 접근 가능 (AV:N) – 외부에서 직접 HTTP(S) 요청을 보낼 수 있음.
- 서명 검증 로직에 취약해 임의 서명을 생성할 수 있음(키가 고정·예측 가능 또는 검증 절차 미비).
-
공격 흐름
- 정찰 – 서비스 버전 확인 및 LicenseServlet 존재 여부를 HTTP 404/200 응답, 디렉터리 리스팅, WAF 우회 테스트 등으로 탐지.
- 초기 접근 – 서명 검증을 회피한 위조된
licenseResponse와 임의 서명을 포함해 POST 요청 전송(복잡도 낮음 AC:L). - 실행·권한 획득 – 서버가 직렬화 객체를 역직렬화하면서 Java gadget 체인을 트리거,
Runtime.exec()등을 통해 시스템 명령을 실행(C:H/I:H/A:H). - 지속 – 공격자는 웹쉘 배치, 크론 잡·Windows 서비스 생성 등으로 영구적 접근 확보 가능.
- 영향 – 전체 파일 서버 및 전송 파이프라인에 대한 완전 장악, 민감 데이터 탈취·변조가 즉시 이루어짐.
-
CVSS와 실제 조건 매핑
- AV:N → 네트워크 직접 접근만으로 가능.
- AC:L → 특별한 사전 준비 없이 단순 HTTP 요청.
- PR:N → 인증 필요 없음(서명 위조).
- UI:N → 사용자 상호작용 전혀 요구되지 않음.
악용 가능성: 이 취약점은 네트워크에서 바로 접근 가능한 License Servlet(예: /goanywhere/LicenseServlet)에 직렬화된 객체를 포함한 HTTP POST 요청을 전송하면 발생합니다. CVSS 벡터 AV:N/AC:L/PR:N/UI:N 은 외부에서 별도 인증·권한 없이, 복잡도가 낮고 사용자 개입이 필요 없음을 의미하므로 실제 공격자는 단순히 악의적인 직렬화 데이터와 유효한 라이선스 서명만 있으면 바로 시도할 수 있습니다. KEV에 등재되고 EPSS = 0.99614 라는 수치는 이미 실전에서 악용된 사례가 다수 존재함을 입증하므로, 이론적 심각도와 무관하게 위협이 매우 현실적임을 보여줍니다. 공격자는 서명 검증에 사용되는 비밀키가 약하거나 알고리즘이 추측 가능할 경우, 자체적으로 유효한 라이선스 응답 서명을 생성해 인증 절차를 우회합니다. 따라서 노출된 엔드포인트와 licenseData(또는 유사 파라미터)만 조작하면 임의 객체가 역직렬화되어 명령 실행까지 이어질 수 있습니다. 이러한 전제조건이 모두 충족될 경우, 공격 난이도는 “easy” 수준으로 평가됩니다.
💥 영향 분석
- 성공 시 공격자는 GoAnywhere MFT 서버의 운영 체제 권한으로 임의 명령을 실행할 수 있어, 파일 전송 업무 전체를 장악하고 데이터 유출·파괴가 즉시 발생합니다.
- 서비스 중단(Denial of Service) 및 라이선스 검증 우회로 인한 무단 사용이 가능해 기업 운영에 치명적 영향을 미칩니다.
🔗 관련 취약점·체이닝
- CWE‑502 (Deserialization of Untrusted Data) – 직렬화 객체를 신뢰 없이 역직렬화함으로써 임의 코드 실행.
- 키 관리 부실(추정) – 서명 키가 고정·예측 가능하거나 검증 로직이 충분히 강력하지 않아 위조가 쉬움.
- 네트워크 노출 – 내부 전용 API라 가정하지만 실제 배포 환경에서는 외부 접근이 차단되지 않은 경우가 많아, 방화벽 미설정 시 직접 공격이 가능함.
- 다른 RCE/인증 우회 취약점과 연계하면, 초기 침투 후 내부 서비스 간 신뢰 관계를 악용해 추가 시스템으로 확장할 수 있음(예: SAML 토큰 위조 → SSO 인증 우회).
🔎 탐지
- 네트워크: 외부 IP가
/LicenseServlet에 POST 요청을 보낼 때Content‑Length> 1 KB, Base64 문자열 패턴(^[A-Za-z0-9+/=]+$) 및 비정상적인 서명 헤더 값 감지. - 애플리케이션 로그: 직렬화 오류(
java.io.StreamCorruptedException,ClassNotFoundException) 또는 “Invalid license signature” 경고가 반복되는 경우. - 시스템: 웹쉘·새로운 실행 파일 생성, 비정상적인 프로세스 실행(
cmd.exe /c등) 로그와 연계.
🛡️ 완화 방안
- 즉시 패치 적용 – Fortra에서 제공하는 7.8.4 이상 버전으로 업그레이드(또는 공식 패치).
- 네트워크 차단 – 외부에서
/LicenseServlet에 접근하지 못하도록 방화벽/ACL에Deny규칙 추가; 내부망에서도 최소 필요 서비스만 허용. - 서명 검증 강화 – 키 회전, HMAC‑SHA256 이상 알고리즘 사용 및 서명 길이·포맷 엄격 검사 적용.
- 로깅·모니터링 활성화 – 서명 검증 성공/실패와 직렬화 요청을 상세 로깅하고 SIEM에 연동하여 알림 설정.
- 임시 차단: 라이선스 서블릿이 사용되지 않는 경우 서비스 비활성화 또는 별도 인증 프록시 뒤에 두어 접근을 제한.
위 조치를 24시간 이내에 시행하면 EPSS 0.99614가 의미하는 높은 실전 악용 위험을 크게 감소시킬 수 있습니다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=10.0 · KEV · EPSS=0.99614 · exploit=easy · in_scope=None