You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The organization-required Security Scan produces false-positive OSV failures when a pnpm lock entry uses an official direct tarball that intentionally carries a package version newer than the last vulnerable npm registry release.
Current central owner: protected .githubmain@c47afc2dc68488292c1db7c9d6f82dcd5360f181, .github/workflows/security-scan.yml.
Concrete downstream reproduction: ContextualWisdomLab/inkspan#318 predecessor exact head 9f1c8b732e9b91f152cfff2e9277b758c0959c4a, Security Scan run 32013961603, OSV job/check 95339355813, debug artifact 9282795069 (osv-scan-debug). The Inkspan lock pins SheetJS from the official immutable CDN tarball https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz.
The captured new-results.json classifies that lock entry as:
and reports both GHSA-4r6h-8v6p-xvw6 / CVE-2023-30533 and GHSA-5pgg-2g8v-p4x9 / CVE-2024-22363. The same evidence embeds database_specific.last_known_affected_version_range values < 0.19.3 and < 0.20.2 respectively. Therefore 0.20.3 is outside both affected ranges, but the npm advisory records expose an open-ended SEMVER range because the fixed SheetJS releases are not npm-registry releases. Treating the direct CDN tarball as ordinary npm ecosystem evidence makes a patched package look permanently vulnerable.
This is a central scanner/provenance classification defect, not an Inkspan product vulnerability. An Inkspan-local advisory ignore would hide the causal control-plane defect and is not acceptable.
First causal boundary
The central workflow delegates direct manifest/lock evidence to OSV Scanner with --no-resolve and then treats the resulting npm-ecosystem finding as authoritative without retaining/validating the pnpm resolution origin. For direct immutable tarballs, package name/version alone is insufficient provenance for npm advisory semantics.
Required test-first repair
Add a RED central contract fixture containing a pnpm lock entry for exact official SheetJS CDN tarball xlsx-0.20.3.tgz; prove the current gate incorrectly fails it against the two GHSA records above.
Add a vulnerable control fixture (for example an npm-registry xlsx@0.18.5) that must continue to fail.
Preserve package-source provenance when interpreting OSV results. A finding may be suppressed/normalized only when an exact immutable non-registry source can be proven, its package/version identity is exact, and authoritative advisory metadata proves that exact source version is outside the affected range. Unknown, mutable, malformed, redirected, or unverifiable source identity must fail closed.
Do not add blanket GHSA ignores, package-name ignores, severity downgrades, continue-on-error, or a generic xlsx exception.
Keep the existing base/head diff semantics, exact PR head checkout, hard fail-on-new-vulnerability behavior, Trivy/dependency-review independence, immutable action pins, and least-privilege permissions.
Add an explicit malformed-source fixture and an npm xlsx@0.18.5 fixture to prove source confusion cannot manufacture green evidence.
direct official CDN xlsx@0.20.3 is not classified as a vulnerable npm release merely because its lock entry has the same package name;
npm-registry vulnerable xlsx@0.18.5 still hard-fails;
unknown/unverifiable direct sources fail closed or remain findings;
the resulting OSV evidence records package source/provenance sufficiently to audit why a finding was retained or excluded;
Inkspan reruns Security Scan on the then-current exact PR head and obtains fresh evidence; predecessor success is not transferred.
Inkspan-side revalidation criterion
After the central repair reaches protected .github main, rerun the required Security Scan for the unchanged then-current ContextualWisdomLab/inkspan#318 head and require the OSV job to inspect the official xlsx-0.20.3 tarball without those two false-positive npm-ecosystem findings. All other required Inkspan checks remain independently required.
Exact downstream defect
The organization-required
Security Scanproduces false-positive OSV failures when a pnpm lock entry uses an official direct tarball that intentionally carries a package version newer than the last vulnerable npm registry release.Current central owner: protected
.githubmain@c47afc2dc68488292c1db7c9d6f82dcd5360f181,.github/workflows/security-scan.yml.Concrete downstream reproduction:
ContextualWisdomLab/inkspan#318predecessor exact head9f1c8b732e9b91f152cfff2e9277b758c0959c4a, Security Scan run32013961603, OSV job/check95339355813, debug artifact9282795069(osv-scan-debug). The Inkspan lock pins SheetJS from the official immutable CDN tarballhttps://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz.The captured
new-results.jsonclassifies that lock entry as:{"name":"xlsx","version":"0.20.3","ecosystem":"npm"}and reports both
GHSA-4r6h-8v6p-xvw6/CVE-2023-30533andGHSA-5pgg-2g8v-p4x9/CVE-2024-22363. The same evidence embedsdatabase_specific.last_known_affected_version_rangevalues< 0.19.3and< 0.20.2respectively. Therefore0.20.3is outside both affected ranges, but the npm advisory records expose an open-ended SEMVER range because the fixed SheetJS releases are not npm-registry releases. Treating the direct CDN tarball as ordinary npm ecosystem evidence makes a patched package look permanently vulnerable.This is a central scanner/provenance classification defect, not an Inkspan product vulnerability. An Inkspan-local advisory ignore would hide the causal control-plane defect and is not acceptable.
First causal boundary
The central workflow delegates direct manifest/lock evidence to OSV Scanner with
--no-resolveand then treats the resulting npm-ecosystem finding as authoritative without retaining/validating the pnpm resolution origin. For direct immutable tarballs, package name/version alone is insufficient provenance for npm advisory semantics.Required test-first repair
xlsx-0.20.3.tgz; prove the current gate incorrectly fails it against the two GHSA records above.xlsx@0.18.5) that must continue to fail.continue-on-error, or a genericxlsxexception.xlsx@0.18.5fixture to prove source confusion cannot manufacture green evidence.0.20.3CDN tarball.GREEN acceptance
xlsx@0.20.3is not classified as a vulnerable npm release merely because its lock entry has the same package name;xlsx@0.18.5still hard-fails;Inkspan-side revalidation criterion
After the central repair reaches protected
.githubmain, rerun the required Security Scan for the unchanged then-currentContextualWisdomLab/inkspan#318head and require the OSV job to inspect the officialxlsx-0.20.3tarball without those two false-positive npm-ecosystem findings. All other required Inkspan checks remain independently required.