본문 바로가기

Java

[Struts2] 취약점 관련 Struts 2.3.15.1로 라이브러리 변경

오늘 데일리시큐에서 이런 뉴스가 떴다.


http://dailysecu.com/news_view.php?article_id=4811


내용인즉슨, 아파치(Apache)에서 개발한 소프트웨어 ‘struts2’에 존재하는 2개의 크리티컬한 보안취약점(CVE-2013-2251)을 집중적으로 파고도는 공격툴로 인해 중국의 많은 업체들이 피해를 입었다는 것이다. 이를 방비하기 위해 Apache struts팀은 struts 2.3.15.1 버전을 발표했다고 한다.


struts.apache.org/download.cgi#struts23151


그렇다고 라이브러리를 통째로 변경할 수 없는 노릇이고, 기존에 있는 프로젝트를 유지하면서 패치하려면 어떤 파일을 변경해야 할지 헷갈릴 수 있다. 이를 잡기 위한 효과적인 방법을 찾던 중, 중국발 사이트에서 해결법을 발견하였다(http://ee.riaos.com/?p=20004983). 구글 번역기를 이용하여 돌린 결과, 다음과 같은 해결책을 얻을 수 있었다.



---------------------------------------------------------------------------------------------------

1, 라이브러리 패키지 제거

struts2-core-2.0.14.jar,ognl-2.6.11.jar,commons-lang-2.1.jar,xwork-2.0.7.jar


2, 라이브러리 패키지 추가

struts2-core-2.3.15.1.jar,xwork-core-2.3.15.1.jar,ognl-3.0.6.jar,javassist-3.11.0.GA.jar,commons-lang3-3.1.jar

(*주 : 이외에도 commons-*.jar 파일, antlr-2.7.2.jar, freemaker-2.3.18.jar 등의 파일도 변경했다. 기본적으로는 위 파일들이 포함되는 것 같고, 나머지는 case by case인 듯)


lib패키지 다운로드 주소 추가(*주 : 아마도 이 부분은 해당 URL에서 struts를 다운로드 받으라는 것 같다)

http://mirror.bit.edu.cn/apache//struts/binaries/struts-2.3.15.1-all.zip


3, web.xml 수정


<filter>

  <filter-name>struts2</filter-name>

  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher

</filter-class>

  </filter>

  <filter-mapping>

  <filter-name>struts2</filter-name>

  <url-pattern>/*</url-pattern>

  </filter-mapping>


위 내용을 다음과 같이 변경:


<filter>

  <filter-name>struts2</filter-name>

  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

  </filter>

  <filter-mapping>

  <filter-name>struts2</filter-name>

  <url-pattern>/*</url-pattern>

  </filter-mapping>

---------------------------------------------------------------------------------------------------


위 내용 외에도, Validate.xml의 DOCTYPE도 변경해야 한다. 첫 구문을 다음과 같이 수정한다.

---------------------------------------------------------------------------------------------------

<!DOCTYPE validators PUBLIC

    "-//Apache Struts//XWork Validator Config 1.0//EN"

    "http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">

---------------------------------------------------------------------------------------------------

위와 같이 조치하면 Struts XML에서 정의하는 redirect-action 메소드를 사용할 수 없다는 맹점이 있다. 이 점을 제외하고 일반적인 시각에서 볼 때 위와 같이 조치하면 된다.

나머지 세부 사항들은 하나씩 검증해 보면서 할 수밖에..

출처 : http://halkrine.tistory.com/