Skip to content

docs: add the Open Source Friday demo project and run of show - #1104

Merged
sonukapoor merged 3 commits into
mainfrom
docs/open-source-friday-demo
Sep 8, 2026
Merged

docs: add the Open Source Friday demo project and run of show#1104
sonukapoor merged 3 commits into
mainfrom
docs/open-source-friday-demo

Conversation

@sonukapoor

Copy link
Copy Markdown
Collaborator

Adds examples/open-source-friday-demo/ for the GitHub Open Source Friday livestream on 18 September.

shipping-api is a small Express service with five direct dependencies pinned to old versions. It produces 11 vulnerable packages, 1 critical and 6 high, split 5 direct and 6 transitive, and all six transitive findings trace back to a single parent. That is what makes the demo work: one npm install express@... resolves six findings in packages the developer never installed and could not upgrade directly.

Purpose-built rather than a real repository, because scanning someone else's project live on GitHub's own channel broadcasts their vulnerabilities on a stream they did not agree to. Juice Shop was considered and rejected: it produces 52 findings but zero direct, so there is no copy-and-run fix command to demonstrate.

The README carries the four-beat run of show plus two things found the hard way during preparation. Fix versions move between runs on live OSV data, so the commands have to come from a rehearsal immediately before going live rather than being prepared in advance. And --offline must not be used on air: it disables registry-validated fix versions and parent-version upgrades, which are two of the four beats and the two that differentiate the tool from npm audit.

Verified that self-scan reads the root lockfile and does not descend into examples/, so adding a deliberately vulnerable project does not affect CI. Confirmed by running the self-scan command with the project present.

Closes #1103

CVE Lite CLI is featured on GitHub's Open Source Friday livestream on
2026-09-18. The demo is the centrepiece of that session, so it needs a
project that is versioned and reproducible rather than assembled in a
scratch directory on the day.

shipping-api is a small Express service with five direct dependencies
pinned to old versions. It produces 11 vulnerable packages, 1 critical
and 6 high, split 5 direct and 6 transitive, and every one of the six
transitive findings traces back to a single parent. That last property is
what makes the demo land: one express upgrade resolves six findings in
packages the developer never installed and could not upgrade directly.

Purpose-built rather than a real repository, because scanning someone
else's project live on GitHub's own channel broadcasts their
vulnerabilities on a stream they did not agree to. Juice Shop was
considered and rejected: 52 findings but zero direct, so there is no
copy-and-run fix command to show.

The README records two things found during preparation. Fix versions
move between runs on live OSV data, so the commands must come from a
rehearsal immediately before going live. And --offline must not be used
on air: it disables registry-validated fix versions and parent-version
upgrades, which are two of the four beats and the two that differentiate
the tool.

Verified that self-scan reads the root lockfile and does not descend into
examples/, so adding a deliberately vulnerable project does not affect CI.

Closes #1103
Comment thread examples/open-source-friday-demo/shipping-api/src/index.js Fixed
Comment thread examples/open-source-friday-demo/shipping-api/src/index.js Fixed
…rvice

CodeQL flagged two real issues in the demo source: a critical
js/request-forgery from interpolating a route parameter into an outbound
axios URL, and a high js/missing-rate-limiting on a route that performs
authorization.

Both were genuine. The point of this project is vulnerable dependencies,
not vulnerable code, and it is committed to an OWASP repository where it
gets scanned like everything else.

The carrier lookup now targets a fixed host with the shipment id passed
as an encoded query parameter, so the request target cannot be influenced
by user input, and the id is validated against a strict pattern before
any work happens. Authorization failures are handled rather than throwing.
A comment records why the file must stay clean.

Scan output is unchanged: 11 packages, 1 critical, 6 high, 5 direct and
6 transitive.
Comment thread examples/open-source-friday-demo/shipping-api/src/index.js Fixed
CodeQL still flagged js/missing-rate-limiting: the route performed JWT
verification, and a route that authorizes should be rate limited. Adding
a rate-limiter would mean adding a dependency, which changes the demo's
finding counts, and the demo depends on those counts being stable.

The scan reads package-lock.json rather than this file, so the source
exists for realism and for import-based reachability only. Restructured
as a worker: token verification happens once at startup against an
environment variable, shipment polling is a plain function called by a
scheduler, and the only route is an unauthenticated liveness probe.

Scan output unchanged.
@sonukapoor
sonukapoor merged commit f9dccac into main Sep 8, 2026
6 checks passed
@sonukapoor
sonukapoor deleted the docs/open-source-friday-demo branch September 8, 2026 11:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: add the Open Source Friday demo project and run of show

2 participants