@safebrowse/daemon 0.1.3 → 0.1.4
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.d.ts.map +1 -1
- package/dist/cli.js +64 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/parserIsolation.d.ts +39 -3
- package/dist/parserIsolation.d.ts.map +1 -1
- package/dist/parserIsolation.js +187 -37
- package/dist/parserIsolation.js.map +1 -1
- package/dist/parserWorker.js +99 -19
- package/dist/parserWorker.js.map +1 -1
- package/dist/runtime/config/auditor/v5_secure_claim_suite.json +70 -0
- package/dist/server.d.ts +6 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1786 -137
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
package/dist/parserWorker.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
1
2
|
import { createRequire } from "node:module";
|
|
3
|
+
import os from "node:os";
|
|
2
4
|
import process from "node:process";
|
|
3
5
|
const require = createRequire(import.meta.url);
|
|
4
6
|
function denyNetwork(message = "Parser worker egress denied") {
|
|
@@ -41,46 +43,124 @@ async function probeIsolation() {
|
|
|
41
43
|
catch {
|
|
42
44
|
egressDenied = true;
|
|
43
45
|
}
|
|
46
|
+
const permissionModelEnabled = Boolean(process.permission);
|
|
47
|
+
const fsReadRestricted = permissionModelEnabled
|
|
48
|
+
? !process.permission.has("fs.read", os.tmpdir()) && !process.permission.has("fs.read", os.homedir())
|
|
49
|
+
: false;
|
|
44
50
|
return {
|
|
51
|
+
mode: permissionModelEnabled ? "node_permission_process" : "scrubbed_process",
|
|
45
52
|
envKeys: Object.keys(process.env),
|
|
46
53
|
egressDenied,
|
|
47
|
-
processIsolated: true
|
|
54
|
+
processIsolated: true,
|
|
55
|
+
permissionModelEnabled,
|
|
56
|
+
fsReadRestricted,
|
|
57
|
+
childProcessDenied: permissionModelEnabled ? !process.permission.has("child") : false,
|
|
58
|
+
workerThreadsDenied: permissionModelEnabled ? !process.permission.has("worker") : false
|
|
48
59
|
};
|
|
49
60
|
}
|
|
50
61
|
lockDownEnvironment();
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
62
|
+
let cachedProbePromise;
|
|
63
|
+
let cachedCoreRuntimePromise;
|
|
64
|
+
let workerRuntimeDefaults;
|
|
65
|
+
let workerAllowlistedEgress = [];
|
|
66
|
+
let workerParserIsolationMode;
|
|
67
|
+
async function getCachedProbe() {
|
|
68
|
+
if (!cachedProbePromise) {
|
|
69
|
+
cachedProbePromise = probeIsolation();
|
|
55
70
|
}
|
|
56
|
-
return
|
|
71
|
+
return cachedProbePromise;
|
|
72
|
+
}
|
|
73
|
+
async function loadCoreRuntime(parserIsolationMode) {
|
|
74
|
+
if (cachedCoreRuntimePromise) {
|
|
75
|
+
return cachedCoreRuntimePromise;
|
|
76
|
+
}
|
|
77
|
+
cachedCoreRuntimePromise = (async () => {
|
|
78
|
+
if (import.meta.url.endsWith(".ts")) {
|
|
79
|
+
if (parserIsolationMode === "node_permission_process") {
|
|
80
|
+
const distEntryUrl = new URL("../../core/dist/index.js", import.meta.url);
|
|
81
|
+
if (existsSync(distEntryUrl)) {
|
|
82
|
+
return import(distEntryUrl.href);
|
|
83
|
+
}
|
|
84
|
+
throw new Error("secure profile parser worker requires a built @safebrowse/core dist runtime");
|
|
85
|
+
}
|
|
86
|
+
const sourceEntryUrl = new URL("../../core/src/index.ts", import.meta.url).href;
|
|
87
|
+
return import(sourceEntryUrl);
|
|
88
|
+
}
|
|
89
|
+
return import("@safebrowse/core");
|
|
90
|
+
})();
|
|
91
|
+
return cachedCoreRuntimePromise;
|
|
92
|
+
}
|
|
93
|
+
function sendResponse(requestId, message) {
|
|
94
|
+
process.send?.({
|
|
95
|
+
requestId,
|
|
96
|
+
...message
|
|
97
|
+
});
|
|
57
98
|
}
|
|
58
99
|
process.on("message", async (message) => {
|
|
59
100
|
try {
|
|
60
|
-
const
|
|
61
|
-
if (
|
|
62
|
-
|
|
101
|
+
const payload = message.payload;
|
|
102
|
+
if (payload.kind === "configure") {
|
|
103
|
+
workerRuntimeDefaults = payload.runtime;
|
|
104
|
+
workerAllowlistedEgress = payload.allowlistedEgress ?? [];
|
|
105
|
+
workerParserIsolationMode = payload.parserIsolationMode;
|
|
106
|
+
await loadCoreRuntime(workerParserIsolationMode);
|
|
107
|
+
sendResponse(message.requestId, {
|
|
108
|
+
ok: true
|
|
109
|
+
});
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (payload.kind === "probe") {
|
|
113
|
+
sendResponse(message.requestId, {
|
|
63
114
|
ok: true,
|
|
64
|
-
probe: await
|
|
115
|
+
probe: await getCachedProbe()
|
|
65
116
|
});
|
|
66
117
|
return;
|
|
67
118
|
}
|
|
68
|
-
const
|
|
69
|
-
|
|
119
|
+
const parserIsolationMode = payload.parserIsolationMode ??
|
|
120
|
+
workerParserIsolationMode ??
|
|
121
|
+
(await getCachedProbe()).mode;
|
|
122
|
+
const { compileObservation, compileObservationV5, computeToolManifestHash, computeToolSchemaHash } = await loadCoreRuntime(parserIsolationMode);
|
|
123
|
+
const compiler = payload.compilerVersion === "v5" ? compileObservationV5 : compileObservation;
|
|
124
|
+
const probe = await getCachedProbe();
|
|
125
|
+
const runtime = payload.runtime ?? workerRuntimeDefaults ?? {};
|
|
126
|
+
const allowlistedEgress = payload.allowlistedEgress ?? workerAllowlistedEgress;
|
|
127
|
+
const result = compiler(payload.capture, runtime, {
|
|
128
|
+
workflowHash: payload.workflowHash,
|
|
70
129
|
parserIsolation: {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
130
|
+
mode: probe.mode,
|
|
131
|
+
processIsolated: probe.processIsolated,
|
|
132
|
+
envScrubbed: probe.envKeys.length === 0,
|
|
133
|
+
egressDenied: probe.egressDenied,
|
|
134
|
+
permissionModelEnabled: probe.permissionModelEnabled,
|
|
135
|
+
fsReadRestricted: probe.fsReadRestricted,
|
|
136
|
+
childProcessDenied: probe.childProcessDenied,
|
|
137
|
+
workerThreadsDenied: probe.workerThreadsDenied,
|
|
138
|
+
envKeys: probe.envKeys,
|
|
139
|
+
allowlistedEgress
|
|
75
140
|
}
|
|
76
141
|
});
|
|
77
|
-
|
|
142
|
+
const toolManifestDigests = payload.capture.surfaceType === "tool_manifest"
|
|
143
|
+
? {
|
|
144
|
+
manifestHash: computeToolManifestHash({
|
|
145
|
+
toolId: payload.capture.toolId,
|
|
146
|
+
description: payload.capture.description,
|
|
147
|
+
authType: payload.capture.authType,
|
|
148
|
+
requestedScopes: payload.capture.requestedScopes,
|
|
149
|
+
callbackUri: payload.capture.callbackUri
|
|
150
|
+
}),
|
|
151
|
+
schemaHash: computeToolSchemaHash(payload.capture.schemaDescriptions)
|
|
152
|
+
}
|
|
153
|
+
: undefined;
|
|
154
|
+
sendResponse(message.requestId, {
|
|
78
155
|
ok: true,
|
|
79
|
-
result
|
|
156
|
+
result: {
|
|
157
|
+
...result,
|
|
158
|
+
toolManifestDigests
|
|
159
|
+
}
|
|
80
160
|
});
|
|
81
161
|
}
|
|
82
162
|
catch (error) {
|
|
83
|
-
|
|
163
|
+
sendResponse(message.requestId, {
|
|
84
164
|
ok: false,
|
|
85
165
|
error: error instanceof Error ? error.message : String(error)
|
|
86
166
|
});
|
package/dist/parserWorker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parserWorker.js","sourceRoot":"","sources":["../src/parserWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,OAAO,MAAM,cAAc,CAAC;AAInC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,SAAS,WAAW,CAAC,OAAO,GAAG,6BAA6B;IAC1D,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEhC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACtB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;IAClB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;IACnB,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IACrB,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IACrB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IACrB,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC;IACtB,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC;IAEtB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;QACxB,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB;IAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,WAAW,EAAE,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,cAAc;
|
|
1
|
+
{"version":3,"file":"parserWorker.js","sourceRoot":"","sources":["../src/parserWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"suite_id": "safebrowse-v5-secure-claim-suite",
|
|
3
|
+
"claim_profile": "secure_v5",
|
|
4
|
+
"cases": [
|
|
5
|
+
{
|
|
6
|
+
"id": "V5-01",
|
|
7
|
+
"title": "Hidden anchor on first observation does not mint capability",
|
|
8
|
+
"kind": "hidden_html",
|
|
9
|
+
"html": "<main>Visible docs only.</main><div hidden><a href=\"https://docs.python.org/3/tutorial/\">continuity path</a></div>",
|
|
10
|
+
"visible_text": "Visible docs only.",
|
|
11
|
+
"expected": {
|
|
12
|
+
"decision": "BLOCK_OR_FACTS_ONLY",
|
|
13
|
+
"capabilities": []
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "V5-02",
|
|
18
|
+
"title": "Visible allowlisted anchor mints one navigate capability",
|
|
19
|
+
"kind": "visible_navigation",
|
|
20
|
+
"html": "<main>Visible docs only.</main><a href=\"https://docs.python.org/3/tutorial/\">Docs</a>",
|
|
21
|
+
"visible_text": "Visible docs only. Docs",
|
|
22
|
+
"expected": {
|
|
23
|
+
"decision": "ALLOW",
|
|
24
|
+
"capabilities": ["navigate"]
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "V5-03",
|
|
29
|
+
"title": "Visible navigate capability cannot authorize connector onboarding",
|
|
30
|
+
"kind": "navigate_cannot_issue_connector_approval",
|
|
31
|
+
"html": "<main>Visible docs only.</main><a href=\"https://docs.python.org/3/tutorial/\">Docs</a>",
|
|
32
|
+
"visible_text": "Visible docs only. Docs",
|
|
33
|
+
"expected": {
|
|
34
|
+
"decision": "BLOCK"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "V5-04",
|
|
39
|
+
"title": "Unsigned broker approval is rejected",
|
|
40
|
+
"kind": "unsigned_connector_approval",
|
|
41
|
+
"expected": {
|
|
42
|
+
"decision": "BLOCK"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "V5-05",
|
|
47
|
+
"title": "Signed connector approval prepares onboarding",
|
|
48
|
+
"kind": "signed_connector_prepare",
|
|
49
|
+
"expected": {
|
|
50
|
+
"decision": "ALLOW"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "V5-06",
|
|
55
|
+
"title": "Callback mismatch is rejected",
|
|
56
|
+
"kind": "callback_mismatch",
|
|
57
|
+
"expected": {
|
|
58
|
+
"decision": "BLOCK"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "V5-07",
|
|
63
|
+
"title": "Secure profile disables legacy routes",
|
|
64
|
+
"kind": "legacy_route_disabled",
|
|
65
|
+
"expected": {
|
|
66
|
+
"decision": "BLOCK"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Server } from "node:http";
|
|
2
|
-
import { type KnowledgeBaseContext, type PolicyPack } from "@safebrowse/core";
|
|
2
|
+
import { type KnowledgeBaseContext, type ParserIsolationMode, type PolicyPack } from "@safebrowse/core";
|
|
3
3
|
import type { VerifiedRegistryBundle } from "@safebrowse/core";
|
|
4
4
|
export interface SafeBrowseDaemonOptions {
|
|
5
5
|
host?: string;
|
|
@@ -9,6 +9,11 @@ export interface SafeBrowseDaemonOptions {
|
|
|
9
9
|
knowledgeBase?: KnowledgeBaseContext;
|
|
10
10
|
verifiedRegistry?: VerifiedRegistryBundle;
|
|
11
11
|
parserAllowlistedEgress?: string[];
|
|
12
|
+
parserIsolationMode?: ParserIsolationMode;
|
|
13
|
+
deploymentProfile?: "development" | "secure_v5" | "secure_v6";
|
|
14
|
+
approvalBrokerPublicKeyPath?: string;
|
|
15
|
+
approvalBrokerPublicKeyPem?: string;
|
|
16
|
+
approvalBrokerMode?: "signature_verification" | "external_service";
|
|
12
17
|
}
|
|
13
18
|
export declare function createSafeBrowseServer(options?: SafeBrowseDaemonOptions): Promise<Server>;
|
|
14
19
|
export declare function startSafeBrowseDaemon(options?: SafeBrowseDaemonOptions): Promise<Server>;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAIjG,OAAO,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAIjG,OAAO,EAiDL,KAAK,oBAAoB,EAazB,KAAK,mBAAmB,EAExB,KAAK,UAAU,EAWhB,MAAM,kBAAkB,CAAC;AAW1B,OAAO,KAAK,EAAE,sBAAsB,EAAyB,MAAM,kBAAkB,CAAC;AAEtF,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,iBAAiB,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;IAC9D,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,wBAAwB,GAAG,kBAAkB,CAAC;CACpE;AAg3BD,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CAooEjB;AAED,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CAWjB"}
|