GeoServer 제로데이, 공개 몇 시간 만에 공격 시작…SQL인젝션으로 RCE 우려

작성일

GeoServer 제로데이, 공개 몇 시간 만에 공격 시작…SQL인젝션 발견
watchTowr “수백 건 공격 시도” 확인, GeoServer는 뒤늦게 패치 3종 배포

GeoServer 제로데이, 공개 몇 시간 만에 공격 시작…SQL인젝션으로 RCE 우려 / AI 생성 일러스트(삽화)
GeoServer 제로데이, 공개 몇 시간 만에 공격 시작…SQL인젝션으로 RCE 우려 / AI 생성 일러스트(삽화)

오픈소스 지리공간 데이터 플랫폼 GeoServer에서 제로데이 SQL 인젝션 취약점이 발견돼 실제 공격 시도가 확인됐다. 보안업체 Watchtowr에 따르면 취약점이 공개된 지 몇 시간 만에 공격이 시작됐고, 소수의 IP 대역에서 수백 건의 시도가 포착됐다. 문제의 결함은 jsonArrayContains 함수에서 발생했으며 특정 설정에서는 원격코드실행(RCE)까지 이어질 수 있다. 공개 당시엔 CVE 식별자도 없는 완전한 제로데이였지만, GeoServer 프로젝트는 이후 수정판을 배포하며 CVSS 9.8의 심각한 결함으로 공식 확인했다.

취약점의 실체: jsonArrayContains 함수의 SQL 인젝션

보안 연구자 q1uf3ng이 8월 12일(현지시각) 오전 10시46분(UTC, 한국시간 오후 7시46분) X(옛 트위터)에 이 취약점을 처음 공개했다. jsonArrayContains 함수는 JSON 배열 필드에 특정 값이 포함돼 있는지 확인하는 필터 표현식으로 PostGIS나 오라클 JDBC 데이터스토어와 함께 쓰인다. 사용자가 입력한 인자가 제대로 검증되지 않은 채 데이터베이스 질의에 그대로 삽입되는 게 문제였다.

연구자는 “GeoServer jsonArrayContains 미인가 SQL 인젝션이며, 시스템관리자(sa) 데이터베이스일 경우 당연히 RCE로 이어질 수 있다”고 밝혔다. 공개 당시엔 CVE 식별자도 부여되지 않은 상태였다. 즉 벤더가 대응책을 마련하기도 전에 공격 가능성이 세상에 알려진 셈이다.

공개 몇 시간 만에 시작된 공격 시도 / AI 생성 이미지
공개 몇 시간 만에 시작된 공격 시도 / AI 생성 이미지

공개 몇 시간 만에 시작된 공격 시도

watchTowr는 취약점이 공개된 지 몇 시간 안에 공격 시도를 포착했다고 밝혔다. Jake Knott 수석보안연구원은 “공개 몇 시간 만에 공격 시도를 관측하기 시작했고, 이후 소수의 IP 대역에서 수백 건의 시도를 확인했다”고 말했다. 그는 “취약점이 공개되면 공격자들이 얼마나 빠르게 움직이는지 보여주는 또 다른 사례”라고 덧붙였다.

Knott에 따르면 현재까지 확인된 공격은 인터넷상의 취약 시스템을 찾아내려는 탐색 단계에 머물러 있다. 오류를 유발해 응답을 비교하는 방식으로 취약 시스템 목록을 만드는 정찰 활동이다. 그러나 그는 “GeoServer는 대규모로 표적이 되고 악용된 전례가 있고, CISA의 알려진 악용 취약점(KEV) 목록에도 여러 건이 올라 있다”며 “특정 설정에서는 이번 취약점도 결국 RCE로 이어질 수 있다”고 경고했다. 패치가 나오기 전까지 조직들은 노출된 인스턴스를 파악하고 공개 접근을 제한하며 벤더의 수정판을 기다려야 한다고 그는 권고했다.

2024년 봇넷 악용 전례, 반복되는 위험

GeoServer는 정부·농업·통신·교통 등 다양한 산업에서 쓰이는 오픈소스 지리공간 데이터 플랫폼이다. 국방·과학·교육·엔지니어링·기술 분야에서도 광범위하게 활용된다는 지적도 나온다. 이 때문에 과거에도 반복적으로 공격 표적이 됐다. 2024년에는 GeoServer GeoTools의 치명적 결함 CVE-2024-36401(CVSS 9.8)이 실제 악용돼 감염 기기를 DDoS(분산서비스거부) 공격과 암호화폐 채굴 봇넷, 레지덴셜 프록시망으로 전환시킨 사례가 있었다.

이번 결함은 완전히 새로운 문제도 아니었다. GeoServer 프로젝트 관리자들은 이번 취약점이 2023년 2월 CVE-2023-25157과 함께 수정됐던 치명적 SQL 인젝션 결함 CVE-2023-25158(CVSS 9.8)의 회귀(regression) 버그라고 밝혔다. 한 번 고쳤던 문제가 다시 뚫린 셈이다. 이런 이력 때문에 보안업계는 이번 제로데이를 단순한 일회성 사고로 보지 않는다. 공개 인스턴스가 지도 서비스, 환경 플랫폼, 공공기관 포털, 유틸리티·교통 시스템, 연구기관, 내부 업무용 애플리케이션 등에서 두루 쓰인다는 점도 위험을 키우는 요인으로 지목된다.

뒤늦은 패치…남은 과제

GeoServer는 이후 3.0.1, 2.28.5, 2.27.6 버전을 배포해 이 SQL 인젝션 결함을 수정했다. 해당 결함은 깃허브 보안권고 식별자 GHSA-mqjf-5f49-2fjh를 부여받았고 CVSS 점수는 10점 만점에 9.8이다. 프로젝트 관리자들은 “PostGIS 데이터스토어로 OGC 필터를 실행할 때 jsonArrayContains 함수에서 SQL 인젝션 취약점이 발견됐다”며 PostGIS 12 이상 버전에서 String이나 JSON 필드를 사용할 때 영향을 받는다고 설명했다. 메이븐 패키지 org.geotools:gt-jdbc-postgis 기준으로는 35.0(35.1에서 수정), 34.0 이상(34.5에서 수정), 33.1 이상(33.6에서 수정) 버전이 대상이다.

GeoCat의 프로젝트 오너 Jody Garnett은 이 취약점이 GeoTools 라이브러리에서 알려진 문제였으며 앞서 언급한 세 개 GeoServer 버전에서 이미 해결됐다고 설명했다. 다만 패치가 나오기 전까지 이미 공격 시도가 진행됐다는 점에서, 관리자들은 로그를 점검해 이상 징후가 없는지 확인해야 한다는 게 보안업계의 공통된 조언이다. 노출된 인스턴스를 파악하고 불필요한 공개 접근을 차단하는 게 여전히 가장 현실적인 대응책으로 꼽힌다.