🇰🇷 한글 설명
Gramps Web API 1.6.0~3.11.0 버전의 미디어 아카이브 import 기능에서 ZIP Slip 취약점이 존재합니다. 인증된 owner 권한 사용자가 디렉토리 이동 파일명을 포함한 악의적 ZIP을 업로드하여 서버 파일시스템의 임의 위치에 파일을 쓸 수 있습니다.
💡 쉬운 설명
Gramps 프로그램의 온라인 버전에서 사용자가 특수하게 조작한 압축 파일을 업로드할 때, 프로그램이 압축을 풀 때 파일이 의도된 폴더 밖에 저장될 수 있습니다. 이를 통해 공격자가 서버의 중요한 시스템 파일을 변조할 수 있습니다.
🇺🇸 원문 (English)
The Gramps Web API is a Python REST API for the genealogical research software Gramps. Versions 1.6.0 through 3.11.0 have a path traversal vulnerability (Zip Slip) in the media archive import feature. An authenticated user with owner-level privileges can craft a malicious ZIP file with directory-traversal filenames to write arbitrary files outside the intended temporary extraction directory on the server's local filesystem. Startig in version 3.11.1, ZIP entry names are now validated against the resolved real path of the temporary directory before extraction. Any entry whose resolved path falls outside the temporary directory raises an error and aborts the import.
📍 영향받는 시스템
Gramps Web API 버전 1.6.0 ~ 3.11.0 (3.11.1 이상에서 패치됨)
⚔️ 공격 벡터
owner 권한을 가진 인증 사용자가 디렉토리 순회 경로를 포함한 악의적 ZIP 파일을 미디어 아카이브 import 기능으로 업로드
🛡️ 대응 방법
Gramps Web API를 3.11.1 이상 버전으로 즉시 업그레이드하여 ZIP 검증 기능 적용
🔧 검증 코드
Version 필드에 표시된 버전이 3.11.1 이상이면 안전함. 3.11.0 이하 또는 설치 안 됨이면 취약함
pip show gramps-web 2>/dev/null | grep Version || echo 'gramps-web not installed'