피드로 돌아가기
Defense against uploads: Q&A with OSS file scanner, pompelmi
Stack Overflow BlogStack Overflow Blog
Security

Defense against uploads: Q&A with OSS file scanner, pompelmi

Tommaso Bertocchi가 Node.js 기반 파일 스캐너 pompelmi를 개발해 파일 업로드 보안 설정의 진입 장벽을 낮춤

Ryan Donovan2026년 2월 23일7intermediate

Context

파일 업로드 보안은 네트워크·API 보안에 밀려 간과되는 공격 벡터이나, 실제로는 ZIP bomb 같은 리소스 소진 공격, MIME 타입 우회, 경로 조작 등 복잡한 위협을 포함한다. 기존에는 멀웨어 스캐너 구축이 도메인 전문성과 수 시간의 설정을 요구해 개발자들이 구현을 미루는 경향이 있었다.

Technical Solution

  • Node.js 네이티브 구현으로 추가 런타임 관리 제거: 기존 Node.js 이코시스템(React, Angular, Next.js)과 동일 환경에서 실행되도록 설계
  • 스트림 기반 인메모리 스캔으로 디스크 I/O 제거: Node.js streams와 설정 가능한 버퍼 제한을 사용해 업로드 중 파일 바이트를 메모리에서 직접 분석
  • Magic bytes를 이용한 즉시 정책 위반 탐지: 파일 타입을 빠르게 식별하고 ZIP bomb 같은 위반 정책은 전체 파일 처리 전에 스캔 종료
  • 프로세스 내 엔진 실행으로 네트워크 지연 제거: 외부 IPC 또는 네트워크 호출 없이 동일 프로세스에서 스캔 수행
  • 기본 정책과 YARA 규칙의 조합: 사전 구성된 정책 프리셋과 Common Heuristics Scanner로 ZIP bomb 및 MIME/Magic Byte 검증을 기본 제공하되, 사용자가 YARA 규칙으로 커스터마이징 가능
  • 계층화된 방어 아키텍처: 서버 측 검증, 아카이브 체크, 리소스/시간 제한, 선택적 YARA 스캔으로 다층 보호 구현

Node.js 기반 웹 애플리케이션에서 파일 업로드 기능을 구현할 때, pompelmi 같은 스트림 기반 스캐너를 도입하면 디스크 I/O 오버헤드를 제거하고 네트워크 지연 없이 리얼타임 위협 탐지를 수행할 수 있다. 또한 magic bytes를 이용한 초기 정책 체크로 악성 아카이브는 전체 처리 전에 즉시 중단할 수 있으므로, 리소스 고갈 공격에 대한 방어를 기본으로 갖출 수 있다.

원문 읽기