Struts 2 S2-066 취약점(CVE-2023-50164)의 악용 시도가 관찰됨
서론
Apache Struts는 전 세계 회사와 기업에서 사용하는 강력한 오픈 소스 웹 애플리케이션 프레임워크입니다. Apache Struts는 그 인기로 인해 해커들의 주요 표적이 되어 왔습니다. 심각한 RCE(Remote Code Execution) 취약점이 발표되면 보안 및 IT 팀은 시스템을 보호하기 위해 즉각적인 조치를 취해야 합니다.
2023년 12월 7일에는 CVE-2023-50164가 발표되었습니다. 공격자는 이 취약점을 통해 파일 업로드 매개변수를 조작해 경로 순회를 활성화하고 악성 파일을 업로드할 수 있습니다. 이로 인해 공격자가 시스템을 완전히 제어할 수 있게 됩니다.
12월 11일에는 첫 번째 PoC(Proof-of-Concept) 악용이 공개되어 널리 사용 가능해졌습니다. 그 직후인 12월 12일에도 악용 시도가 이어졌습니다(그림 1).
CVE 소개
CVE-2023-50164는 Java EE 웹 애플리케이션의 개발과 구축에 널리 사용되는 오픈 소스 프레임워크인 Apache Struts 2에서 발견된 심각한 취약점을 나타냅니다. 견고하면서도 유연한 것으로 알려진 Apache Struts는 수많은 상용 및 오픈 소스 웹 프로젝트의 아키텍처에서 중요한 역할을 합니다. 따라서 이 취약점은 금융, 헬스케어, 정부 서비스 같은 주요 업계를 포함한 다양한 분야에서 중요한 관심사가 되고 있습니다.
CVE-2023-50164의 핵심적인 문제는 경로 순회 결함을 통해 RCE가 발생할 수 있다는 점입니다. 구체적으로, 이 취약점은 Apache Struts 프레임워크가 파일 업로드를 처리하는 방식을 악용합니다. 공격자는 파일 업로드 매개변수를 조작함으로써 웹 서버의 디렉토리 구조를 권한 없이 효과적으로 순회할 수 있습니다.
이러한 순회를 통해 사용자가 업로드한 파일 콘텐츠의 원래 용도가 아니거나 접속할 수 없는 디렉터리나 위치에 악성 파일(일반적으로 JSP(Java Server Page) 기반 웹 셸)을 배치할 수 있습니다. 이 악용은 애플리케이션 개발자가 예상하지 못한 방식으로 서버 측 보안 메커니즘을 우회하는 기능에 의존합니다.
공격 프로세스
공격 프로세스는 다음과 같습니다.
1. 공격자는 먼저 정찰을 수행해 취약한 버전의 Apache Struts와 파일 업로드 URL 경로를 사용하는 웹사이트나 웹 애플리케이션을 식별합니다.
2. 공격자가 악성 파일(일반적으로 JSP 파일 또는 웹 셸)을 준비합니다.
3. 이후 파일 업로드를 위한 특수 요청을 생성합니다. 이 요청에는 파일 이름과 경로 같은 조작된 데이터가 포함되어 파일 업로드 매개변수를 조작합니다.
4. 공격자가 3단계에서 언급한 업로드 요청에 경로 순회 취약점을 악용하는 시스템 명령을 포함합니다. 이 명령은 서버가 파일을 정상적인 업로드 디렉터리 외부에 배치하도록 지시합니다. 이것이 경로 순회 단계입니다.
5. 공격자가 취약한 버전의 Apache Struts를 실행하는 서버로 업로드 요청을 보냅니다. 업로드 요청이 성공하면 서버는 악성 파일이나 웹 셸을 실행할 수 있는 위치나 디렉터리에 저장합니다.
6. 그런 다음 공격자는 웹 브라우저나 자동화된 스크립트를 통해 업로드된 악성 파일에 접속합니다. 이 파일에 접속하면 웹 서버에서 악성 코드 또는 웹 셸이 실행됩니다.
7. 6단계에서 코드가 실행되면 공격자가 서버에서 추가 작업을 수행할 수 있습니다. 즉, 민감한 데이터 탈취, 웹사이트 콘텐츠 수정, 웹 서버에 대한 완전한 제어권 탈취 등을 실행할 수 있습니다.
8. 공격자의 의도나 동기에 따라 향후 악용을 위해 은밀한 접속을 유지하거나 감염된 서버를 사용해 추가 공격을 시작할 수 있습니다.
시사점
CVE-2023-50164의 영향은 광범위합니다. RCE 취약점은 공격자가 영향을 받는 서버에서 임의의 명령을 실행할 수 있게 해주기 때문에 웹 애플리케이션에서 가장 심각하고 중요한 위협 중 하나입니다. 이는 무단 접속, 데이터 도난, 전체 시스템 감염으로까지 이어질 수 있습니다.
Apache Struts의 광범위한 통합은 이러한 리스크를 증폭시키므로 CVE-2023-50164는 전 세계 기업에 우선순위가 높은 문제입니다.
관찰된 악용 시도
PoC 악용이 널리 공개된 지 하루 뒤인 12월 12일, 공개된 PoC 악용과 유사한 악용 시도가 목격되기 시작했습니다(그림 2). 이러한 공격 시도는 실제 존재하지만 성공할 가능성은 높지 않습니다. 공격이 성공하려면 표적이 된 엔드포인트에 파일 업로드 기능이 있어야 합니다.
예상되는 PoC 스캐닝 외에도 이 취약점을 악용하려는 요청 중 공개된 PoC와 일치하지 않는 요청이 발견되기 시작했습니다. 이 변종은 원래 /login.action이 아닌 /s2/upload.action 경로를 표적으로 삼고 있습니다(그림 2). 흥미롭게도, 매개변수 이름 ‘fileFileName’이 원래의 ‘uploadFileName’과 다른 경로 순회를 포함하는 데 사용되고 있습니다.
이러한 엔드포인트에 파일 업로드 기능이 있는지 여부는 명확하지 않습니다. 다양한 고객을 노리는 IP 그룹에서 동일한 변종 2 악용 시도가 확인되고 있습니다.
Akamai Security Intelligence Group은WAF(Web Application Firewall) 로그를 지속적으로 분석해 새로운 변종이 있는지 확인하고 새로운 정보가 있으면 블로그의 이 섹션을 업데이트할 예정입니다.
App & API Protector를 통한 방어
자동 모드에서 Akamai Adaptive Security Engine 을 사용 중이고 ‘웹 플랫폼 공격’ 그룹을 거부 모드로 설정한 고객은 이러한 공격으로부터 자동으로 보호됩니다. 수동 모드에서 Adaptive Security Engine을 사용하는 고객은 거부 모드에서 ‘웹 플랫폼 공격’ 그룹 또는 다음 개별 룰이 있는지 확인해야 합니다(그림 4):
3000929- Apache Struts 경로 순회 및 파일 업로드 공격 탐지(CVE-2023-50164)
요약
Akamai App & API Protector 는 보안 고객에 대한 이러한 공격 시도를 성공적으로 방어하고 있습니다. 공격 대상이 된 엔드포인트에 실제로 파일 업로드 기능이 있는지 여부를 확실히 판단할 수 없었기 때문에 공격자가 공격 성공 후 취할 수 있는 악용 이후의 후속 조치는 관측하지 못했습니다.
가장 효과적인 방어 방법은 소스 코드를 즉시 업데이트하는 것이지만, 보안팀이 취약한 구성요소를 신속하게 식별하고 안전하게 업데이트하는 데는 엄청난 노력이 필요하다는 것을 잘 알고 있습니다. 이러한 문제는 애플리케이션 수의 증가와 이러한 환경의 동적인 특성으로 인해 더욱 복잡해지고 있습니다.
"보안은 레이어에 있다"라는 격언은 진부해 보일 수 있지만, 전반적인 보안을 강화하기 위해서는 추가적인 보완 방법을 고려해야 합니다. 공격자들은 새로운 공개 PoC에 24시간 이내에 빠르게 적응하고 있으며, 이는 보안팀 직원의 과제를 크게 가중시킵니다.
Akamai App & API Protector 같은 WAF를 구축하면 새롭게 발견된 CVE를 방어하고 추가적인 보안 버퍼를 제공하는 추가 방어 레이어 역할을 할 수 있습니다.