patchwork-os 1.2.0-beta.3.canary.876 → 1.2.0-beta.3.canary.877
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/approvalHttp.js +22 -68
- package/dist/approvalHttp.js.map +1 -1
- package/dist/haltPushDispatch.d.ts +6 -4
- package/dist/haltPushDispatch.js +14 -31
- package/dist/haltPushDispatch.js.map +1 -1
- package/dist/pinnedSend.d.ts +40 -0
- package/dist/pinnedSend.js +97 -0
- package/dist/pinnedSend.js.map +1 -0
- package/package.json +1 -1
package/dist/approvalHttp.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import * as dns from "node:dns/promises";
|
|
2
1
|
import { recordApprovalCompleted, recordApprovalPrompted, } from "./activationMetrics.js";
|
|
3
2
|
import { computePersonalSignals } from "./approvalSignals.js";
|
|
4
3
|
import { evaluateRules, loadCcPermissions, loadCcPermissionsAttributed, } from "./ccPermissions.js";
|
|
4
|
+
import { pinnedSend } from "./pinnedSend.js";
|
|
5
5
|
import { captureForRunlog } from "./recipes/stepObservation.js";
|
|
6
6
|
import { computeRiskSignals } from "./riskSignals.js";
|
|
7
7
|
import { classifyTool } from "./riskTier.js";
|
|
8
|
-
import { isPrivateHost } from "./ssrfGuard.js";
|
|
9
8
|
// Tools CC allows in plan mode (read-only — no filesystem or network writes).
|
|
10
9
|
const PLAN_MODE_READ_TOOLS = new Set([
|
|
11
10
|
"Read",
|
|
@@ -329,51 +328,6 @@ export async function routeApprovalRequest(req, deps) {
|
|
|
329
328
|
}
|
|
330
329
|
return { status: 404, body: { error: "not found" } };
|
|
331
330
|
}
|
|
332
|
-
/**
|
|
333
|
-
* Blocked IP patterns for SSRF defense (loopback, RFC-1918, link-local, ULA,
|
|
334
|
-
* IPv4-mapped IPv6, 6to4-wrapped private, etc.).
|
|
335
|
-
*
|
|
336
|
-
* Delegates to the shared, tested `isPrivateHost` (audit 2026-06-03 HIGH #5).
|
|
337
|
-
* The previous hand-rolled version split on "." and `Number()`-coerced the
|
|
338
|
-
* parts, so IPv4-mapped IPv6 (`::ffff:127.0.0.1` → `Number("::ffff:127")`=NaN)
|
|
339
|
-
* and every native IPv6 private range silently bypassed the guard.
|
|
340
|
-
*/
|
|
341
|
-
function isBlockedIp(ip) {
|
|
342
|
-
return isPrivateHost(ip);
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* Resolve a hostname and return true if it should be blocked for SSRF defense.
|
|
346
|
-
*
|
|
347
|
-
* Audit 2026-06-03 (MEDIUM #26): resolve ALL addresses (`{ all: true }`) and
|
|
348
|
-
* block if ANY is private. The previous single-address `dns.lookup(hostname)`
|
|
349
|
-
* checked only the first result, so split-horizon DNS could return a public
|
|
350
|
-
* address to the guard while the subsequent `fetch` resolved a private one.
|
|
351
|
-
* DNS-resolution failure is treated as blocked (fail-closed), matching the
|
|
352
|
-
* prior per-site catch-and-skip behavior. `label` (when set) reproduces the
|
|
353
|
-
* per-dispatcher warn messages.
|
|
354
|
-
*/
|
|
355
|
-
async function hostResolvesToBlockedIp(hostname, label) {
|
|
356
|
-
let resolved;
|
|
357
|
-
try {
|
|
358
|
-
const r = await dns.lookup(hostname, { all: true });
|
|
359
|
-
// `{ all: true }` always yields an array; coerce defensively so a single
|
|
360
|
-
// LookupAddress (e.g. a test mock that forgot the array) can't throw on
|
|
361
|
-
// `.find` and silently fail open vs closed.
|
|
362
|
-
resolved = Array.isArray(r) ? r : [r];
|
|
363
|
-
}
|
|
364
|
-
catch (err) {
|
|
365
|
-
if (label)
|
|
366
|
-
console.warn(`[${label}] DNS resolution failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`);
|
|
367
|
-
return true;
|
|
368
|
-
}
|
|
369
|
-
const blocked = resolved.find((r) => isBlockedIp(r.address));
|
|
370
|
-
if (blocked) {
|
|
371
|
-
if (label)
|
|
372
|
-
console.warn(`[${label}] Blocked private/loopback IP: ${blocked.address}`);
|
|
373
|
-
return true;
|
|
374
|
-
}
|
|
375
|
-
return false;
|
|
376
|
-
}
|
|
377
331
|
/**
|
|
378
332
|
* Dispatch a JSON webhook notification when an approval is queued.
|
|
379
333
|
* Failures are logged but never thrown — webhook errors must not block
|
|
@@ -398,13 +352,13 @@ async function dispatchApprovalWebhook(webhookUrl, payload) {
|
|
|
398
352
|
console.warn(`[webhook] Blocked loopback webhook hostname: ${hostname}`);
|
|
399
353
|
return;
|
|
400
354
|
}
|
|
401
|
-
// Resolve hostname and check EVERY resolved IP against the blocklist.
|
|
402
|
-
if (await hostResolvesToBlockedIp(hostname, "webhook"))
|
|
403
|
-
return;
|
|
404
355
|
const controller = new AbortController();
|
|
405
356
|
const timer = setTimeout(() => controller.abort(), 5_000);
|
|
406
357
|
try {
|
|
407
|
-
|
|
358
|
+
// Every resolved IP checked, the checked address pinned, no redirects —
|
|
359
|
+
// shared with every notification sender (security sweep L3). null =
|
|
360
|
+
// refused before connecting, already warned as [webhook].
|
|
361
|
+
const res = await pinnedSend(webhookUrl, {
|
|
408
362
|
method: "POST",
|
|
409
363
|
headers: { "Content-Type": "application/json" },
|
|
410
364
|
body: JSON.stringify({
|
|
@@ -415,7 +369,9 @@ async function dispatchApprovalWebhook(webhookUrl, payload) {
|
|
|
415
369
|
: new Date(payload.expiresAt).toISOString(),
|
|
416
370
|
}),
|
|
417
371
|
signal: controller.signal,
|
|
418
|
-
});
|
|
372
|
+
}, { label: "webhook" });
|
|
373
|
+
if (res === null)
|
|
374
|
+
return;
|
|
419
375
|
if (!res.ok) {
|
|
420
376
|
console.warn(`[webhook] Non-2xx response from webhook: ${res.status} ${res.statusText}`);
|
|
421
377
|
}
|
|
@@ -448,12 +404,10 @@ async function dispatchPushNotification(pushServiceUrl, pushServiceToken, payloa
|
|
|
448
404
|
console.warn(`[push] Blocked loopback push service hostname`);
|
|
449
405
|
return;
|
|
450
406
|
}
|
|
451
|
-
if (!allowPrivate && (await hostResolvesToBlockedIp(hostname, "push")))
|
|
452
|
-
return;
|
|
453
407
|
const controller = new AbortController();
|
|
454
408
|
const timer = setTimeout(() => controller.abort(), 5_000);
|
|
455
409
|
try {
|
|
456
|
-
const res = await
|
|
410
|
+
const res = await pinnedSend(`${pushServiceUrl}/push`, {
|
|
457
411
|
method: "POST",
|
|
458
412
|
headers: {
|
|
459
413
|
"Content-Type": "application/json",
|
|
@@ -461,7 +415,9 @@ async function dispatchPushNotification(pushServiceUrl, pushServiceToken, payloa
|
|
|
461
415
|
},
|
|
462
416
|
body: JSON.stringify(payload),
|
|
463
417
|
signal: controller.signal,
|
|
464
|
-
});
|
|
418
|
+
}, { label: "push", allowPrivate });
|
|
419
|
+
if (res === null)
|
|
420
|
+
return;
|
|
465
421
|
if (!res.ok) {
|
|
466
422
|
console.warn(`[push] Non-2xx from push relay: ${res.status} ${res.statusText}`);
|
|
467
423
|
}
|
|
@@ -500,12 +456,10 @@ export async function dispatchCancelPush(pushServiceUrl, pushServiceToken, callI
|
|
|
500
456
|
console.warn(`[push] Blocked loopback push service hostname`);
|
|
501
457
|
return;
|
|
502
458
|
}
|
|
503
|
-
if (!allowPrivate && (await hostResolvesToBlockedIp(hostname, "push")))
|
|
504
|
-
return;
|
|
505
459
|
const controller = new AbortController();
|
|
506
460
|
const timer = setTimeout(() => controller.abort(), 5_000);
|
|
507
461
|
try {
|
|
508
|
-
const res = await
|
|
462
|
+
const res = await pinnedSend(`${pushServiceUrl}/push`, {
|
|
509
463
|
method: "POST",
|
|
510
464
|
headers: {
|
|
511
465
|
"Content-Type": "application/json",
|
|
@@ -513,7 +467,9 @@ export async function dispatchCancelPush(pushServiceUrl, pushServiceToken, callI
|
|
|
513
467
|
},
|
|
514
468
|
body: JSON.stringify({ kind: "cancel", callId }),
|
|
515
469
|
signal: controller.signal,
|
|
516
|
-
});
|
|
470
|
+
}, { label: "push", allowPrivate });
|
|
471
|
+
if (res === null)
|
|
472
|
+
return;
|
|
517
473
|
if (!res.ok) {
|
|
518
474
|
console.warn(`[push] Non-2xx from push relay (cancel): ${res.status} ${res.statusText}`);
|
|
519
475
|
}
|
|
@@ -555,8 +511,6 @@ async function dispatchNtfyApproval(ntfyServer, payload) {
|
|
|
555
511
|
console.warn(`[ntfy] Blocked loopback ntfy server hostname`);
|
|
556
512
|
return;
|
|
557
513
|
}
|
|
558
|
-
if (await hostResolvesToBlockedIp(hostname, "ntfy"))
|
|
559
|
-
return;
|
|
560
514
|
const callbackBase = payload.bridgeCallbackBase.replace(/\/+$/, "");
|
|
561
515
|
const { createHmac } = await import("node:crypto");
|
|
562
516
|
let approveUrl;
|
|
@@ -614,12 +568,14 @@ async function dispatchNtfyApproval(ntfyServer, payload) {
|
|
|
614
568
|
const controller = new AbortController();
|
|
615
569
|
const timer = setTimeout(() => controller.abort(), 5_000);
|
|
616
570
|
try {
|
|
617
|
-
const res = await
|
|
571
|
+
const res = await pinnedSend(`${ntfyServer.replace(/\/+$/, "")}/`, {
|
|
618
572
|
method: "POST",
|
|
619
573
|
headers: { "Content-Type": "application/json" },
|
|
620
574
|
body,
|
|
621
575
|
signal: controller.signal,
|
|
622
|
-
});
|
|
576
|
+
}, { label: "ntfy" });
|
|
577
|
+
if (res === null)
|
|
578
|
+
return;
|
|
623
579
|
if (!res.ok) {
|
|
624
580
|
console.warn(`[ntfy] Non-2xx from ntfy server: ${res.status} ${res.statusText}`);
|
|
625
581
|
}
|
|
@@ -648,8 +604,6 @@ async function dispatchNtfyConfirmation(ntfyServer, payload) {
|
|
|
648
604
|
}
|
|
649
605
|
if (hostname === "localhost")
|
|
650
606
|
return;
|
|
651
|
-
if (await hostResolvesToBlockedIp(hostname))
|
|
652
|
-
return;
|
|
653
607
|
const approved = payload.outcome === "approved";
|
|
654
608
|
const body = JSON.stringify({
|
|
655
609
|
topic: payload.topic,
|
|
@@ -665,12 +619,12 @@ async function dispatchNtfyConfirmation(ntfyServer, payload) {
|
|
|
665
619
|
const controller = new AbortController();
|
|
666
620
|
const timer = setTimeout(() => controller.abort(), 5_000);
|
|
667
621
|
try {
|
|
668
|
-
await
|
|
622
|
+
await pinnedSend(`${ntfyServer.replace(/\/+$/, "")}/`, {
|
|
669
623
|
method: "POST",
|
|
670
624
|
headers: { "Content-Type": "application/json" },
|
|
671
625
|
body,
|
|
672
626
|
signal: controller.signal,
|
|
673
|
-
});
|
|
627
|
+
}, { label: "ntfy-confirm" });
|
|
674
628
|
}
|
|
675
629
|
catch {
|
|
676
630
|
// best-effort
|
package/dist/approvalHttp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvalHttp.js","sourceRoot":"","sources":["../src/approvalHttp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"approvalHttp.js","sourceRoot":"","sources":["../src/approvalHttp.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,12 @@
|
|
|
6
6
|
* (a hosted push service or the dashboard's `/api/relay/halt` route)
|
|
7
7
|
* fans it out to every subscribed browser via Web Push.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Outbound safety is `pinnedSend`, shared with every approval-notification
|
|
10
|
+
* sender: HTTPS-only (checked here), every resolved address checked against
|
|
11
|
+
* the private ranges, the checked address pinned for the connection so DNS
|
|
12
|
+
* is never re-resolved, no redirects followed. 5s abort timeout,
|
|
13
|
+
* fire-and-forget so the recipe runner is never blocked on a push relay
|
|
14
|
+
* outage.
|
|
13
15
|
*
|
|
14
16
|
* Wired via `wireHaltPushDispatch` (subscribes to ActivityLog) — keeps
|
|
15
17
|
* the runner itself ignorant of push transport.
|
package/dist/haltPushDispatch.js
CHANGED
|
@@ -6,26 +6,17 @@
|
|
|
6
6
|
* (a hosted push service or the dashboard's `/api/relay/halt` route)
|
|
7
7
|
* fans it out to every subscribed browser via Web Push.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Outbound safety is `pinnedSend`, shared with every approval-notification
|
|
10
|
+
* sender: HTTPS-only (checked here), every resolved address checked against
|
|
11
|
+
* the private ranges, the checked address pinned for the connection so DNS
|
|
12
|
+
* is never re-resolved, no redirects followed. 5s abort timeout,
|
|
13
|
+
* fire-and-forget so the recipe runner is never blocked on a push relay
|
|
14
|
+
* outage.
|
|
13
15
|
*
|
|
14
16
|
* Wired via `wireHaltPushDispatch` (subscribes to ActivityLog) — keeps
|
|
15
17
|
* the runner itself ignorant of push transport.
|
|
16
18
|
*/
|
|
17
|
-
import
|
|
18
|
-
import { isPrivateHost } from "./ssrfGuard.js";
|
|
19
|
-
/**
|
|
20
|
-
* SSRF blocklist — delegates to the shared, tested `isPrivateHost`
|
|
21
|
-
* (audit 2026-06-03 HIGH #5). Previously an inline copy that, like the
|
|
22
|
-
* approvalHttp version, missed IPv4-mapped IPv6 (`::ffff:127.0.0.1`) and
|
|
23
|
-
* every native IPv6 private range because it split on "." and Number()-
|
|
24
|
-
* coerced the octets.
|
|
25
|
-
*/
|
|
26
|
-
function isBlockedIp(ip) {
|
|
27
|
-
return isPrivateHost(ip);
|
|
28
|
-
}
|
|
19
|
+
import { pinnedSend } from "./pinnedSend.js";
|
|
29
20
|
/**
|
|
30
21
|
* Fire-and-forget dispatch. Never throws — caller cannot recover from a
|
|
31
22
|
* push relay outage. Logged via console.warn for ops visibility.
|
|
@@ -47,23 +38,13 @@ export async function dispatchHaltPushNotification(pushServiceUrl, pushServiceTo
|
|
|
47
38
|
console.warn(`[halt-push] Blocked loopback push service hostname`);
|
|
48
39
|
return;
|
|
49
40
|
}
|
|
50
|
-
if (!allowPrivate) {
|
|
51
|
-
try {
|
|
52
|
-
const resolved = await dns.lookup(hostname);
|
|
53
|
-
if (isBlockedIp(resolved.address)) {
|
|
54
|
-
console.warn(`[halt-push] Blocked private/loopback IP for push service: ${resolved.address}`);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch (err) {
|
|
59
|
-
console.warn(`[halt-push] DNS resolution failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
41
|
const controller = new AbortController();
|
|
64
42
|
const timer = setTimeout(() => controller.abort(), 5_000);
|
|
65
43
|
try {
|
|
66
|
-
|
|
44
|
+
// DNS check + connection pin + no redirects, in one place shared with
|
|
45
|
+
// every approval-notification sender (security sweep L3). Returns null
|
|
46
|
+
// when refused before connecting — already warned as [halt-push].
|
|
47
|
+
const res = await pinnedSend(`${pushServiceUrl}/halt`, {
|
|
67
48
|
method: "POST",
|
|
68
49
|
headers: {
|
|
69
50
|
"Content-Type": "application/json",
|
|
@@ -71,7 +52,9 @@ export async function dispatchHaltPushNotification(pushServiceUrl, pushServiceTo
|
|
|
71
52
|
},
|
|
72
53
|
body: JSON.stringify(payload),
|
|
73
54
|
signal: controller.signal,
|
|
74
|
-
});
|
|
55
|
+
}, { label: "halt-push", allowPrivate });
|
|
56
|
+
if (res === null)
|
|
57
|
+
return;
|
|
75
58
|
if (!res.ok) {
|
|
76
59
|
// 404 is informational ("no subscribers yet") — same relay
|
|
77
60
|
// contract as the approval path. Anything else is worth a warn.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"haltPushDispatch.js","sourceRoot":"","sources":["../src/haltPushDispatch.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"haltPushDispatch.js","sourceRoot":"","sources":["../src/haltPushDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAmB7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,cAAsB,EACtB,gBAAwB,EACxB,OAAwB,EACxB,eAAwB,KAAK;IAE7B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,sEAAsE;QACtE,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,GAAG,GAAG,MAAM,UAAU,CAC1B,GAAG,cAAc,OAAO,EACxB;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,gBAAgB,EAAE;aAC5C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,EACD,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CACrC,CAAC;QACF,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,2DAA2D;YAC3D,gEAAgE;YAChE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CACV,wCAAwC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CACvE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one outbound path for the bridge's notification senders — approval
|
|
3
|
+
* webhook, push send, push dismiss, halt push and both ntfy calls.
|
|
4
|
+
*
|
|
5
|
+
* Security sweep 2026-10-01, L3. Each sender used to resolve DNS, check the
|
|
6
|
+
* answer, and then call bare `fetch`, which resolved the name AGAIN: a
|
|
7
|
+
* DNS-rebinding window between the check and the connection. They also let
|
|
8
|
+
* `fetch` follow redirects with no re-validation. They were the last outbound
|
|
9
|
+
* sinks not on `safeFetch`.
|
|
10
|
+
*
|
|
11
|
+
* Two deliberate differences from `safeFetch`'s defaults, both inherited from
|
|
12
|
+
* the senders' own check and both STRICTER:
|
|
13
|
+
* - ALL addresses are resolved and the send is refused if ANY is private
|
|
14
|
+
* (safeFetch resolves one), and
|
|
15
|
+
* - a DNS failure refuses the send (safeFetch proceeds unpinned and lets the
|
|
16
|
+
* transport report it).
|
|
17
|
+
* The address this check accepted then becomes the pin, via a fixed resolver,
|
|
18
|
+
* so nothing resolves the name a second time.
|
|
19
|
+
*
|
|
20
|
+
* Redirects are NOT followed. A push relay, approval webhook or ntfy server
|
|
21
|
+
* has no reason to redirect a POST, and following one is a way to be steered
|
|
22
|
+
* after the check. A 3xx comes back to the caller as a non-2xx response.
|
|
23
|
+
*
|
|
24
|
+
* Returns `null` when the send was refused before any connection was made
|
|
25
|
+
* (already warned with `[label]`). Transport errors propagate, so each
|
|
26
|
+
* caller's existing catch-and-warn keeps working unchanged.
|
|
27
|
+
*/
|
|
28
|
+
export interface PinnedSendInit {
|
|
29
|
+
method?: string;
|
|
30
|
+
headers?: Record<string, string>;
|
|
31
|
+
body?: string;
|
|
32
|
+
signal?: AbortSignal;
|
|
33
|
+
}
|
|
34
|
+
export interface PinnedSendOptions {
|
|
35
|
+
/** Log prefix, e.g. "push" → `[push] …`. */
|
|
36
|
+
label: string;
|
|
37
|
+
/** Operator opt-in to private targets; the address is still pinned. */
|
|
38
|
+
allowPrivate?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export declare function pinnedSend(url: string, init: PinnedSendInit, opts: PinnedSendOptions): Promise<Response | null>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one outbound path for the bridge's notification senders — approval
|
|
3
|
+
* webhook, push send, push dismiss, halt push and both ntfy calls.
|
|
4
|
+
*
|
|
5
|
+
* Security sweep 2026-10-01, L3. Each sender used to resolve DNS, check the
|
|
6
|
+
* answer, and then call bare `fetch`, which resolved the name AGAIN: a
|
|
7
|
+
* DNS-rebinding window between the check and the connection. They also let
|
|
8
|
+
* `fetch` follow redirects with no re-validation. They were the last outbound
|
|
9
|
+
* sinks not on `safeFetch`.
|
|
10
|
+
*
|
|
11
|
+
* Two deliberate differences from `safeFetch`'s defaults, both inherited from
|
|
12
|
+
* the senders' own check and both STRICTER:
|
|
13
|
+
* - ALL addresses are resolved and the send is refused if ANY is private
|
|
14
|
+
* (safeFetch resolves one), and
|
|
15
|
+
* - a DNS failure refuses the send (safeFetch proceeds unpinned and lets the
|
|
16
|
+
* transport report it).
|
|
17
|
+
* The address this check accepted then becomes the pin, via a fixed resolver,
|
|
18
|
+
* so nothing resolves the name a second time.
|
|
19
|
+
*
|
|
20
|
+
* Redirects are NOT followed. A push relay, approval webhook or ntfy server
|
|
21
|
+
* has no reason to redirect a POST, and following one is a way to be steered
|
|
22
|
+
* after the check. A 3xx comes back to the caller as a non-2xx response.
|
|
23
|
+
*
|
|
24
|
+
* Returns `null` when the send was refused before any connection was made
|
|
25
|
+
* (already warned with `[label]`). Transport errors propagate, so each
|
|
26
|
+
* caller's existing catch-and-warn keeps working unchanged.
|
|
27
|
+
*/
|
|
28
|
+
import * as dnsNs from "node:dns/promises";
|
|
29
|
+
import { isPrivateHost } from "./privateHost.js";
|
|
30
|
+
import { safeFetch } from "./ssrfGuard.js";
|
|
31
|
+
/**
|
|
32
|
+
* The module's default object when it has a usable `lookup`, else the
|
|
33
|
+
* namespace. The read is guarded because vitest's module-mock proxy THROWS on
|
|
34
|
+
* access to an export the mock factory did not define — an unguarded
|
|
35
|
+
* `.default` read escaped the DNS try/catch and every send failed.
|
|
36
|
+
*/
|
|
37
|
+
function dnsApi() {
|
|
38
|
+
try {
|
|
39
|
+
const d = dnsNs.default;
|
|
40
|
+
if (d && typeof d.lookup === "function")
|
|
41
|
+
return d;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// mocked module without a default export
|
|
45
|
+
}
|
|
46
|
+
return dnsNs;
|
|
47
|
+
}
|
|
48
|
+
export async function pinnedSend(url, init, opts) {
|
|
49
|
+
let hostname;
|
|
50
|
+
try {
|
|
51
|
+
hostname = new URL(url).hostname;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
console.warn(`[${opts.label}] Malformed URL — skipping`);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
// Resolved at call time through the module's default object when it has
|
|
58
|
+
// one, else the namespace. In production both are the same `lookup`. The
|
|
59
|
+
// distinction is for tests: some suites `vi.spyOn(dns, "lookup")` on the
|
|
60
|
+
// DEFAULT object (which a namespace binding would not see), others
|
|
61
|
+
// `vi.mock("node:dns/promises", () => ({ lookup }))` with NO default (which
|
|
62
|
+
// a default import would see as undefined — and then every send would be
|
|
63
|
+
// refused, fail-closed, looking exactly like a DNS outage).
|
|
64
|
+
const dns = dnsApi();
|
|
65
|
+
let addresses;
|
|
66
|
+
try {
|
|
67
|
+
const r = await dns.lookup(hostname, { all: true });
|
|
68
|
+
// `{ all: true }` always yields an array; coerce defensively so a mock
|
|
69
|
+
// that returns one LookupAddress cannot make this throw and fail open.
|
|
70
|
+
addresses = Array.isArray(r) ? r : [r];
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
console.warn(`[${opts.label}] DNS resolution failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`);
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const first = addresses[0]?.address;
|
|
77
|
+
if (first === undefined) {
|
|
78
|
+
console.warn(`[${opts.label}] DNS returned no address for ${hostname}`);
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
if (!opts.allowPrivate) {
|
|
82
|
+
const blocked = addresses.find((a) => isPrivateHost(a.address));
|
|
83
|
+
if (blocked) {
|
|
84
|
+
console.warn(`[${opts.label}] Blocked private/loopback IP: ${blocked.address}`);
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const { response } = await safeFetch(url, { ...init }, {
|
|
89
|
+
allowPrivate: opts.allowPrivate,
|
|
90
|
+
// The address checked above IS the pin: no second resolution, so no
|
|
91
|
+
// rebinding window between check and connect.
|
|
92
|
+
resolveDns: async () => first,
|
|
93
|
+
followRedirects: false,
|
|
94
|
+
});
|
|
95
|
+
return response;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=pinnedSend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinnedSend.js","sourceRoot":"","sources":["../src/pinnedSend.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "patchwork-os",
|
|
3
|
-
"version": "1.2.0-beta.3.canary.
|
|
3
|
+
"version": "1.2.0-beta.3.canary.877",
|
|
4
4
|
"description": "Your personal AI runtime, local-first. Patchwork OS gives any AI model a consistent set of tools, YAML recipes, a delegation policy with approval queue, and a durable trace memory — all on your machine, all under your policy.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|