@xenos1996/usa 2.26.2 → 2.28.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/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +2 -0
- package/dist/cli-help.js.map +1 -1
- package/dist/cli-intent.d.ts +4 -0
- package/dist/cli-intent.d.ts.map +1 -0
- package/dist/cli-intent.js +108 -0
- package/dist/cli-intent.js.map +1 -0
- package/dist/cli-scan.d.ts +12 -0
- package/dist/cli-scan.d.ts.map +1 -0
- package/dist/cli-scan.js +142 -0
- package/dist/cli-scan.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/engine/audit-config.d.ts +66 -0
- package/dist/engine/audit-config.d.ts.map +1 -0
- package/dist/engine/audit-config.js +148 -0
- package/dist/engine/audit-config.js.map +1 -0
- package/dist/engine/audit-types.d.ts +44 -0
- package/dist/engine/audit-types.d.ts.map +1 -0
- package/dist/engine/audit-types.js +2 -0
- package/dist/engine/audit-types.js.map +1 -0
- package/dist/engine/audit-warnings.d.ts +56 -0
- package/dist/engine/audit-warnings.d.ts.map +1 -0
- package/dist/engine/audit-warnings.js +116 -0
- package/dist/engine/audit-warnings.js.map +1 -0
- package/dist/engine/audit.d.ts +14 -38
- package/dist/engine/audit.d.ts.map +1 -1
- package/dist/engine/audit.js +9 -500
- package/dist/engine/audit.js.map +1 -1
- package/dist/engine/evaluate-packs.d.ts +37 -0
- package/dist/engine/evaluate-packs.d.ts.map +1 -0
- package/dist/engine/evaluate-packs.js +144 -0
- package/dist/engine/evaluate-packs.js.map +1 -0
- package/dist/engine/evaluate.d.ts.map +1 -1
- package/dist/engine/evaluate.js +31 -8
- package/dist/engine/evaluate.js.map +1 -1
- package/dist/engine/invariants.d.ts +8 -0
- package/dist/engine/invariants.d.ts.map +1 -1
- package/dist/engine/invariants.js +11 -0
- package/dist/engine/invariants.js.map +1 -1
- package/dist/engine/pack-selection.d.ts +21 -0
- package/dist/engine/pack-selection.d.ts.map +1 -0
- package/dist/engine/pack-selection.js +63 -0
- package/dist/engine/pack-selection.js.map +1 -0
- package/dist/engine/report-build.d.ts +22 -0
- package/dist/engine/report-build.d.ts.map +1 -0
- package/dist/engine/report-build.js +67 -0
- package/dist/engine/report-build.js.map +1 -0
- package/dist/foundation/interview.d.ts.map +1 -1
- package/dist/foundation/interview.js +16 -5
- package/dist/foundation/interview.js.map +1 -1
- package/dist/intent/match.d.ts +38 -0
- package/dist/intent/match.d.ts.map +1 -0
- package/dist/intent/match.js +108 -0
- package/dist/intent/match.js.map +1 -0
- package/dist/intent/otm.d.ts +16 -0
- package/dist/intent/otm.d.ts.map +1 -0
- package/dist/intent/otm.js +144 -0
- package/dist/intent/otm.js.map +1 -0
- package/dist/intent/types.d.ts +111 -0
- package/dist/intent/types.d.ts.map +1 -0
- package/dist/intent/types.js +16 -0
- package/dist/intent/types.js.map +1 -0
- package/dist/scanner/adapters/codeql.d.ts +14 -0
- package/dist/scanner/adapters/codeql.d.ts.map +1 -0
- package/dist/scanner/adapters/codeql.js +134 -0
- package/dist/scanner/adapters/codeql.js.map +1 -0
- package/dist/scanner/adapters/dependency-cruiser.d.ts +3 -0
- package/dist/scanner/adapters/dependency-cruiser.d.ts.map +1 -0
- package/dist/scanner/adapters/dependency-cruiser.js +174 -0
- package/dist/scanner/adapters/dependency-cruiser.js.map +1 -0
- package/dist/scanner/adapters/ort.d.ts +12 -0
- package/dist/scanner/adapters/ort.d.ts.map +1 -0
- package/dist/scanner/adapters/ort.js +259 -0
- package/dist/scanner/adapters/ort.js.map +1 -0
- package/dist/scanner/adapters/scorecard.d.ts +7 -0
- package/dist/scanner/adapters/scorecard.d.ts.map +1 -0
- package/dist/scanner/adapters/scorecard.js +209 -0
- package/dist/scanner/adapters/scorecard.js.map +1 -0
- package/dist/scanner/adapters/semgrep.d.ts +3 -0
- package/dist/scanner/adapters/semgrep.d.ts.map +1 -0
- package/dist/scanner/adapters/semgrep.js +163 -0
- package/dist/scanner/adapters/semgrep.js.map +1 -0
- package/dist/scanner/adapters/trivy.d.ts +3 -0
- package/dist/scanner/adapters/trivy.d.ts.map +1 -0
- package/dist/scanner/adapters/trivy.js +163 -0
- package/dist/scanner/adapters/trivy.js.map +1 -0
- package/dist/scanner/config.d.ts +4 -0
- package/dist/scanner/config.d.ts.map +1 -0
- package/dist/scanner/config.js +15 -0
- package/dist/scanner/config.js.map +1 -0
- package/dist/scanner/identity.d.ts +17 -0
- package/dist/scanner/identity.d.ts.map +1 -0
- package/dist/scanner/identity.js +50 -0
- package/dist/scanner/identity.js.map +1 -0
- package/dist/scanner/normalize.d.ts +40 -0
- package/dist/scanner/normalize.d.ts.map +1 -0
- package/dist/scanner/normalize.js +85 -0
- package/dist/scanner/normalize.js.map +1 -0
- package/dist/scanner/registry.d.ts +19 -0
- package/dist/scanner/registry.d.ts.map +1 -0
- package/dist/scanner/registry.js +43 -0
- package/dist/scanner/registry.js.map +1 -0
- package/dist/scanner/run.d.ts +70 -0
- package/dist/scanner/run.d.ts.map +1 -0
- package/dist/scanner/run.js +419 -0
- package/dist/scanner/run.js.map +1 -0
- package/dist/scanner/sarif.d.ts +21 -0
- package/dist/scanner/sarif.d.ts.map +1 -0
- package/dist/scanner/sarif.js +156 -0
- package/dist/scanner/sarif.js.map +1 -0
- package/dist/scanner/types.d.ts +236 -0
- package/dist/scanner/types.d.ts.map +1 -0
- package/dist/scanner/types.js +11 -0
- package/dist/scanner/types.js.map +1 -0
- package/package.json +9 -8
- package/rules/core/code-quality.yaml +12 -2
- package/rules/core/provenance-attestation.yaml +5 -0
- package/rules/core/testing-assurance.yaml +19 -4
|
@@ -237,15 +237,26 @@ const ANSWER_HANDLERS = {
|
|
|
237
237
|
* setter itself stays a dumb path walk with no per-field branches.
|
|
238
238
|
*/
|
|
239
239
|
const KNOWN_IDS = new Set(INTERVIEW_QUESTIONS.map((q) => q.id));
|
|
240
|
+
/**
|
|
241
|
+
* One view of a config node as a writable map. The cast follows a runtime
|
|
242
|
+
* object check, so it is a narrowing, not an escape: a non-object segment is
|
|
243
|
+
* a loud error naming the question instead of a TypeError on `undefined`.
|
|
244
|
+
*/
|
|
245
|
+
function objectView(node, id) {
|
|
246
|
+
if (typeof node !== 'object' || node === null) {
|
|
247
|
+
throw new Error(`interview question path is not an object: ${JSON.stringify(id)}`);
|
|
248
|
+
}
|
|
249
|
+
return node;
|
|
250
|
+
}
|
|
240
251
|
function setPath(config, id, value) {
|
|
241
252
|
if (!KNOWN_IDS.has(id))
|
|
242
253
|
throw new Error(`unknown interview question: ${JSON.stringify(id)}`);
|
|
243
254
|
const keys = id.split('.');
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
node[
|
|
255
|
+
const last = keys.pop();
|
|
256
|
+
let node = objectView(config, id);
|
|
257
|
+
for (const key of keys)
|
|
258
|
+
node = objectView(node[key], id);
|
|
259
|
+
node[last] = value;
|
|
249
260
|
}
|
|
250
261
|
/**
|
|
251
262
|
* Builds a FoundationConfig from a `{ [questionId]: rawAnswer }` map, in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interview.js","sourceRoot":"","sources":["../../src/foundation/interview.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interview.js","sourceRoot":"","sources":["../../src/foundation/interview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intended vs observed.
|
|
3
|
+
*
|
|
4
|
+
* The join key is the CWE id: a threat declares `cwes: ["CWE-79"]`, and scanner
|
|
5
|
+
* evidence that names the same CWE is the observation. That is deterministic and
|
|
6
|
+
* auditable — no similarity scoring, no LLM.
|
|
7
|
+
*
|
|
8
|
+
* What it deliberately does NOT do: treat "no evidence" as "mitigated". A threat
|
|
9
|
+
* with no matching observation is `UNKNOWN` and says so, because the scanners
|
|
10
|
+
* that ran may simply not cover it.
|
|
11
|
+
*/
|
|
12
|
+
import { normaliseCwe } from './otm.js';
|
|
13
|
+
import type { IntentModel, IntentReport } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* The shape this module needs from evidence. Structural, not imported, so the
|
|
16
|
+
* intent layer does not depend on the scanner subsystem — the JSON that
|
|
17
|
+
* `usa scan --json` emits satisfies it as-is.
|
|
18
|
+
*/
|
|
19
|
+
export interface EvidenceLike {
|
|
20
|
+
id: string;
|
|
21
|
+
claim: string;
|
|
22
|
+
source?: {
|
|
23
|
+
tool?: string;
|
|
24
|
+
identifier?: string;
|
|
25
|
+
};
|
|
26
|
+
/** Structured CWEs from the tool itself — preferred over text scanning. */
|
|
27
|
+
cwes?: string[];
|
|
28
|
+
}
|
|
29
|
+
/** Every CWE token in a piece of evidence, with where it was found. */
|
|
30
|
+
export declare function cwesOf(evidence: EvidenceLike): {
|
|
31
|
+
cwe: string;
|
|
32
|
+
field: string;
|
|
33
|
+
}[];
|
|
34
|
+
export declare function matchThreats(model: IntentModel, evidence: EvidenceLike[]): IntentReport;
|
|
35
|
+
/** Convenience for a caller holding an untyped `usa scan --json` payload. */
|
|
36
|
+
export declare function evidenceFromScanJson(payload: unknown): EvidenceLike[];
|
|
37
|
+
export { normaliseCwe };
|
|
38
|
+
//# sourceMappingURL=match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../src/intent/match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAe,MAAM,YAAY,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAgB/E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CAgDvF;AAcD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAYrE;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intended vs observed.
|
|
3
|
+
*
|
|
4
|
+
* The join key is the CWE id: a threat declares `cwes: ["CWE-79"]`, and scanner
|
|
5
|
+
* evidence that names the same CWE is the observation. That is deterministic and
|
|
6
|
+
* auditable — no similarity scoring, no LLM.
|
|
7
|
+
*
|
|
8
|
+
* What it deliberately does NOT do: treat "no evidence" as "mitigated". A threat
|
|
9
|
+
* with no matching observation is `UNKNOWN` and says so, because the scanners
|
|
10
|
+
* that ran may simply not cover it.
|
|
11
|
+
*/
|
|
12
|
+
import { normaliseCwe } from './otm.js';
|
|
13
|
+
/** Every CWE token in a piece of evidence, with where it was found. */
|
|
14
|
+
export function cwesOf(evidence) {
|
|
15
|
+
// A tool that stated its CWE is authoritative; only fall back to scanning the
|
|
16
|
+
// text when it did not, and never invent a relationship from a substring.
|
|
17
|
+
if (Array.isArray(evidence.cwes) && evidence.cwes.length > 0) {
|
|
18
|
+
return evidence.cwes.map((cwe) => ({ cwe: normaliseCwe(cwe), field: 'cwes' }));
|
|
19
|
+
}
|
|
20
|
+
const found = [];
|
|
21
|
+
const scan = (text, field) => {
|
|
22
|
+
if (!text)
|
|
23
|
+
return;
|
|
24
|
+
for (const match of text.matchAll(/\bCWE[-_ ]?(\d{1,5})\b/gi)) {
|
|
25
|
+
found.push({ cwe: `CWE-${Number(match[1])}`, field });
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
scan(evidence.source?.identifier, 'source.identifier');
|
|
29
|
+
scan(evidence.claim, 'claim');
|
|
30
|
+
return found;
|
|
31
|
+
}
|
|
32
|
+
export function matchThreats(model, evidence) {
|
|
33
|
+
const byCwe = indexEvidence(evidence);
|
|
34
|
+
const matches = model.threats.map((threat) => {
|
|
35
|
+
const hits = new Set();
|
|
36
|
+
const seenCwes = [];
|
|
37
|
+
for (const cwe of threat.cwes) {
|
|
38
|
+
const ids = byCwe.get(cwe);
|
|
39
|
+
if (!ids)
|
|
40
|
+
continue;
|
|
41
|
+
seenCwes.push(cwe);
|
|
42
|
+
for (const id of ids)
|
|
43
|
+
hits.add(id);
|
|
44
|
+
}
|
|
45
|
+
if (threat.cwes.length === 0) {
|
|
46
|
+
return {
|
|
47
|
+
threat,
|
|
48
|
+
verdict: 'UNKNOWN',
|
|
49
|
+
evidenceIds: [],
|
|
50
|
+
reason: 'the threat declares no CWE, so no scanner observation can be joined to it',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (hits.size === 0) {
|
|
54
|
+
return {
|
|
55
|
+
threat,
|
|
56
|
+
verdict: 'NOT_OBSERVED',
|
|
57
|
+
evidenceIds: [],
|
|
58
|
+
reason: `no evidence mentions ${threat.cwes.join(', ')} — this does not prove the threat is mitigated`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
threat,
|
|
63
|
+
verdict: 'OBSERVED',
|
|
64
|
+
evidenceIds: [...hits].sort(),
|
|
65
|
+
reason: `evidence cites ${seenCwes.join(', ')}`,
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
const declared = new Set(model.threats.flatMap((t) => t.cwes));
|
|
69
|
+
const unmodeled = [...byCwe.entries()]
|
|
70
|
+
.filter(([cwe]) => !declared.has(cwe))
|
|
71
|
+
.map(([cwe, ids]) => ({ cwe, evidenceIds: [...ids].sort() }))
|
|
72
|
+
.sort((a, b) => a.cwe.localeCompare(b.cwe));
|
|
73
|
+
const usedZones = new Set(model.components.map((c) => c.trustZone).filter(Boolean));
|
|
74
|
+
return {
|
|
75
|
+
model,
|
|
76
|
+
matches,
|
|
77
|
+
unmodeled,
|
|
78
|
+
emptyTrustZones: model.trustZones.filter((z) => !usedZones.has(z.id)),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function indexEvidence(evidence) {
|
|
82
|
+
const index = new Map();
|
|
83
|
+
for (const item of evidence) {
|
|
84
|
+
for (const { cwe } of cwesOf(item)) {
|
|
85
|
+
const set = index.get(cwe) ?? new Set();
|
|
86
|
+
set.add(item.id);
|
|
87
|
+
index.set(cwe, set);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return index;
|
|
91
|
+
}
|
|
92
|
+
/** Convenience for a caller holding an untyped `usa scan --json` payload. */
|
|
93
|
+
export function evidenceFromScanJson(payload) {
|
|
94
|
+
const list = payload?.evidence;
|
|
95
|
+
if (!Array.isArray(list))
|
|
96
|
+
return [];
|
|
97
|
+
return list.map((raw) => {
|
|
98
|
+
const o = (raw ?? {});
|
|
99
|
+
return {
|
|
100
|
+
id: typeof o.id === 'string' ? o.id : '',
|
|
101
|
+
claim: typeof o.claim === 'string' ? o.claim : '',
|
|
102
|
+
source: (o.source ?? {}),
|
|
103
|
+
cwes: Array.isArray(o.cwes) ? o.cwes : undefined,
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
export { normaliseCwe };
|
|
108
|
+
//# sourceMappingURL=match.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/intent/match.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OTM (Open Threat Model) parser.
|
|
3
|
+
*
|
|
4
|
+
* Total, like the scanner normalisers: a field the format does not require
|
|
5
|
+
* becomes an empty value, an entity type we do not model is listed in
|
|
6
|
+
* `unrecognised`, and a document that is not OTM at all throws a single named
|
|
7
|
+
* error rather than half-parsing.
|
|
8
|
+
*/
|
|
9
|
+
import type { IntentModel } from './types.js';
|
|
10
|
+
export declare class IntentFormatError extends Error {
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
13
|
+
export declare function parseOtm(raw: string): IntentModel;
|
|
14
|
+
/** `CWE-79`, `cwe-79`, `CWE 79` and `79` all become `CWE-79`. */
|
|
15
|
+
export declare function normaliseCwe(value: unknown): string;
|
|
16
|
+
//# sourceMappingURL=otm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otm.d.ts","sourceRoot":"","sources":["../../src/intent/otm.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAKV,WAAW,EAGZ,MAAM,YAAY,CAAC;AAEpB,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAeD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAuCjD;AA2ED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
export class IntentFormatError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = 'IntentFormatError';
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
/** Keys this parser models. Anything else in the document is reported, not dropped. */
|
|
8
|
+
const MODELLED = new Set([
|
|
9
|
+
'otmVersion',
|
|
10
|
+
'project',
|
|
11
|
+
'assets',
|
|
12
|
+
'components',
|
|
13
|
+
'dataflows',
|
|
14
|
+
'trustZones',
|
|
15
|
+
'threats',
|
|
16
|
+
'mitigations',
|
|
17
|
+
'representations',
|
|
18
|
+
]);
|
|
19
|
+
export function parseOtm(raw) {
|
|
20
|
+
let doc;
|
|
21
|
+
try {
|
|
22
|
+
doc = JSON.parse(raw);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
throw new IntentFormatError(`not valid JSON: ${err.message}`);
|
|
26
|
+
}
|
|
27
|
+
if (typeof doc !== 'object' || doc === null) {
|
|
28
|
+
throw new IntentFormatError('not an object');
|
|
29
|
+
}
|
|
30
|
+
const root = doc;
|
|
31
|
+
if (typeof root.otmVersion !== 'string') {
|
|
32
|
+
// Threat Dragon also exports its internal diagram format; saying which one
|
|
33
|
+
// this is beats "parse failed".
|
|
34
|
+
throw new IntentFormatError("not an OTM document (no otmVersion). Threat Dragon's internal diagram export is not supported — use its OTM export.");
|
|
35
|
+
}
|
|
36
|
+
const project = asRecord(root.project);
|
|
37
|
+
return {
|
|
38
|
+
format: 'otm',
|
|
39
|
+
version: root.otmVersion,
|
|
40
|
+
project: {
|
|
41
|
+
id: str(project.id),
|
|
42
|
+
name: str(project.name),
|
|
43
|
+
description: str(project.description),
|
|
44
|
+
owner: str(project.owner),
|
|
45
|
+
},
|
|
46
|
+
assets: list(root.assets).map(parseAsset),
|
|
47
|
+
components: list(root.components).map(parseComponent),
|
|
48
|
+
dataFlows: list(root.dataflows).map(parseFlow),
|
|
49
|
+
trustZones: list(root.trustZones).map(parseZone),
|
|
50
|
+
threats: list(root.threats).map(parseThreat),
|
|
51
|
+
mitigations: list(root.mitigations).map(parseMitigation),
|
|
52
|
+
// `$`-prefixed keys are annotations (a fixture note, a schema hint), not
|
|
53
|
+
// model content, so they are not reported as unmodelled entities.
|
|
54
|
+
unrecognised: Object.keys(root).filter((k) => !MODELLED.has(k) && !k.startsWith('$')),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function parseAsset(raw) {
|
|
58
|
+
const o = asRecord(raw);
|
|
59
|
+
const risk = asRecord(o.risk);
|
|
60
|
+
return {
|
|
61
|
+
id: str(o.id),
|
|
62
|
+
name: str(o.name),
|
|
63
|
+
description: str(o.description),
|
|
64
|
+
risk: {
|
|
65
|
+
confidentiality: num(risk.confidentiality),
|
|
66
|
+
integrity: num(risk.integrity),
|
|
67
|
+
availability: num(risk.availability),
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function parseComponent(raw) {
|
|
72
|
+
const o = asRecord(raw);
|
|
73
|
+
const parent = asRecord(o.parent);
|
|
74
|
+
return {
|
|
75
|
+
id: str(o.id),
|
|
76
|
+
name: str(o.name),
|
|
77
|
+
type: str(o.type),
|
|
78
|
+
trustZone: parent.trustZone ? str(parent.trustZone) : undefined,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function parseFlow(raw) {
|
|
82
|
+
const o = asRecord(raw);
|
|
83
|
+
return {
|
|
84
|
+
id: str(o.id),
|
|
85
|
+
name: str(o.name),
|
|
86
|
+
source: str(o.source),
|
|
87
|
+
destination: str(o.destination),
|
|
88
|
+
bidirectional: o.bidirectional === true,
|
|
89
|
+
assets: list(o.assets).map(str).filter(Boolean),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function parseZone(raw) {
|
|
93
|
+
const o = asRecord(raw);
|
|
94
|
+
const risk = asRecord(o.risk);
|
|
95
|
+
return {
|
|
96
|
+
id: str(o.id),
|
|
97
|
+
name: str(o.name),
|
|
98
|
+
type: str(o.type),
|
|
99
|
+
trustRating: num(risk.trustRating),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function parseThreat(raw) {
|
|
103
|
+
const o = asRecord(raw);
|
|
104
|
+
const risk = asRecord(o.risk);
|
|
105
|
+
return {
|
|
106
|
+
id: str(o.id),
|
|
107
|
+
name: str(o.name),
|
|
108
|
+
description: str(o.description),
|
|
109
|
+
categories: list(o.categories).map(str).filter(Boolean),
|
|
110
|
+
cwes: list(o.cwes).map(normaliseCwe).filter(Boolean),
|
|
111
|
+
likelihood: num(risk.likelihood),
|
|
112
|
+
impact: num(risk.impact),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function parseMitigation(raw) {
|
|
116
|
+
const o = asRecord(raw);
|
|
117
|
+
return {
|
|
118
|
+
id: str(o.id),
|
|
119
|
+
name: str(o.name),
|
|
120
|
+
description: str(o.description),
|
|
121
|
+
riskReduction: num(o.riskReduction),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/** `CWE-79`, `cwe-79`, `CWE 79` and `79` all become `CWE-79`. */
|
|
125
|
+
export function normaliseCwe(value) {
|
|
126
|
+
const text = str(value)
|
|
127
|
+
.toUpperCase()
|
|
128
|
+
.replace(/[^0-9]/g, '');
|
|
129
|
+
return text ? `CWE-${Number(text)}` : '';
|
|
130
|
+
}
|
|
131
|
+
function asRecord(value) {
|
|
132
|
+
return typeof value === 'object' && value !== null ? value : {};
|
|
133
|
+
}
|
|
134
|
+
function list(value) {
|
|
135
|
+
return Array.isArray(value) ? value : [];
|
|
136
|
+
}
|
|
137
|
+
function str(value) {
|
|
138
|
+
return typeof value === 'string' ? value : '';
|
|
139
|
+
}
|
|
140
|
+
function num(value) {
|
|
141
|
+
const n = Number(value);
|
|
142
|
+
return Number.isFinite(n) ? n : undefined;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=otm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otm.js","sourceRoot":"","sources":["../../src/intent/otm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The intent model — what the project says it is, as distinct from what the
|
|
3
|
+
* scanners observe.
|
|
4
|
+
*
|
|
5
|
+
* Shapes come from the **Open Threat Model** format (OTM 0.2.0) that Threat
|
|
6
|
+
* Dragon exports, verified against the project's own example model rather than
|
|
7
|
+
* from memory:
|
|
8
|
+
*
|
|
9
|
+
* { otmVersion, project, assets[], components[], dataflows[],
|
|
10
|
+
* trustZones[], threats[], mitigations[] }
|
|
11
|
+
*
|
|
12
|
+
* We import the *concepts*, not the application: no Threat Dragon process runs,
|
|
13
|
+
* no diagram is rendered, and the model is a plain file under version control.
|
|
14
|
+
*/
|
|
15
|
+
export interface IntentModel {
|
|
16
|
+
format: 'otm';
|
|
17
|
+
version: string;
|
|
18
|
+
project: IntentProject;
|
|
19
|
+
assets: IntentAsset[];
|
|
20
|
+
components: IntentComponent[];
|
|
21
|
+
dataFlows: IntentDataFlow[];
|
|
22
|
+
trustZones: IntentTrustZone[];
|
|
23
|
+
threats: IntentThreat[];
|
|
24
|
+
mitigations: IntentMitigation[];
|
|
25
|
+
/** Anything the parser recognised but does not model. Never dropped silently. */
|
|
26
|
+
unrecognised: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface IntentProject {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
owner: string;
|
|
33
|
+
}
|
|
34
|
+
export interface IntentAsset {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
description: string;
|
|
38
|
+
/** Confidentiality / integrity / availability, 0–100, when declared. */
|
|
39
|
+
risk?: {
|
|
40
|
+
confidentiality?: number;
|
|
41
|
+
integrity?: number;
|
|
42
|
+
availability?: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export interface IntentComponent {
|
|
46
|
+
id: string;
|
|
47
|
+
name: string;
|
|
48
|
+
type: string;
|
|
49
|
+
/** The trust zone this component sits in, when declared. */
|
|
50
|
+
trustZone?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface IntentDataFlow {
|
|
53
|
+
id: string;
|
|
54
|
+
name: string;
|
|
55
|
+
source: string;
|
|
56
|
+
destination: string;
|
|
57
|
+
bidirectional: boolean;
|
|
58
|
+
/** Asset ids carried across this flow. */
|
|
59
|
+
assets: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface IntentTrustZone {
|
|
62
|
+
id: string;
|
|
63
|
+
name: string;
|
|
64
|
+
type: string;
|
|
65
|
+
/** 0–100; lower means less trusted. */
|
|
66
|
+
trustRating?: number;
|
|
67
|
+
}
|
|
68
|
+
export interface IntentThreat {
|
|
69
|
+
id: string;
|
|
70
|
+
name: string;
|
|
71
|
+
description: string;
|
|
72
|
+
/** STRIDE categories, e.g. ["Spoofing", "Tampering"]. */
|
|
73
|
+
categories: string[];
|
|
74
|
+
/** CWE ids this threat is about — the join key to scanner evidence. */
|
|
75
|
+
cwes: string[];
|
|
76
|
+
likelihood?: number;
|
|
77
|
+
impact?: number;
|
|
78
|
+
}
|
|
79
|
+
export interface IntentMitigation {
|
|
80
|
+
id: string;
|
|
81
|
+
name: string;
|
|
82
|
+
description: string;
|
|
83
|
+
riskReduction?: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* What the model claims vs what the evidence shows, per threat.
|
|
87
|
+
*
|
|
88
|
+
* `UNKNOWN` is the default and the honest answer when nothing was observed: a
|
|
89
|
+
* threat with no matching evidence is not "mitigated", it is *unexamined*.
|
|
90
|
+
*/
|
|
91
|
+
export type ThreatVerdict = 'OBSERVED' | 'NOT_OBSERVED' | 'UNKNOWN';
|
|
92
|
+
export interface ThreatMatch {
|
|
93
|
+
threat: IntentThreat;
|
|
94
|
+
verdict: ThreatVerdict;
|
|
95
|
+
/** Evidence ids that cite one of the threat's CWEs. */
|
|
96
|
+
evidenceIds: string[];
|
|
97
|
+
/** Why the verdict is what it is — mandatory, never blank. */
|
|
98
|
+
reason: string;
|
|
99
|
+
}
|
|
100
|
+
export interface IntentReport {
|
|
101
|
+
model: IntentModel;
|
|
102
|
+
matches: ThreatMatch[];
|
|
103
|
+
/** CWE ids seen in evidence that no declared threat mentions. */
|
|
104
|
+
unmodeled: {
|
|
105
|
+
cwe: string;
|
|
106
|
+
evidenceIds: string[];
|
|
107
|
+
}[];
|
|
108
|
+
/** Declared trust zones with no component inside them. */
|
|
109
|
+
emptyTrustZones: IntentTrustZone[];
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intent/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The intent model — what the project says it is, as distinct from what the
|
|
3
|
+
* scanners observe.
|
|
4
|
+
*
|
|
5
|
+
* Shapes come from the **Open Threat Model** format (OTM 0.2.0) that Threat
|
|
6
|
+
* Dragon exports, verified against the project's own example model rather than
|
|
7
|
+
* from memory:
|
|
8
|
+
*
|
|
9
|
+
* { otmVersion, project, assets[], components[], dataflows[],
|
|
10
|
+
* trustZones[], threats[], mitigations[] }
|
|
11
|
+
*
|
|
12
|
+
* We import the *concepts*, not the application: no Threat Dragon process runs,
|
|
13
|
+
* no diagram is rendered, and the model is a plain file under version control.
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/intent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ScannerAdapter } from '../types.js';
|
|
2
|
+
/** Where `database analyze` writes its SARIF, relative to the scan workdir. */
|
|
3
|
+
export declare const CODEQL_SARIF = "codeql-results.sarif";
|
|
4
|
+
export declare const codeqlAdapter: ScannerAdapter;
|
|
5
|
+
/**
|
|
6
|
+
* The analyze leg, exposed so tests and callers can build it without running create.
|
|
7
|
+
*
|
|
8
|
+
* `packs` is a *positional* argument, so an empty string is not "no packs" — it
|
|
9
|
+
* is one empty specifier, and CodeQL rejects the whole run with
|
|
10
|
+
* `Invalid package specification:` and writes no SARIF. Measured on 2.27.3: with
|
|
11
|
+
* no specifier at all, CodeQL runs the language's default (code-scanning) suite.
|
|
12
|
+
*/
|
|
13
|
+
export declare function codeqlAnalyzeCommand(db: string, packs: string, out: string): string[];
|
|
14
|
+
//# sourceMappingURL=codeql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeql.d.ts","sourceRoot":"","sources":["../../../src/scanner/adapters/codeql.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAA0B,cAAc,EAAiB,MAAM,aAAa,CAAC;AAGzF,+EAA+E;AAC/E,eAAO,MAAM,YAAY,yBAAyB,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,cAiE3B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWrF"}
|