GeoServer 및 JAI-EXT Jiffle 스크립트 컴파일러 원격 코드 실행(RCE) 취약점 (CVE-2022-24816) 분석 및 대응 가이드
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTJAI-EXT 1.2.22 미만 버전을 사용하는 Java 애플리케이션 및 이를 의존성으로 포함하는 GeoServer 전체 시스템.
인증되지 않은 원격 공격자가 악의적인 Jiffle 스크립트를 전송하여 대상 서버에서 임의의 Java 코드를 실행하고 시스템 권한을 완전히 장악할 수 있습니다.
JAI-EXT 버전을 1.2.22 이상으로 즉시 업그레이드하거나, 패치 적용 전까지 클래스패스에서 Janino 컴파일러 라이브러리를 제거하십시오.
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
패치 및 우회 명령어1. 공식 보안 패치 및 버전 업그레이드 명령어
JAI-EXT 라이브러리를 최신 보안 패치가 적용된 1.2.22 이상 버전으로 업그레이드하십시오. Maven 또는 Gradle 빌드 설정 파일에서 의존성 버전을 아래와 같이 수정하여 빌드 및 배포를 수행합니다.
<!-- Maven pom.xml 의존성 업데이트 예시 -->
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-coverage</artifactId>
<version>${geotools.version}</version>
<exclusions>
<exclusion>
<groupId>it.geosolutions.jaiext.jiffle</groupId>
<artifactId>jt-jiffle-op</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>it.geosolutions.jaiext.jiffle</groupId>
<artifactId>jt-jiffle-op</artifactId>
<version>1.2.22</version>
</dependency>2. 패치 전 임시 완화(Workaround) 및 접근 제어 설정
즉각적인 패치 적용이 어려운 환경에서는 애플리케이션의 클래스패스(Classpath)에서 Janino 컴파일러 라이브러리(janino-x.y.z.jar 및 commons-compiler-x.y.z.jar)를 삭제하여 Jiffle 스크립트의 동적 컴파일 기능 자체를 비활성화할 수 있습니다.
# GeoServer 배포 디렉토리 내에서 Janino 컴파일러 라이브러리 검색 및 제거
find /usr/share/geoserver/ -name 'janino-*.jar' -exec rm -f {} \;
find /usr/share/geoserver/ -name 'commons-compiler-*.jar' -exec rm -f {} \;
# 변경 사항 적용을 위해 GeoServer 서비스 재시작
systemctl restart geoserver3. 침해 흔적(IoC) 및 로그·버전 점검 스크립트
서버 내에 취약한 버전의 JAI-EXT 및 Janino 라이브러리가 존재하는지 점검하고, 웹 서버 로그에서 Jiffle 관련 악성 요청 흔적을 탐지하는 스크립트입니다.
# 1. 시스템 내 취약한 Janino 라이브러리 존재 여부 점검
echo '[*] Checking for vulnerable Janino libraries...'
find / -name 'janino-*.jar' 2>/dev/null
# 2. GeoServer 요청 로그에서 Jiffle 스크립트 주입 시도 탐지 (WMS/WCS 요청 분석)
echo '[*] Scanning logs for potential Jiffle exploit attempts...'
grep -riE 'jiffle|janino|Runtime\.getRuntime' /var/log/geoserver/ /var/log/nginx/ /var/log/apache2/ 2>/dev/null코드 수정 전에도 가상 패치(Virtual Patching)로 웹 공격을 즉시 차단하세요
서버 재시작이나 긴급 패치가 어려운 운영 환경이라면 클라우드 WAF 관리형 룰셋을 활성화하여 SQLi, RCE, XSS 익스플로잇 페이로드를 엣지에서 1분 만에 차단할 수 있습니다.
취약점 발생 원리 및 공격 메커니즘
1. 취약점 개요 및 발생 원인 (Root Cause)
본 취약점(CVE-2022-24816)은 Java Advanced Imaging(JAI) API의 확장 프로젝트인 오픈소스 JAI-EXT 라이브러리에서 발생하는 원격 코드 실행(RCE) 취약점입니다. JAI-EXT는 이미지 처리 및 맵 대수 연산을 위해 'Jiffle'이라는 스크립트 언어를 지원합니다. Jiffle 스크립트는 런타임 시 성능 최적화를 위해 Janino 컴파일러를 통해 Java 바이트코드로 동적 컴파일된 후 실행됩니다. 이 과정에서 입력값에 대한 적절한 검증 및 샌드박싱이 결여되어, 공격자가 주입한 악성 Java 코드가 그대로 컴파일 및 실행되는 코드 주입(CWE-94) 취약점이 발생합니다.
2. 공격 메커니즘 및 익스플로잇 시나리오
공격자는 네트워크 요청(예: GeoServer의 WMS/WCS 요청 내 렌더링 변환 파라미터)을 통해 악의적으로 조작된 Jiffle 스크립트를 대상 서버로 전송합니다. JAI-EXT 엔진은 수신된 Jiffle 스크립트를 Java 소스 코드로 변환하는 과정에서 외부 입력값을 필터링 없이 결합합니다. 이후 Janino 컴파일러가 이 코드를 메모리 상에서 컴파일하고 JVM 내에서 실행하게 됩니다. 공격자는 Java의 'Runtime.getRuntime().exec()' 등 시스템 명령 실행 API를 Jiffle 스크립트 내에 은닉하여 주입함으로써, 방화벽을 우회하고 대상 서버에서 리버스 쉘을 획득하거나 악성 페이로드를 다운로드 및 실행할 수 있습니다.
3. 비즈니스 및 인프라 파급 영향
본 취약점은 CVSS 10.0 최상위 위험도를 기록하였으며, 미 국토안보부 사이버보안 및 인프라 보안국(CISA)의 KEV(Known Exploited Vulnerabilities) 목록에 등재되어 실제 야생(In-the-Wild)에서 적극적으로 악용되고 있음이 확인되었습니다. 특히 지리정보시스템(GIS) 표준 플랫폼인 GeoServer가 이 라이브러리를 기본 의존성으로 채택하고 있어 파급력이 매우 큽니다. 공격자가 이 취약점을 악용할 경우, 내부 지리정보 데이터베이스 탈취는 물론, 클라우드 인프라 내부망으로의 횡적 이동(Lateral Movement) 및 랜섬웨어 유포지로의 악용 등 치명적인 비즈니스 중단 사태를 초래할 수 있습니다.
공식 보안 권고문 및 참조 링크
JAI-EXT is an open-source project which aims to extend the Java Advanced Imaging (JAI) API. Programs allowing Jiffle script to be provided via network request can lead to a Remote Code Execution as the Jiffle script is compiled into Java code via Janino, and executed. In particular, this affects the downstream GeoServer project. Version 1.2.22 will contain a patch that disables the ability to inject malicious code into the resulting script. Users unable to upgrade may negate the ability to compile Jiffle scripts from the final application, by removing janino-x.y.z.jar from the classpath.
자주 묻는 실무 질문 (FAQ — CVE-2022-24816)
FAQQ1. CVE-2022-24816 취약점의 위험도와 실제 악용 가능성은 어느 정도입니까?
CVE-2022-24816의 기본 점수는 CVSS 10.0 (CRITICAL)이며, 향후 30일 내 실제 악용 확률을 나타내는 EPSS 점수는 99.9%입니다. 현재 미국 CISA KEV(실제 악용이 확인된 취약점 카탈로그)에 등재되어 있으므로 최우선 긴급 패치가 필요합니다.
Q2. CVE-2022-24816에 영향을 받는 벤더와 제품은 무엇입니까?
주요 영향 벤더는 geosolutions-it, geoserver이며, 대상 컴포넌트는 jai-ext, geoserver입니다. 상세 영향 범위: JAI-EXT 1.2.22 미만 버전 및 해당 라이브러리를 사용하는 GeoServer 버전
Q3. 서버 재기동이나 정규 패치 전 즉시 적용할 수 있는 완화 조치(Workaround)는 무엇입니까?
[권장 조치] JAI-EXT 버전을 1.2.22 이상으로 즉시 업그레이드하거나, 패치 적용 전까지 클래스패스에서 Janino 컴파일러 라이브러리를 제거하십시오. 본문의 패치 및 우회 명령어 섹션과 자가 점검 체크리스트를 참고하여 외부 노출 포트를 차단하거나 WAF 탐지 규칙을 선적용하십시오.
CVE-2022-24816 사내 보안 패치 공지문 · CISO 경영진 보고서 초안 자동 생성
클릭 한 번으로 사내 이메일·노션·결재 문서에 바로 붙여넣을 수 있는 공식 보고서 양식을 생성합니다.
🔗 함께 점검해야 할 동일 벤더·스택 연관 취약점 (geosolutions-it)
동일 카테고리 전체 보기 →IBM Langflow OSS 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-9198)
[영향 대상] IBM Langflow OSS 버전 1.0.0 이상 1.10.0 이하의 기본 배포 환경
Langflow 미인증 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-33017)
[영향 대상] Langflow 1.9.0 미만 버전
Microsoft SharePoint 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-65660)
[영향 대상] Microsoft SharePoint Server 2016, 2019 및 Subscription Edition 전 버전
Apache ActiveMQ Jolokia JMX-HTTP 브릿지 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-34197)
[영향 대상] Apache ActiveMQ Classic 5.19.4 미만 버전 및 6.0.0 이상 6.2.3 미만 버전
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.