🇰🇷 한글 설명
Malcolm의 파일 업로드 처리 파이프라인에서 .gz, .bz2 등 단일 스트림 압축 형식에 대해 압축 해제 제한 사항을 적용하지 않는 취약점이 발견되었습니다. 인증된 사용자가 압축 해제 시 크기가 무한히 늘어나는 '압축 폭탄' 파일을 업로드할 경우, 공유 Docker 볼륨의 디스크 공간을 모두 점유하여 전체 플랫폼 서비스를 중단시킬 수 있습니다.
💡 쉬운 설명
작은 크기의 압축 파일을 올렸을 때 컴퓨터 용량을 순식간에 가득 채워 시스템을 멈추게 만드는 공격입니다. 이로 인해 로그 분석 및 보안 모니터링 서비스 전체가 마비될 수 있습니다.
🇺🇸 원문 (English)
Malcolm's upload-processing pipeline (scripts/safe-extract.py) enforces entry-count, nesting-depth, and total-uncompressed-byte limits when extracting container archives (zip/tar/rar/7z via libarchive), but those limits are not applied when the uploaded file is a single-stream compressed format (.gz, .bz2, .xz, .lzma, .lz) that isn't a .tar.*-style archive. Any authenticated user permitted to upload PCAP/log files can upload a small, highly compressible file (e.g. a gzip bomb) that decompresses to an effectively unbounded size on disk, exhausting the shared Docker volume used by OpenSearch, Logstash, Arkime, and Zeek, and disrupting the platform for all users.
📍 영향받는 시스템
Malcolm (scripts/safe-extract.py를 사용하는 버전)
⚔️ 공격 벡터
인증된 사용자가 압축 해제 제한이 없는 단일 스트림 압축 파일(.gz, .bz2 등)을 업로드하여 디스크 공간 고갈 유도
🛡️ 대응 방법
scripts/safe-extract.py를 업데이트하여 단일 스트림 압축 형식에 대해서도 압축 해제 크기 및 제한 사항을 강제 적용
🔧 검증 코드
해당 스크립트의 존재 여부를 확인하고, 단일 스트림 압축 파일에 대한 크기 제한 로직이 코드 내에 구현되어 있는지 검토해야 합니다.
grep -r 'safe-extract.py' /opt/malcolm/scripts/ 2>/dev/null && python3 /opt/malcolm/scripts/safe-extract.py --help