Loading SOVA...
Loading SOVA...
SOVA detects ten categories of supply chain attack patterns. Signals are detected in manifest and lock files only — never in source code.
install-scriptDetects lifecycle scripts that execute arbitrary commands during package installation (preinstall, postinstall, install hooks in package.json, setup.py with cmdclass, etc.).
Example Finding
Legitimate packages rarely need install scripts. Malicious packages use them to exfiltrate environment variables or download second-stage payloads.
native-codeDetects references to native binary compilation in manifests (.gyp files, node-gyp dependency, gypfile: true, native extensions in setup.py).
Example Finding
dependency-confusionDetects package names that could be substituted via a private registry attack — internal-looking names (single word, no scope, matching known internal naming patterns) published to the public registry.
Example Finding
suspicious-metadataDetects unusual metadata in package manifests: empty or missing descriptions, mismatched author fields, extremely short package names, version 0.0.0, or missing repository fields.
Example Finding
obfuscationDetects indicators of intentional obfuscation in package config: base64-encoded inline scripts, hex-encoded strings, eval-based execution patterns, or minified code embedded directly in package.json.
Example Finding
unsafe-deserializationDetects declared dependencies on libraries with known unsafe deserialization behavior (serialize-javascript, node-serialize, PyYAML with unsafe loader, Java's ObjectInputStream wrappers).
Example Finding
code-injectionDetects dependency or config patterns that enable dynamic code execution (e.g. vm2, eval packages, template engines with dangerous defaults declared as runtime deps).
Example Finding
unsafe-archive-extractionDetects packages or scripts that extract archives (.tar, .zip, .tgz) without path traversal protection, enabling zip-slip attacks.
Example Finding
unbounded-resourceDetects manifest patterns that imply unbounded memory or CPU usage: packages that parse untrusted XML/HTML without limits, regex engines without timeout support, streaming parsers without backpressure.
Example Finding
hardcoded-secretDetects API keys, tokens, or credentials embedded directly in manifest files (package.json config blocks, .npmrc files, pyproject.toml tool config sections).
Example Finding
Continue Reading
Severity levels, false positive guidance, what SOVA considers unsafe, and scope limitations.