본문으로 건너뛰기

Zip Slip 취약점 빠르게 정리

Zip Slip은 압축 해제 과정에서 ../ 경로가 제대로 제거되지 않아 임의 파일 쓰기가 되는 취약점입니다. 웹 업로드 기능에서 ZIP을 풀어주는 경우, ../../../../var/www/html/shell.jsp 같은 엔트리를 심어 서버 파일을 덮어쓸 수 있어요.

간단한 공격 흐름

  • 압축 파일에 탈출 경로 포함
  • 서버가 zip.extract() 같은 함수로 그대로 해제
  • 웹 루트/설정 파일 덮어쓰기 → RCE로 연결

실전 체크 포인트

  • ZIP 내부의 엔트리 경로 정규화 여부
  • 압축 해제 라이브러리가 자동 방어하는지 확인
  • 해제 위치가 권한 있는 디렉터리인지 점검

방어 포인트

  • realpath 기반으로 해제 경로 검증
  • allowlist 기반의 경로 필터링
  • 압축 해제는 샌드박스/격리 디렉터리에서

CTF에서도 자주 나오고, 실서비스 업로드 기능에서도 여전히 발견됩니다. “압축 해제”는 항상 입력 처리라는 점을 잊지 말아야 합니다.