미국 사이버보안 및 인프라 보안국(CISA)은 연방 민간 행정부 기관(FCEB)에 대해 Sitecore 콘텐츠 관리 시스템(CMS)에서 발견된 치명적 보안 취약점을 2025년 9월 25일까지 반드시 패치하라는 긴급 지시를 내렸습니다. 이번 취약점은 실제로 공격자들에 의해 활발히 악용되고 있는 상태에서 발견되었으며, The Hacker News의 보도에 따르면 CVE-2025-53690으로 추적되는 이 취약점은 최대 CVSS 점수 9.0을 기록한 심각도 높은 문제입니다. 공격자들은 2017년 이전 Sitecore 배포 가이드에서 공개된 ASP.NET 머신키를 이용해 원격 코드 실행(Remote Code Execution, RCE)을 달성할 수 있는 것으로 알려졌습니다.
취약점 개요와 위험성
CVE-2025-53690은 Sitecore Experience Manager(XM) 및 Experience Platform(XP) 버전 9.0 이하에서 발견된 역직렬화 취약점으로, CWE-502(신뢰할 수 없는 데이터의 역직렬화) 범주에 속합니다. 문제는 2017년 이전에 공개된 Sitecore 배포 문서에서 제공한 샘플 ASP.NET 머신키가 실제 프로덕션 환경에서 그대로 사용되면서 시작되었습니다. 공격자는 이 키를 이용해 악성 ViewState 데이터를 만들고 서버에 주입함으로써 원하는 명령어를 실행할 수 있습니다.
실제 사건 조사에서 보안업체 맨디언트(Mandiant)는 공격자들이 이 취약점을 악용해 ‘WEEPSTEEL’ 악성코드를 배포하고, 네트워크 내부 탐색과 권한 상승을 시도하는 정황을 포착했습니다. 이는 단순한 취약점이 아니라, 조직 전체의 시스템 보안을 위협할 수 있는 심각한 문제임을 시사합니다.
공격 방식과 작동 원리
공격자들은 ysoserial.net
과 같은 도구를 사용해 악성 직렬화된 .NET 객체를 생성한 뒤, 이 데이터를 /sitecore/blocked.aspx
와 같은 엔드포인트에 HTTP POST 요청으로 전달합니다. 서버가 해당 데이터를 역직렬화하는 과정에서 공격자가 삽입한 코드가 실행되며, 애플리케이션 풀 권한으로 원격 명령이 실행됩니다. 성공적인 공격 시 Windows 애플리케이션 이벤트 로그(Event ID 1316)에 “ViewState verification failed” 오류가 기록됩니다.
Sitecore ASP.NET 머신키 취약점 상세 분석
Sitecore의 ASP.NET 머신키 취약점은 WT-2025-0024(CVE-2025-34509)로도 분류되며, 하드코딩된 샘플 키가 문제의 근원입니다. ASP.NET 머신키는 ViewState 데이터의 무결성과 암호화를 보장하는 핵심 요소입니다. 공격자가 이 키를 알고 있다면 조작된 ViewState를 생성하여 서버 측에서 이를 역직렬화할 때 악성 코드가 실행되도록 만들 수 있습니다.
Sitecore는 다양한 HTTP 핸들러를 제공하며, 특히 Sitecore.Web.UI.XamlSharp.Xaml.XamlPageHandlerFactory
와 같은 핸들러는 공격자들이 진입점으로 활용하기 쉽습니다. 최근 연구에 따르면 이 취약점은 HTML 캐시 포이즈닝(Cache Poisoning)과 결합하여 더 복잡하고 은밀한 공격 체인을 구성할 수 있다는 점이 밝혀졌습니다. 이는 조직의 웹 애플리케이션 보안을 전반적으로 강화해야 할 필요성을 다시 한번 부각시킵니다.
취약점의 역사적 배경
2017년 이전 Sitecore 배포 문서에서 개발자 편의를 위해 제공했던 샘플 머신키가 이번 사태의 근본적인 문제로 작용했습니다. 많은 개발팀이 이 키를 프로덕션 환경에서도 변경 없이 사용한 것으로 드러나면서 전 세계 수많은 서버가 공격에 취약한 상태에 놓였습니다. 이와 같은 상황은 보안 지침과 설정 관리의 중요성을 강조하며, 배포 단계에서의 세심한 보안 검토가 얼마나 중요한지를 다시금 일깨워줍니다.
ASP.NET ViewState 역직렬화 공격 원리
ASP.NET의 ViewState는 웹 페이지의 상태를 유지하기 위해 HTML 폼 내부에 __VIEWSTATE
라는 숨겨진 필드에 직렬화된 데이터를 저장하는 방식으로 작동합니다. .NET 프레임워크는 이 과정에서 LosFormatter
, ObjectStateFormatter
, BinaryFormatter
등의 포맷터를 사용합니다. 그러나 이러한 포맷터들은 역직렬화 시 리플렉션을 광범위하게 활용하기 때문에 공격자들이 가젯 체인을 만들어 임의의 코드 실행이 가능하게 됩니다.
공격 단계별 시나리오
- Type.GetType(): 공격자가 지정한 클래스 타입을 식별
- Activator.CreateInstance(): 공격자가 정의한 타입을 인스턴스화
- MethodInfo.Invoke():
Process.Start()
같은 시스템 명령어 실행 - FieldInfo.SetValue(): 리플렉션을 이용한 필드 값 수정
실제 공격에서는 TextFormattingRunProperties
, TypeConfuseDelegate
등의 가젯이 사용되어 PowerShell 명령 실행이나 원격 서버 데이터 유출을 시도할 수 있습니다. 서버가 이러한 ViewState를 역직렬화하면 공격자 지정 코드가 실행되며, 최종적으로 시스템 내부에서 명령어가 실행됩니다.
보안 전문가들의 대응 권고
보안 전문가들은 Sitecore 사용자들에게 다음과 같은 대응책을 권고합니다:
- Sitecore의 최신 보안 패치를 적용하고, 2017년 이전 배포 가이드를 참고한 서버 설정을 전면 점검할 것
- 모든 ASP.NET 머신키를 새롭게 생성하고 안전한 값으로 교체할 것
- 애플리케이션 로그(Event ID 1316 등)를 철저히 모니터링할 것
- 웹 애플리케이션 방화벽(WAF) 등을 통해 비정상적인 POST 요청을 차단할 것
이 사건은 단순한 기술적 취약점이 아니라, 보안 의식과 설정 관리의 부재가 얼마나 큰 위험으로 이어질 수 있는지를 보여줍니다. 모든 조직은 이번 사건을 계기로 보안 체계를 강화해야 하며, 개발과 배포 단계에서부터 보안 최적화를 실천해야 할 것입니다.