Zip Slip 취약점 빠르게 정리
Zip Slip은 압축 해제 과정에서 ../ 경로가 제대로 제거되지 않아 임의 파일 쓰기가 되는 취약점입니다. 웹 업로드 기능에서 ZIP을 풀어주는 경우, ../../../../var/www/html/shell.jsp 같은 엔트리를 심어 서버 파일을 덮어쓸 수 있어요.
간단한 공격 흐름
- 압축 파일에 탈출 경로 포함
- 서버가
zip.extract()같은 함수로 그대로 해제 - 웹 루트/설정 파일 덮어쓰기 → RCE로 연결
실전 체크 포인트
- ZIP 내부의 엔트리 경로 정규화 여부
- 압축 해제 라이브러리가 자동 방어하는지 확인
- 해제 위치가 권한 있는 디렉터리인지 점검
방어 포인트
realpath기반으로 해제 경로 검증- allowlist 기반의 경로 필터링
- 압축 해제는 샌드박스/격리 디렉터리에서
CTF에서도 자주 나오고, 실서비스 업로드 기능에서도 여전히 발견됩니다. “압축 해제”는 항상 입력 처리라는 점을 잊지 말아야 합니다.