We Audited 50 Codebases. Here's What Should Keep You Up at Night.
The Setup
Over the last six months, Menteorama Studio has performed supply chain security audits on 50 JavaScript codebases. These aren't toy projects — they're production applications handling real users, real transactions, and real data. E-commerce platforms, SaaS dashboards, client portals, internal tools, mobile backends.
We scanned every dependency — direct and transitive. We cross-referenced against the National Vulnerability Database. We checked maintainer account status, publish patterns, and license conflicts.
Here's what we found.
The Numbers
Average dependencies per project: 847
Not 30 (what's in your package.json). Not 100 (what you think you have). 847 actual packages installed in node_modules, most of which you've never heard of and never will — until one of them gets compromised.
Projects with at least one known vulnerability: 73%
Nearly three out of four production codebases had at least one CVE in their dependency tree that had a published fix available. Not a theoretical risk — a documented vulnerability with a known exploit path.
Projects with critical-severity CVEs: 41%
Not just "medium" or "low" — critical. The kind that gets a CVSS score above 9.0. The kind that means "someone can execute arbitrary code in your application."
Average days from CVE publication to patch applied: 47
Nearly seven weeks between "the world knows about this vulnerability" and "someone actually updates the package." During those 47 days, your application is running known-vulnerable code in production.
Projects with a current SBOM on file: 11%
Only 1 in 9 projects could produce a Software Bill of Materials. The rest had no documented record of what was actually running in production.
The Patterns We Saw
Pattern 1: The Forgotten Transitive
The most common vulnerability wasn't in a package the developer chose. It was in a dependency of a dependency of a dependency. Three or four levels deep. A date-formatting library pulled in by a testing framework pulled in by a UI component library. Nobody chose it. Nobody audits it. But it runs in your build pipeline.
Pattern 2: The Abandoned Maintainer
In 41% of projects, at least one dependency was maintained by a single developer whose npm account showed signs of compromise risk — password reuse from known breaches, no 2FA, or suspicious publish patterns. These packages had millions of weekly downloads.
Pattern 3: The "npm audit clean" Illusion
12 projects had teams that said "we run npm audit regularly." When we scanned them, we found vulnerabilities that npm audit doesn't catch — compromised maintainers, license conflicts, deprecated packages with known issues that haven't been assigned CVEs yet.
Pattern 4: The Lockfile False Security
Teams believed their lockfile protected them. It does — until someone runs npm install and the tree resolves to new versions. Or until a dependency publishes a malicious patch that your lockfile will happily install next time.
What This Means for You
If you're shipping JavaScript — which, statistically, you probably are — the question isn't whether you have vulnerable dependencies. You almost certainly do.
The question is: do you know about them? Do you have a system that tells you when a new CVE affects your stack? Do you have an SBOM you could show a client or regulator if they asked?
For most teams, the honest answer is no.
This is why we built Code Sentinel. Not because security scanning is new — Snyk and Dependabot exist. But because those tools are built for enterprises with dedicated security teams. If you're a 3-person agency managing 5 client projects, or a solo founder with 3 repos, you need something simpler, cheaper, and more opinionated.
Code Sentinel runs weekly scans, generates SBOMs, cross-references CVE databases, and sends you a report with specific remediation steps. Starting at $299/month for up to 3 projects.
The first scan is free. No credit card. Connect one repo and see what's there.