Sample report. Scan of OWASP NodeGoat, a deliberately vulnerable open-source practice app. This is unedited output from our scanner on the public OWASP NodeGoat repo, scanned 2026-10-16. NodeGoat is built to contain security flaws for training, so expect a lot of findings. It is not a customer app.

Sample report: OWASP NodeGoat (7 findings)

https://github.com/OWASP/NodeGoat · repo scan · 2026-10-16T12:00:17+01:00
1Critical
2High
2Medium
2Low
0Info
CRITICALSM-001 · dependencies

28 dependencies with known critical-severity vulnerabilities

📍 lockfiles

Why it matters: These packages have publicly known security bugs. Attackers use automated tools to find apps running vulnerable versions.

Evidence: babel-traverse@6.11.4 (1 advisories), bson@1.0.9 (2 advisories), form-data@0.1.4 (2 advisories), form-data@1.0.1 (2 advisories), form-data@2.0.0 (2 advisories), form-data@2.1.4 (2 advisories)

Fix prompt · paste into Lovable / Cursor / Bolt
Upgrade these packages to patched versions (run `npm audit fix`, or bump them manually and check for breaking changes): babel-traverse@6.11.4 (1 advisories), bson@1.0.9 (2 advisories), form-data@0.1.4 (2 advisories), form-data@1.0.1 (2 advisories), form-data@2.0.0 (2 advisories), form-data@2.1.4 (2 advisories), form-data@2.3.3 (2 advisories), fsevents@1.2.9 (2 advisories), getobject@0.1.0 (1 advisories), growl@1.9.2 (1 advisories), handlebars@4.0.5 (20 advisories), json-schema@0.2.3 (1 advisories) …. Then run the app's tests and the build again.
HIGHSM-002 · secrets

2 possible secret(s) committed to the code

📍 artifacts/cert/server.key:1 (private-key); config/env/development.js:6 (generic-api-key)

Why it matters: These look like real credentials (keys, tokens, private keys) committed to your repository. If they're real, anyone who can read the repo can use them.

Evidence: values redacted

Fix prompt · paste into Lovable / Cursor / Bolt
These lines look like committed secrets: artifacts/cert/server.key:1 (private-key); config/env/development.js:6 (generic-api-key). For each real secret, move it into a server-side environment variable, remove it from the code (and from git history with git filter-repo or BFG), and remind me to rotate it with the provider. Tell me which ones are harmless placeholders.
HIGHSM-003 · dependencies

64 dependencies with known high-severity vulnerabilities

📍 lockfiles

Why it matters: These packages have publicly known security bugs. Attackers use automated tools to find apps running vulnerable versions.

Evidence: adm-zip@0.4.4 (8 advisories), ansi-regex@3.0.0 (1 advisories), async@2.6.1 (1 advisories), body-parser@1.18.3 (2 advisories), brace-expansion@1.1.11 (8 advisories), brace-expansion@1.1.6 (9 advisories)

Fix prompt · paste into Lovable / Cursor / Bolt
Upgrade these packages to patched versions (run `npm audit fix`, or bump them manually and check for breaking changes): adm-zip@0.4.4 (8 advisories), ansi-regex@3.0.0 (1 advisories), async@2.6.1 (1 advisories), body-parser@1.18.3 (2 advisories), brace-expansion@1.1.11 (8 advisories), brace-expansion@1.1.6 (9 advisories), braces@1.8.5 (2 advisories), braces@2.3.2 (2 advisories), cross-spawn@4.0.0 (1 advisories), cross-spawn@4.0.2 (1 advisories), cross-spawn@5.1.0 (1 advisories), cross-spawn@6.0.5 (1 advisories) …. Then run the app's tests and the build again.
MEDIUMSM-004 · abuse

No rate limiting on login or AI endpoints

📍 app/routes/index.js → /login; app/routes/index.js → /signup

Why it matters: Without rate limits, bots can guess passwords endlessly or hammer your AI endpoints and run up a large API bill.

Fix prompt · paste into Lovable / Cursor / Bolt
Add rate limiting to these endpoints: app/routes/index.js → /login; app/routes/index.js → /signup. Use @upstash/ratelimit (serverless) or express-rate-limit (Express), limiting per IP and per user (e.g. 5 login attempts/minute, 20 AI requests/minute), and return HTTP 429 when exceeded.
MEDIUMSM-005 · dependencies

30 dependencies with known medium-severity vulnerabilities

📍 lockfiles

Why it matters: These packages have publicly known security bugs. Attackers use automated tools to find apps running vulnerable versions.

Evidence: ajv@6.10.0 (2 advisories), bl@1.0.3 (1 advisories), bl@1.1.2 (1 advisories), express@4.16.4 (2 advisories), got@6.7.1 (1 advisories), helmet-csp@1.2.2 (1 advisories)

Fix prompt · paste into Lovable / Cursor / Bolt
Upgrade these packages to patched versions (run `npm audit fix`, or bump them manually and check for breaking changes): ajv@6.10.0 (2 advisories), bl@1.0.3 (1 advisories), bl@1.1.2 (1 advisories), express@4.16.4 (2 advisories), got@6.7.1 (1 advisories), helmet-csp@1.2.2 (1 advisories), hosted-git-info@2.1.5 (1 advisories), hosted-git-info@2.7.1 (1 advisories), is-my-json-valid@2.15.0 (1 advisories), jsonpointer@4.0.0 (1 advisories), jsonpointer@4.0.1 (1 advisories), micromatch@2.3.11 (1 advisories) …. Then run the app's tests and the build again.
LOWSM-006 · secrets

1 secret-like value(s) in tests or example files

📍 config/env/test.js:6 (generic-api-key)

Why it matters: Probably test data or placeholders, but worth a quick look: real keys sometimes end up in examples and tests.

Evidence: values redacted

Fix prompt · paste into Lovable / Cursor / Bolt
Check these test/example lines and confirm none contain real credentials: config/env/test.js:6 (generic-api-key). Replace any real ones with obvious placeholders and rotate them.
LOWSM-007 · dependencies

11 dependencies with known low-severity vulnerabilities

📍 lockfiles

Why it matters: These packages have publicly known security bugs. Attackers use automated tools to find apps running vulnerable versions.

Evidence: chownr@1.0.1 (1 advisories), cookie@0.3.1 (1 advisories), debug@3.2.6 (1 advisories), debug@4.1.1 (1 advisories), diff@1.4.0 (2 advisories), es5-ext@0.10.12 (1 advisories)

Fix prompt · paste into Lovable / Cursor / Bolt
Upgrade these packages to patched versions (run `npm audit fix`, or bump them manually and check for breaking changes): chownr@1.0.1 (1 advisories), cookie@0.3.1 (1 advisories), debug@3.2.6 (1 advisories), debug@4.1.1 (1 advisories), diff@1.4.0 (2 advisories), es5-ext@0.10.12 (1 advisories), extend@3.0.0 (1 advisories), mongodb@2.2.36 (1 advisories), on-headers@1.0.1 (1 advisories), stringstream@0.0.5 (1 advisories), tunnel-agent@0.4.3 (1 advisories). Then run the app's tests and the build again.
Want this for your app?

Scan your public GitHub repo or live URL. The summary is free; the full report like this one is £29.

Scan my appFree mini scan

Scan notes

⚠️ ShipMender is an automated scan for common issues in AI-built apps. It can miss problems and report false positives, and it is not a substitute for a full professional security audit or penetration test.

← ShipMender home · Privacy