Route-level file upload security for Node.js, scanning files for malware, spoofing, and risky archives before storage.
Pompelmi is an open-source file upload security scanner for Node.js applications. It inspects untrusted uploads at the route level before storage to detect malware, MIME and extension spoofing, risky archive structures, and suspicious document signals. It helps developers secure public or semi-trusted upload endpoints by providing clear verdicts that inform storage decisions.
Node.js developers building applications with file upload features, especially those using frameworks like Express, Next.js, NestJS, Fastify, or Koa, and teams needing to implement inspect-first security for public-facing endpoints or CI/CD artifact scanning.
Developers choose Pompelmi because it integrates directly into their application routes, providing context-aware security scanning before files hit storage. Unlike simple file-type checks or standalone antivirus, it combines spoofing detection, structural analysis, and optional YARA matching with framework-specific middleware for seamless adoption.
ClamAV antivirus scanning for Node.js — scan file uploads with a single function call. Zero dependencies. Typed Symbol verdicts. Local or Docker/clamd.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Validates files by comparing magic bytes, client-reported MIME types, and extensions against allowlists, effectively preventing common spoofing attacks as highlighted in the key features.
Detects complex threats like ZIP bombs, path traversal, and entry-count abuse in archives, which are often missed by basic file-type checks, reducing risk from malicious uploads.
Provides dedicated middleware and documentation for Express, Next.js, NestJS, and other popular Node.js frameworks, making it easy to drop into existing applications with minimal setup.
Returns clear classifications (clean, suspicious, malicious) that enable applications to implement reject, quarantine, or promote workflows seamlessly, supporting context-aware security decisions.
Only supports Node.js environments, limiting its use in polyglot or non-JavaScript backend stacks without complex workarounds, as evident from the framework integrations listed.
Requires full file buffering in memory for analysis, which can be resource-heavy for large files or high-concurrency scenarios, potentially impacting server performance.
Demands careful tuning of security policies (e.g., STRICT_PUBLIC_UPLOAD) and YARA rules, which may be daunting for teams without dedicated security expertise to avoid false positives or gaps.