엑셀 업로드 중 Zip Bomb 에러 원인 분석 및 Apache POI 설정 완화로 해결
핵심 내용
엑셀 업로드 시 발생한 Zip Bomb 에러를 Apache POI의 압축률 검사 기준 완화로 해결했다.
자세히 보기
Zip Bomb 에러 발생 및 원인 분석
고객사 엑셀 파일 업로드 배송 요청 기능에서 Zip Bomb 에러가 발생했다. Zip Bomb은 압축 파일 크기는 작으나 해제 시 막대한 데이터를 생성해 서버 자원을 소모시키는 공격 기법이다. Apache POI 라이브러리는 엑셀 파일(.xlsx)의 ZIP 압축 해제 및 XML 파싱을 수행하며, 비정상적인 압축률을 감지하면 'Zip bomb detected' 오류를 발생시킨다.
에러 로그 분석 결과, xl/styles.xml 파일의 압축률이 시스템 설정값인 MIN_INFLATE_RATIO 0.010000보다 낮은 0.009987로 측정되어 차단되었다. 이는 styles.xml 내 동일한 dxf 태그(폰트 색상 FF9C0006, 배경색 FFFFC7CE 등)가 과도하게 반복되어 압축률이 극대화되었기 때문이다. 압축 알고리즘은 반복되는 패턴을 짧은 코드로 대체하므로, 반복 데이터가 많을수록 압축률이 상승한다.
해결 방안 및 향후 계획
서비스 특성상 계약된 사용자만 접근 가능하여 악의적 공격 가능성이 낮다고 판단, 1차 조치로 ZipSecureFile.setMinInflateRatio(0.01) 메서드를 사용해 최소 압축 해제 비율을 조정하고 검사를 완화했다. 향후에는 파일 크기 제한, 압축 파일 계층 제한 등 더 근본적인 보안 대책을 마련하여 시스템 안정성과 보안을 강화할 계획이다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.