@keithadler/frostjs 0.1.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/README.md +131 -8
- package/dist/audit.d.ts +71 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +202 -0
- package/dist/audit.js.map +1 -0
- package/dist/capabilities.d.ts +22 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +140 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cli/args.d.ts +5 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +29 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +113 -5
- package/dist/cli/run.js.map +1 -1
- package/dist/extract/html.d.ts +11 -0
- package/dist/extract/html.d.ts.map +1 -1
- package/dist/extract/html.js +58 -0
- package/dist/extract/html.js.map +1 -1
- package/dist/extract/index.d.ts +2 -0
- package/dist/extract/index.d.ts.map +1 -1
- package/dist/extract/index.js +19 -0
- package/dist/extract/index.js.map +1 -1
- package/dist/extract/recognizers/device.d.ts +10 -0
- package/dist/extract/recognizers/device.d.ts.map +1 -0
- package/dist/extract/recognizers/device.js +46 -0
- package/dist/extract/recognizers/device.js.map +1 -0
- package/dist/extract/recognizers/dom-escape.d.ts.map +1 -1
- package/dist/extract/recognizers/dom-escape.js +11 -0
- package/dist/extract/recognizers/dom-escape.js.map +1 -1
- package/dist/extract/recognizers/message.d.ts +16 -0
- package/dist/extract/recognizers/message.d.ts.map +1 -0
- package/dist/extract/recognizers/message.js +92 -0
- package/dist/extract/recognizers/message.js.map +1 -0
- package/dist/extract/recognizers/network.d.ts +10 -2
- package/dist/extract/recognizers/network.d.ts.map +1 -1
- package/dist/extract/recognizers/network.js +49 -6
- package/dist/extract/recognizers/network.js.map +1 -1
- package/dist/extract/taint.d.ts +36 -0
- package/dist/extract/taint.d.ts.map +1 -0
- package/dist/extract/taint.js +503 -0
- package/dist/extract/taint.js.map +1 -0
- package/dist/extract/target.d.ts.map +1 -1
- package/dist/extract/target.js +23 -1
- package/dist/extract/target.js.map +1 -1
- package/dist/policy/compile.d.ts +3 -1
- package/dist/policy/compile.d.ts.map +1 -1
- package/dist/policy/compile.js +1 -0
- package/dist/policy/compile.js.map +1 -1
- package/dist/policy/config.d.ts.map +1 -1
- package/dist/policy/config.js +48 -1
- package/dist/policy/config.js.map +1 -1
- package/dist/policy/index.js +1 -1
- package/dist/policy/index.js.map +1 -1
- package/dist/policy/parse.d.ts +7 -0
- package/dist/policy/parse.d.ts.map +1 -1
- package/dist/policy/parse.js +24 -1
- package/dist/policy/parse.js.map +1 -1
- package/dist/policy/vocabulary.d.ts.map +1 -1
- package/dist/policy/vocabulary.js +20 -0
- package/dist/policy/vocabulary.js.map +1 -1
- package/dist/report/sarif.d.ts.map +1 -1
- package/dist/report/sarif.js +10 -0
- package/dist/report/sarif.js.map +1 -1
- package/dist/report/summary.d.ts.map +1 -1
- package/dist/report/summary.js +2 -0
- package/dist/report/summary.js.map +1 -1
- package/dist/report/text.d.ts.map +1 -1
- package/dist/report/text.js +5 -0
- package/dist/report/text.js.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The canonical capability taxonomy with human descriptions. This is the
|
|
3
|
+
* single source of truth: the README table, the `frostjs capabilities`
|
|
4
|
+
* command and docs/CAPABILITIES.md are all generated from it, and a test
|
|
5
|
+
* fails if it drifts from the codes the extractor actually emits
|
|
6
|
+
* (MEMBER_CODES) or from the families (FAMILIES).
|
|
7
|
+
*/
|
|
8
|
+
import { FAMILIES, MEMBER_CODES, CAPABILITY_PHRASES } from "./policy/vocabulary.js";
|
|
9
|
+
/** One line per family: what the family is about. */
|
|
10
|
+
export const FAMILY_SUMMARY = {
|
|
11
|
+
storage: "Persisting data in the browser.",
|
|
12
|
+
network: "Reaching another host, or loading code from one.",
|
|
13
|
+
codegen: "Turning a string into running code.",
|
|
14
|
+
"dom-escape": "Turning a string into live markup, or creating an element that runs code.",
|
|
15
|
+
identity: "Reading who or where the user is.",
|
|
16
|
+
navigation: "Moving the page, or talking to another window.",
|
|
17
|
+
globals: "Mutating shared global state that every script sees.",
|
|
18
|
+
worker: "Running code off the main thread, or intercepting requests.",
|
|
19
|
+
device: "Reaching the machine: hardware, files, notifications.",
|
|
20
|
+
};
|
|
21
|
+
/** What triggers each member code. Keep terse; no trailing period needed. */
|
|
22
|
+
export const CODE_TRIGGER = {
|
|
23
|
+
"storage.local": "localStorage",
|
|
24
|
+
"storage.session": "sessionStorage",
|
|
25
|
+
"storage.indexeddb": "indexedDB",
|
|
26
|
+
"storage.cache": "caches (the Cache API)",
|
|
27
|
+
"storage.cookie": "document.cookie",
|
|
28
|
+
"storage.navigator": "navigator.storage",
|
|
29
|
+
"network.fetch": "fetch(url)",
|
|
30
|
+
"network.xhr": "new XMLHttpRequest()",
|
|
31
|
+
"network.websocket": "new WebSocket(url)",
|
|
32
|
+
"network.eventsource": "new EventSource(url)",
|
|
33
|
+
"network.beacon": "navigator.sendBeacon(url)",
|
|
34
|
+
"network.import": "dynamic import() of an absolute URL or an unresolvable expression",
|
|
35
|
+
"network.importscripts": "importScripts(url) in a worker (loads and runs a script)",
|
|
36
|
+
"network.resource": 'el.src = "https://..." to another host',
|
|
37
|
+
"codegen.eval": "eval(...)",
|
|
38
|
+
"codegen.function": "Function(...) or new Function(...)",
|
|
39
|
+
"codegen.timer": "setTimeout / setInterval with a string first argument",
|
|
40
|
+
"codegen.write": "document.write / document.writeln",
|
|
41
|
+
"dom-escape.html": "assignment to innerHTML / outerHTML / srcdoc, insertAdjacentHTML, createContextualFragment",
|
|
42
|
+
"dom-escape.script": 'document.createElement("script"), JSX <script>',
|
|
43
|
+
"dom-escape.iframe": 'document.createElement("iframe"), JSX <iframe>',
|
|
44
|
+
"dom-escape.handler": 'setAttribute("onclick" / "onerror" / ..., code) (a handler from a string)',
|
|
45
|
+
"identity.device": "navigator.userAgent, platform, plugins, hardwareConcurrency, deviceMemory...",
|
|
46
|
+
"identity.geolocation": "navigator.geolocation",
|
|
47
|
+
"identity.media": "navigator.mediaDevices, getUserMedia",
|
|
48
|
+
"identity.clipboard": 'navigator.clipboard, document.execCommand("copy" / "paste")',
|
|
49
|
+
"identity.credentials": "navigator.credentials",
|
|
50
|
+
"identity.permissions": "navigator.permissions",
|
|
51
|
+
"navigation.location": "assignment to location / location.href, location.assign / replace / reload",
|
|
52
|
+
"navigation.open": "window.open",
|
|
53
|
+
"navigation.history": "history.pushState / replaceState / back / forward / go",
|
|
54
|
+
"navigation.postmessage": "postMessage to parent / top / opener / contentWindow, or with a string origin",
|
|
55
|
+
"navigation.message-receive": 'window.addEventListener("message", ...) whose handler reads event.data but never checks event.origin',
|
|
56
|
+
"globals.window": "assignment to window.* / globalThis.*, Object.defineProperty(window, ...)",
|
|
57
|
+
"globals.prototype": "assignment to a built-in or its prototype, or Object.defineProperty / assign on one",
|
|
58
|
+
"worker.dedicated": "new Worker(url)",
|
|
59
|
+
"worker.shared": "new SharedWorker(url)",
|
|
60
|
+
"worker.service": "navigator.serviceWorker.register(url)",
|
|
61
|
+
"worker.worklet": "CSS.paintWorklet.addModule(url), audioWorklet.addModule(url)...",
|
|
62
|
+
"device.filesystem": "showOpenFilePicker / showSaveFilePicker / showDirectoryPicker (read or write the user's files)",
|
|
63
|
+
"device.usb": "navigator.usb (WebUSB)",
|
|
64
|
+
"device.bluetooth": "navigator.bluetooth (Web Bluetooth)",
|
|
65
|
+
"device.serial": "navigator.serial (Web Serial)",
|
|
66
|
+
"device.hid": "navigator.hid (WebHID)",
|
|
67
|
+
"device.midi": "navigator.requestMIDIAccess (Web MIDI)",
|
|
68
|
+
"device.wakelock": "navigator.wakeLock",
|
|
69
|
+
"device.notification": "Notification",
|
|
70
|
+
};
|
|
71
|
+
/** The phrases a policy author may write for a code (from the vocabulary), sorted shortest first. */
|
|
72
|
+
function phrasesFor(code) {
|
|
73
|
+
return [...CAPABILITY_PHRASES.entries()]
|
|
74
|
+
.filter(([, c]) => c === code)
|
|
75
|
+
.map(([phrase]) => phrase)
|
|
76
|
+
.sort((a, b) => a.length - b.length);
|
|
77
|
+
}
|
|
78
|
+
/** The taxonomy grouped by family, in family order. */
|
|
79
|
+
export function capabilityDocs() {
|
|
80
|
+
return FAMILIES.map((family) => ({
|
|
81
|
+
family,
|
|
82
|
+
familySummary: FAMILY_SUMMARY[family] ?? "",
|
|
83
|
+
members: MEMBER_CODES.filter((c) => c === family || c.startsWith(`${family}.`)).map((code) => ({
|
|
84
|
+
code,
|
|
85
|
+
trigger: CODE_TRIGGER[code] ?? "",
|
|
86
|
+
phrases: phrasesFor(code),
|
|
87
|
+
})),
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
/** `frostjs capabilities` as a plain-text listing. */
|
|
91
|
+
export function capabilitiesText() {
|
|
92
|
+
const lines = [];
|
|
93
|
+
for (const fam of capabilityDocs()) {
|
|
94
|
+
const famPhrases = phrasesFor(fam.family);
|
|
95
|
+
lines.push(`${fam.family}${famPhrases.length ? ` (${famPhrases.join(", ")})` : ""} - ${fam.familySummary}`);
|
|
96
|
+
for (const m of fam.members)
|
|
97
|
+
lines.push(` ${m.code.padEnd(26)} ${m.trigger}`);
|
|
98
|
+
lines.push("");
|
|
99
|
+
}
|
|
100
|
+
lines.push("A policy grants a family or a code:");
|
|
101
|
+
lines.push(" may use storage grants every storage.* member");
|
|
102
|
+
lines.push(" may use local storage grants storage.local");
|
|
103
|
+
lines.push(' may reach "api.example.com" grants the network family to that host');
|
|
104
|
+
return lines.join("\n") + "\n";
|
|
105
|
+
}
|
|
106
|
+
/** `frostjs capabilities --format json`. */
|
|
107
|
+
export function capabilitiesJson() {
|
|
108
|
+
return JSON.stringify({ families: capabilityDocs() }, null, 2) + "\n";
|
|
109
|
+
}
|
|
110
|
+
/** docs/CAPABILITIES.md, generated so it never drifts from the code. */
|
|
111
|
+
export function capabilitiesMarkdown() {
|
|
112
|
+
const lines = [
|
|
113
|
+
"# Capabilities",
|
|
114
|
+
"",
|
|
115
|
+
"The full taxonomy frostjs recognizes. This file is generated from",
|
|
116
|
+
"`src/capabilities.ts` by `frostjs capabilities --format md`; a test fails",
|
|
117
|
+
"if it drifts. A policy grants a whole family (`may use storage`) or a",
|
|
118
|
+
'single code (`may use local storage`); `may reach "<host>"` grants the',
|
|
119
|
+
"network family to named hosts.",
|
|
120
|
+
"",
|
|
121
|
+
];
|
|
122
|
+
for (const fam of capabilityDocs()) {
|
|
123
|
+
const famPhrases = phrasesFor(fam.family);
|
|
124
|
+
lines.push(`## ${fam.family}`);
|
|
125
|
+
lines.push("");
|
|
126
|
+
lines.push(fam.familySummary);
|
|
127
|
+
if (famPhrases.length)
|
|
128
|
+
lines.push(`\nPolicy phrase: ${famPhrases.map((p) => `\`${p}\``).join(", ")}.`);
|
|
129
|
+
lines.push("");
|
|
130
|
+
lines.push("| code | triggered by | policy phrase |");
|
|
131
|
+
lines.push("| --- | --- | --- |");
|
|
132
|
+
for (const m of fam.members) {
|
|
133
|
+
const phrase = m.phrases.length ? m.phrases.map((p) => `\`${p}\``).join(", ") : `\`${m.code}\``;
|
|
134
|
+
lines.push(`| \`${m.code}\` | ${m.trigger} | ${phrase} |`);
|
|
135
|
+
}
|
|
136
|
+
lines.push("");
|
|
137
|
+
}
|
|
138
|
+
return lines.join("\n");
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/args.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { type Confidence } from "../policy/index.js";
|
|
6
6
|
/** The subcommand, `check` being the bare `frostjs <paths>` form. */
|
|
7
|
-
type Command = "check" | "init" | "csp" | "summary" | "vendor-add" | "registry-sync" | "sri";
|
|
7
|
+
type Command = "check" | "init" | "audit" | "capabilities" | "csp" | "summary" | "vendor-add" | "registry-sync" | "sri";
|
|
8
8
|
export interface ParsedArgs {
|
|
9
9
|
command: Command;
|
|
10
10
|
version: boolean;
|
|
@@ -17,10 +17,12 @@ export interface ParsedArgs {
|
|
|
17
17
|
baseline: string | null;
|
|
18
18
|
updateBaseline: boolean;
|
|
19
19
|
changedSince: string | null;
|
|
20
|
+
taint: boolean;
|
|
21
|
+
unused: boolean;
|
|
20
22
|
format: Format;
|
|
21
23
|
paths: string[];
|
|
22
24
|
}
|
|
23
|
-
declare const FORMATS: readonly ["text", "json", "sarif", "github", "html"];
|
|
25
|
+
declare const FORMATS: readonly ["text", "json", "sarif", "github", "html", "md"];
|
|
24
26
|
type Format = (typeof FORMATS)[number];
|
|
25
27
|
/** A flag or argument the CLI cannot accept; the message is printed with the help text. */
|
|
26
28
|
export declare class UsageError extends Error {
|
|
@@ -32,6 +34,6 @@ export declare class UsageError extends Error {
|
|
|
32
34
|
*/
|
|
33
35
|
export declare function parseArgs(argv: readonly string[]): ParsedArgs;
|
|
34
36
|
/** The `--help` text, also printed after a usage error. */
|
|
35
|
-
export declare const HELP = "usage: frostjs [options] <paths...>\n frostjs init [paths...]\n frostjs csp [--policy <file>]\n frostjs summary [--policy <file>]\n frostjs vendor add <files...>\n frostjs registry sync\n frostjs sri [--format text|json|html] [paths...]\n\nDeny-by-default capability linter for JavaScript.\n\ncommands:\n (default) analyze the given paths against the policy\n frostjs init write a starter frostjs.policy in the current\n directory granting exactly what the code under the\n paths (default .) does today, with a note on each\n grant saying where; read it and delete what should\n not be allowed\n frostjs csp print the Content-Security-Policy header the policy\n implies, and nothing else, for the deploy step\n frostjs summary print a plain-English reading of the policy for a\n reviewer who does not write JavaScript\n frostjs vendor add analyze third-party files once, print the capability\n set found, and record it with the file's SHA-384 in\n .frostjs/registry.json beside the policy\n frostjs registry sync after a dependency bump: re-admit vendored files\n whose capability set did not change, refuse and show\n the difference for those that gained one, prune\n entries whose file is gone, record the lockfile hash\n frostjs sri print Subresource Integrity values for registered\n vendored files (text: path and hash; json: a map;\n html: script tags), so the browser enforces the same\n hashes the registry reviewed\n\noptions:\n -h, --help show this help and exit\n -V, --version print the version and exit\n --exclude <name> skip directories with this name (repeatable);\n node_modules, dist, build, coverage and .git are\n always skipped\n --exit-zero report findings but always exit 0\n --policy <file> use this policy instead of searching for frostjs.policy\n --today <date> treat this YYYY-MM-DD as today when checking expiry\n --min-confidence <c> lowest confidence that can fail the build:\n certain, probable (default) or possible; uses below\n it are listed as unknown\n --baseline <file> denials recorded in this file do not fail the build\n --update-baseline write every current denial into the baseline file\n and exit 0; use once to adopt frostjs on a codebase\n --changed-since <ref> fail only on uses in lines changed since the git\n ref (e.g. origin/main); untracked files count whole\n --format <f> text (default), json (versioned schema), sarif\n (2.1.0, one rule per capability), or github\n (inline PR annotations followed by the text report);\n html only with frostjs sri\n\npolicy:\n frostjs.policy is searched for in the directory shared by all the given\n paths, then in each parent directory. The nearest one wins. Path globs in\n a policy are relative to the policy file's directory. With no policy, every\n capability is denied.\n\nexit codes:\n 0 no denied capability uses\n 1 at least one denied capability use\n 2 usage or input error (bad flag, missing path, syntax error)\n";
|
|
37
|
+
export declare const HELP = "usage: frostjs [options] <paths...>\n frostjs init [paths...]\n frostjs audit [--format text|json] <paths...>\n frostjs capabilities [--format text|json|md]\n frostjs csp [--policy <file>]\n frostjs summary [--policy <file>]\n frostjs vendor add <files...>\n frostjs registry sync\n frostjs sri [--format text|json|html] [paths...]\n\nDeny-by-default capability linter for JavaScript.\n\ncommands:\n (default) analyze the given paths against the policy\n frostjs capabilities the full capability taxonomy frostjs recognizes and\n the policy phrase for each; --format text|json|md\n frostjs audit what the code does, with no policy: hosts reached,\n code generation from non-constant input, script\n injection, service workers, and files where those\n meet a network reach (a remote code path). Point it\n at a dependency before adopting it.\n frostjs init write a starter frostjs.policy in the current\n directory granting exactly what the code under the\n paths (default .) does today, with a note on each\n grant saying where; read it and delete what should\n not be allowed\n frostjs csp print the Content-Security-Policy header the policy\n implies, and nothing else, for the deploy step\n frostjs summary print a plain-English reading of the policy for a\n reviewer who does not write JavaScript\n frostjs vendor add analyze third-party files once, print the capability\n set found, and record it with the file's SHA-384 in\n .frostjs/registry.json beside the policy\n frostjs registry sync after a dependency bump: re-admit vendored files\n whose capability set did not change, refuse and show\n the difference for those that gained one, prune\n entries whose file is gone, record the lockfile hash\n frostjs sri print Subresource Integrity values for registered\n vendored files (text: path and hash; json: a map;\n html: script tags), so the browser enforces the same\n hashes the registry reviewed\n\noptions:\n -h, --help show this help and exit\n -V, --version print the version and exit\n --exclude <name> skip directories with this name (repeatable);\n node_modules, dist, build, coverage and .git are\n always skipped\n --exit-zero report findings but always exit 0\n --policy <file> use this policy instead of searching for frostjs.policy\n --today <date> treat this YYYY-MM-DD as today when checking expiry\n --min-confidence <c> lowest confidence that can fail the build:\n certain, probable (default) or possible; uses below\n it are listed as unknown\n --baseline <file> denials recorded in this file do not fail the build\n --update-baseline write every current denial into the baseline file\n and exit 0; use once to adopt frostjs on a codebase\n --unused after the check, list policy grants that matched\n nothing on a full scan, so they can be removed\n --taint also fail on untrusted input (a URL, cookie, or\n postMessage) reaching a dangerous sink (eval,\n innerHTML, importScripts, a redirect); intraprocedural\n --changed-since <ref> fail only on uses in lines changed since the git\n ref (e.g. origin/main); untracked files count whole\n --format <f> text (default), json (versioned schema), sarif\n (2.1.0, one rule per capability), or github\n (inline PR annotations followed by the text report);\n html only with frostjs sri\n\npolicy:\n frostjs.policy is searched for in the directory shared by all the given\n paths, then in each parent directory. The nearest one wins. Path globs in\n a policy are relative to the policy file's directory. With no policy, every\n capability is denied.\n\nexit codes:\n 0 no denied capability uses\n 1 at least one denied capability use\n 2 usage or input error (bad flag, missing path, syntax error)\n";
|
|
36
38
|
export {};
|
|
37
39
|
//# sourceMappingURL=args.d.ts.map
|
package/dist/cli/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEvE,qEAAqE;AACrE,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,YAAY,GAAG,eAAe,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEvE,qEAAqE;AACrE,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,YAAY,GAAG,eAAe,GAAG,KAAK,CAAC;AAExH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,QAAA,MAAM,OAAO,4DAA6D,CAAC;AAC3E,KAAK,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvC,2FAA2F;AAC3F,qBAAa,UAAW,SAAQ,KAAK;CAAG;AAExC;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAiI7D;AAED,2DAA2D;AAC3D,eAAO,MAAM,IAAI,49IA+EhB,CAAC"}
|
package/dist/cli/args.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* in the README and a test; keep the three in step.
|
|
4
4
|
*/
|
|
5
5
|
import { CONFIDENCE_ORDER } from "../policy/index.js";
|
|
6
|
-
const FORMATS = ["text", "json", "sarif", "github", "html"];
|
|
6
|
+
const FORMATS = ["text", "json", "sarif", "github", "html", "md"];
|
|
7
7
|
/** A flag or argument the CLI cannot accept; the message is printed with the help text. */
|
|
8
8
|
export class UsageError extends Error {
|
|
9
9
|
}
|
|
@@ -25,6 +25,8 @@ export function parseArgs(argv) {
|
|
|
25
25
|
baseline: null,
|
|
26
26
|
updateBaseline: false,
|
|
27
27
|
changedSince: null,
|
|
28
|
+
taint: false,
|
|
29
|
+
unused: false,
|
|
28
30
|
format: "text",
|
|
29
31
|
paths: [],
|
|
30
32
|
};
|
|
@@ -34,7 +36,12 @@ export function parseArgs(argv) {
|
|
|
34
36
|
const arg = argv[i];
|
|
35
37
|
if (first) {
|
|
36
38
|
first = false;
|
|
37
|
-
if (arg === "csp" ||
|
|
39
|
+
if (arg === "csp" ||
|
|
40
|
+
arg === "summary" ||
|
|
41
|
+
arg === "sri" ||
|
|
42
|
+
arg === "init" ||
|
|
43
|
+
arg === "audit" ||
|
|
44
|
+
arg === "capabilities") {
|
|
38
45
|
out.command = arg;
|
|
39
46
|
continue;
|
|
40
47
|
}
|
|
@@ -107,6 +114,12 @@ export function parseArgs(argv) {
|
|
|
107
114
|
case "--changed-since":
|
|
108
115
|
out.changedSince = takeValue();
|
|
109
116
|
break;
|
|
117
|
+
case "--taint":
|
|
118
|
+
out.taint = true;
|
|
119
|
+
break;
|
|
120
|
+
case "--unused":
|
|
121
|
+
out.unused = true;
|
|
122
|
+
break;
|
|
110
123
|
case "--format": {
|
|
111
124
|
const v = takeValue();
|
|
112
125
|
if (!FORMATS.includes(v))
|
|
@@ -133,6 +146,8 @@ export function parseArgs(argv) {
|
|
|
133
146
|
/** The `--help` text, also printed after a usage error. */
|
|
134
147
|
export const HELP = `usage: frostjs [options] <paths...>
|
|
135
148
|
frostjs init [paths...]
|
|
149
|
+
frostjs audit [--format text|json] <paths...>
|
|
150
|
+
frostjs capabilities [--format text|json|md]
|
|
136
151
|
frostjs csp [--policy <file>]
|
|
137
152
|
frostjs summary [--policy <file>]
|
|
138
153
|
frostjs vendor add <files...>
|
|
@@ -143,6 +158,13 @@ Deny-by-default capability linter for JavaScript.
|
|
|
143
158
|
|
|
144
159
|
commands:
|
|
145
160
|
(default) analyze the given paths against the policy
|
|
161
|
+
frostjs capabilities the full capability taxonomy frostjs recognizes and
|
|
162
|
+
the policy phrase for each; --format text|json|md
|
|
163
|
+
frostjs audit what the code does, with no policy: hosts reached,
|
|
164
|
+
code generation from non-constant input, script
|
|
165
|
+
injection, service workers, and files where those
|
|
166
|
+
meet a network reach (a remote code path). Point it
|
|
167
|
+
at a dependency before adopting it.
|
|
146
168
|
frostjs init write a starter frostjs.policy in the current
|
|
147
169
|
directory granting exactly what the code under the
|
|
148
170
|
paths (default .) does today, with a note on each
|
|
@@ -179,6 +201,11 @@ options:
|
|
|
179
201
|
--baseline <file> denials recorded in this file do not fail the build
|
|
180
202
|
--update-baseline write every current denial into the baseline file
|
|
181
203
|
and exit 0; use once to adopt frostjs on a codebase
|
|
204
|
+
--unused after the check, list policy grants that matched
|
|
205
|
+
nothing on a full scan, so they can be removed
|
|
206
|
+
--taint also fail on untrusted input (a URL, cookie, or
|
|
207
|
+
postMessage) reaching a dangerous sink (eval,
|
|
208
|
+
innerHTML, importScripts, a redirect); intraprocedural
|
|
182
209
|
--changed-since <ref> fail only on uses in lines changed since the git
|
|
183
210
|
ref (e.g. origin/main); untracked files count whole
|
|
184
211
|
--format <f> text (default), json (versioned schema), sarif
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAsDA,MAAM,WAAW,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,gHAAgH;IAChH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wFAAwF;AACxF,wBAAgB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAqC3D"}
|
package/dist/cli/run.js
CHANGED
|
@@ -13,8 +13,8 @@ import { HELP, parseArgs, UsageError } from "./args.js";
|
|
|
13
13
|
import { VERSION } from "../version.js";
|
|
14
14
|
import { discover, isHtml } from "../discover/index.js";
|
|
15
15
|
import { parseFile } from "../extract/ast.js";
|
|
16
|
-
import { extract } from "../extract/index.js";
|
|
17
|
-
import { parseHtml } from "../extract/html.js";
|
|
16
|
+
import { extract, stringLiterals } from "../extract/index.js";
|
|
17
|
+
import { parseHtml, htmlAttributeUses } from "../extract/html.js";
|
|
18
18
|
import { commonAncestor, compilePolicyFile, csp, decide, findPolicyFile, isoToday, matchesGlob, DENY_ALL, PolicyError, } from "../policy/index.js";
|
|
19
19
|
import { text, describeUse } from "../report/text.js";
|
|
20
20
|
import { json } from "../report/json.js";
|
|
@@ -26,6 +26,10 @@ import { changedLines, isChanged } from "../changed.js";
|
|
|
26
26
|
import { guessPackage, integrityOfFile, lookup, readRegistry, registryPath, upsert, writeRegistry, } from "../registry.js";
|
|
27
27
|
import { includesFor, sync, usesOf } from "../sync.js";
|
|
28
28
|
import { policyNameFor, starterPolicy } from "../init.js";
|
|
29
|
+
import { audit, auditJson, formatAudit, groupByFile } from "../audit.js";
|
|
30
|
+
import { taint } from "../extract/taint.js";
|
|
31
|
+
import { capabilitiesJson, capabilitiesMarkdown, capabilitiesText } from "../capabilities.js";
|
|
32
|
+
import { suppressions, isSuppressed } from "../extract/suppress.js";
|
|
29
33
|
/** Run the CLI against argv (without node and script name) and return the exit code. */
|
|
30
34
|
export function run(argv, io) {
|
|
31
35
|
let args;
|
|
@@ -50,6 +54,10 @@ export function run(argv, io) {
|
|
|
50
54
|
switch (args.command) {
|
|
51
55
|
case "init":
|
|
52
56
|
return runInit(args, io);
|
|
57
|
+
case "audit":
|
|
58
|
+
return runAudit(args, io);
|
|
59
|
+
case "capabilities":
|
|
60
|
+
return runCapabilities(args, io);
|
|
53
61
|
case "csp":
|
|
54
62
|
case "summary":
|
|
55
63
|
return runPolicyCommand(args, io);
|
|
@@ -98,12 +106,12 @@ function loadPolicy(args, io, inputs, required) {
|
|
|
98
106
|
}
|
|
99
107
|
}
|
|
100
108
|
/** Resolve the given paths against cwd and discover source files under them. */
|
|
101
|
-
function discoverOrFail(args, io, vendored) {
|
|
109
|
+
function discoverOrFail(args, io, vendored, include = []) {
|
|
102
110
|
const cwd = cwdOf(io);
|
|
103
111
|
const missing = args.paths.find((p) => !fs.existsSync(path.resolve(cwd, p)));
|
|
104
112
|
if (missing !== undefined)
|
|
105
113
|
return fail(io, `path not found: ${missing}`);
|
|
106
|
-
return discover(args.paths.map((p) => path.resolve(cwd, p)), { exclude: args.exclude, include: includesFor(vendored) });
|
|
114
|
+
return discover(args.paths.map((p) => path.resolve(cwd, p)), { exclude: args.exclude, include: [...includesFor(vendored), ...include] });
|
|
107
115
|
}
|
|
108
116
|
function readRegistryOrFail(policyDir, io) {
|
|
109
117
|
try {
|
|
@@ -120,6 +128,8 @@ function runCheck(args, io) {
|
|
|
120
128
|
return fail(io, "--update-baseline needs --baseline <file>");
|
|
121
129
|
if (args.format === "html")
|
|
122
130
|
return fail(io, "--format html is only for frostjs sri");
|
|
131
|
+
if (args.format === "md")
|
|
132
|
+
return fail(io, "--format md is only for frostjs capabilities");
|
|
123
133
|
if (args.paths.length === 0) {
|
|
124
134
|
io.stderr("frostjs: no paths given\n");
|
|
125
135
|
io.stderr(HELP);
|
|
@@ -152,6 +162,43 @@ function runCheck(args, io) {
|
|
|
152
162
|
scopePath: (u) => relToPolicy(policyDir, path.resolve(cwd, u.file)),
|
|
153
163
|
...(args.minConfidence ? { minConfidence: args.minConfidence } : {}),
|
|
154
164
|
});
|
|
165
|
+
// Taint: untrusted input reaching a dangerous sink, opt-in with --taint.
|
|
166
|
+
// Modeled as denials of a synthetic taint.<sink> capability so baseline,
|
|
167
|
+
// changed-lines and every output format apply to them uniformly.
|
|
168
|
+
if (args.taint || policy.taint) {
|
|
169
|
+
const vendored = (f) => registry !== null && policy.vendored.some((g) => matchesGlob(g, relToPolicy(policyDir, f)));
|
|
170
|
+
for (const file of files) {
|
|
171
|
+
if (vendored(file))
|
|
172
|
+
continue;
|
|
173
|
+
const name = shown(cwd, file);
|
|
174
|
+
const units = isHtml(file) ? parseHtml(file, fs.readFileSync(file, "utf8")) : [parseFile(file)];
|
|
175
|
+
for (const unit of units) {
|
|
176
|
+
if (unit.errors.length > 0)
|
|
177
|
+
continue;
|
|
178
|
+
const ignores = suppressions(unit);
|
|
179
|
+
for (const t of taint(unit)) {
|
|
180
|
+
const capability = `taint.${t.sink}`;
|
|
181
|
+
const use = {
|
|
182
|
+
capability,
|
|
183
|
+
target: t.source,
|
|
184
|
+
file: name,
|
|
185
|
+
line: t.line,
|
|
186
|
+
column: t.column,
|
|
187
|
+
expression: t.expression,
|
|
188
|
+
confidence: "certain",
|
|
189
|
+
origin: isHtml(file) ? "inline-html" : "first-party",
|
|
190
|
+
suppressed: isSuppressed(ignores.get(t.line), capability),
|
|
191
|
+
};
|
|
192
|
+
decisions.push({
|
|
193
|
+
use,
|
|
194
|
+
verdict: use.suppressed ? "suppressed" : "denied",
|
|
195
|
+
reason: "tainted",
|
|
196
|
+
rule: null,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
155
202
|
// Baseline: denials already on record are reported as baselined, not denied.
|
|
156
203
|
let baselineNote = "";
|
|
157
204
|
if (args.baseline !== null) {
|
|
@@ -210,6 +257,20 @@ function runCheck(args, io) {
|
|
|
210
257
|
}
|
|
211
258
|
if (baselineNote)
|
|
212
259
|
io.stderr(baselineNote);
|
|
260
|
+
// --unused: grants that were the deciding rule for nothing. On a full scan
|
|
261
|
+
// these are over-broad or redundant policy lines that can be removed. Goes
|
|
262
|
+
// to stderr so it never disturbs a machine format on stdout.
|
|
263
|
+
if (args.unused) {
|
|
264
|
+
const usedLines = new Set(decisions.filter((d) => d.verdict === "allowed" && d.rule).map((d) => d.rule.line));
|
|
265
|
+
const unused = policy.rules.filter((r) => r.verb === "may" && !usedLines.has(r.line));
|
|
266
|
+
if (unused.length === 0)
|
|
267
|
+
io.stderr("every grant matched at least one use\n");
|
|
268
|
+
else {
|
|
269
|
+
io.stderr(`${unused.length} grant${unused.length === 1 ? "" : "s"} matched nothing (remove, or scan more):\n`);
|
|
270
|
+
for (const r of unused)
|
|
271
|
+
io.stderr(` ${policy.file} line ${r.line}: ${r.text}\n`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
213
274
|
const denied = decisions.some((d) => d.verdict === "denied");
|
|
214
275
|
return denied && !args.exitZero && !args.updateBaseline ? 1 : 0;
|
|
215
276
|
}
|
|
@@ -228,12 +289,14 @@ function extractAll(files, cwd, io, special = () => null) {
|
|
|
228
289
|
uses.push(...claimed);
|
|
229
290
|
}
|
|
230
291
|
else if (isHtml(file)) {
|
|
231
|
-
|
|
292
|
+
const text = fs.readFileSync(file, "utf8");
|
|
293
|
+
for (const block of parseHtml(file, text)) {
|
|
232
294
|
if (block.errors.length > 0)
|
|
233
295
|
syntaxErrors.push(...block.errors.map((e) => ({ ...e, file: name })));
|
|
234
296
|
else
|
|
235
297
|
uses.push(...extract(block, { origin: "inline-html" }).map((u) => ({ ...u, file: name })));
|
|
236
298
|
}
|
|
299
|
+
uses.push(...htmlAttributeUses(file, text).map((u) => ({ ...u, file: name })));
|
|
237
300
|
}
|
|
238
301
|
else {
|
|
239
302
|
const parsed = parseFile(file);
|
|
@@ -247,6 +310,51 @@ function extractAll(files, cwd, io, special = () => null) {
|
|
|
247
310
|
io.stderr(`${e.file}:${e.line}:${e.column}: syntax error: ${e.message}\n`);
|
|
248
311
|
return syntaxErrors.length > 0 ? 2 : uses;
|
|
249
312
|
}
|
|
313
|
+
// frostjs capabilities
|
|
314
|
+
function runCapabilities(args, io) {
|
|
315
|
+
if (args.format === "json")
|
|
316
|
+
io.stdout(capabilitiesJson());
|
|
317
|
+
else if (args.format === "md")
|
|
318
|
+
io.stdout(capabilitiesMarkdown());
|
|
319
|
+
else if (args.format === "text")
|
|
320
|
+
io.stdout(capabilitiesText());
|
|
321
|
+
else
|
|
322
|
+
return fail(io, "frostjs capabilities prints text, json or md");
|
|
323
|
+
return 0;
|
|
324
|
+
}
|
|
325
|
+
// frostjs audit <paths...>
|
|
326
|
+
function runAudit(args, io) {
|
|
327
|
+
const cwd = cwdOf(io);
|
|
328
|
+
if (args.paths.length === 0)
|
|
329
|
+
return fail(io, "frostjs audit needs one or more paths");
|
|
330
|
+
if (args.format !== "text" && args.format !== "json")
|
|
331
|
+
return fail(io, "frostjs audit prints text or json");
|
|
332
|
+
// A dependency's shipped code lives in dist/ or build/; the default excludes are for a project's own output.
|
|
333
|
+
const files = discoverOrFail(args, io, [], ["dist", "build"]);
|
|
334
|
+
if (typeof files === "number")
|
|
335
|
+
return files;
|
|
336
|
+
const uses = extractAll(files, cwd, io);
|
|
337
|
+
if (typeof uses === "number")
|
|
338
|
+
return uses;
|
|
339
|
+
const sources = new Map();
|
|
340
|
+
const taintFlows = [];
|
|
341
|
+
for (const f of files) {
|
|
342
|
+
const name = shown(cwd, f);
|
|
343
|
+
const text = fs.readFileSync(f, "utf8");
|
|
344
|
+
const units = isHtml(f) ? parseHtml(f, text) : [parseFile(f)];
|
|
345
|
+
sources.set(name, { text, strings: units.flatMap((u) => (u.errors.length ? [] : stringLiterals(u))) });
|
|
346
|
+
for (const u of units)
|
|
347
|
+
if (!u.errors.length)
|
|
348
|
+
taintFlows.push(...taint(u).map((t) => ({ ...t, file: name })));
|
|
349
|
+
}
|
|
350
|
+
const byFile = groupByFile(uses);
|
|
351
|
+
for (const f of files)
|
|
352
|
+
if (!byFile.has(shown(cwd, f)))
|
|
353
|
+
byFile.set(shown(cwd, f), []);
|
|
354
|
+
const a = audit(byFile, sources, taintFlows);
|
|
355
|
+
io.stdout(args.format === "json" ? auditJson(a) : formatAudit(a));
|
|
356
|
+
return 0;
|
|
357
|
+
}
|
|
250
358
|
// frostjs init [paths...]
|
|
251
359
|
function runInit(args, io) {
|
|
252
360
|
const cwd = cwdOf(io);
|
package/dist/cli/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
|
package/dist/extract/html.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ParsedFile } from "./ast.js";
|
|
2
|
+
import type { CapabilityUse } from "./capability.js";
|
|
2
3
|
export interface ScriptBlock {
|
|
3
4
|
/** Offset of the first character of the block's content. */
|
|
4
5
|
start: number;
|
|
@@ -12,4 +13,14 @@ export declare function scriptBlocks(html: string): ScriptBlock[];
|
|
|
12
13
|
export declare function mask(source: string, start: number, end: number): string;
|
|
13
14
|
/** Parse each inline script block of an HTML file as its own ParsedFile positioned in the HTML. */
|
|
14
15
|
export declare function parseHtml(file: string, source: string): ParsedFile[];
|
|
16
|
+
/**
|
|
17
|
+
* Capability uses that live in HTML attributes rather than script content:
|
|
18
|
+
* inline `on*` event handlers (a handler from markup), `javascript:` URLs,
|
|
19
|
+
* an `<iframe srcdoc>`, and a `src`/`href` pointing at another host (a
|
|
20
|
+
* remote resource load, `<script src="https://...">` most of all). Element
|
|
21
|
+
* type is not checked - the attribute is what matters. Positions refer to
|
|
22
|
+
* the HTML file. The same tolerant regex as the script scanner; adversarial
|
|
23
|
+
* markup is out of the threat model.
|
|
24
|
+
*/
|
|
25
|
+
export declare function htmlAttributeUses(file: string, source: string): CapabilityUse[];
|
|
15
26
|
//# sourceMappingURL=html.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/extract/html.ts"],"names":[],"mappings":"AAWA,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/extract/html.ts"],"names":[],"mappings":"AAWA,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;CACjB;AAiBD,yGAAyG;AACzG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgBxD;AAED,mFAAmF;AACnF,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAcpE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAuC/E"}
|