
백엔드
엑셀 업로드 중 발생한 Zip Bomb 에러 파헤치기! 🥊
두줄요약
엑셀 내부 styles.xml의 반복 스타일이 높은 압축률을 만들어 Apache POI의 Zip Bomb 탐지를 유발했습니다.\n압축 해제 비율을 조정해 우선 해결하고, 크기·중첩 레벨 제한을 보안 대안으로 제시했습니다.
문제 상황
- 고객사 엑셀 업로드 중 Apache POI의
Zip bomb detected오류 발생 .xlsx내부xl/styles.xml의 압축 비율이 최소 허용치 0.01 미만으로 판정
원인 분석
- XLSX의 ZIP 기반 구조를 해제하고 XML을 파싱하는 과정에서 압축률 검사 수행
styles.xml내 반복적인 셀 스타일 정의로 압축률 과도 상승- 압축 크기 4,059바이트 대비 해제 크기 406,416바이트, 비율 0.009987
해결 방법
- 계약 사용자 중심 서비스 환경과 악의적 공격 가능성을 고려해
ZipSecureFile.setMinInflateRatio()값 하향 조정 - 압축 해제 크기 제한과 중첩 압축 레벨 제한을 추가 방어책으로 제시
주의할 점
- 압축 비율 완화는 정상 파일 처리 범위를 넓히는 대신 Zip Bomb 방어 수준 저하 가능성
- 로그의 파일 크기, 비율, 문제 엔트리 분석을 통한 원인 확인 필요

