@sonisoft/now-sdk-ext-core 5.3.0 → 6.1.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.
Files changed (58) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +86 -3
  3. package/dist/comm/http/HTTPRequest.d.ts +12 -0
  4. package/dist/comm/http/RequestHandler.d.ts +13 -0
  5. package/dist/comm/http/RequestHandler.js +47 -0
  6. package/dist/comm/http/RequestHandler.js.map +1 -1
  7. package/dist/comm/http/ServiceNowProcessorRequest.d.ts +9 -2
  8. package/dist/comm/http/ServiceNowProcessorRequest.js +17 -5
  9. package/dist/comm/http/ServiceNowProcessorRequest.js.map +1 -1
  10. package/dist/index.d.ts +6 -0
  11. package/dist/index.js +6 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/policy/Policy.d.ts +40 -0
  14. package/dist/policy/Policy.js +161 -0
  15. package/dist/policy/Policy.js.map +1 -0
  16. package/dist/policy/PolicyEnv.d.ts +46 -0
  17. package/dist/policy/PolicyEnv.js +92 -0
  18. package/dist/policy/PolicyEnv.js.map +1 -0
  19. package/dist/policy/PolicyRefusal.d.ts +17 -0
  20. package/dist/policy/PolicyRefusal.js +69 -0
  21. package/dist/policy/PolicyRefusal.js.map +1 -0
  22. package/dist/policy/PolicyTypes.d.ts +65 -0
  23. package/dist/policy/PolicyTypes.js +15 -0
  24. package/dist/policy/PolicyTypes.js.map +1 -0
  25. package/dist/policy/ScanScript.d.ts +22 -0
  26. package/dist/policy/ScanScript.js +171 -0
  27. package/dist/policy/ScanScript.js.map +1 -0
  28. package/dist/policy/internal/Classify.d.ts +16 -0
  29. package/dist/policy/internal/Classify.js +121 -0
  30. package/dist/policy/internal/Classify.js.map +1 -0
  31. package/dist/sn/Application.js +18 -8
  32. package/dist/sn/Application.js.map +1 -1
  33. package/dist/sn/BackgroundScriptExecutor.d.ts +12 -0
  34. package/dist/sn/BackgroundScriptExecutor.js +60 -1
  35. package/dist/sn/BackgroundScriptExecutor.js.map +1 -1
  36. package/dist/sn/amb/AMBClient.js +24 -11
  37. package/dist/sn/amb/AMBClient.js.map +1 -1
  38. package/dist/sn/amb/SubscriptionCommandSender.js +19 -2
  39. package/dist/sn/amb/SubscriptionCommandSender.js.map +1 -1
  40. package/dist/sn/amb/XMLHttpRequest.d.ts +1 -0
  41. package/dist/sn/amb/XMLHttpRequest.js +5 -1
  42. package/dist/sn/amb/XMLHttpRequest.js.map +1 -1
  43. package/dist/sn/atf/ATFTestExecutor.js +3 -1
  44. package/dist/sn/atf/ATFTestExecutor.js.map +1 -1
  45. package/dist/sn/scripttracer/ScriptTracer.js +6 -2
  46. package/dist/sn/scripttracer/ScriptTracer.js.map +1 -1
  47. package/dist/sn/syslog/SyslogReader.js +6 -1
  48. package/dist/sn/syslog/SyslogReader.js.map +1 -1
  49. package/dist/util/LogConfig.d.ts +83 -0
  50. package/dist/util/LogConfig.js +387 -0
  51. package/dist/util/LogConfig.js.map +1 -0
  52. package/dist/util/Logger.d.ts +40 -18
  53. package/dist/util/Logger.js +78 -84
  54. package/dist/util/Logger.js.map +1 -1
  55. package/dist/util/redact.d.ts +12 -0
  56. package/dist/util/redact.js +76 -0
  57. package/dist/util/redact.js.map +1 -1
  58. package/package.json +10 -9
@@ -0,0 +1,171 @@
1
+ import { parse } from "acorn";
2
+ /**
3
+ * Looks at a server-side script and reports what it appears to do.
4
+ *
5
+ * ## What this is for
6
+ *
7
+ * A background script needs `execute` no matter what. This scan exists to decide
8
+ * whether it ALSO needs `write` — so a genuinely read-only diagnostic script can run
9
+ * under `execute` alone, while one containing `gr.insert()` needs both.
10
+ *
11
+ * ## What it cannot do — read this before trusting it
12
+ *
13
+ * It is unsound, and deliberately so. A server-side script can mutate through routes no
14
+ * static analysis can follow:
15
+ *
16
+ * - a Script Include: `new global.MyUtil().doThing()` — the write is in another file
17
+ * - `gs.eval(someString)`
18
+ * - `sn_ws.RESTMessageV2` calling out to anything
19
+ * - `workflow.startFlow()`, `gs.getUser().setPreference()`
20
+ * - `GlideRecord` reached through a variable this scan never resolves
21
+ *
22
+ * So a `write`-free result means "nothing obviously writes", NOT "this cannot write".
23
+ * That is exactly why `execute` is still required: permitting a script at all is the
24
+ * real decision, and this scan only narrows what else is needed.
25
+ *
26
+ * ## Deny-leaning by construction
27
+ *
28
+ * Every case it cannot resolve escalates to `write` rather than passing. A scanner that
29
+ * defaults permissive on unfamiliar syntax manufactures confidence and is worse than no
30
+ * scanner — it would let `gr['inse' + 'rt']()` through while looking like it checked.
31
+ */
32
+ /** Methods that mutate records. Matched on name, on any receiver. */
33
+ const MUTATING_METHODS = new Set([
34
+ "insert",
35
+ "update",
36
+ "updateMultiple",
37
+ "deleteRecord",
38
+ "deleteMultiple",
39
+ "insertWithReferences",
40
+ "updateWithReferences",
41
+ "setValue", // stages a change; harmless alone, but never appears without a write
42
+ "setWorkflow", // disabling business rules is only ever done around a write
43
+ ]);
44
+ /** Constructs whose behaviour cannot be known statically. */
45
+ const OPAQUE_CALLS = new Set(["eval", "Function", "GlideEvaluator"]);
46
+ const NONE = { verbs: [], reasons: [], escalated: false };
47
+ function writeResult(reasons, escalated) {
48
+ return { verbs: ["write"], reasons, escalated };
49
+ }
50
+ /**
51
+ * Parses with the loosest grammar that works.
52
+ *
53
+ * Rhino — what ServiceNow runs server-side — is ES5-era, so most scripts parse at 5.
54
+ * Newer syntax appears in scripts written against the newer engine, hence the fallback.
55
+ * If BOTH fail the script is unreadable to us, which escalates rather than passes.
56
+ */
57
+ function parseScript(script) {
58
+ for (const ecmaVersion of [5, "latest"]) {
59
+ try {
60
+ return { ast: parse(script, { ecmaVersion, silent: true }) };
61
+ }
62
+ catch {
63
+ // try the next grammar
64
+ }
65
+ }
66
+ return { parseError: "could not be parsed" };
67
+ }
68
+ /** Reads a string-valued AST field, or "" when it is anything else. */
69
+ function textOf(value) {
70
+ return typeof value === "string" ? value : "";
71
+ }
72
+ /** Walks every node without depending on acorn-walk's visitor table. */
73
+ function walk(node, visit) {
74
+ if (!node || typeof node !== "object") {
75
+ return;
76
+ }
77
+ if (Array.isArray(node)) {
78
+ for (const child of node) {
79
+ walk(child, visit);
80
+ }
81
+ return;
82
+ }
83
+ const record = node;
84
+ if (typeof record.type === "string") {
85
+ visit(record);
86
+ }
87
+ for (const key of Object.keys(record)) {
88
+ if (key === "type" || key === "start" || key === "end" || key === "loc") {
89
+ continue;
90
+ }
91
+ walk(record[key], visit);
92
+ }
93
+ }
94
+ /**
95
+ * Reports the extra permission a script needs.
96
+ *
97
+ * Call this with the script that will ACTUALLY be sent — after any `{param}`
98
+ * substitution. Scanning the pre-substitution text is a hole you could drive a
99
+ * parameter value of `gr.insert()` through.
100
+ */
101
+ export function scanScript(script) {
102
+ if (typeof script !== "string" || script.trim().length === 0) {
103
+ return NONE;
104
+ }
105
+ const parsed = parseScript(script);
106
+ if ("parseError" in parsed) {
107
+ // Unreadable, so unknowable. Escalate.
108
+ return writeResult(["the script could not be parsed, so its effects are unknown"], true);
109
+ }
110
+ const reasons = [];
111
+ let escalated = false;
112
+ walk(parsed.ast, (node) => {
113
+ if (node.type !== "CallExpression") {
114
+ return;
115
+ }
116
+ const callee = node.callee;
117
+ if (!callee) {
118
+ return;
119
+ }
120
+ // eval(...) / new Function(...) — contents are opaque.
121
+ const calleeName = textOf(callee.name);
122
+ if (callee.type === "Identifier" && OPAQUE_CALLS.has(calleeName)) {
123
+ reasons.push(`calls ${calleeName}(), whose contents cannot be inspected`);
124
+ escalated = true;
125
+ return;
126
+ }
127
+ if (callee.type !== "MemberExpression") {
128
+ return;
129
+ }
130
+ // gr['inse' + 'rt']() — the property is computed, so the method name is not
131
+ // knowable. This is the single most likely way to walk past a naive scan.
132
+ if (callee.computed === true) {
133
+ const property = callee.property;
134
+ const isLiteralName = property?.type === "Literal" && typeof property.value === "string";
135
+ if (!isLiteralName) {
136
+ reasons.push("calls a method chosen at runtime, which cannot be resolved");
137
+ escalated = true;
138
+ return;
139
+ }
140
+ const literalName = textOf(property?.value);
141
+ if (MUTATING_METHODS.has(literalName)) {
142
+ reasons.push(`calls .${literalName}()`);
143
+ }
144
+ return;
145
+ }
146
+ const property = callee.property;
147
+ if (property?.type === "Identifier") {
148
+ const name = textOf(property.name);
149
+ if (MUTATING_METHODS.has(name)) {
150
+ reasons.push(`calls .${name}()`);
151
+ }
152
+ if (OPAQUE_CALLS.has(name)) {
153
+ // gs.eval(...)
154
+ reasons.push(`calls .${name}(), whose contents cannot be inspected`);
155
+ escalated = true;
156
+ }
157
+ }
158
+ });
159
+ if (reasons.length === 0) {
160
+ return NONE;
161
+ }
162
+ return writeResult([...new Set(reasons)], escalated);
163
+ }
164
+ /** Convenience: what a background script needs in total. */
165
+ export function requirementForScript(script) {
166
+ const scan = scanScript(script);
167
+ // `execute` always. Running caller-supplied code on the instance is the decision
168
+ // being made; the scan only decides whether `write` rides along.
169
+ return { verbs: ["execute", ...scan.verbs], reasons: scan.reasons };
170
+ }
171
+ //# sourceMappingURL=ScanScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScanScript.js","sourceRoot":"","sources":["../../src/policy/ScanScript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { HTTPRequest } from "../../comm/http/HTTPRequest.js";
2
+ import { Requirement, Verb } from "../PolicyTypes.js";
3
+ /** Matched floor rules, for the audit log and for tests. */
4
+ export declare function floorFor(request: HTTPRequest): {
5
+ verbs: Verb[];
6
+ reasons: string[];
7
+ };
8
+ /**
9
+ * The joined requirement for a request.
10
+ *
11
+ * DECLARED replaces the default when present, but the floor is unioned in afterwards so
12
+ * a declaration can correct a wrong default without ever lowering a floor entry.
13
+ */
14
+ export declare function classify(request: HTTPRequest): Requirement & {
15
+ reasons: string[];
16
+ };
@@ -0,0 +1,121 @@
1
+ const pathIs = (needle) => (path) => path.split("?")[0].endsWith(needle);
2
+ const pathHas = (needle) => (path) => path.includes(needle);
3
+ /**
4
+ * Un-lowerable minimums.
5
+ *
6
+ * Every entry here exists because the tier-3 default would get it wrong. Adding a new
7
+ * mutating endpoint that travels as a GET means adding a row here — there is no way to
8
+ * detect that statically, so it is called out in the contribution checklist and the
9
+ * audit log is the backstop.
10
+ */
11
+ const FLOOR = [
12
+ {
13
+ why: "background script execution",
14
+ verbs: ["execute"],
15
+ matches: (p) => pathIs("/sys.scripts.do")(p),
16
+ },
17
+ // NOTE: /xmlhttp.do is deliberately NOT a floor rule, even though the most
18
+ // destructive call in the library (Application.uninstall) goes through it. The same
19
+ // endpoint is used to READ — syslog tailing POSTs to it — and a floor rule cannot be
20
+ // lowered, so listing it here would refuse `nex log` with no way to correct it.
21
+ // Coverage instead comes from three narrower places: the sysparm_delete_all rule
22
+ // below catches the uninstall, the tier-3 default makes every other POST a write,
23
+ // and the two callers that read or execute through it declare so explicitly.
24
+ {
25
+ why: "store application install (issued as a GET)",
26
+ verbs: ["write"],
27
+ matches: (p) => pathHas("/api/sn_appclient/appmanager/app/install")(p),
28
+ },
29
+ {
30
+ why: "store application update (issued as a GET)",
31
+ verbs: ["write"],
32
+ matches: (p) => pathHas("/api/sn_appclient/appmanager/app/update")(p),
33
+ },
34
+ {
35
+ why: "sys_trigger scheduled job — persisting a job outlives the request that made it",
36
+ verbs: ["write"],
37
+ matches: (p) => pathHas("/api/now/table/sys_trigger")(p),
38
+ },
39
+ {
40
+ why: "sysparm_delete_all",
41
+ verbs: ["write"],
42
+ matches: (_p, q) => "sysparm_delete_all" in q,
43
+ },
44
+ {
45
+ why: "sysparm_delete_when_done",
46
+ verbs: ["write"],
47
+ matches: (_p, q) => {
48
+ const value = q["sysparm_delete_when_done"];
49
+ if (value === undefined) {
50
+ return false;
51
+ }
52
+ // Only primitives are meaningful here; an object would stringify to
53
+ // "[object Object]" and match, which would be a false positive.
54
+ const text = typeof value === "string" || typeof value === "number" || typeof value === "boolean"
55
+ ? String(value)
56
+ : "";
57
+ return text.toLowerCase() !== "false" && text.length > 0;
58
+ },
59
+ },
60
+ ];
61
+ function normalizeQuery(request) {
62
+ const out = {};
63
+ const query = request.query;
64
+ if (query && typeof query === "object") {
65
+ for (const [key, value] of Object.entries(query)) {
66
+ out[key] = value;
67
+ }
68
+ }
69
+ // Some callers put parameters in `fields` (form-encoded) rather than the query
70
+ // string — Application.uninstall sends sysparm_delete_all that way.
71
+ const fields = request.fields;
72
+ if (fields && typeof fields === "object") {
73
+ for (const [key, value] of Object.entries(fields)) {
74
+ if (!(key in out)) {
75
+ out[key] = value;
76
+ }
77
+ }
78
+ }
79
+ return out;
80
+ }
81
+ /** Matched floor rules, for the audit log and for tests. */
82
+ export function floorFor(request) {
83
+ const path = typeof request.path === "string" ? request.path : "";
84
+ const query = normalizeQuery(request);
85
+ const verbs = new Set();
86
+ const reasons = [];
87
+ for (const rule of FLOOR) {
88
+ if (rule.matches(path, query)) {
89
+ rule.verbs.forEach((v) => verbs.add(v));
90
+ reasons.push(rule.why);
91
+ }
92
+ }
93
+ return { verbs: [...verbs], reasons };
94
+ }
95
+ /** Tier 3. GET is assumed to read; anything else is assumed to write. */
96
+ function verbDefault(method) {
97
+ const verb = (method ?? "get").toLowerCase();
98
+ return verb === "get" ? [] : ["write"];
99
+ }
100
+ /**
101
+ * The joined requirement for a request.
102
+ *
103
+ * DECLARED replaces the default when present, but the floor is unioned in afterwards so
104
+ * a declaration can correct a wrong default without ever lowering a floor entry.
105
+ */
106
+ export function classify(request) {
107
+ const declared = request.requires;
108
+ const base = declared ? declared.verbs : verbDefault(request.method);
109
+ const target = declared?.target ?? "instance";
110
+ const { verbs: floorVerbs, reasons } = floorFor(request);
111
+ const verbs = new Set(base);
112
+ floorVerbs.forEach((v) => verbs.add(v));
113
+ return {
114
+ verbs: [...verbs],
115
+ // A floor match is always about the instance, whatever the caller declared —
116
+ // otherwise declaring `target: "local"` would be a way to opt out of the floor.
117
+ target: floorVerbs.length > 0 ? "instance" : target,
118
+ reasons,
119
+ };
120
+ }
121
+ //# sourceMappingURL=Classify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Classify.js","sourceRoot":"","sources":["../../../src/policy/internal/Classify.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { parseXml, getScopeMetadataFromInstance, getNowTableRequest, monitorUninstallWorkerCompletion, getAppAndSummary } from "@servicenow/sdk-cli-core/dist/util/index.js";
2
- import { makeRequest, parseResponseBody } from "@servicenow/sdk-cli-core/dist/http/index.js";
3
2
  import { ServiceNowRequest } from "../comm/http/ServiceNowRequest.js";
4
3
  import { Logger } from "../util/Logger.js";
5
4
  export class Application {
@@ -125,16 +124,27 @@ export class Application {
125
124
  sysparm_delete_all: 'true',
126
125
  sysparm_ck: auth.userToken ?? '',
127
126
  };
128
- const r = await (makeRequest)({
129
- auth,
127
+ // Routed through snRequest, not makeRequest directly.
128
+ //
129
+ // This is the most destructive call in the library — sysparm_delete_all on an
130
+ // application — and calling makeRequest here put it OUTSIDE the one point every
131
+ // other request passes through, so the permission gate could not see it. The
132
+ // gate would have been true of everything except the thing that matters most.
133
+ //
134
+ // Not an architectural requirement: changeApplication and convertToStoreApp in
135
+ // this same class already go through snRequest. Line was simply left behind.
136
+ const request = {
130
137
  method: 'POST',
131
138
  path: '/xmlhttp.do',
139
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
140
+ query: null,
141
+ body: null,
132
142
  fields: params,
133
- });
134
- if (!r.ok) {
135
- (parseResponseBody)(r.clone());
136
- }
137
- const xml = await (parseXml)(await r.text());
143
+ };
144
+ const response = await this.snRequest.post(request);
145
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
146
+ const xml = await (parseXml)(response.data);
147
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
138
148
  return xml['xml']['@_answer'];
139
149
  }
140
150
  async verifyAppUninstall(scopeId, auth, uninstallStoreApp) {
@@ -1 +1 @@
1
- {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../src/sn/Application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC7K,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAE7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAInE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,MAAM,OAAO,WAAW;IAEpB,SAAS,CAAoB;IAC7B,QAAQ,CAAqB;IAE7B,MAAM,CAAS;IACf,cAAc,CAAS;IAEvB,OAAO,GAAU,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;IAE3C,YAAoB,QAA2B,EAAE,KAAY,EAAE,aAAqB;QAEhF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QAEpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAEU,KAAK,CAAC,iBAAiB;QAE3B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QACvD,MAAM,EAAE,GAAY,IAAI,QAAQ,EAAE,CAAC;QACnC,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC,CAAC;QACjE,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;QACnD,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACrD,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAmB,IAAI,eAAe,CAAC,EAAS,CAAE,CAAC;QAC/D,MAAM,OAAO,GAAgB;YACzB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,EAAC,cAAc,EAAC,mCAAmC,EAAC;YAC7D,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,MAAM;SACf,CAAC;QACF,MAAM,QAAQ,GAA0B,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAS,OAAO,CAAC,CAAC;QACnF,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;aAAI,CAAC;YACF,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,kCAAkC;QAClC,yBAAyB;QACzB,sBAAsB;QACtB,2BAA2B;QAC3B,sBAAsB;QACtB,MAAM;QACN,eAAe;QACf,sCAAsC;QACtC,IAAI;IACR,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC1B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QACxD,IAAI,MAAM,GAAG;YACT,iBAAiB,EAAE,gCAAgC;YACnD,gBAAgB,EAAE,mBAAmB;YACrC,UAAU,EAAE,WAAW,CAAC,SAAS,IAAI,EAAE;YACvC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,OAAO;YACrB,aAAa,EAAE,QAAQ;SAC1B,CAAA;QAED,MAAM,OAAO,GAAgB;YACzB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;SACb,CAAC;QACF,MAAM,QAAQ,GAA0B,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAS,OAAO,CAAC,CAAC;QACnF,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;aAAI,CAAC;YACF,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,SAAS;QAClB,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QACxD,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAElF,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM;QAC1E,MAAM,iBAAiB,GAAG,cAAc,KAAK,eAAe,CAAC;QAC7D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACxF,IAAI,CAAC,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,KAAK,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM;QAC1C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,iDAAiD;QACjD,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE;gBACpD,cAAc,EAAE,QAAQ;gBACxB,aAAa,EAAE,sCAAsC;aACxD,EAAE,MAAM,CAAC,CAAC;YACX,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAC/D,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,iCAAiC;YACjC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,2DAA2D;oBACpE,wGAAwG;oBACxG,0EAA0E,CAAC,CAAC;gBAChF,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,kEAAkE;YAClE,IAAI,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACvE,CAAC;QACL,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU;QACpD,MAAM,MAAM,GAAG;YACX,iBAAiB,EAAE,gCAAgC;YACnD,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB;YAC3E,cAAc,EAAE,KAAK;YACrB,kBAAkB,EAAE,MAAM;YAC1B,kBAAkB,EAAE,MAAM;YAC1B,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;SACnC,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1B,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACR,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB;QAC7D,MAAM,aAAa,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1E,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,iBAAiB,IAAI,aAAa,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBACxD,OAAO;YACX,CAAC;YACD,MAAM,IAAI,KAAK,EAAE,CAAC;QACtB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC1B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QACxD,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5H,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACvD,CAAC;CAEJ"}
1
+ {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../src/sn/Application.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,18 @@ export declare class BackgroundScriptExecutor {
9
9
  private _scopeCache;
10
10
  _logger: Logger;
11
11
  constructor(instance: ServiceNowInstance, scope: string);
12
+ /**
13
+ * Refuses a script the policy does not permit, before it is sent anywhere.
14
+ *
15
+ * Running caller-supplied code always needs `execute`; the scan decides whether it
16
+ * also needs `write`. The scan is unsound by design and leans toward `write` on
17
+ * anything it cannot resolve — see ScanScript for what it cannot see at all.
18
+ *
19
+ * Pass the script that will ACTUALLY be sent. Callers doing `{param}` substitution
20
+ * must substitute first, or a parameter value of `gr.insert()` walks straight past.
21
+ */
22
+ private assertScriptPermitted;
23
+ /** @returns what this script needs, for the HTTP layer to agree with. */
12
24
  executeScript(script: string, scope?: string, instance?: ServiceNowInstance): Promise<BackgroundScriptExecutionResult>;
13
25
  parseScriptResult(responseXML: string): BackgroundScriptExecutionResult;
14
26
  getBackgroundScriptCSRFToken(): Promise<string>;
@@ -8,6 +8,9 @@ import { ServiceNowInstance } from "./ServiceNowInstance.js";
8
8
  import { XMLParser } from 'fast-xml-parser';
9
9
  import { Logger } from "../util/Logger.js";
10
10
  import { BG_SCRIPT_ENDPOINT } from "../constants/ServiceNow.js";
11
+ import { checkRequirement } from "../policy/Policy.js";
12
+ import { isPolicyRefusal, policyRefusal } from "../policy/PolicyRefusal.js";
13
+ import { requirementForScript } from "../policy/ScanScript.js";
11
14
  import { isNil } from "../util/utils.js";
12
15
  import { CSRFTokenHelper } from "../util/CSRFTokenHelper.js";
13
16
  import { TableAPIRequest } from "../comm/http/TableAPIRequest.js";
@@ -25,6 +28,33 @@ export class BackgroundScriptExecutor {
25
28
  this.snRequest = SessionManager.getInstance().getRequest(this.instance);
26
29
  this._tableAPI = new TableAPIRequest(this.instance);
27
30
  }
31
+ /**
32
+ * Refuses a script the policy does not permit, before it is sent anywhere.
33
+ *
34
+ * Running caller-supplied code always needs `execute`; the scan decides whether it
35
+ * also needs `write`. The scan is unsound by design and leans toward `write` on
36
+ * anything it cannot resolve — see ScanScript for what it cannot see at all.
37
+ *
38
+ * Pass the script that will ACTUALLY be sent. Callers doing `{param}` substitution
39
+ * must substitute first, or a parameter value of `gr.insert()` walks straight past.
40
+ */
41
+ assertScriptPermitted(script) {
42
+ const { verbs, reasons } = requirementForScript(script);
43
+ const decision = checkRequirement({ verbs, target: "instance" });
44
+ if (decision.allowed) {
45
+ return { verbs, target: "instance" };
46
+ }
47
+ this._logger.warn("Refused a background script", {
48
+ verbs: decision.verbs,
49
+ decidingLayer: decision.decidingLayer,
50
+ detected: reasons,
51
+ });
52
+ const detail = reasons.length > 0
53
+ ? `${decision.remediation ?? "Not permitted."} The script ${reasons.join("; ")}.`
54
+ : decision.remediation;
55
+ throw policyRefusal({ ...decision, remediation: detail });
56
+ }
57
+ /** @returns what this script needs, for the HTTP layer to agree with. */
28
58
  async executeScript(script, scope = this.scope, instance = this.instance) {
29
59
  if (!instance || !(instance instanceof ServiceNowInstance)) {
30
60
  throw new Error("instance must be a ServiceNowInstance");
@@ -35,6 +65,7 @@ export class BackgroundScriptExecutor {
35
65
  if (!script || typeof script != "string") {
36
66
  throw new Error("script must be a string");
37
67
  }
68
+ const scriptRequirement = this.assertScriptPermitted(script);
38
69
  try {
39
70
  const gck = await this.getBackgroundScriptCSRFToken();
40
71
  if (isNil(gck)) {
@@ -57,7 +88,11 @@ export class BackgroundScriptExecutor {
57
88
  path: BG_SCRIPT_ENDPOINT,
58
89
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
59
90
  query: null,
60
- body: params
91
+ body: params,
92
+ // Declared so the HTTP gate reaches the SAME conclusion the script scan
93
+ // did. Without it the POST default adds `write` on top of the floor's
94
+ // `execute`, and a read-only diagnostic script needs write for no reason.
95
+ requires: scriptRequirement
61
96
  };
62
97
  this._logger.debug("Execute Background Script Request.", { request: request, formData: fd });
63
98
  const response = await this.snRequest.post(request);
@@ -148,6 +183,21 @@ export class BackgroundScriptExecutor {
148
183
  if (!script || typeof script !== 'string') {
149
184
  throw new Error("script must be a non-empty string");
150
185
  }
186
+ // Gated independently of executeScript. This method is public, so it is
187
+ // directly reachable — and persisting a sys_trigger is a LARGER privilege than
188
+ // running the script inline, because the job outlives the request that made it.
189
+ this.assertScriptPermitted(script);
190
+ // And `write` unconditionally, whatever the scan concluded about the script
191
+ // body: creating the sys_trigger record IS a write, independent of what the
192
+ // scheduled script goes on to do.
193
+ const triggerDecision = checkRequirement({ verbs: ["write"], target: "instance" });
194
+ if (!triggerDecision.allowed) {
195
+ throw policyRefusal({
196
+ ...triggerDecision,
197
+ remediation: `${triggerDecision.remediation ?? "Not permitted."} ` +
198
+ `Scheduling a script creates a sys_trigger record, which is a write.`,
199
+ });
200
+ }
151
201
  const triggerName = description || `ExtCore_Trigger_${Date.now()}`;
152
202
  // Calculate next_action as 1 second from now
153
203
  const now = new Date();
@@ -203,12 +253,21 @@ export class BackgroundScriptExecutor {
203
253
  * @returns Either a BackgroundScriptExecutionResult or TriggerExecutionResult
204
254
  */
205
255
  async executeScriptAuto(script, scope) {
256
+ // BEFORE the try, deliberately. The catch below falls back to sys_trigger on
257
+ // any failure, so a refusal raised inside executeScript would be swallowed and
258
+ // the refused script would run anyway — later, on a schedule, silently.
259
+ this.assertScriptPermitted(script);
206
260
  try {
207
261
  this._logger.info("Attempting script execution via background script page...");
208
262
  const result = await this.executeScript(script, scope || this.scope);
209
263
  return result;
210
264
  }
211
265
  catch (error) {
266
+ // Second layer: even if the check above is ever refactored away, a refusal
267
+ // must never be treated as "the page failed, try the other route".
268
+ if (isPolicyRefusal(error)) {
269
+ throw error;
270
+ }
212
271
  const err = error;
213
272
  this._logger.warn(`Background script execution failed: ${err.message}. Falling back to sys_trigger.`);
214
273
  const triggerResult = await this.executeScriptViaTrigger(script);
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundScriptExecutor.js","sourceRoot":"","sources":["../../src/sn/BackgroundScriptExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BackgroundScriptExecutor.js","sourceRoot":"","sources":["../../src/sn/BackgroundScriptExecutor.ts"],"names":[],"mappings":"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"}