보안 제품정보


아파치 스트러츠 2에서 치명적 취약점 발견...패치 요망 2018.08.23

널리 사용되는 오픈소스 웹 앱 개발 프레임워크라 파장이 큼
익스플로잇 난이도 낮아 더 위험...보안 불레틴 따라 업데이트 필요


[보안뉴스 문가용 기자] 오픈소스 웹 애플리케이션 개발 프레임워크인 아파치 스트러츠 2(Apache Struts 2)의 사용자들이라면 반드시 적용해야 할 패치가 발표됐다. 치명적인 원격 코드 실행 취약점이 발견되었기 때문이다. 이를 그대로 놔두면 수많은 엔드포인트 장비들이 익스플로잇에 노출된다고 한다.

[이미지 = iclickart]


이 취약점이 발견된 것은 4월 10일이다. 소프트웨어 분석을 전문으로 하는 회사 세믈(Semmle)의 만 유에 모(Man Yue Mo) 전문가가 처음으로 발견했다. 스트러츠 2.3~2.3.34 버전과 2.5~2.5.16 버전의 핵심 요소 내에서, 신뢰되는 사용자 데이터를 확인하는 원리 가운데 나타나는 오류다. 그리고 6월 25일 아파치 소프트웨어 재단은 이 문제를 해결하는 패치를 일단 완성했고, 오늘부터 불레틴과 함께 패치를 배포하기 시작했다. 새 버전은 2.3.35와 2.5.17이다.

이 취약점에는 CVE-2018-11776이라는 번호가 붙었다. 이 취약점을 익스플로잇 하는 방법은 크게 두 가지 있는 것으로 알려져 있다. 둘 다 아파치 스트러츠 개발자의 불레틴을 통해 공개됐다. “환경설정을 통해 정의된 결과 값과 namespace의 값이 달라질 때 원격 코드 실행 공격을 실시할 수 있습니다. url 태그를 비슷한 방식으로 사용해 공격하는 것도 가능합니다.”

공격자 입장에서는 “자신들의 namespace를 HTTP 요청의 매개변수로서 주입하면 공격이 가능한 상황을 유발시키는 게 가능하다.” 스트러츠 프레임워크에서 매개변수의 확인을 불충분하게 하기 때문이다. 아무 OGNL(객체-그래프 탐색 언어) 문자열을 그 자리에 넣을 수 있다고 세믈 측은 블로그를 통해 설명했다. OGNL은 아파치 스트러츠의 행동을 커스터마이징 할 때 사용한다.

하지만 세믈은 취약점을 익스플로잇 하려면 두 가지 조건아 맞아떨어져야 한다고 설명을 추가했다. “하나는 alwaysSelectFullNamespace 플래그가 스트러츠 환경설정 내에서 true로 설정되어 있어야 합니다. 또 다른 건 스트러츠 환경설정 파일에 태그가 namespace 속성을 지정하지 않은 채로 있어야 합니다. 혹은 아무 값이나 대입 가능하도록 설정되어 있어야 하거나요.”

또한 세믈은 CVE-2018-11776 취약점이 이전에 보고된 CVE-2017-5638과 유사하다는 설명도 추가했다. CVE-2017-5638은 작년에 발생한 에퀴팩스 사건 때 공격자들이 익스플로잇한 취약점이다.

세믈의 부회장인 파벨 아브구스티노프(Pavel Avgustinov)는 “작년 에퀴팩스 때 악용된 원격 코드 실행 취약점이나 이번에 발표된 원격 코드 실행 취약점은 굉장히 위험한 것”이라고 강조했다.

“위험한 이유가 몇 가지 있습니다. 먼저 스트러츠는 고객들이 사용하는 웹사이트에 널리 적용되고 있습니다. 즉 취약한 시스템을 찾는 게 굉장히 쉽다는 뜻입니다. 또한 이 두 가지 취약점 전부 익스플로잇 자체의 난이도가 매우 낮은 편에 속합니다. 일반적인 해커라면 수분 내에 침투 경로를 발견하고 데이터를 빼돌릴 수 있을 겁니다. 아니면 추가 공격을 위한 발판을 마련할 수도 있고요. 그러므로 패치를 최대한 빨리 적용해야 합니다.”

패치와 보안 불레틴은 여기(https://cwiki.apache.org/confluence/display/WW/S2-057)서 열람 및 다운로드가 가능하다.

3줄 요약
1. 아파치 스트러츠 2에서 원격 코드 실행 취약점 발견됨.
2. namespace와 url 태그 통해 공격 가능함. 그러나 두 가지 전제조건이 성립되어야만 공격 가능하다는 특징도 있음.
3. 2.3.35와 2.5.17이 가장 안전한 버전이므로 사용자들은 최대한 빠른 패치 요망됨.

[국제부 문가용 기자(globoan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>