← All finding types

unsafe_file_upload

CWE-434

Unsafe File Upload — a PullGuard finding type. Findings of this type appear in the PR comment, Step Summary, SARIF (GitHub Security tab / IDE viewers), and the HTML report, each with severity, location, and the remediation guidance below.

How to fix

Layered validation — size, MIME, extension, magic-byte medium effort

// Multer
multer({
  limits: { fileSize: 5 * 1024 * 1024 },
  fileFilter: (req, file, cb) => {
    const ok = ["image/png", "image/jpeg"].includes(file.mimetype);
    cb(null, ok);
  }
});

// Django
from django.core.validators import FileExtensionValidator
file = FileField(validators=[FileExtensionValidator(allowed_extensions=["png", "jpg"])])

// Magic-byte check (any language) — verify actual file contents match the declared MIME, not just the filename extension.

Triage

Suppress a confirmed non-issue with a committed .pullguardignore entry (pullguard ignore locally, or comment /pullguard ignore <fingerprint> <reason> on the PR — the fingerprint is printed in the PR comment’s Triage section). Entries support expiresAt for time-boxed snoozes.

Security findings at major or critical severity — and any critical finding — always surface: .pullguardignore cannot hide them. The reviewed paths that keep them visible are acknowledged (reviewed, stays in reports) and, for a confirmed false positive, a reasoned false_positive entry — visible and audited, excluded only from the merge block.