@daloyjs/core 0.34.2 → 0.35.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 +14 -11
- package/dist/cli.d.ts +32 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +62 -4
- package/dist/cli.js.map +1 -1
- package/dist/fetch-guard.d.ts +50 -5
- package/dist/fetch-guard.d.ts.map +1 -1
- package/dist/fetch-guard.js +83 -17
- package/dist/fetch-guard.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/jwt.d.ts +15 -0
- package/dist/jwt.d.ts.map +1 -1
- package/dist/jwt.js +56 -2
- package/dist/jwt.js.map +1 -1
- package/dist/middleware.d.ts +78 -0
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +134 -5
- package/dist/middleware.js.map +1 -1
- package/dist/safe-redirect.d.ts +92 -0
- package/dist/safe-redirect.d.ts.map +1 -0
- package/dist/safe-redirect.js +169 -0
- package/dist/safe-redirect.js.map +1 -0
- package/dist/sbom.cdx.json +13 -9
- package/dist/sbom.spdx.json +5 -5
- package/dist/security.d.ts +134 -2
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +265 -5
- package/dist/security.js.map +1 -1
- package/package.json +30 -14
package/dist/sbom.cdx.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.5",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:c41e526d-a8c9-5e8a-bef4-4d616a1ee814",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "2026-05-
|
|
7
|
+
"timestamp": "2026-05-24T23:40:26.023Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "DaloyJS",
|
|
11
11
|
"name": "daloy-generate-sbom",
|
|
12
|
-
"version": "0.
|
|
12
|
+
"version": "0.35.0"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"authors": [
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
],
|
|
20
20
|
"component": {
|
|
21
21
|
"type": "library",
|
|
22
|
-
"bom-ref": "pkg:npm/@daloyjs/core@0.
|
|
22
|
+
"bom-ref": "pkg:npm/@daloyjs/core@0.35.0",
|
|
23
23
|
"name": "@daloyjs/core",
|
|
24
|
-
"version": "0.
|
|
24
|
+
"version": "0.35.0",
|
|
25
25
|
"description": "DaloyJS is a runtime-portable, contract-first TypeScript web framework with built-in OpenAPI (Hey API), typed client generation, large-scale maintainability, and security-first defaults. Hono-grade portability, Elysia-grade DX, FastAPI-grade docs, Fastify-grade ops — distributed via pnpm.",
|
|
26
|
-
"purl": "pkg:npm/@daloyjs/core@0.
|
|
26
|
+
"purl": "pkg:npm/@daloyjs/core@0.35.0",
|
|
27
27
|
"licenses": [
|
|
28
28
|
{
|
|
29
29
|
"license": {
|
|
@@ -39,12 +39,16 @@
|
|
|
39
39
|
{
|
|
40
40
|
"type": "website",
|
|
41
41
|
"url": "https://daloyjs.dev"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"type": "distribution",
|
|
45
|
+
"url": "https://www.npmjs.com/package/@daloyjs/core"
|
|
42
46
|
}
|
|
43
47
|
],
|
|
44
48
|
"swid": {
|
|
45
|
-
"tagId": "swidtag--daloyjs-core-0.
|
|
49
|
+
"tagId": "swidtag--daloyjs-core-0.35.0",
|
|
46
50
|
"name": "@daloyjs/core",
|
|
47
|
-
"version": "0.
|
|
51
|
+
"version": "0.35.0",
|
|
48
52
|
"tagVersion": 0,
|
|
49
53
|
"patch": false
|
|
50
54
|
}
|
|
@@ -53,7 +57,7 @@
|
|
|
53
57
|
"components": [],
|
|
54
58
|
"dependencies": [
|
|
55
59
|
{
|
|
56
|
-
"ref": "pkg:npm/@daloyjs/core@0.
|
|
60
|
+
"ref": "pkg:npm/@daloyjs/core@0.35.0",
|
|
57
61
|
"dependsOn": []
|
|
58
62
|
}
|
|
59
63
|
]
|
package/dist/sbom.spdx.json
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"spdxVersion": "SPDX-2.3",
|
|
3
3
|
"dataLicense": "CC0-1.0",
|
|
4
4
|
"SPDXID": "SPDXRef-DOCUMENT",
|
|
5
|
-
"name": "@daloyjs/core-0.
|
|
6
|
-
"documentNamespace": "https://github.com/daloyjs/daloy/sbom/@daloyjs/core-0.
|
|
5
|
+
"name": "@daloyjs/core-0.35.0",
|
|
6
|
+
"documentNamespace": "https://github.com/daloyjs/daloy/sbom/@daloyjs/core-0.35.0-c41e526d-a8c9-5e8a-bef4-4d616a1ee814",
|
|
7
7
|
"creationInfo": {
|
|
8
|
-
"created": "2026-05-
|
|
8
|
+
"created": "2026-05-24T23:40:26.023Z",
|
|
9
9
|
"creators": [
|
|
10
10
|
"Tool: daloy-generate-sbom",
|
|
11
11
|
"Organization: DaloyJS"
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
{
|
|
17
17
|
"SPDXID": "SPDXRef-Package--daloyjs-core",
|
|
18
18
|
"name": "@daloyjs/core",
|
|
19
|
-
"versionInfo": "0.
|
|
19
|
+
"versionInfo": "0.35.0",
|
|
20
20
|
"downloadLocation": "https://github.com/daloyjs/daloy",
|
|
21
21
|
"filesAnalyzed": false,
|
|
22
22
|
"licenseConcluded": "MIT",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
{
|
|
28
28
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
29
29
|
"referenceType": "purl",
|
|
30
|
-
"referenceLocator": "pkg:npm/@daloyjs/core@0.
|
|
30
|
+
"referenceLocator": "pkg:npm/@daloyjs/core@0.35.0"
|
|
31
31
|
}
|
|
32
32
|
]
|
|
33
33
|
}
|
package/dist/security.d.ts
CHANGED
|
@@ -104,8 +104,8 @@ export declare function randomId(): string;
|
|
|
104
104
|
/**
|
|
105
105
|
* Header names that MUST appear at most once on a request per RFC 7230.
|
|
106
106
|
* Duplicate values for these headers are a classic HTTP-request-smuggling
|
|
107
|
-
* vector — front-end and back-end proxies can disagree on
|
|
108
|
-
*
|
|
107
|
+
* vector — front-end and back-end proxies can disagree on framing or
|
|
108
|
+
* routing, letting an attacker desync the connection.
|
|
109
109
|
*
|
|
110
110
|
* Exported for adapter authors that need the same set.
|
|
111
111
|
*
|
|
@@ -202,6 +202,14 @@ export declare function assertStrongSecret(secret: unknown, scope: string): void
|
|
|
202
202
|
* @since 0.15.0
|
|
203
203
|
*/
|
|
204
204
|
export type WebhookHmacAlgorithm = "sha256" | "sha384" | "sha512";
|
|
205
|
+
/**
|
|
206
|
+
* Default tolerance window (in seconds) for webhook timestamp verification.
|
|
207
|
+
* Matches Stripe / Standard Webhooks defaults — five minutes either side of
|
|
208
|
+
* the receiver's clock. Override per call via `toleranceSeconds`.
|
|
209
|
+
*
|
|
210
|
+
* @since 0.21.0
|
|
211
|
+
*/
|
|
212
|
+
export declare const WEBHOOK_DEFAULT_TOLERANCE_SECONDS = 300;
|
|
205
213
|
/**
|
|
206
214
|
* Verify an HMAC signature for a webhook payload in constant time.
|
|
207
215
|
*
|
|
@@ -243,6 +251,35 @@ export declare function verifyWebhookSignature(opts: {
|
|
|
243
251
|
signature: string | Uint8Array;
|
|
244
252
|
secret: string | Uint8Array;
|
|
245
253
|
algorithm?: WebhookHmacAlgorithm;
|
|
254
|
+
/**
|
|
255
|
+
* Optional event timestamp (Unix seconds; string or number). When
|
|
256
|
+
* supplied, the HMAC is computed over `"<timestamp>.<payload>"` instead
|
|
257
|
+
* of just `payload`, which binds the signature to a specific point in
|
|
258
|
+
* time and lets the verifier reject replays whose timestamp drifts
|
|
259
|
+
* outside `toleranceSeconds`. Matches the Stripe / Standard Webhooks
|
|
260
|
+
* convention. Pass the value extracted from the producer's signature
|
|
261
|
+
* header (e.g. the `t=` field of `Stripe-Signature`).
|
|
262
|
+
*
|
|
263
|
+
* @since 0.21.0
|
|
264
|
+
*/
|
|
265
|
+
timestamp?: string | number;
|
|
266
|
+
/**
|
|
267
|
+
* Maximum drift (in seconds) between `timestamp` and `now()` before the
|
|
268
|
+
* signature is rejected as a likely replay. Only consulted when
|
|
269
|
+
* `timestamp` is supplied. Defaults to
|
|
270
|
+
* {@link WEBHOOK_DEFAULT_TOLERANCE_SECONDS} (5 minutes).
|
|
271
|
+
*
|
|
272
|
+
* @since 0.21.0
|
|
273
|
+
*/
|
|
274
|
+
toleranceSeconds?: number;
|
|
275
|
+
/**
|
|
276
|
+
* Clock used for replay-window checks. Returns milliseconds since the
|
|
277
|
+
* Unix epoch. Defaults to {@link Date.now}; override in tests to make
|
|
278
|
+
* the clock deterministic.
|
|
279
|
+
*
|
|
280
|
+
* @since 0.21.0
|
|
281
|
+
*/
|
|
282
|
+
now?: () => number;
|
|
246
283
|
}): Promise<boolean>;
|
|
247
284
|
/**
|
|
248
285
|
* Compute an HMAC signature over `payload` and return it hex-encoded. The
|
|
@@ -255,5 +292,100 @@ export declare function signWebhookPayload(opts: {
|
|
|
255
292
|
payload: Uint8Array | string;
|
|
256
293
|
secret: string | Uint8Array;
|
|
257
294
|
algorithm?: WebhookHmacAlgorithm;
|
|
295
|
+
/**
|
|
296
|
+
* Optional event timestamp (Unix seconds; string or number). When
|
|
297
|
+
* supplied, the HMAC is computed over `"<timestamp>.<payload>"` so the
|
|
298
|
+
* receiver can use {@link verifyWebhookSignature} with the same
|
|
299
|
+
* `timestamp` and a `toleranceSeconds` window to defeat replay attacks.
|
|
300
|
+
*
|
|
301
|
+
* @since 0.21.0
|
|
302
|
+
*/
|
|
303
|
+
timestamp?: string | number;
|
|
258
304
|
}): Promise<string>;
|
|
305
|
+
/**
|
|
306
|
+
* Return a single-segment, storage-safe basename derived from a
|
|
307
|
+
* (potentially attacker-controlled) filename — for example, the `name`
|
|
308
|
+
* field on a multipart `UploadedFile` before passing it to `fs.writeFile`
|
|
309
|
+
* or any other filesystem sink.
|
|
310
|
+
*
|
|
311
|
+
* The transformation:
|
|
312
|
+
*
|
|
313
|
+
* 1. Takes the basename only — anything before the last `/` or `\` is
|
|
314
|
+
* discarded (`../../etc/passwd` → `passwd`, `C:\\foo\\bar.txt` →
|
|
315
|
+
* `bar.txt`).
|
|
316
|
+
* 2. Strips NUL bytes and other control characters (NUL truncation is
|
|
317
|
+
* the classic `evil.png\0.exe` bypass).
|
|
318
|
+
* 3. Strips Windows-reserved characters (`<>:"|?*`) and replaces them
|
|
319
|
+
* with `_`.
|
|
320
|
+
* 4. Strips leading dots so the result cannot be `.`, `..`, or a hidden
|
|
321
|
+
* dotfile (`.htaccess` → `htaccess`).
|
|
322
|
+
* 5. Trims trailing dots and spaces (Windows silently strips these on
|
|
323
|
+
* `CreateFile`, so `file.txt ` and `file.txt` collide).
|
|
324
|
+
* 6. Refuses Windows-reserved names (`CON`, `PRN`, `AUX`, `NUL`,
|
|
325
|
+
* `COM1`–`COM9`, `LPT1`–`LPT9`) — case-insensitive, with or without
|
|
326
|
+
* extension.
|
|
327
|
+
* 7. Throws {@link BadRequestError} if the result is empty.
|
|
328
|
+
*
|
|
329
|
+
* Returns a basename only — never includes a directory. Callers are
|
|
330
|
+
* expected to combine it with a trusted base directory via
|
|
331
|
+
* `path.join(baseDir, sanitized)`. Combined with a final
|
|
332
|
+
* `path.resolve(baseDir, sanitized).startsWith(path.resolve(baseDir))`
|
|
333
|
+
* check this fully closes the Zip-Slip and arbitrary-write class of bug.
|
|
334
|
+
*
|
|
335
|
+
* @param name - The candidate filename (typically from
|
|
336
|
+
* `UploadedFile.name`, a `Content-Disposition` header, or any other
|
|
337
|
+
* untrusted source).
|
|
338
|
+
* @returns A sanitized basename safe to combine with a trusted directory.
|
|
339
|
+
* @throws {BadRequestError} When the input reduces to an empty string or
|
|
340
|
+
* matches a Windows-reserved device name.
|
|
341
|
+
* @since 0.35.0
|
|
342
|
+
*/
|
|
343
|
+
export declare function sanitizeFilename(name: string): string;
|
|
344
|
+
/**
|
|
345
|
+
* Validate that a candidate relative path is safe to combine with a
|
|
346
|
+
* trusted base directory — i.e. it cannot escape via `..` segments,
|
|
347
|
+
* absolute roots, drive letters, NUL truncation, or mixed
|
|
348
|
+
* POSIX/Windows separators.
|
|
349
|
+
*
|
|
350
|
+
* Throws {@link BadRequestError} on any of:
|
|
351
|
+
*
|
|
352
|
+
* - Empty input
|
|
353
|
+
* - NUL bytes (`evil\0../../etc/passwd` truncation)
|
|
354
|
+
* - Backslash characters (treated as Windows separators; rejecting
|
|
355
|
+
* them prevents POSIX callers being bypassed by `..\\..\\etc`)
|
|
356
|
+
* - POSIX absolute paths (`/etc/passwd`)
|
|
357
|
+
* - Windows drive letters or UNC roots (`C:\\foo`, `\\\\server\\share`)
|
|
358
|
+
* - Any segment equal to `..` after `/`-splitting
|
|
359
|
+
*
|
|
360
|
+
* Returns the normalized POSIX-style relative path on success. Designed
|
|
361
|
+
* for the Aikido / OWASP "Directory Traversal & File Exposure" class
|
|
362
|
+
* (`CVE-2023-26111` `node-static`, Zip Slip, `req.query.file` →
|
|
363
|
+
* `sendFile`).
|
|
364
|
+
*
|
|
365
|
+
* @param input - The candidate relative path.
|
|
366
|
+
* @returns The input unchanged when safe.
|
|
367
|
+
* @throws {BadRequestError} When the path could escape its base directory.
|
|
368
|
+
* @since 0.35.0
|
|
369
|
+
*/
|
|
370
|
+
export declare function assertSafeRelativePath(input: string): string;
|
|
371
|
+
/**
|
|
372
|
+
* Recursively scan a parsed JSON value (object / array / scalar) for any
|
|
373
|
+
* property key that starts with `$` — the MongoDB / NoSQL operator
|
|
374
|
+
* namespace (`$ne`, `$gt`, `$regex`, `$where`, …).
|
|
375
|
+
*
|
|
376
|
+
* Returns `true` on the first hit. Use before passing untrusted data
|
|
377
|
+
* into a query object that may be interpreted as an operator expression.
|
|
378
|
+
*
|
|
379
|
+
* @since 0.35.0
|
|
380
|
+
*/
|
|
381
|
+
export declare function hasMongoOperatorKeys(value: unknown): boolean;
|
|
382
|
+
/**
|
|
383
|
+
* Throw {@link BadRequestError} when {@link hasMongoOperatorKeys}
|
|
384
|
+
* returns `true`. Safe to call on the parsed request body before
|
|
385
|
+
* threading it into a NoSQL driver — closes the
|
|
386
|
+
* `{"password": {"$ne": null}}` authentication-bypass class of bug.
|
|
387
|
+
*
|
|
388
|
+
* @since 0.35.0
|
|
389
|
+
*/
|
|
390
|
+
export declare function assertNoMongoOperators(value: unknown): void;
|
|
259
391
|
//# sourceMappingURL=security.d.ts.map
|
package/dist/security.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAsCrB;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUnD;AAID;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAO7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAUjC;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|
package/dist/security.js
CHANGED
|
@@ -187,13 +187,13 @@ export function randomId() {
|
|
|
187
187
|
return Array.from(buf, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
188
188
|
}
|
|
189
189
|
// Last-resort fallback (should never trigger on Node 20+/Bun/Deno/Workers).
|
|
190
|
-
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
190
|
+
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`; // daloy-allow-weak-random: Web Crypto unavailable; documented in randomId() TSDoc above.
|
|
191
191
|
}
|
|
192
192
|
/**
|
|
193
193
|
* Header names that MUST appear at most once on a request per RFC 7230.
|
|
194
194
|
* Duplicate values for these headers are a classic HTTP-request-smuggling
|
|
195
|
-
* vector — front-end and back-end proxies can disagree on
|
|
196
|
-
*
|
|
195
|
+
* vector — front-end and back-end proxies can disagree on framing or
|
|
196
|
+
* routing, letting an attacker desync the connection.
|
|
197
197
|
*
|
|
198
198
|
* Exported for adapter authors that need the same set.
|
|
199
199
|
*
|
|
@@ -202,6 +202,7 @@ export function randomId() {
|
|
|
202
202
|
export const SMUGGLING_SINGLETON_HEADERS = Object.freeze([
|
|
203
203
|
"host",
|
|
204
204
|
"content-length",
|
|
205
|
+
"transfer-encoding",
|
|
205
206
|
]);
|
|
206
207
|
/**
|
|
207
208
|
* Reject requests that carry more than one value for any header in
|
|
@@ -422,6 +423,56 @@ function decodeWebhookSignature(signature, expected, expectedBytes) {
|
|
|
422
423
|
const b64 = base64ToBytes(value);
|
|
423
424
|
return b64 && b64.length === expectedBytes ? b64 : null;
|
|
424
425
|
}
|
|
426
|
+
/**
|
|
427
|
+
* Default tolerance window (in seconds) for webhook timestamp verification.
|
|
428
|
+
* Matches Stripe / Standard Webhooks defaults — five minutes either side of
|
|
429
|
+
* the receiver's clock. Override per call via `toleranceSeconds`.
|
|
430
|
+
*
|
|
431
|
+
* @since 0.21.0
|
|
432
|
+
*/
|
|
433
|
+
export const WEBHOOK_DEFAULT_TOLERANCE_SECONDS = 300;
|
|
434
|
+
/**
|
|
435
|
+
* Maximum plausible Unix-timestamp value we'll accept on the verifier
|
|
436
|
+
* side. Equal to seconds in `Number.MAX_SAFE_INTEGER` milliseconds — beyond
|
|
437
|
+
* this we treat the value as adversarial/malformed rather than as a real
|
|
438
|
+
* future date. Practically: caps timestamps somewhere around year 287000.
|
|
439
|
+
*/
|
|
440
|
+
const WEBHOOK_MAX_TIMESTAMP_SECONDS = Math.floor(Number.MAX_SAFE_INTEGER / 1000);
|
|
441
|
+
function normalizeWebhookTimestamp(ts) {
|
|
442
|
+
if (ts === undefined || ts === null)
|
|
443
|
+
return null;
|
|
444
|
+
let seconds;
|
|
445
|
+
if (typeof ts === "number") {
|
|
446
|
+
if (!Number.isFinite(ts) || !Number.isInteger(ts))
|
|
447
|
+
return null;
|
|
448
|
+
seconds = ts;
|
|
449
|
+
}
|
|
450
|
+
else if (typeof ts === "string") {
|
|
451
|
+
// Only accept the canonical integer-seconds form, no whitespace, no sign
|
|
452
|
+
// tricks, no decimals, no leading zeros (other than literal "0"). This
|
|
453
|
+
// keeps the signed payload string deterministic across producers.
|
|
454
|
+
if (!/^(0|[1-9][0-9]{0,18})$/.test(ts))
|
|
455
|
+
return null;
|
|
456
|
+
seconds = Number(ts);
|
|
457
|
+
if (!Number.isFinite(ts) && !Number.isFinite(seconds))
|
|
458
|
+
return null;
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
return null;
|
|
462
|
+
}
|
|
463
|
+
if (seconds < 0 || seconds > WEBHOOK_MAX_TIMESTAMP_SECONDS)
|
|
464
|
+
return null;
|
|
465
|
+
return { seconds, canonical: String(seconds) };
|
|
466
|
+
}
|
|
467
|
+
function buildSignedPayloadBytes(payload, timestamp) {
|
|
468
|
+
if (!timestamp)
|
|
469
|
+
return payload;
|
|
470
|
+
const prefix = new TextEncoder().encode(`${timestamp.canonical}.`);
|
|
471
|
+
const out = new Uint8Array(prefix.length + payload.length);
|
|
472
|
+
out.set(prefix, 0);
|
|
473
|
+
out.set(payload, prefix.length);
|
|
474
|
+
return out;
|
|
475
|
+
}
|
|
425
476
|
/**
|
|
426
477
|
* Verify an HMAC signature for a webhook payload in constant time.
|
|
427
478
|
*
|
|
@@ -462,6 +513,23 @@ export async function verifyWebhookSignature(opts) {
|
|
|
462
513
|
const algo = resolveWebhookAlgorithm(opts.algorithm ?? "sha256");
|
|
463
514
|
if (!algo)
|
|
464
515
|
return false;
|
|
516
|
+
let timestamp = null;
|
|
517
|
+
if (opts.timestamp !== undefined) {
|
|
518
|
+
timestamp = normalizeWebhookTimestamp(opts.timestamp);
|
|
519
|
+
if (!timestamp)
|
|
520
|
+
return false;
|
|
521
|
+
const tolerance = opts.toleranceSeconds === undefined
|
|
522
|
+
? WEBHOOK_DEFAULT_TOLERANCE_SECONDS
|
|
523
|
+
: opts.toleranceSeconds;
|
|
524
|
+
if (!Number.isFinite(tolerance) || tolerance < 0)
|
|
525
|
+
return false;
|
|
526
|
+
const nowMs = (opts.now ?? Date.now)();
|
|
527
|
+
if (!Number.isFinite(nowMs))
|
|
528
|
+
return false;
|
|
529
|
+
const nowSeconds = Math.floor(nowMs / 1000);
|
|
530
|
+
if (Math.abs(nowSeconds - timestamp.seconds) > tolerance)
|
|
531
|
+
return false;
|
|
532
|
+
}
|
|
465
533
|
const payloadBytes = typeof opts.payload === "string"
|
|
466
534
|
? new TextEncoder().encode(opts.payload)
|
|
467
535
|
: opts.payload;
|
|
@@ -471,11 +539,12 @@ export async function verifyWebhookSignature(opts) {
|
|
|
471
539
|
const providedBytes = decodeWebhookSignature(opts.signature, algo.name, algo.signatureBytes);
|
|
472
540
|
if (!providedBytes)
|
|
473
541
|
return false;
|
|
542
|
+
const signedBytes = buildSignedPayloadBytes(payloadBytes, timestamp);
|
|
474
543
|
const c = globalThis.crypto;
|
|
475
544
|
if (!c?.subtle)
|
|
476
545
|
return false;
|
|
477
546
|
const key = await c.subtle.importKey("raw", secretBytes, { name: "HMAC", hash: algo.hashName }, false, ["sign"]);
|
|
478
|
-
const computed = new Uint8Array(await c.subtle.sign("HMAC", key,
|
|
547
|
+
const computed = new Uint8Array(await c.subtle.sign("HMAC", key, signedBytes));
|
|
479
548
|
return timingSafeEqualBytes(computed, providedBytes);
|
|
480
549
|
}
|
|
481
550
|
/**
|
|
@@ -489,6 +558,13 @@ export async function signWebhookPayload(opts) {
|
|
|
489
558
|
const algo = resolveWebhookAlgorithm(opts.algorithm ?? "sha256");
|
|
490
559
|
if (!algo)
|
|
491
560
|
throw new TypeError("unsupported webhook HMAC algorithm");
|
|
561
|
+
let timestamp = null;
|
|
562
|
+
if (opts.timestamp !== undefined) {
|
|
563
|
+
timestamp = normalizeWebhookTimestamp(opts.timestamp);
|
|
564
|
+
if (!timestamp) {
|
|
565
|
+
throw new TypeError("signWebhookPayload(): timestamp must be a non-negative integer number of seconds");
|
|
566
|
+
}
|
|
567
|
+
}
|
|
492
568
|
const payloadBytes = typeof opts.payload === "string"
|
|
493
569
|
? new TextEncoder().encode(opts.payload)
|
|
494
570
|
: opts.payload;
|
|
@@ -499,7 +575,191 @@ export async function signWebhookPayload(opts) {
|
|
|
499
575
|
if (!c?.subtle)
|
|
500
576
|
throw new Error("WebCrypto unavailable: cannot sign webhook payload");
|
|
501
577
|
const key = await c.subtle.importKey("raw", secretBytes, { name: "HMAC", hash: algo.hashName }, false, ["sign"]);
|
|
502
|
-
const
|
|
578
|
+
const signedBytes = buildSignedPayloadBytes(payloadBytes, timestamp);
|
|
579
|
+
const computed = new Uint8Array(await c.subtle.sign("HMAC", key, signedBytes));
|
|
503
580
|
return bytesToHex(computed);
|
|
504
581
|
}
|
|
582
|
+
// ---------------------------------------------------------------------------
|
|
583
|
+
// File-path traversal helpers (Zip Slip / OWASP A01 / Aikido "Directory
|
|
584
|
+
// Traversal & File Exposure" class). Daloy's router already rejects `..`
|
|
585
|
+
// and `//` in request URLs, but applications that persist user-uploaded
|
|
586
|
+
// filenames or accept untrusted relative paths still need a sanitizer to
|
|
587
|
+
// stop attackers from breaking out of an upload directory or overwriting
|
|
588
|
+
// arbitrary files (`../../etc/passwd`, `..\\..\\windows\\system32`, NUL
|
|
589
|
+
// truncation `evil.png\0../../etc/passwd`).
|
|
590
|
+
// ---------------------------------------------------------------------------
|
|
591
|
+
const CONTROL_CHAR_RE = /[\x00-\x1f\x7f]/g;
|
|
592
|
+
const WINDOWS_RESERVED_CHARS_RE = /[<>:"|?*]/g;
|
|
593
|
+
const WINDOWS_RESERVED_NAMES = new Set([
|
|
594
|
+
"con", "prn", "aux", "nul",
|
|
595
|
+
"com1", "com2", "com3", "com4", "com5", "com6", "com7", "com8", "com9",
|
|
596
|
+
"lpt1", "lpt2", "lpt3", "lpt4", "lpt5", "lpt6", "lpt7", "lpt8", "lpt9",
|
|
597
|
+
]);
|
|
598
|
+
/**
|
|
599
|
+
* Return a single-segment, storage-safe basename derived from a
|
|
600
|
+
* (potentially attacker-controlled) filename — for example, the `name`
|
|
601
|
+
* field on a multipart `UploadedFile` before passing it to `fs.writeFile`
|
|
602
|
+
* or any other filesystem sink.
|
|
603
|
+
*
|
|
604
|
+
* The transformation:
|
|
605
|
+
*
|
|
606
|
+
* 1. Takes the basename only — anything before the last `/` or `\` is
|
|
607
|
+
* discarded (`../../etc/passwd` → `passwd`, `C:\\foo\\bar.txt` →
|
|
608
|
+
* `bar.txt`).
|
|
609
|
+
* 2. Strips NUL bytes and other control characters (NUL truncation is
|
|
610
|
+
* the classic `evil.png\0.exe` bypass).
|
|
611
|
+
* 3. Strips Windows-reserved characters (`<>:"|?*`) and replaces them
|
|
612
|
+
* with `_`.
|
|
613
|
+
* 4. Strips leading dots so the result cannot be `.`, `..`, or a hidden
|
|
614
|
+
* dotfile (`.htaccess` → `htaccess`).
|
|
615
|
+
* 5. Trims trailing dots and spaces (Windows silently strips these on
|
|
616
|
+
* `CreateFile`, so `file.txt ` and `file.txt` collide).
|
|
617
|
+
* 6. Refuses Windows-reserved names (`CON`, `PRN`, `AUX`, `NUL`,
|
|
618
|
+
* `COM1`–`COM9`, `LPT1`–`LPT9`) — case-insensitive, with or without
|
|
619
|
+
* extension.
|
|
620
|
+
* 7. Throws {@link BadRequestError} if the result is empty.
|
|
621
|
+
*
|
|
622
|
+
* Returns a basename only — never includes a directory. Callers are
|
|
623
|
+
* expected to combine it with a trusted base directory via
|
|
624
|
+
* `path.join(baseDir, sanitized)`. Combined with a final
|
|
625
|
+
* `path.resolve(baseDir, sanitized).startsWith(path.resolve(baseDir))`
|
|
626
|
+
* check this fully closes the Zip-Slip and arbitrary-write class of bug.
|
|
627
|
+
*
|
|
628
|
+
* @param name - The candidate filename (typically from
|
|
629
|
+
* `UploadedFile.name`, a `Content-Disposition` header, or any other
|
|
630
|
+
* untrusted source).
|
|
631
|
+
* @returns A sanitized basename safe to combine with a trusted directory.
|
|
632
|
+
* @throws {BadRequestError} When the input reduces to an empty string or
|
|
633
|
+
* matches a Windows-reserved device name.
|
|
634
|
+
* @since 0.35.0
|
|
635
|
+
*/
|
|
636
|
+
export function sanitizeFilename(name) {
|
|
637
|
+
if (typeof name !== "string") {
|
|
638
|
+
throw new BadRequestError("Invalid filename");
|
|
639
|
+
}
|
|
640
|
+
// Step 1: basename — strip everything up to (and including) the last
|
|
641
|
+
// POSIX or Windows separator.
|
|
642
|
+
let base = name;
|
|
643
|
+
const lastSep = Math.max(base.lastIndexOf("/"), base.lastIndexOf("\\"));
|
|
644
|
+
if (lastSep !== -1)
|
|
645
|
+
base = base.slice(lastSep + 1);
|
|
646
|
+
// Step 2/3: strip control + Windows-reserved characters.
|
|
647
|
+
base = base.replace(CONTROL_CHAR_RE, "").replace(WINDOWS_RESERVED_CHARS_RE, "_");
|
|
648
|
+
// Step 4: strip leading dots so `.htaccess` / `..` / `.` cannot escape.
|
|
649
|
+
base = base.replace(/^\.+/, "");
|
|
650
|
+
// Step 5: trim trailing dots and spaces (Windows silently drops them).
|
|
651
|
+
base = base.replace(/[\s.]+$/, "");
|
|
652
|
+
if (base.length === 0) {
|
|
653
|
+
throw new BadRequestError("Invalid filename");
|
|
654
|
+
}
|
|
655
|
+
// Step 6: refuse Windows-reserved device names, with or without ext.
|
|
656
|
+
const stem = base.split(".")[0].toLowerCase();
|
|
657
|
+
if (WINDOWS_RESERVED_NAMES.has(stem)) {
|
|
658
|
+
throw new BadRequestError(`Reserved filename: ${name}`);
|
|
659
|
+
}
|
|
660
|
+
return base;
|
|
661
|
+
}
|
|
662
|
+
/**
|
|
663
|
+
* Validate that a candidate relative path is safe to combine with a
|
|
664
|
+
* trusted base directory — i.e. it cannot escape via `..` segments,
|
|
665
|
+
* absolute roots, drive letters, NUL truncation, or mixed
|
|
666
|
+
* POSIX/Windows separators.
|
|
667
|
+
*
|
|
668
|
+
* Throws {@link BadRequestError} on any of:
|
|
669
|
+
*
|
|
670
|
+
* - Empty input
|
|
671
|
+
* - NUL bytes (`evil\0../../etc/passwd` truncation)
|
|
672
|
+
* - Backslash characters (treated as Windows separators; rejecting
|
|
673
|
+
* them prevents POSIX callers being bypassed by `..\\..\\etc`)
|
|
674
|
+
* - POSIX absolute paths (`/etc/passwd`)
|
|
675
|
+
* - Windows drive letters or UNC roots (`C:\\foo`, `\\\\server\\share`)
|
|
676
|
+
* - Any segment equal to `..` after `/`-splitting
|
|
677
|
+
*
|
|
678
|
+
* Returns the normalized POSIX-style relative path on success. Designed
|
|
679
|
+
* for the Aikido / OWASP "Directory Traversal & File Exposure" class
|
|
680
|
+
* (`CVE-2023-26111` `node-static`, Zip Slip, `req.query.file` →
|
|
681
|
+
* `sendFile`).
|
|
682
|
+
*
|
|
683
|
+
* @param input - The candidate relative path.
|
|
684
|
+
* @returns The input unchanged when safe.
|
|
685
|
+
* @throws {BadRequestError} When the path could escape its base directory.
|
|
686
|
+
* @since 0.35.0
|
|
687
|
+
*/
|
|
688
|
+
export function assertSafeRelativePath(input) {
|
|
689
|
+
if (typeof input !== "string" || input.length === 0) {
|
|
690
|
+
throw new BadRequestError("Invalid path");
|
|
691
|
+
}
|
|
692
|
+
if (input.indexOf("\0") !== -1) {
|
|
693
|
+
throw new BadRequestError("Invalid path");
|
|
694
|
+
}
|
|
695
|
+
if (input.indexOf("\\") !== -1) {
|
|
696
|
+
throw new BadRequestError("Invalid path");
|
|
697
|
+
}
|
|
698
|
+
if (input.startsWith("/")) {
|
|
699
|
+
throw new BadRequestError("Invalid path");
|
|
700
|
+
}
|
|
701
|
+
// Windows drive letter `C:` or `c:` at the head.
|
|
702
|
+
if (input.length >= 2 && input.charAt(1) === ":") {
|
|
703
|
+
throw new BadRequestError("Invalid path");
|
|
704
|
+
}
|
|
705
|
+
for (const seg of input.split("/")) {
|
|
706
|
+
if (seg === "..") {
|
|
707
|
+
throw new BadRequestError("Invalid path");
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
return input;
|
|
711
|
+
}
|
|
712
|
+
// ---------------------------------------------------------------------------
|
|
713
|
+
// NoSQL operator-injection helpers (Aikido "NoSQL Injection" / OWASP A03).
|
|
714
|
+
// MongoDB-class drivers accept query objects whose keys ($ne, $gt, $regex,
|
|
715
|
+
// $where, …) change the query semantics. Apps that take a JSON request body
|
|
716
|
+
// and pass it straight to `Users.findOne({ username, password })` are the
|
|
717
|
+
// classic auth-bypass case (`password: { $ne: null }`). Daloy's
|
|
718
|
+
// `safeJsonParse` already strips prototype-pollution keys; these helpers
|
|
719
|
+
// add the operator-key check.
|
|
720
|
+
// ---------------------------------------------------------------------------
|
|
721
|
+
function walkForMongoOperators(value) {
|
|
722
|
+
if (value === null || typeof value !== "object")
|
|
723
|
+
return false;
|
|
724
|
+
if (Array.isArray(value)) {
|
|
725
|
+
for (const item of value) {
|
|
726
|
+
if (walkForMongoOperators(item))
|
|
727
|
+
return true;
|
|
728
|
+
}
|
|
729
|
+
return false;
|
|
730
|
+
}
|
|
731
|
+
for (const key of Object.keys(value)) {
|
|
732
|
+
if (key.length > 0 && key.charCodeAt(0) === 36 /* $ */)
|
|
733
|
+
return true;
|
|
734
|
+
if (walkForMongoOperators(value[key]))
|
|
735
|
+
return true;
|
|
736
|
+
}
|
|
737
|
+
return false;
|
|
738
|
+
}
|
|
739
|
+
/**
|
|
740
|
+
* Recursively scan a parsed JSON value (object / array / scalar) for any
|
|
741
|
+
* property key that starts with `$` — the MongoDB / NoSQL operator
|
|
742
|
+
* namespace (`$ne`, `$gt`, `$regex`, `$where`, …).
|
|
743
|
+
*
|
|
744
|
+
* Returns `true` on the first hit. Use before passing untrusted data
|
|
745
|
+
* into a query object that may be interpreted as an operator expression.
|
|
746
|
+
*
|
|
747
|
+
* @since 0.35.0
|
|
748
|
+
*/
|
|
749
|
+
export function hasMongoOperatorKeys(value) {
|
|
750
|
+
return walkForMongoOperators(value);
|
|
751
|
+
}
|
|
752
|
+
/**
|
|
753
|
+
* Throw {@link BadRequestError} when {@link hasMongoOperatorKeys}
|
|
754
|
+
* returns `true`. Safe to call on the parsed request body before
|
|
755
|
+
* threading it into a NoSQL driver — closes the
|
|
756
|
+
* `{"password": {"$ne": null}}` authentication-bypass class of bug.
|
|
757
|
+
*
|
|
758
|
+
* @since 0.35.0
|
|
759
|
+
*/
|
|
760
|
+
export function assertNoMongoOperators(value) {
|
|
761
|
+
if (walkForMongoOperators(value)) {
|
|
762
|
+
throw new BadRequestError("Operator-prefixed key rejected");
|
|
763
|
+
}
|
|
764
|
+
}
|
|
505
765
|
//# sourceMappingURL=security.js.map
|
package/dist/security.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|