
백엔드
엑셀 업로드 중 발생한 Zip Bomb 에러 파헤치기!
두줄요약
엑셀 업로드 중 Apache POI가 Zip Bomb으로 파일을 차단한 원인과 로그 분석 과정을 정리했습니다. 최소 압축 비율 조정과 파일 크기·중첩 레벨 점검으로 대응했습니다.
문제 상황
- 엑셀 업로드 과정에서 Apache POI가 Zip Bomb으로 파일을 차단하며 XSSFWorkbook 생성 시 오류 발생
- 로그에 압축 해제 후 크기, 압축 크기, 최소 압축 비율, 문제 엔트리 정보가 함께 노출
원인 분석
- .xlsx 내부의 XML 압축 구조 특성상 압축률이 매우 높아 Zip Bomb으로 오인 가능
- 문제 파일은 styles.xml에 반복적인 스타일 정의가 많아 압축률이 임계값을 약간 초과
해결 방법
- ZipSecureFile.setMinInflateRatio()로 최소 압축 해제 비율 조정
- 압축 파일 총 해제 크기와 중첩 레벨을 사전 점검해 차단
주의할 점
- 비율 완화는 보안 검사를 느슨하게 만드는 만큼 악성 파일 대응 필요
- 서비스 특성에 따라 허용 기준과 보안 강도를 함께 검토 필요
적용해볼 점
- 업로드 파일 처리 전에 로그와 압축 메타데이터를 먼저 확인
- 엑셀 내부 XML 구조와 반복 데이터가 압축률에 미치는 영향 점검
