underscore-contrib
underscore-contrib ==================
Supply chain provenance
Status for the latest visible version.
Without SLSA provenance there is no cryptographic link between this tarball and the public source — the axios compromise (March 2026) relied on exactly this gap.
Maintainers
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| source-diff | net-exec-file:dist/underscore-contrib.js | AI (source-diff): dist/underscore-contrib.js is a standard build artifact. 'Network call' is require('underscore'); 'exec' is new Function() for arity utilities. No actual dropper behavior. | ai | |
| source-diff | net-exec-file:dist/underscore-contrib.min.js | AI (source-diff): dist/underscore-contrib.min.js is the minified build artifact. Same false-positive pattern as the unminified file — require() + new Function() for arity helpers. | ai | |
| bogus-package | bogus-package | AI (bogus-package): Established package (4729 days, 19.7k weekly downloads); README/keywords signals are cosmetic false positives for this well-known library. | ai | |
| semgrep | semgrep:dynamic-require | AI (semgrep): Dynamic require iterates over a hardcoded array of known sub-module names with a fixed prefix — no user-controlled input, fully safe pattern for this library. | ai | |
| semgrep | semgrep:new-function-constructor | AI (semgrep): new Function() is used to create arity-specific wrappers around user-supplied functions — a standard functional programming pattern with internally generated, non-user-controlled code strings. No injection risk. | ai | |
| provenance | publisher-changed | AI (provenance): Publisher change fogus→joshuacc occurred in 2014; joshuacc is a known contributor with a clean track record. This is a stable historical transition, not a compromise signal. | ai | |
| maintainer-change | maintainer-added | AI (maintainer-change): joshuacc was added as maintainer in 2014 as part of a legitimate transition; stable historical fact for this package. | ai |
Versions (showing 7 of 7)
| Version | Deps | Published |
|---|---|---|
| 0.3.0 | 1 / 9 | |
| 0.2.2 | 1 / 8 | |
| 0.2.1 | 1 / 8 | |
| 0.1.4 | 1 / 3 | |
| 0.1.1 | 1 / 0 | |
| 0.1.0 | 1 / 0 | |
| 0.0.1 | 1 / 0 |
v0.3.0
2 findingsThis version was published by a different npm account than previous versions on 2014-05-10. This could indicate a legitimate maintainer transition or an account compromise.
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v0.2.2
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v0.2.1
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v0.1.4
3 findingsNewly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.
Newly added file contains both network calls and dynamic code execution. This is a hallmark of dropper/loader malware.
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v0.1.1
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v0.1.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v0.0.1
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.