@quantakrypto/core 0.3.0 → 0.4.0
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/dist/agent-types.d.ts +48 -0
- package/dist/agent-types.d.ts.map +1 -0
- package/dist/agent-types.js +2 -0
- package/dist/agent-types.js.map +1 -0
- package/dist/cache.d.ts +27 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +93 -0
- package/dist/cache.js.map +1 -0
- package/dist/cbom.d.ts.map +1 -1
- package/dist/cbom.js +26 -1
- package/dist/cbom.js.map +1 -1
- package/dist/changed.d.ts.map +1 -1
- package/dist/changed.js +14 -2
- package/dist/changed.js.map +1 -1
- package/dist/codemods/config-toggle.d.ts +3 -0
- package/dist/codemods/config-toggle.d.ts.map +1 -0
- package/dist/codemods/config-toggle.js +26 -0
- package/dist/codemods/config-toggle.js.map +1 -0
- package/dist/codemods/registry.d.ts +26 -0
- package/dist/codemods/registry.d.ts.map +1 -0
- package/dist/codemods/registry.js +8 -0
- package/dist/codemods/registry.js.map +1 -0
- package/dist/comments.d.ts +45 -0
- package/dist/comments.d.ts.map +1 -0
- package/dist/comments.js +164 -0
- package/dist/comments.js.map +1 -0
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/dependencies.d.ts +31 -13
- package/dist/dependencies.d.ts.map +1 -1
- package/dist/dependencies.js +460 -40
- package/dist/dependencies.js.map +1 -1
- package/dist/detect-utils.d.ts +44 -1
- package/dist/detect-utils.d.ts.map +1 -1
- package/dist/detect-utils.js +113 -17
- package/dist/detect-utils.js.map +1 -1
- package/dist/detectors/c.d.ts +20 -0
- package/dist/detectors/c.d.ts.map +1 -0
- package/dist/detectors/c.js +104 -0
- package/dist/detectors/c.js.map +1 -0
- package/dist/detectors/csharp.d.ts +15 -0
- package/dist/detectors/csharp.d.ts.map +1 -0
- package/dist/detectors/csharp.js +76 -0
- package/dist/detectors/csharp.js.map +1 -0
- package/dist/detectors/go.d.ts +25 -0
- package/dist/detectors/go.d.ts.map +1 -0
- package/dist/detectors/go.js +132 -0
- package/dist/detectors/go.js.map +1 -0
- package/dist/detectors/java.d.ts +25 -0
- package/dist/detectors/java.d.ts.map +1 -0
- package/dist/detectors/java.js +200 -0
- package/dist/detectors/java.js.map +1 -0
- package/dist/detectors/python.d.ts +26 -0
- package/dist/detectors/python.d.ts.map +1 -0
- package/dist/detectors/python.js +171 -0
- package/dist/detectors/python.js.map +1 -0
- package/dist/detectors/ruby.d.ts +15 -0
- package/dist/detectors/ruby.d.ts.map +1 -0
- package/dist/detectors/ruby.js +75 -0
- package/dist/detectors/ruby.js.map +1 -0
- package/dist/detectors/rust.d.ts +13 -0
- package/dist/detectors/rust.d.ts.map +1 -0
- package/dist/detectors/rust.js +94 -0
- package/dist/detectors/rust.js.map +1 -0
- package/dist/detectors/source.d.ts.map +1 -1
- package/dist/detectors/source.js +70 -22
- package/dist/detectors/source.js.map +1 -1
- package/dist/index.d.ts +18 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/parallel.d.ts +4 -0
- package/dist/parallel.d.ts.map +1 -1
- package/dist/parallel.js +59 -8
- package/dist/parallel.js.map +1 -1
- package/dist/patch-policy.d.ts +22 -0
- package/dist/patch-policy.d.ts.map +1 -0
- package/dist/patch-policy.js +21 -0
- package/dist/patch-policy.js.map +1 -0
- package/dist/redact.d.ts +19 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +77 -0
- package/dist/redact.js.map +1 -0
- package/dist/registry.d.ts +13 -3
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +31 -4
- package/dist/registry.js.map +1 -1
- package/dist/remediate-pipeline.d.ts +41 -0
- package/dist/remediate-pipeline.d.ts.map +1 -0
- package/dist/remediate-pipeline.js +38 -0
- package/dist/remediate-pipeline.js.map +1 -0
- package/dist/remediate-request.d.ts +21 -0
- package/dist/remediate-request.d.ts.map +1 -0
- package/dist/remediate-request.js +28 -0
- package/dist/remediate-request.js.map +1 -0
- package/dist/remediation.d.ts +10 -0
- package/dist/remediation.d.ts.map +1 -1
- package/dist/remediation.js +21 -8
- package/dist/remediation.js.map +1 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +16 -1
- package/dist/report.js.map +1 -1
- package/dist/scan-worker.js +6 -2
- package/dist/scan-worker.js.map +1 -1
- package/dist/scan.d.ts +5 -4
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +52 -29
- package/dist/scan.js.map +1 -1
- package/dist/triage.d.ts +27 -0
- package/dist/triage.d.ts.map +1 -0
- package/dist/triage.js +33 -0
- package/dist/triage.js.map +1 -0
- package/dist/types.d.ts +53 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/verify.d.ts +30 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +65 -0
- package/dist/verify.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/walk.d.ts +7 -0
- package/dist/walk.d.ts.map +1 -1
- package/dist/walk.js +85 -11
- package/dist/walk.js.map +1 -1
- package/dist/worktree.d.ts +6 -0
- package/dist/worktree.d.ts.map +1 -0
- package/dist/worktree.js +43 -0
- package/dist/worktree.js.map +1 -0
- package/package.json +1 -1
- package/src/agent-types.ts +52 -0
- package/src/cache.ts +120 -0
- package/src/cbom.ts +27 -1
- package/src/changed.ts +13 -4
- package/src/codemods/config-toggle.ts +35 -0
- package/src/codemods/registry.ts +31 -0
- package/src/comments.ts +180 -0
- package/src/config.ts +8 -0
- package/src/dependencies.ts +483 -51
- package/src/detect-utils.ts +123 -15
- package/src/detectors/c.ts +132 -0
- package/src/detectors/csharp.ts +98 -0
- package/src/detectors/go.ts +167 -0
- package/src/detectors/java.ts +235 -0
- package/src/detectors/python.ts +212 -0
- package/src/detectors/ruby.ts +97 -0
- package/src/detectors/rust.ts +112 -0
- package/src/detectors/source.ts +69 -21
- package/src/index.ts +45 -1
- package/src/parallel.ts +63 -6
- package/src/patch-policy.ts +42 -0
- package/src/redact.ts +92 -0
- package/src/registry.ts +32 -4
- package/src/remediate-pipeline.ts +81 -0
- package/src/remediate-request.ts +52 -0
- package/src/remediation.ts +27 -11
- package/src/report.ts +27 -1
- package/src/scan-worker.ts +6 -2
- package/src/scan.ts +62 -31
- package/src/triage.ts +58 -0
- package/src/types.ts +66 -3
- package/src/verify.ts +82 -0
- package/src/version.ts +1 -1
- package/src/walk.ts +81 -12
- package/src/worktree.ts +45 -0
package/dist/dependencies.js
CHANGED
|
@@ -1,6 +1,31 @@
|
|
|
1
1
|
import { makeFinding } from "./detect-utils.js";
|
|
2
|
-
import { remediationText } from "./remediation.js";
|
|
2
|
+
import { isConfidentialityFamily, isSignatureFamily, remediationText } from "./remediation.js";
|
|
3
3
|
import { CWE_BROKEN_CRYPTO } from "./cwe.js";
|
|
4
|
+
/**
|
|
5
|
+
* Catalog entry for the `dep-vulnerable` rule. Dependency findings are produced
|
|
6
|
+
* by the manifest scanner rather than a registered {@link Detector}, so this
|
|
7
|
+
* rule is absent from `defaultRegistry.ruleCatalog()`. Reporters (SARIF) merge
|
|
8
|
+
* it in so the rule advertises a GENERIC description — the per-package specifics
|
|
9
|
+
* (title/severity/HNDL/remediation) live on each individual finding/result, not
|
|
10
|
+
* on the shared rule. Without this, SARIF would leak the first dependency's
|
|
11
|
+
* package-specific text into the rule-level `shortDescription` for every dep.
|
|
12
|
+
*/
|
|
13
|
+
export const DEP_VULNERABLE_RULE = {
|
|
14
|
+
id: "dep-vulnerable",
|
|
15
|
+
title: "Quantum-vulnerable dependency",
|
|
16
|
+
category: "dependency",
|
|
17
|
+
// Representative default; each SARIF result carries its own per-package level.
|
|
18
|
+
severity: "high",
|
|
19
|
+
confidence: "high",
|
|
20
|
+
hndl: false,
|
|
21
|
+
cwe: CWE_BROKEN_CRYPTO,
|
|
22
|
+
message: "A dependency implements classical public-key cryptography that is broken by " +
|
|
23
|
+
"quantum computers. Replace or upgrade it to a post-quantum alternative.",
|
|
24
|
+
remediation: "Move to a post-quantum alternative — ML-KEM-768 (FIPS 203) for key exchange/" +
|
|
25
|
+
"encryption and ML-DSA-65 (FIPS 204) for signatures, ideally via a hybrid.",
|
|
26
|
+
description: "Flags packages in a dependency manifest known to implement quantum-vulnerable " +
|
|
27
|
+
"public-key cryptography (RSA, ECDH/ECDSA, DH, EdDSA, …).",
|
|
28
|
+
};
|
|
4
29
|
/** Known quantum-vulnerable npm dependencies. */
|
|
5
30
|
export const vulnerableDependencies = [
|
|
6
31
|
{
|
|
@@ -248,42 +273,369 @@ export const vulnerableDependencies = [
|
|
|
248
273
|
algorithms: ["ECDSA"],
|
|
249
274
|
severity: "low",
|
|
250
275
|
},
|
|
276
|
+
// --- PyPI (Python) ---
|
|
277
|
+
{
|
|
278
|
+
name: "pycryptodome",
|
|
279
|
+
ecosystem: "pypi",
|
|
280
|
+
reason: "RSA / ECC / DSA public-key crypto for Python.",
|
|
281
|
+
algorithms: ["RSA", "ECDSA", "DSA"],
|
|
282
|
+
severity: "high",
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
name: "pycryptodomex",
|
|
286
|
+
ecosystem: "pypi",
|
|
287
|
+
reason: "RSA / ECC / DSA public-key crypto (the `Cryptodome` namespace).",
|
|
288
|
+
algorithms: ["RSA", "ECDSA", "DSA"],
|
|
289
|
+
severity: "high",
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
name: "rsa",
|
|
293
|
+
ecosystem: "pypi",
|
|
294
|
+
reason: "Pure-Python RSA encryption and signing.",
|
|
295
|
+
algorithms: ["RSA"],
|
|
296
|
+
severity: "high",
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
name: "ecdsa",
|
|
300
|
+
ecosystem: "pypi",
|
|
301
|
+
reason: "Pure-Python ECDSA/ECDH over NIST + secp256k1 curves.",
|
|
302
|
+
algorithms: ["ECDSA", "ECDH"],
|
|
303
|
+
severity: "high",
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
name: "cryptography",
|
|
307
|
+
ecosystem: "pypi",
|
|
308
|
+
reason: "General crypto library exposing classical RSA/EC/DH/DSA (also symmetric/PQC).",
|
|
309
|
+
algorithms: ["RSA", "ECDH", "ECDSA", "DSA"],
|
|
310
|
+
severity: "medium",
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
name: "pyjwt",
|
|
314
|
+
ecosystem: "pypi",
|
|
315
|
+
reason: "JWT signing with classical RS*/ES* algorithms.",
|
|
316
|
+
algorithms: ["RSA", "ECDSA"],
|
|
317
|
+
severity: "medium",
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
name: "python-jose",
|
|
321
|
+
ecosystem: "pypi",
|
|
322
|
+
reason: "JOSE/JWT with classical RSA/ECDSA algorithms.",
|
|
323
|
+
algorithms: ["RSA", "ECDSA"],
|
|
324
|
+
severity: "medium",
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: "paramiko",
|
|
328
|
+
ecosystem: "pypi",
|
|
329
|
+
reason: "SSH client/server with classical RSA/ECDSA/Ed25519/DSA host + user keys.",
|
|
330
|
+
algorithms: ["RSA", "ECDSA", "EdDSA", "DSA"],
|
|
331
|
+
severity: "medium",
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
name: "pyopenssl",
|
|
335
|
+
ecosystem: "pypi",
|
|
336
|
+
reason: "OpenSSL bindings for classical RSA/EC X.509 + TLS.",
|
|
337
|
+
algorithms: ["RSA", "ECDSA"],
|
|
338
|
+
severity: "medium",
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
name: "pynacl",
|
|
342
|
+
ecosystem: "pypi",
|
|
343
|
+
reason: "libsodium bindings — X25519 key agreement and Ed25519 signatures (modern but classical).",
|
|
344
|
+
algorithms: ["X25519", "EdDSA"],
|
|
345
|
+
severity: "low",
|
|
346
|
+
},
|
|
347
|
+
// --- crates.io (Rust) ---
|
|
348
|
+
{
|
|
349
|
+
name: "rsa",
|
|
350
|
+
ecosystem: "cargo",
|
|
351
|
+
reason: "Pure-Rust RSA encryption and signing.",
|
|
352
|
+
algorithms: ["RSA"],
|
|
353
|
+
severity: "high",
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
name: "ring",
|
|
357
|
+
ecosystem: "cargo",
|
|
358
|
+
reason: "RSA / ECDSA / Ed25519 / ECDH primitives.",
|
|
359
|
+
algorithms: ["RSA", "ECDSA", "EdDSA", "ECDH"],
|
|
360
|
+
severity: "medium",
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
name: "openssl",
|
|
364
|
+
ecosystem: "cargo",
|
|
365
|
+
reason: "OpenSSL bindings for classical RSA/EC crypto.",
|
|
366
|
+
algorithms: ["RSA", "ECDSA"],
|
|
367
|
+
severity: "medium",
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
name: "p256",
|
|
371
|
+
ecosystem: "cargo",
|
|
372
|
+
reason: "NIST P-256 ECDSA signatures and ECDH key agreement.",
|
|
373
|
+
algorithms: ["ECDSA", "ECDH"],
|
|
374
|
+
severity: "high",
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
name: "p384",
|
|
378
|
+
ecosystem: "cargo",
|
|
379
|
+
reason: "NIST P-384 ECDSA signatures and ECDH key agreement.",
|
|
380
|
+
algorithms: ["ECDSA", "ECDH"],
|
|
381
|
+
severity: "high",
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
name: "k256",
|
|
385
|
+
ecosystem: "cargo",
|
|
386
|
+
reason: "secp256k1 ECDSA signatures and ECDH key agreement.",
|
|
387
|
+
algorithms: ["ECDSA", "ECDH"],
|
|
388
|
+
severity: "high",
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
name: "ed25519-dalek",
|
|
392
|
+
ecosystem: "cargo",
|
|
393
|
+
reason: "Ed25519 signatures (modern but classical).",
|
|
394
|
+
algorithms: ["EdDSA"],
|
|
395
|
+
severity: "low",
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
name: "x25519-dalek",
|
|
399
|
+
ecosystem: "cargo",
|
|
400
|
+
reason: "X25519 key agreement (modern but classical).",
|
|
401
|
+
algorithms: ["X25519"],
|
|
402
|
+
severity: "low",
|
|
403
|
+
},
|
|
404
|
+
// --- Go modules ---
|
|
405
|
+
{
|
|
406
|
+
name: "golang.org/x/crypto",
|
|
407
|
+
ecosystem: "go",
|
|
408
|
+
reason: "SSH, OpenPGP, and classical curve helpers on top of the Go stdlib.",
|
|
409
|
+
algorithms: ["RSA", "ECDSA", "EdDSA", "ECDH"],
|
|
410
|
+
severity: "medium",
|
|
411
|
+
},
|
|
412
|
+
// --- Maven (Java) ---
|
|
413
|
+
{
|
|
414
|
+
name: "bcprov-jdk18on",
|
|
415
|
+
ecosystem: "maven",
|
|
416
|
+
reason: "BouncyCastle provider — full classical RSA/ECDSA/ECDH/DSA suite.",
|
|
417
|
+
algorithms: ["RSA", "ECDSA", "ECDH", "DSA"],
|
|
418
|
+
severity: "high",
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
name: "bcprov-jdk15on",
|
|
422
|
+
ecosystem: "maven",
|
|
423
|
+
reason: "BouncyCastle provider (JDK 1.5+) — classical RSA/ECDSA/ECDH/DSA.",
|
|
424
|
+
algorithms: ["RSA", "ECDSA", "ECDH", "DSA"],
|
|
425
|
+
severity: "high",
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
name: "bcpkix-jdk18on",
|
|
429
|
+
ecosystem: "maven",
|
|
430
|
+
reason: "BouncyCastle PKIX — classical X.509 / CMS with RSA/ECDSA.",
|
|
431
|
+
algorithms: ["RSA", "ECDSA"],
|
|
432
|
+
severity: "medium",
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
name: "java-jwt",
|
|
436
|
+
ecosystem: "maven",
|
|
437
|
+
reason: "Auth0 JWT with classical RS*/ES* algorithms.",
|
|
438
|
+
algorithms: ["RSA", "ECDSA"],
|
|
439
|
+
severity: "medium",
|
|
440
|
+
},
|
|
441
|
+
// --- RubyGems ---
|
|
442
|
+
{
|
|
443
|
+
name: "jwt",
|
|
444
|
+
ecosystem: "rubygems",
|
|
445
|
+
reason: "Ruby JWT with classical RS*/ES* algorithms.",
|
|
446
|
+
algorithms: ["RSA", "ECDSA"],
|
|
447
|
+
severity: "medium",
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
name: "rbnacl",
|
|
451
|
+
ecosystem: "rubygems",
|
|
452
|
+
reason: "libsodium bindings — X25519 key agreement and Ed25519 signatures.",
|
|
453
|
+
algorithms: ["X25519", "EdDSA"],
|
|
454
|
+
severity: "low",
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
name: "ed25519",
|
|
458
|
+
ecosystem: "rubygems",
|
|
459
|
+
reason: "Ed25519 signatures (modern but classical).",
|
|
460
|
+
algorithms: ["EdDSA"],
|
|
461
|
+
severity: "low",
|
|
462
|
+
},
|
|
251
463
|
];
|
|
252
|
-
/** Fast lookup map by package name. */
|
|
253
|
-
const BY_NAME = new Map(vulnerableDependencies.map((d) => [d.name, d]));
|
|
254
464
|
/**
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
465
|
+
* Normalise a package name for matching within its ecosystem. PyPI is
|
|
466
|
+
* case-insensitive and folds runs of `-_.` to a single `-` (PEP 503); cargo /
|
|
467
|
+
* maven / rubygems are effectively lower-case; npm and go module paths are
|
|
468
|
+
* matched verbatim (npm scopes and go paths are case-sensitive).
|
|
469
|
+
*/
|
|
470
|
+
function normalizeName(ecosystem, name) {
|
|
471
|
+
const n = name.trim();
|
|
472
|
+
if (ecosystem === "pypi")
|
|
473
|
+
return n.toLowerCase().replace(/[-_.]+/g, "-");
|
|
474
|
+
if (ecosystem === "npm" || ecosystem === "go")
|
|
475
|
+
return n;
|
|
476
|
+
return n.toLowerCase();
|
|
477
|
+
}
|
|
478
|
+
/** ecosystem → (normalised name → entry). Scoped so `rsa` (pypi) ≠ `rsa` (cargo). */
|
|
479
|
+
const BY_ECOSYSTEM = (() => {
|
|
480
|
+
const m = new Map();
|
|
481
|
+
for (const d of vulnerableDependencies) {
|
|
482
|
+
let em = m.get(d.ecosystem);
|
|
483
|
+
if (!em) {
|
|
484
|
+
em = new Map();
|
|
485
|
+
m.set(d.ecosystem, em);
|
|
486
|
+
}
|
|
487
|
+
em.set(normalizeName(d.ecosystem, d.name), d);
|
|
488
|
+
}
|
|
489
|
+
return m;
|
|
490
|
+
})();
|
|
491
|
+
/**
|
|
492
|
+
* Precompiled `"name":` lookup regex per known npm package (P1-9): the set is
|
|
493
|
+
* static, so build the (name → RegExp) map once rather than per manifest. Only
|
|
494
|
+
* npm uses the JSON-key form; other ecosystems locate names generically.
|
|
258
495
|
*/
|
|
259
|
-
const KEY_REGEX_BY_NAME = new Map(vulnerableDependencies
|
|
496
|
+
const KEY_REGEX_BY_NAME = new Map(vulnerableDependencies
|
|
497
|
+
.filter((d) => d.ecosystem === "npm")
|
|
498
|
+
.map((d) => {
|
|
260
499
|
const escaped = d.name.replace(/[.*+?^${}()|[\]\\/]/g, "\\$&");
|
|
261
500
|
return [d.name, new RegExp(`"${escaped}"\\s*:`)];
|
|
262
501
|
}));
|
|
263
|
-
/** Algorithm families that expose confidentiality (HNDL) rather than only signing. */
|
|
264
|
-
const CONFIDENTIALITY_FAMILIES = new Set([
|
|
265
|
-
"RSA",
|
|
266
|
-
"ECDH",
|
|
267
|
-
"DH",
|
|
268
|
-
"ECIES",
|
|
269
|
-
"X25519",
|
|
270
|
-
"X448",
|
|
271
|
-
]);
|
|
272
502
|
/**
|
|
273
503
|
* Build a remediation string covering ALL families a package exposes (C5),
|
|
274
|
-
* rather than only `algorithms[0]`. De-duplicates the
|
|
275
|
-
*
|
|
504
|
+
* rather than only `algorithms[0]`. De-duplicates by PQC *target* — the KEM
|
|
505
|
+
* target and the signature target are each named at most once — so a library
|
|
506
|
+
* exposing both a confidentiality family and a signature family reads
|
|
507
|
+
* "ML-KEM-768 … for key exchange/encryption; ML-DSA-65 (FIPS 204) for
|
|
508
|
+
* signatures" instead of repeating ML-DSA (the old per-string Set couldn't
|
|
509
|
+
* collapse "ML-DSA-65 for signatures" against a standalone "ML-DSA-65 (FIPS 204)").
|
|
276
510
|
*/
|
|
277
511
|
function multiFamilyRemediation(algorithms) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
512
|
+
let needsKem = false;
|
|
513
|
+
let needsSig = false;
|
|
514
|
+
let needsReview = false;
|
|
515
|
+
for (const a of algorithms) {
|
|
516
|
+
if (isConfidentialityFamily(a))
|
|
517
|
+
needsKem = true;
|
|
518
|
+
if (isSignatureFamily(a))
|
|
519
|
+
needsSig = true;
|
|
520
|
+
if (a === "unknown")
|
|
521
|
+
needsReview = true;
|
|
522
|
+
}
|
|
523
|
+
const parts = [];
|
|
524
|
+
if (needsKem)
|
|
525
|
+
parts.push("ML-KEM-768 (FIPS 203, hybrid X25519MLKEM768) for key exchange/encryption");
|
|
526
|
+
if (needsSig)
|
|
527
|
+
parts.push("ML-DSA-65 (FIPS 204) for signatures");
|
|
528
|
+
// Only fall back to the generic "review" line when nothing concrete applied.
|
|
529
|
+
if (needsReview && parts.length === 0)
|
|
530
|
+
parts.push(remediationText("unknown"));
|
|
531
|
+
return parts.join("; ");
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* The dependency ecosystem a manifest filename belongs to, or null when the file
|
|
535
|
+
* is not a manifest we parse. Drives both {@link isManifestFile} and the scanner
|
|
536
|
+
* dispatch — one place to add a manifest format.
|
|
537
|
+
*/
|
|
538
|
+
export function manifestEcosystem(file) {
|
|
539
|
+
const base = (file.split("/").pop() ?? file).toLowerCase();
|
|
540
|
+
if (base === "package.json" ||
|
|
541
|
+
base === "package-lock.json" ||
|
|
542
|
+
base === "npm-shrinkwrap.json" ||
|
|
543
|
+
base === "yarn.lock" ||
|
|
544
|
+
base === "pnpm-lock.yaml") {
|
|
545
|
+
return "npm";
|
|
546
|
+
}
|
|
547
|
+
if (base === "requirements.txt" || /^requirements[\w.-]*\.txt$/.test(base))
|
|
548
|
+
return "pypi";
|
|
549
|
+
if (base === "pyproject.toml" || base === "pipfile")
|
|
550
|
+
return "pypi";
|
|
551
|
+
if (base === "cargo.toml")
|
|
552
|
+
return "cargo";
|
|
553
|
+
if (base === "go.mod")
|
|
554
|
+
return "go";
|
|
555
|
+
if (base === "pom.xml" || base === "build.gradle" || base === "build.gradle.kts")
|
|
556
|
+
return "maven";
|
|
557
|
+
if (base === "gemfile" || base.endsWith(".gemspec"))
|
|
558
|
+
return "rubygems";
|
|
559
|
+
return null;
|
|
282
560
|
}
|
|
283
561
|
/** True if a file path looks like a manifest we can parse for dependencies. */
|
|
284
562
|
export function isManifestFile(file) {
|
|
285
|
-
|
|
286
|
-
|
|
563
|
+
return manifestEcosystem(file) !== null;
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Extract candidate package names from a non-npm manifest. Extraction is
|
|
567
|
+
* deliberately GENEROUS — every finding still has to match a curated DB entry,
|
|
568
|
+
* so over-extracting harmless tokens (e.g. a TOML `version = …` key) costs
|
|
569
|
+
* nothing while keeping the parsers tiny and format-tolerant.
|
|
570
|
+
*/
|
|
571
|
+
function candidateNames(ecosystem, content) {
|
|
572
|
+
const names = [];
|
|
573
|
+
const lines = content.split("\n");
|
|
574
|
+
switch (ecosystem) {
|
|
575
|
+
case "pypi": {
|
|
576
|
+
// requirements.txt / Pipfile / pyproject.toml: leading token per line, plus
|
|
577
|
+
// quoted deps in arrays/tables. Skip comments and `-r/-e/--flag` lines.
|
|
578
|
+
for (const raw of lines) {
|
|
579
|
+
const line = raw.trim();
|
|
580
|
+
if (!line || line.startsWith("#") || line.startsWith("-"))
|
|
581
|
+
continue;
|
|
582
|
+
const lead = /^["']?([A-Za-z][A-Za-z0-9._-]+)/.exec(line);
|
|
583
|
+
if (lead)
|
|
584
|
+
names.push(lead[1]);
|
|
585
|
+
for (const m of line.matchAll(/["']([A-Za-z][A-Za-z0-9._-]+)/g))
|
|
586
|
+
names.push(m[1]);
|
|
587
|
+
}
|
|
588
|
+
break;
|
|
589
|
+
}
|
|
590
|
+
case "cargo": {
|
|
591
|
+
// Cargo.toml: dependency-table keys `name = …` and `[…dependencies.name]`.
|
|
592
|
+
for (const raw of lines) {
|
|
593
|
+
const line = raw.trim();
|
|
594
|
+
if (!line || line.startsWith("#"))
|
|
595
|
+
continue;
|
|
596
|
+
const key = /^([A-Za-z0-9][A-Za-z0-9_-]+)\s*=/.exec(line);
|
|
597
|
+
if (key)
|
|
598
|
+
names.push(key[1]);
|
|
599
|
+
const table = /^\[[\w.-]*dependencies\.([A-Za-z0-9][A-Za-z0-9_-]+)\]/.exec(line);
|
|
600
|
+
if (table)
|
|
601
|
+
names.push(table[1]);
|
|
602
|
+
}
|
|
603
|
+
break;
|
|
604
|
+
}
|
|
605
|
+
case "go": {
|
|
606
|
+
// go.mod: `require path v1.2.3` (single or in a require( … ) block).
|
|
607
|
+
for (const m of content.matchAll(/(?:^|\s)([a-z0-9][\w.\-/]+)\s+v\d/gm))
|
|
608
|
+
names.push(m[1]);
|
|
609
|
+
break;
|
|
610
|
+
}
|
|
611
|
+
case "maven": {
|
|
612
|
+
// pom.xml <artifactId> tags + gradle `group:artifact:version` strings.
|
|
613
|
+
for (const m of content.matchAll(/<artifactId>\s*([\w.-]+)\s*<\/artifactId>/g)) {
|
|
614
|
+
names.push(m[1]);
|
|
615
|
+
}
|
|
616
|
+
for (const m of content.matchAll(/["']([\w.-]+):([\w.-]+):[\w.$-]+["']/g))
|
|
617
|
+
names.push(m[2]);
|
|
618
|
+
break;
|
|
619
|
+
}
|
|
620
|
+
case "rubygems": {
|
|
621
|
+
// Gemfile `gem 'name'` + gemspec `add_*dependency 'name'`.
|
|
622
|
+
for (const m of content.matchAll(/\bgem\s+["']([\w.-]+)["']/g))
|
|
623
|
+
names.push(m[1]);
|
|
624
|
+
for (const m of content.matchAll(/add(?:_runtime|_development)?_dependency\s+["']([\w.-]+)["']/g)) {
|
|
625
|
+
names.push(m[1]);
|
|
626
|
+
}
|
|
627
|
+
break;
|
|
628
|
+
}
|
|
629
|
+
case "npm":
|
|
630
|
+
break; // npm uses the JSON path, not this extractor.
|
|
631
|
+
}
|
|
632
|
+
return names;
|
|
633
|
+
}
|
|
634
|
+
/** First offset of a package `name` as a whole token in the manifest text (or 0). */
|
|
635
|
+
function offsetOfName(content, name) {
|
|
636
|
+
const escaped = name.replace(/[.*+?^${}()|[\]\\/]/g, "\\$&");
|
|
637
|
+
const m = new RegExp(`(?<![\\w./-])${escaped}(?![\\w-])`).exec(content);
|
|
638
|
+
return m ? m.index : 0;
|
|
287
639
|
}
|
|
288
640
|
/**
|
|
289
641
|
* Build a finding for a vulnerable dependency located in a manifest. The
|
|
@@ -302,7 +654,7 @@ function dependencyFinding(dep, file, content, index) {
|
|
|
302
654
|
confidence: "high",
|
|
303
655
|
algorithm,
|
|
304
656
|
// Confidentiality libs are HNDL-exposed; signature-only ones are not.
|
|
305
|
-
hndl: dep.algorithms.some(
|
|
657
|
+
hndl: dep.algorithms.some(isConfidentialityFamily),
|
|
306
658
|
cwe: CWE_BROKEN_CRYPTO,
|
|
307
659
|
message: `${dep.name} — ${dep.reason}`,
|
|
308
660
|
remediation: multiFamilyRemediation(dep.algorithms),
|
|
@@ -320,16 +672,51 @@ function offsetOfKey(content, name) {
|
|
|
320
672
|
const m = re.exec(content);
|
|
321
673
|
return m ? m.index : 0;
|
|
322
674
|
}
|
|
675
|
+
/** Sort findings by title for deterministic output. */
|
|
676
|
+
function sortByTitle(findings) {
|
|
677
|
+
findings.sort((a, b) => (a.title < b.title ? -1 : a.title > b.title ? 1 : 0));
|
|
678
|
+
return findings;
|
|
679
|
+
}
|
|
323
680
|
/**
|
|
324
|
-
* Scan a single manifest file
|
|
325
|
-
*
|
|
326
|
-
*
|
|
327
|
-
* -
|
|
328
|
-
*
|
|
329
|
-
*
|
|
330
|
-
* Returns one finding per distinct vulnerable package name found in the file.
|
|
681
|
+
* Scan a single manifest file for vulnerable dependencies, dispatching by the
|
|
682
|
+
* file's ecosystem ({@link manifestEcosystem}). npm manifests are parsed as
|
|
683
|
+
* JSON; every other ecosystem uses the generous {@link candidateNames} extractor
|
|
684
|
+
* filtered against the ecosystem-scoped database. Returns one finding per
|
|
685
|
+
* distinct vulnerable package.
|
|
331
686
|
*/
|
|
332
687
|
export function scanManifest(file, content) {
|
|
688
|
+
const ecosystem = manifestEcosystem(file);
|
|
689
|
+
if (!ecosystem)
|
|
690
|
+
return [];
|
|
691
|
+
const db = BY_ECOSYSTEM.get(ecosystem);
|
|
692
|
+
if (!db)
|
|
693
|
+
return [];
|
|
694
|
+
if (ecosystem === "npm") {
|
|
695
|
+
const base = (file.split("/").pop() ?? file).toLowerCase();
|
|
696
|
+
// yarn.lock / pnpm-lock.yaml are not JSON — extract names from their text.
|
|
697
|
+
if (base === "yarn.lock" || base === "pnpm-lock.yaml") {
|
|
698
|
+
return scanNpmLockfile(content, file, db);
|
|
699
|
+
}
|
|
700
|
+
return scanNpmManifest(content, file, db);
|
|
701
|
+
}
|
|
702
|
+
const found = new Map(); // dedupe by entry
|
|
703
|
+
for (const raw of candidateNames(ecosystem, content)) {
|
|
704
|
+
const dep = db.get(normalizeName(ecosystem, raw));
|
|
705
|
+
if (dep)
|
|
706
|
+
found.set(dep.name, dep);
|
|
707
|
+
}
|
|
708
|
+
const findings = [];
|
|
709
|
+
for (const dep of found.values()) {
|
|
710
|
+
findings.push(dependencyFinding(dep, file, content, offsetOfName(content, dep.name)));
|
|
711
|
+
}
|
|
712
|
+
return sortByTitle(findings);
|
|
713
|
+
}
|
|
714
|
+
/**
|
|
715
|
+
* npm manifest scan.
|
|
716
|
+
* - `package.json`: dependencies / devDependencies / peerDependencies / optionalDependencies.
|
|
717
|
+
* - `package-lock.json` (v2/v3): the `packages` map keys (node_modules/<name>).
|
|
718
|
+
*/
|
|
719
|
+
function scanNpmManifest(content, file, db) {
|
|
333
720
|
let json;
|
|
334
721
|
try {
|
|
335
722
|
json = JSON.parse(content);
|
|
@@ -345,16 +732,14 @@ export function scanManifest(file, content) {
|
|
|
345
732
|
if (rec === null || typeof rec !== "object")
|
|
346
733
|
return;
|
|
347
734
|
for (const key of Object.keys(rec)) {
|
|
348
|
-
if (
|
|
735
|
+
if (db.has(key))
|
|
349
736
|
found.add(key);
|
|
350
737
|
}
|
|
351
738
|
};
|
|
352
|
-
// package.json dependency sections.
|
|
353
739
|
collectFromRecord(obj.dependencies);
|
|
354
740
|
collectFromRecord(obj.devDependencies);
|
|
355
741
|
collectFromRecord(obj.peerDependencies);
|
|
356
742
|
collectFromRecord(obj.optionalDependencies);
|
|
357
|
-
// package-lock.json v2/v3 "packages" map: keys are "node_modules/<name>".
|
|
358
743
|
const packages = obj.packages;
|
|
359
744
|
if (packages !== null && typeof packages === "object") {
|
|
360
745
|
for (const key of Object.keys(packages)) {
|
|
@@ -363,19 +748,54 @@ export function scanManifest(file, content) {
|
|
|
363
748
|
const marker = "node_modules/";
|
|
364
749
|
const idx = key.lastIndexOf(marker);
|
|
365
750
|
const name = idx >= 0 ? key.slice(idx + marker.length) : key;
|
|
366
|
-
if (
|
|
751
|
+
if (db.has(name))
|
|
367
752
|
found.add(name);
|
|
368
753
|
}
|
|
369
754
|
}
|
|
370
755
|
const findings = [];
|
|
371
756
|
for (const name of found) {
|
|
372
|
-
const dep =
|
|
757
|
+
const dep = db.get(name);
|
|
373
758
|
if (!dep)
|
|
374
759
|
continue;
|
|
375
760
|
findings.push(dependencyFinding(dep, file, content, offsetOfKey(content, name)));
|
|
376
761
|
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
762
|
+
return sortByTitle(findings);
|
|
763
|
+
}
|
|
764
|
+
/**
|
|
765
|
+
* Extract candidate package names from a yarn.lock / pnpm-lock.yaml text body.
|
|
766
|
+
* Generous — every `name@…` (and pnpm's `/name/version`) token is captured; the
|
|
767
|
+
* caller filters against the vulnerable-dependency DB, so over-capture is safe.
|
|
768
|
+
* Handles yarn v1 (`elliptic@^6.5.4:`), yarn berry (`"elliptic@npm:^6.5.4":`),
|
|
769
|
+
* and pnpm (`/elliptic@6.5.4:`, scoped `/@noble/curves@1.2.0:`).
|
|
770
|
+
*/
|
|
771
|
+
function npmLockfileCandidates(content) {
|
|
772
|
+
const names = new Set();
|
|
773
|
+
const at = /(?:^|[\s,"'/])((?:@[a-z0-9._-]+\/)?[a-z0-9][a-z0-9._-]*)@/gm;
|
|
774
|
+
let m;
|
|
775
|
+
while ((m = at.exec(content)) !== null)
|
|
776
|
+
names.add(m[1].toLowerCase());
|
|
777
|
+
// pnpm's older `/name/version` form (name followed by a version digit).
|
|
778
|
+
const slash = /(?:^|\s)\/((?:@[a-z0-9._-]+\/)?[a-z0-9][a-z0-9._-]*)\/\d/gm;
|
|
779
|
+
while ((m = slash.exec(content)) !== null)
|
|
780
|
+
names.add(m[1].toLowerCase());
|
|
781
|
+
return [...names];
|
|
782
|
+
}
|
|
783
|
+
/**
|
|
784
|
+
* npm lockfile scan (yarn.lock / pnpm-lock.yaml): match every package token in
|
|
785
|
+
* the lockfile text against the vulnerable-dependency DB. Catches transitive
|
|
786
|
+
* dependencies that never appear in package.json.
|
|
787
|
+
*/
|
|
788
|
+
function scanNpmLockfile(content, file, db) {
|
|
789
|
+
const found = new Map();
|
|
790
|
+
for (const name of npmLockfileCandidates(content)) {
|
|
791
|
+
const dep = db.get(name);
|
|
792
|
+
if (dep)
|
|
793
|
+
found.set(dep.name, dep);
|
|
794
|
+
}
|
|
795
|
+
const findings = [];
|
|
796
|
+
for (const dep of found.values()) {
|
|
797
|
+
findings.push(dependencyFinding(dep, file, content, offsetOfName(content, dep.name)));
|
|
798
|
+
}
|
|
799
|
+
return sortByTitle(findings);
|
|
380
800
|
}
|
|
381
801
|
//# sourceMappingURL=dependencies.js.map
|
package/dist/dependencies.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../src/dependencies.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../src/dependencies.ts"],"names":[],"mappings":"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"}
|