kxco-pq-scan 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ASSESSMENT.md +82 -0
- package/README.md +14 -0
- package/package.json +5 -3
package/ASSESSMENT.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Assessment notes
|
|
2
|
+
|
|
3
|
+
The answers a buyer's readiness assessment asks for: what this package does,
|
|
4
|
+
how it moves when the landscape moves, and what it takes to run it.
|
|
5
|
+
|
|
6
|
+
## What this package is
|
|
7
|
+
|
|
8
|
+
The tool that tells you where to start. It reads a lock file and reports the
|
|
9
|
+
cryptography in a JavaScript dependency tree that a quantum computer breaks.
|
|
10
|
+
|
|
11
|
+
**No install, no account, no upload.** `npx kxco-pq-scan` reads
|
|
12
|
+
`package-lock.json` on your machine and prints what it finds. Nothing leaves the
|
|
13
|
+
host, which is what makes it usable on the codebase people are least willing to
|
|
14
|
+
send anywhere.
|
|
15
|
+
|
|
16
|
+
**Zero dependencies.** This package has none. There is no transitive tree to
|
|
17
|
+
audit and no upstream that can change what it does between releases — an
|
|
18
|
+
unusual thing for a scanner to be able to say about itself, and the first
|
|
19
|
+
question a security team should ask of any tool they point at their source.
|
|
20
|
+
|
|
21
|
+
**It separates the two threats.** Shor's algorithm breaks RSA and elliptic
|
|
22
|
+
curve outright; Grover's halves a symmetric key's effective strength. A tool
|
|
23
|
+
that reports both as "quantum-vulnerable" produces a migration plan that spends
|
|
24
|
+
the same effort on both. This one distinguishes them, so the plan matches the
|
|
25
|
+
risk.
|
|
26
|
+
|
|
27
|
+
**Hybrids are not findings.** A construction that already combines a classical
|
|
28
|
+
primitive with a post-quantum one is reported as what it is, not as a failure.
|
|
29
|
+
That single behaviour is the difference between a report an engineer acts on and
|
|
30
|
+
one they learn to ignore.
|
|
31
|
+
|
|
32
|
+
**It reads the lock file, on purpose.** A lock file records what was installed
|
|
33
|
+
rather than what was asked for, and the classical cryptography in a tree is
|
|
34
|
+
nearly always transitive — arriving three levels down through something nobody
|
|
35
|
+
chose deliberately. Reading the manifest would miss exactly the findings that
|
|
36
|
+
matter.
|
|
37
|
+
|
|
38
|
+
**It emits a CycloneDX 1.6 CBOM.** A cryptographic bill of materials in the
|
|
39
|
+
standard format, which is what makes the output an input to somebody else's
|
|
40
|
+
process rather than a report that ends in a screenshot.
|
|
41
|
+
|
|
42
|
+
## Scope
|
|
43
|
+
|
|
44
|
+
The output is a starting point and the README says so in those words: *somewhere
|
|
45
|
+
to start looking, not an inventory*. Turning it into an inventory means
|
|
46
|
+
establishing the function, the algorithm, the component and the assessed
|
|
47
|
+
configuration for each finding, and testing where use remains uncertain. This
|
|
48
|
+
tool gets you the candidate list in seconds, which is the part that would
|
|
49
|
+
otherwise take a week.
|
|
50
|
+
|
|
51
|
+
What it reads is the JavaScript dependency tree. Compiled binaries, hardware
|
|
52
|
+
modules, live TLS and a package that offers several algorithms without saying
|
|
53
|
+
which one your code selects are all outside a static read of a lock file, and
|
|
54
|
+
the README lists each one so a report is never mistaken for a complete
|
|
55
|
+
cryptographic inventory. Being precise about that is what makes the findings it
|
|
56
|
+
does report trustworthy.
|
|
57
|
+
|
|
58
|
+
## Currency
|
|
59
|
+
|
|
60
|
+
The catalogue ships with the release, so a scan is as current as the version
|
|
61
|
+
installed. `npx kxco-pq-scan` fetches the latest by default, which is the
|
|
62
|
+
recommended way to run it and the reason the invocation in the README has no
|
|
63
|
+
install step.
|
|
64
|
+
|
|
65
|
+
## Running it
|
|
66
|
+
|
|
67
|
+
**Release integrity.** Every release carries a SLSA provenance attestation
|
|
68
|
+
tying the tarball to the commit and workflow that built it, verifiable with
|
|
69
|
+
`npm audit signatures kxco-pq-scan`, alongside a CycloneDX SBOM at a permanent
|
|
70
|
+
unauthenticated URL and an evidence bundle from `npm run evidence`.
|
|
71
|
+
|
|
72
|
+
**Supported versions.** One line moving forward. Fixes land in the next release.
|
|
73
|
+
|
|
74
|
+
**Cost.** No hardware or runtime ceiling, no network, no state. It reads files
|
|
75
|
+
in a directory it is pointed at and writes a report.
|
|
76
|
+
|
|
77
|
+
**In CI.** Documented in the README, with an exit code a pipeline can gate on.
|
|
78
|
+
|
|
79
|
+
## Correcting this document
|
|
80
|
+
|
|
81
|
+
Every claim here is checkable against `src/` and the README. If one does not
|
|
82
|
+
match, that is a defect worth reporting through the repository's issues.
|
package/README.md
CHANGED
|
@@ -17,6 +17,20 @@ npx kxco-pq-scan
|
|
|
17
17
|
No install, no account, no upload. It reads `package-lock.json` on your machine
|
|
18
18
|
and prints what it finds.
|
|
19
19
|
|
|
20
|
+
## Release integrity
|
|
21
|
+
|
|
22
|
+
Every release is checkable without asking us for anything.
|
|
23
|
+
|
|
24
|
+
- **Provenance.** Each release carries a SLSA provenance attestation tying the
|
|
25
|
+
published tarball to the commit and workflow that built it. Verify with
|
|
26
|
+
`npm audit signatures kxco-pq-scan`, or read it directly from
|
|
27
|
+
`registry.npmjs.org/-/npm/v1/attestations/kxco-pq-scan@<version>`.
|
|
28
|
+
- **No dependencies.** This package has none. There is no transitive tree to
|
|
29
|
+
audit and no upstream that can change what it does between releases, which is
|
|
30
|
+
an unusual thing for a scanner to be able to say about itself.
|
|
31
|
+
- **Evidence bundle.** `npm run evidence` regenerates identity, the test run,
|
|
32
|
+
the SBOM and registry signature verification from source.
|
|
33
|
+
|
|
20
34
|
## What it actually tells you
|
|
21
35
|
|
|
22
36
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kxco-pq-scan",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Find quantum-vulnerable cryptography in a JavaScript dependency tree. Separates what Shor's algorithm breaks from what Grover's only weakens, recognises hybrid constructions, and says what it cannot see.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"post-quantum",
|
|
@@ -34,10 +34,12 @@
|
|
|
34
34
|
"src",
|
|
35
35
|
"bin",
|
|
36
36
|
"README.md",
|
|
37
|
-
"LICENSE"
|
|
37
|
+
"LICENSE",
|
|
38
|
+
"ASSESSMENT.md"
|
|
38
39
|
],
|
|
39
40
|
"scripts": {
|
|
40
|
-
"test": "node --test test/scan.test.js test/cbom.test.js test/cbom.schema.test.js"
|
|
41
|
+
"test": "node --test test/scan.test.js test/cbom.test.js test/cbom.schema.test.js",
|
|
42
|
+
"evidence": "node scripts/build-evidence.mjs"
|
|
41
43
|
},
|
|
42
44
|
"engines": {
|
|
43
45
|
"node": ">=20.19"
|