🇰🇷 한글 설명
MapFish Print의 /api/print3/print 엔드포인트에서 외부 엔티티 및 DTD 비활성화 미비로 인해 발생하는 XML 외부 엔티티(XXE) 취약점입니다. 공격자는 조작된 GML 레이어 URL을 통해 서버의 로컬 파일을 읽거나 서버 측 요청 위조(SSRF)를 수행할 수 있습니다.
💡 쉬운 설명
지도 출력 서비스의 보안 설정 오류로 인해, 해커가 서버 내부의 중요한 파일(비밀번호, 인증 토큰 등)을 몰래 훔쳐보거나 서버를 조종할 수 있는 문제입니다. 지도 데이터를 불러오는 과정에서 외부의 악의적인 명령을 제대로 걸러내지 못해 발생합니다.
🇺🇸 원문 (English)
mapfish-print is a component of MapFish for printing templated cartographic maps. Prior to 3.28.30, 3.30.32, 3.31.24, 3.33.16, and 4.0.5, MapFish Print accepts an attacker-controlled GML layer url in requests to the /api/print3/print endpoint and fetches XML parsed by core/src/main/java/org/mapfish/print/map/geotools/GmlLayer.java without disabling external entities and external DTDs. A remote XML document and DTD can expand a local file entity, and the resulting content can be exposed through the GML parsing and error path. This allows unauthenticated attackers to read files such as operating-system account data, Kubernetes service-account tokens, and certificates. Replacing the file entity target with an internal HTTP endpoint also permits server-side request forgery. This issue is fixed in versions 3.28.30, 3.30.32, 3.31.24, 3.33.16, and 4.0.5.
📍 영향받는 시스템
MapFish Print 3.28.30, 3.30.32, 3.31.24, 3.33.16, 4.0.5 미만 버전
⚔️ 공격 벡터
인증되지 않은 공격자가 /api/print3/print 엔드포인트에 조작된 GML 레이어 URL을 포함한 요청을 전송
🛡️ 대응 방법
MapFish Print를 수정된 버전(3.28.30, 3.30.32, 3.31.24, 3.33.16, 4.0.5 이상)으로 업데이트
🔧 검증 코드
출력된 버전이 취약점이 해결된 버전(3.28.30, 3.30.32, 3.31.24, 3.33.16, 4.0.5 이상)인지 확인하십시오.
mapfish-print --version 2>/dev/null || echo 'Version check required via package manager'