@glubean/redaction 0.8.4 → 0.9.1

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 CHANGED
@@ -84,8 +84,9 @@ Built-in handlers:
84
84
  |---------|---------|
85
85
  | `json` | Recursive JSON object/array walker |
86
86
  | `raw-string` | Value-pattern matching on plain strings |
87
- | `url-query` | Parse URL, redact query params, serialize back |
88
- | `headers` | Header map with cookie/set-cookie parsing |
87
+ | `url-query` | Parse URL (absolute or relative), redact query params, serialize back |
88
+ | `headers` | Header map with cookie/set-cookie parsing (cookie values masked structurally) |
89
+ | `body` | HTTP body: object → JSON walk; string → JSON-as-text / form-urlencoded / value-pattern |
89
90
 
90
91
  ### Plugins
91
92
 
@@ -7,12 +7,6 @@
7
7
  * They use the same shape as external plugin declarations.
8
8
  */
9
9
  import type { GlobalRules, RedactionConfig, RedactionScopeDeclaration } from "./types.js";
10
- /**
11
- * Built-in scope declarations for HTTP, log, error, assertion, and step events.
12
- *
13
- * These are the "http-plugin" built-in contributor — they use the same
14
- * declaration model as any external plugin.
15
- */
16
10
  export declare const BUILTIN_SCOPES: RedactionScopeDeclaration[];
17
11
  /**
18
12
  * Regex source strings for built-in value-level patterns.
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAIpB;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,yBAAyB,EAuMrD,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAClC,MAAM,EACN;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkClC,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAalC,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,eAO5B,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAyDpB,eAAO,MAAM,cAAc,EAAE,yBAAyB,EAkUrD,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAClC,MAAM,EACN;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkClC,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAalC,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,eAO5B,CAAC"}
package/dist/defaults.js CHANGED
@@ -13,6 +13,52 @@
13
13
  * These are the "http-plugin" built-in contributor — they use the same
14
14
  * declaration model as any external plugin.
15
15
  */
16
+ /**
17
+ * Shared credential key set for the HTTP trace scopes (headers/body/query/
18
+ * metadata/target/name). One source of truth so a scope can't silently omit a
19
+ * baseline alias (codex GLU-104 R6 P1: `credential`/`credentials`/`ssh_key`/
20
+ * `bearer` were missing from the per-scope lists and leaked). Matching is
21
+ * case-insensitive SUBSTRING (sensitiveKeysPlugin), so compounds are covered.
22
+ *
23
+ * Deliberately EXCLUDES bare `auth`: as a substring it matches — and (in event
24
+ * scopes, which nuke a sensitive key's whole subtree) DESTROYS — common
25
+ * non-secret fields like `author`, `authority`, `authored`, `unauthorized`.
26
+ * Real auth credentials are covered by `authorization` / the `auth_token`
27
+ * compounds / the `bearer` + `jwt` value-patterns instead; a bare field named
28
+ * exactly `auth` holding an opaque value is the accepted residual (documented,
29
+ * same class as the `token`/`tokenCount` tradeoff — a redaction library must
30
+ * not corrupt `author` to catch it).
31
+ */
32
+ const CREDENTIAL_KEYS = [
33
+ "authorization",
34
+ "proxy-authorization",
35
+ "bearer",
36
+ "authtoken",
37
+ "auth_token",
38
+ "auth-token",
39
+ "token",
40
+ "access_token",
41
+ "refresh_token",
42
+ "id_token",
43
+ "session_token",
44
+ "secret",
45
+ "client_secret",
46
+ "client-secret",
47
+ "password",
48
+ "passwd",
49
+ "api_key",
50
+ "api-key",
51
+ "apikey",
52
+ "x-api-key",
53
+ "credential",
54
+ "credentials",
55
+ "private_key",
56
+ "privatekey",
57
+ "private-key",
58
+ "ssh_key",
59
+ "sessionid",
60
+ "session_id",
61
+ ];
16
62
  export const BUILTIN_SCOPES = [
17
63
  {
18
64
  id: "http.request.headers",
@@ -21,7 +67,13 @@ export const BUILTIN_SCOPES = [
21
67
  target: "data.requestHeaders",
22
68
  handler: "headers",
23
69
  rules: {
24
- sensitiveKeys: ["authorization", "cookie", "x-api-key", "proxy-authorization"],
70
+ // GLU-104: covers standard + non-standard auth/secret headers. Cookie
71
+ // VALUES no longer depend on this list — `headersHandler` masks every
72
+ // `Cookie:` value structurally (a cookie is credential material by
73
+ // default), which fixes opaquely-named session cookies AND let us drop
74
+ // the over-broad `sid`/`session` substrings (R1 P2). `cookie` is kept so
75
+ // a `Cookie` header still routes through the structural cookie branch.
76
+ sensitiveKeys: [...CREDENTIAL_KEYS, "cookie"],
25
77
  },
26
78
  },
27
79
  {
@@ -31,36 +83,61 @@ export const BUILTIN_SCOPES = [
31
83
  target: "data.url",
32
84
  handler: "url-query",
33
85
  rules: {
34
- sensitiveKeys: [
35
- "token",
36
- "access_token",
37
- "refresh_token",
38
- "api_key",
39
- "apikey",
40
- "api-key",
41
- "secret",
42
- "password",
43
- ],
86
+ sensitiveKeys: [...CREDENTIAL_KEYS],
87
+ },
88
+ },
89
+ {
90
+ id: "http.request.requestedUrl",
91
+ name: "HTTP requested (relative) URL",
92
+ event: "trace",
93
+ // GLU-104 (codex R3 P2): a trace can carry `requestedUrl` — the author's
94
+ // ORIGINAL relative URL (`/login?token=…`), captured before resolution.
95
+ // `data.url` only covers the resolved absolute URL, so without this a
96
+ // secret in a relative URL's query leaked. `url-query` now parses relative
97
+ // URLs (synthetic base).
98
+ target: "data.requestedUrl",
99
+ handler: "url-query",
100
+ rules: {
101
+ sensitiveKeys: [...CREDENTIAL_KEYS],
102
+ },
103
+ },
104
+ {
105
+ id: "http.target",
106
+ name: "Trace target",
107
+ event: "trace",
108
+ // GLU-104 (codex R5 P1): browser network traces set `target`/`name` to
109
+ // `${method} ${shortPath(url)}` where shortPath includes `u.search`
110
+ // (packages/browser/src/network.ts), so a query secret leaks via these
111
+ // fields even though `url` is masked. `url-query` splits on `?`, so the
112
+ // `${method} ${path}` prefix is preserved and only the query is redacted;
113
+ // a non-URL target (`get_weather`, `#submit-btn`) is value-pattern-scanned.
114
+ target: "data.target",
115
+ handler: "url-query",
116
+ rules: {
117
+ sensitiveKeys: [...CREDENTIAL_KEYS],
118
+ },
119
+ },
120
+ {
121
+ id: "http.name",
122
+ name: "Trace name",
123
+ event: "trace",
124
+ target: "data.name",
125
+ handler: "url-query",
126
+ rules: {
127
+ sensitiveKeys: [...CREDENTIAL_KEYS],
44
128
  },
45
129
  },
46
130
  {
47
131
  id: "http.request.body",
48
132
  name: "HTTP request body",
49
133
  event: "trace",
134
+ // GLU-104: `body` (not `json`) so a NON-JSON request body captured as a
135
+ // raw string — a form-urlencoded login `password=hunter2&client_secret=x`
136
+ // — is redacted by param name, not just value-pattern-scanned.
50
137
  target: "data.requestBody",
51
- handler: "json",
138
+ handler: "body",
52
139
  rules: {
53
- sensitiveKeys: [
54
- "password",
55
- "passwd",
56
- "secret",
57
- "token",
58
- "client_secret",
59
- "client-secret",
60
- "private_key",
61
- "privatekey",
62
- "private-key",
63
- ],
140
+ sensitiveKeys: [...CREDENTIAL_KEYS],
64
141
  },
65
142
  },
66
143
  {
@@ -70,15 +147,63 @@ export const BUILTIN_SCOPES = [
70
147
  target: "data.responseHeaders",
71
148
  handler: "headers",
72
149
  rules: {
73
- sensitiveKeys: ["set-cookie"],
150
+ // GLU-104: `Set-Cookie` VALUES are masked structurally by
151
+ // `headersHandler` (a minted session cookie is credential material, its
152
+ // name arbitrary) — no longer name-list-dependent, so the over-broad
153
+ // `sid`/`session` substrings are gone (codex R1 P2). These keys still
154
+ // cover plain sensitive response headers (`X-Auth-Token`, ...).
155
+ sensitiveKeys: [...CREDENTIAL_KEYS, "set-cookie", "cookie"],
74
156
  },
75
157
  },
76
158
  {
77
159
  id: "http.response.body",
78
160
  name: "HTTP response body",
79
161
  event: "trace",
162
+ // GLU-104: `body` handler (see request body) + a real sensitiveKeys list.
163
+ // Previously this scope declared NO sensitiveKeys and used `json`, so only
164
+ // global value-PATTERN plugins ran — a plain-string secret under a
165
+ // recognizably-named key (`{"token":"sk_live_..."}`, `{"access_token":...}`)
166
+ // passed through whenever its value matched no pattern (confirmed
167
+ // empirically). A login/refresh response carries the same secret shapes a
168
+ // request does — this list mirrors `http.request.body` (which has carried
169
+ // `token` since before GLU-104), so request/response redact symmetrically.
170
+ //
171
+ // Note on `token`: sensitive-key matching is substring (sensitiveKeysPlugin),
172
+ // so `token` also masks compound fields like `tokenCount`/`tokensUsed`
173
+ // (codex R4). This is INTENTIONAL and conservative for a redaction library:
174
+ // over-masking a usage counter in a redacted debug/upload view is strictly
175
+ // preferable to leaking an opaque `{"token":"<credential>"}` whose value
176
+ // matches no pattern. A precise (suffix/word-boundary) matcher would be a
177
+ // general redaction-engine change across all consumers, out of scope here.
80
178
  target: "data.responseBody",
179
+ handler: "body",
180
+ rules: {
181
+ sensitiveKeys: [...CREDENTIAL_KEYS],
182
+ },
183
+ },
184
+ {
185
+ id: "http.metadata",
186
+ name: "Trace metadata",
187
+ event: "trace",
188
+ // GLU-104 (codex R1 P1): the generic `Trace.metadata` field carries
189
+ // protocol-specific auth material — notably gRPC call metadata under
190
+ // `requestMetadata`/`responseMetadata` (packages/grpc emits
191
+ // `data.metadata.requestMetadata.authorization`). The `@glubean/grpc`
192
+ // plugin declares its own `grpc.metadata` scope, but that's only compiled
193
+ // when a caller passes it as `pluginScopes` — the MCP local-trace path
194
+ // compiles BUILTIN_SCOPES only, so without a baseline metadata scope gRPC
195
+ // auth tokens flowed into `glubean_run_local_file` output. The `json`
196
+ // handler recurses into the nested metadata objects; non-secret siblings
197
+ // (`service`/`method`/`peer`) match no key and are preserved.
198
+ target: "data.metadata",
81
199
  handler: "json",
200
+ rules: {
201
+ // metadata can carry either shape (gRPC auth headers OR credential-valued
202
+ // fields), so it uses the full shared credential set + `cookie`. codex
203
+ // R4 P2 (`password`/`private_key`/`sessionid` missing) and R6 P1
204
+ // (`credential`/`ssh_key`/`bearer` missing) are both covered now.
205
+ sensitiveKeys: [...CREDENTIAL_KEYS, "cookie"],
206
+ },
82
207
  },
83
208
  {
84
209
  id: "log.message",
@@ -212,6 +337,50 @@ export const BUILTIN_SCOPES = [
212
337
  target: "name",
213
338
  handler: "raw-string",
214
339
  },
340
+ {
341
+ // GLU-105: `browser:download` evidence (packages/browser/src/page.ts) is
342
+ // emitted via ctx.event as an ExecutionEvent of type "event" wrapping
343
+ // { type, data:{ url, … } }. A download can start from a signed/
344
+ // credentialed URL (an S3 pre-signed link: `?X-Amz-Signature=…` /
345
+ // `?token=…`), which would otherwise persist to the local result JSON +
346
+ // upload in plaintext. url-query masks only the sensitive query params.
347
+ id: "browser.download.url",
348
+ name: "Browser download URL query",
349
+ event: "event",
350
+ target: "data.data.url",
351
+ handler: "url-query",
352
+ rules: {
353
+ sensitiveKeys: [
354
+ ...CREDENTIAL_KEYS,
355
+ "signature",
356
+ "sig",
357
+ "x-amz-signature",
358
+ "x-amz-credential",
359
+ "x-amz-security-token",
360
+ ],
361
+ },
362
+ },
363
+ {
364
+ // GLU-105: `page.waitForDownload()` (packages/browser/src/page.ts) emits an
365
+ // action whose `detail.url` copies the same download URL as the
366
+ // browser:download event above — redact its query the same way so the
367
+ // action sink doesn't leak what the event sink masks.
368
+ id: "browser.waitForDownload.url",
369
+ name: "Browser waitForDownload action URL query",
370
+ event: "action",
371
+ target: "data.detail.url",
372
+ handler: "url-query",
373
+ rules: {
374
+ sensitiveKeys: [
375
+ ...CREDENTIAL_KEYS,
376
+ "signature",
377
+ "sig",
378
+ "x-amz-signature",
379
+ "x-amz-credential",
380
+ "x-amz-security-token",
381
+ ],
382
+ },
383
+ },
215
384
  ];
216
385
  // ── Built-in pattern source strings ──────────────────────────────────────────
217
386
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"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"}
package/dist/engine.d.ts CHANGED
@@ -74,6 +74,14 @@ export declare class RedactionEngine {
74
74
  * @param ctx Optional scope context for plugin dispatch.
75
75
  */
76
76
  redact(value: unknown, ctx?: ScopeContext): RedactionResult;
77
+ /**
78
+ * Mask a scalar as fully sensitive, honoring the configured replacement
79
+ * format. Mirrors the key-level masking the walker applies to a value under
80
+ * a sensitive key (`genericPartialMask` for "partial", `[REDACTED]`
81
+ * otherwise). Used by handlers that decide sensitivity structurally rather
82
+ * than via key/pattern plugins (e.g. cookie values under a Cookie header).
83
+ */
84
+ maskValue(value: string): string;
77
85
  private walkValue;
78
86
  private walkObject;
79
87
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEV,eAAe,EACf,eAAe,EACf,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,0BAA0B;IAC1B,iBAAiB,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;;;;;;;;;OAiBG;IACH,yBAAyB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmC;IACrE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAc;gBAE5C,OAAO,EAAE,sBAAsB;IAQ3C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,eAAe;IAa3D,OAAO,CAAC,SAAS;IAiDjB,OAAO,CAAC,UAAU;IAoGlB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAoC1B,OAAO,CAAC,UAAU;CA4CnB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEV,eAAe,EACf,eAAe,EACf,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,0BAA0B;IAC1B,iBAAiB,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;;;;;;;;;OAiBG;IACH,yBAAyB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmC;IACrE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAc;gBAE5C,OAAO,EAAE,sBAAsB;IAQ3C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,eAAe;IAW3D;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQhC,OAAO,CAAC,SAAS;IAiDjB,OAAO,CAAC,UAAU;IAmHlB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAoC1B,OAAO,CAAC,UAAU;CA4CnB"}
package/dist/engine.js CHANGED
@@ -54,6 +54,18 @@ export class RedactionEngine {
54
54
  details,
55
55
  };
56
56
  }
57
+ /**
58
+ * Mask a scalar as fully sensitive, honoring the configured replacement
59
+ * format. Mirrors the key-level masking the walker applies to a value under
60
+ * a sensitive key (`genericPartialMask` for "partial", `[REDACTED]`
61
+ * otherwise). Used by handlers that decide sensitivity structurally rather
62
+ * than via key/pattern plugins (e.g. cookie values under a Cookie header).
63
+ */
64
+ maskValue(value) {
65
+ return this.replacementFormat === "partial"
66
+ ? genericPartialMask(value)
67
+ : "[REDACTED]";
68
+ }
57
69
  // ── Private recursive walker ──────────────────────────────────────────
58
70
  walkValue(value, scope, path, details, depth) {
59
71
  if (depth > this.maxDepth) {
@@ -137,6 +149,21 @@ export class RedactionEngine {
137
149
  }
138
150
  continue;
139
151
  }
152
+ // GLU-123 codex round: in schema-preserving mode a BOOLEAN scalar
153
+ // under a sensitive key is left untouched. `true`/`false` is a valid
154
+ // JSON-Schema node on its own (`properties.password: true` means
155
+ // "any value accepted") — masking it to a redaction STRING corrupts
156
+ // the schema's type, exactly the corruption `sensitiveKeyRecurse`
157
+ // exists to prevent for objects/arrays. A boolean also carries no
158
+ // real secret entropy (1 bit), so skipping it costs nothing
159
+ // security-wise. Only applies in `sensitiveKeyRecurse` mode — the
160
+ // non-recurse (event) path still nukes sensitive-keyed booleans
161
+ // wholesale, unchanged.
162
+ if (this.sensitiveKeyRecurse && typeof value === "boolean") {
163
+ const redacted = this.walkValue(value, scope, keyPath, details, depth + 1);
164
+ result[key] = redacted.value;
165
+ continue;
166
+ }
140
167
  if (this.replacementFormat === "partial") {
141
168
  const str = value === null || value === undefined ? "" : String(value);
142
169
  result[key] = genericPartialMask(str);
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  * - `raw-string` — value-pattern matching only
8
8
  * - `url-query` — parse URL, redact query param names/values, serialize back
9
9
  * - `headers` — header map with case-insensitive keys, cookie/set-cookie parsing
10
+ * - `body` — HTTP body: object → json walk; string → form/text/xml redaction
10
11
  */
11
12
  import type { RedactionHandler } from "./types.js";
12
13
  /**
@@ -20,10 +21,29 @@ export declare const jsonHandler: RedactionHandler;
20
21
  */
21
22
  export declare const rawStringHandler: RedactionHandler;
22
23
  /**
23
- * Parses a URL string, redacts query parameter names/values using the engine,
24
- * then serializes back to a URL string.
24
+ * Redacts sensitive params in a URL string in BOTH the `?query` AND a
25
+ * `#fragment` when the fragment is `k=v`-shaped (OAuth implicit-grant tokens
26
+ * live in the fragment: `#access_token=…`, codex R5 P2).
27
+ *
28
+ * GLU-104 (codex R3/R4/R5): works for ANY URL shape — absolute, relative
29
+ * (`/login?token=…`), query-only (`?token=…`), bare-relative
30
+ * (`todos/1?token=…`), or protocol-relative (`//host/p?token=…`) — WITHOUT a
31
+ * URL parser (which throws on relative shapes and mangled query-only /
32
+ * protocol-relative forms). We operate purely on the ORIGINAL string: split off
33
+ * the `?query` and `#fragment` segments, redact each by key, and splice back so
34
+ * the prefix and non-param structure are preserved. Values are re-encoded only
35
+ * when something was actually redacted; a URL with no sensitive param is
36
+ * returned untouched (path/token-shaped secrets are still value-pattern-scanned
37
+ * via the raw-string fallback).
25
38
  */
26
39
  export declare const urlQueryHandler: RedactionHandler;
40
+ /**
41
+ * HTTP body handler. Objects/arrays walk like the `json` handler (key + value
42
+ * plugins); raw strings go through `redactStringBody` (form/text/xml). Use for
43
+ * `data.requestBody` / `data.responseBody`, which the runner captures as EITHER
44
+ * a parsed object (JSON) or a raw string (everything else).
45
+ */
46
+ export declare const bodyHandler: RedactionHandler;
27
47
  /**
28
48
  * Handles HTTP header maps with special treatment for cookie headers.
29
49
  *
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAA6D,MAAM,YAAY,CAAC;AAI9G;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,gBAKzB,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAe9B,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,gBA0D7B,CAAC;AA4BF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,gBA+E5B,CAAC;AAkDF,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAK7D,CAAC"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAA6D,MAAM,YAAY,CAAC;AAI9G;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,gBAKzB,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAe9B,CAAC;AAuCF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,EAAE,gBAoE7B,CAAC;AA0GF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,gBAWzB,CAAC;AA4BF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,gBA4G5B,CAAC;AAoIF,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAM7D,CAAC"}
package/dist/handlers.js CHANGED
@@ -7,6 +7,7 @@
7
7
  * - `raw-string` — value-pattern matching only
8
8
  * - `url-query` — parse URL, redact query param names/values, serialize back
9
9
  * - `headers` — header map with case-insensitive keys, cookie/set-cookie parsing
10
+ * - `body` — HTTP body: object → json walk; string → form/text/xml redaction
10
11
  */
11
12
  // ── json handler ─────────────────────────────────────────────────────────────
12
13
  /**
@@ -42,8 +43,51 @@ export const rawStringHandler = {
42
43
  };
43
44
  // ── url-query handler ────────────────────────────────────────────────────────
44
45
  /**
45
- * Parses a URL string, redacts query parameter names/values using the engine,
46
- * then serializes back to a URL string.
46
+ * Redact the values of sensitive-named params in a `k=v&k2=v2` param string
47
+ * (a URL query OR an OAuth-implicit fragment). Empty values are left as-is
48
+ * (nothing to hide — avoids `?token=` → `?token=****`, codex R5). Returns the
49
+ * re-encoded param string and whether anything changed.
50
+ */
51
+ function redactParamString(paramStr, ctx, engine) {
52
+ const entries = [...new URLSearchParams(paramStr).entries()];
53
+ if (entries.length === 0) {
54
+ return { value: paramStr, redacted: false, details: [] };
55
+ }
56
+ let didRedact = false;
57
+ const details = [];
58
+ const out = new URLSearchParams();
59
+ for (const [key, raw] of entries) {
60
+ if (raw === "") {
61
+ out.append(key, ""); // empty value — no secret to mask
62
+ continue;
63
+ }
64
+ const r = engine.redact({ [key]: raw }, { id: ctx.scopeId, name: ctx.scopeName });
65
+ if (r.redacted) {
66
+ out.append(key, String(r.value[key] ?? raw));
67
+ didRedact = true;
68
+ details.push(...r.details);
69
+ }
70
+ else {
71
+ out.append(key, raw);
72
+ }
73
+ }
74
+ return { value: out.toString(), redacted: didRedact, details };
75
+ }
76
+ /**
77
+ * Redacts sensitive params in a URL string — in BOTH the `?query` AND a
78
+ * `#fragment` when the fragment is `k=v`-shaped (OAuth implicit-grant tokens
79
+ * live in the fragment: `#access_token=…`, codex R5 P2).
80
+ *
81
+ * GLU-104 (codex R3/R4/R5): works for ANY URL shape — absolute, relative
82
+ * (`/login?token=…`), query-only (`?token=…`), bare-relative
83
+ * (`todos/1?token=…`), or protocol-relative (`//host/p?token=…`) — WITHOUT a
84
+ * URL parser (which throws on relative shapes and mangled query-only /
85
+ * protocol-relative forms). We operate purely on the ORIGINAL string: split off
86
+ * the `?query` and `#fragment` segments, redact each by key, and splice back so
87
+ * the prefix and non-param structure are preserved. Values are re-encoded only
88
+ * when something was actually redacted; a URL with no sensitive param is
89
+ * returned untouched (path/token-shaped secrets are still value-pattern-scanned
90
+ * via the raw-string fallback).
47
91
  */
48
92
  export const urlQueryHandler = {
49
93
  name: "url-query",
@@ -51,49 +95,173 @@ export const urlQueryHandler = {
51
95
  if (typeof value !== "string") {
52
96
  return { value, redacted: false, details: [] };
53
97
  }
54
- let url;
55
- try {
56
- url = new URL(value);
98
+ const qIndex = value.indexOf("?");
99
+ const hashIndex = value.indexOf("#");
100
+ const hasQuery = qIndex !== -1 && (hashIndex === -1 || qIndex < hashIndex);
101
+ let prefix = value;
102
+ let queryStr = null;
103
+ let fragStr = null;
104
+ if (hasQuery) {
105
+ prefix = value.slice(0, qIndex);
106
+ const afterQ = value.slice(qIndex + 1);
107
+ const h = afterQ.indexOf("#");
108
+ queryStr = h === -1 ? afterQ : afterQ.slice(0, h);
109
+ if (h !== -1)
110
+ fragStr = afterQ.slice(h + 1);
57
111
  }
58
- catch {
59
- // Not a valid URL — fall back to raw string redaction
60
- return engine.redact(value, { id: ctx.scopeId, name: ctx.scopeName });
112
+ else if (hashIndex !== -1) {
113
+ prefix = value.slice(0, hashIndex);
114
+ fragStr = value.slice(hashIndex + 1);
61
115
  }
62
- // Collect all entries first to preserve multiplicity (e.g., ?token=a&token=b)
63
- const entries = [...url.searchParams.entries()];
64
- if (entries.length === 0) {
65
- return { value, redacted: false, details: [] };
116
+ // Only a `k=v`-shaped fragment carries params worth key-redaction
117
+ // (`#access_token=…`); a plain anchor (`#section`) is left alone.
118
+ const fragIsParams = fragStr !== null && fragStr.includes("=");
119
+ // Nothing structured to redact by key → value-pattern-scan the whole
120
+ // string (catches a token embedded in the path or a non-param fragment).
121
+ if (!hasQuery && !fragIsParams) {
122
+ return engine.redact(value, { id: ctx.scopeId, name: ctx.scopeName });
66
123
  }
67
124
  let didRedact = false;
68
125
  const details = [];
69
- const redactedEntries = [];
70
- for (const [key, raw] of entries) {
71
- const result = engine.redact({ [key]: raw }, { id: ctx.scopeId, name: ctx.scopeName });
72
- if (result.redacted) {
73
- const redacted = result.value;
74
- redactedEntries.push([key, String(redacted[key] ?? raw)]);
126
+ let outQuery = queryStr;
127
+ if (hasQuery && queryStr !== null) {
128
+ const rq = redactParamString(queryStr, ctx, engine);
129
+ outQuery = rq.value;
130
+ if (rq.redacted) {
75
131
  didRedact = true;
76
- details.push(...result.details);
132
+ details.push(...rq.details);
77
133
  }
78
- else {
79
- redactedEntries.push([key, raw]);
134
+ }
135
+ let outFrag = fragStr;
136
+ if (fragIsParams && fragStr !== null) {
137
+ const rf = redactParamString(fragStr, ctx, engine);
138
+ outFrag = rf.value;
139
+ if (rf.redacted) {
140
+ didRedact = true;
141
+ details.push(...rf.details);
80
142
  }
81
143
  }
82
144
  if (!didRedact) {
145
+ // Nothing sensitive — return the ORIGINAL string untouched.
83
146
  return { value, redacted: false, details };
84
147
  }
85
- // Rebuild URL with redacted params, preserving multiplicity
86
- const redactedUrl = new URL(url.origin + url.pathname);
87
- for (const [k, v] of redactedEntries) {
88
- redactedUrl.searchParams.append(k, v);
148
+ let result = prefix;
149
+ if (hasQuery)
150
+ result += `?${outQuery ?? ""}`;
151
+ if (fragStr !== null)
152
+ result += `#${outFrag ?? ""}`;
153
+ return { value: result, redacted: true, details };
154
+ },
155
+ };
156
+ // ── body handler ─────────────────────────────────────────────────────────────
157
+ /**
158
+ * Does this string look like an `application/x-www-form-urlencoded` body —
159
+ * `k=v` or `k=v&k2=v2` with URL-safe-ish keys and no obvious JSON/XML lead-in?
160
+ * Strict on purpose: a false positive would round-trip an arbitrary text body
161
+ * through URLSearchParams and could normalize its encoding. Free-text that
162
+ * merely contains an `=` (`note = 3`, prose, a stack trace) must NOT match.
163
+ */
164
+ const FORM_URLENCODED_RE = /^[^=&\s]+=[^&]*(?:&[^=&\s]+=[^&]*)*$/;
165
+ function looksLikeFormUrlEncoded(str) {
166
+ const s = str.trim();
167
+ if (!s || s[0] === "{" || s[0] === "[" || s[0] === "<")
168
+ return false;
169
+ return FORM_URLENCODED_RE.test(s);
170
+ }
171
+ /**
172
+ * Redact a NON-object (string) HTTP body captured as raw text by the runner —
173
+ * a form-urlencoded request body, or a `text/*` / `xml` / mislabelled body (the
174
+ * harness only parses `application/json` content-types into objects; everything
175
+ * else stays a string). GLU-104: the plain `json` handler value-pattern-scans a
176
+ * string but never applies KEY-based rules to it, so a form body
177
+ * `password=hunter2` or a JSON body served as `text/plain`
178
+ * (`{"token":"plain"}`) leaked. Here we:
179
+ * 0. if the string parses as a JSON object/array (a body mislabelled as text,
180
+ * or any `content-type` the harness didn't treat as json — codex R2 P2),
181
+ * redact it STRUCTURALLY like a real object body, then re-serialize;
182
+ * 1. otherwise run the value-pattern scan (jwt/bearer/aws/etc) over the whole
183
+ * string;
184
+ * 2. and if it's clearly form-urlencoded, additionally mask the values of
185
+ * sensitive-NAMED params via the same key rules objects get.
186
+ *
187
+ * Residual (documented): a secret under a sensitive element name inside an
188
+ * XML/text body that is neither JSON nor form-urlencoded
189
+ * (`<password>plain</password>`) is only caught if its value matches a
190
+ * value-pattern — generic markup parsing is out of scope.
191
+ */
192
+ function redactStringBody(raw, ctx, engine) {
193
+ // 0. JSON-as-string: a body captured as text that is actually JSON
194
+ // (mislabelled content-type). Parse and redact structurally so KEY rules
195
+ // apply, not just value patterns. Only attempt for `{`/`[`-led strings so
196
+ // a bare number/quoted-string isn't needlessly reserialized.
197
+ const trimmed = raw.trim();
198
+ if (trimmed && (trimmed[0] === "{" || trimmed[0] === "[")) {
199
+ try {
200
+ const parsed = JSON.parse(trimmed);
201
+ if (parsed !== null && typeof parsed === "object") {
202
+ const r = engine.redact(parsed, { id: ctx.scopeId, name: ctx.scopeName });
203
+ // Only re-serialize when something was actually masked — otherwise
204
+ // return the ORIGINAL raw string so a clean body isn't silently
205
+ // reformatted (whitespace normalized) (codex R3 P3).
206
+ if (!r.redacted) {
207
+ return { value: raw, redacted: false, details: [] };
208
+ }
209
+ return {
210
+ value: JSON.stringify(r.value),
211
+ redacted: true,
212
+ details: r.details,
213
+ };
214
+ }
89
215
  }
90
- // Preserve hash
91
- redactedUrl.hash = url.hash;
92
- return {
93
- value: redactedUrl.toString(),
94
- redacted: true,
95
- details,
96
- };
216
+ catch {
217
+ // Not valid JSON — fall through to string scanning below.
218
+ }
219
+ }
220
+ // 1. Value-pattern scan over the raw string (walkString path).
221
+ const scanned = engine.redact(raw, { id: ctx.scopeId, name: ctx.scopeName });
222
+ let working = typeof scanned.value === "string" ? scanned.value : raw;
223
+ let didRedact = scanned.redacted;
224
+ const details = [...scanned.details];
225
+ // 2. Form-urlencoded: mask sensitive-named param values by key.
226
+ if (looksLikeFormUrlEncoded(working)) {
227
+ const params = new URLSearchParams(working);
228
+ const out = new URLSearchParams();
229
+ let changed = false;
230
+ for (const [key, val] of params.entries()) {
231
+ const r = engine.redact({ [key]: val }, { id: ctx.scopeId, name: ctx.scopeName });
232
+ if (r.redacted) {
233
+ const rv = r.value[key];
234
+ out.append(key, String(rv ?? val));
235
+ changed = true;
236
+ details.push(...r.details);
237
+ }
238
+ else {
239
+ out.append(key, val);
240
+ }
241
+ }
242
+ if (changed) {
243
+ working = out.toString();
244
+ didRedact = true;
245
+ }
246
+ }
247
+ return { value: working, redacted: didRedact, details };
248
+ }
249
+ /**
250
+ * HTTP body handler. Objects/arrays walk like the `json` handler (key + value
251
+ * plugins); raw strings go through `redactStringBody` (form/text/xml). Use for
252
+ * `data.requestBody` / `data.responseBody`, which the runner captures as EITHER
253
+ * a parsed object (JSON) or a raw string (everything else).
254
+ */
255
+ export const bodyHandler = {
256
+ name: "body",
257
+ process(value, ctx, engine) {
258
+ if (value !== null && typeof value === "object") {
259
+ return engine.redact(value, { id: ctx.scopeId, name: ctx.scopeName });
260
+ }
261
+ if (typeof value === "string") {
262
+ return redactStringBody(value, ctx, engine);
263
+ }
264
+ return { value, redacted: false, details: [] };
97
265
  },
98
266
  };
99
267
  // ── headers handler ──────────────────────────────────────────────────────────
@@ -140,17 +308,43 @@ export const headersHandler = {
140
308
  const details = [];
141
309
  for (const [headerName, headerValue] of Object.entries(input)) {
142
310
  const lower = headerName.toLowerCase();
143
- // Cookie header: parse into key/value pairs
311
+ // Cookie header: parse into key/value pairs, mask EVERY value.
312
+ // GLU-104: a Cookie header value is credential material by default
313
+ // (session ids, CSRF tokens, auth cookies) and cookie NAMES are
314
+ // arbitrary/opaque — masking selectively by name leaked opaquely-named
315
+ // session cookies (`Cookie: auth=<opaque>` when "auth" wasn't a listed
316
+ // key). Cookie NAMES (structure) are preserved; only values are masked.
144
317
  if (lower === "cookie" && typeof headerValue === "string") {
145
318
  const parsed = parseCookieHeader(headerValue);
146
- const result = engine.redact(parsed, {
147
- id: ctx.scopeId,
148
- name: ctx.scopeName,
149
- });
150
- output[headerName] = serializeCookieHeader(result.value);
151
- if (result.redacted) {
319
+ const cookieNames = Object.keys(parsed);
320
+ if (cookieNames.length > 0) {
321
+ const masked = {};
322
+ for (const [ck, cv] of Object.entries(parsed)) {
323
+ masked[ck] = maskCookieValue(cv, engine);
324
+ }
325
+ output[headerName] = serializeCookieHeader(masked);
326
+ didRedact = true;
327
+ details.push({
328
+ path: headerName,
329
+ plugin: "cookie",
330
+ original: headerValue,
331
+ });
332
+ }
333
+ else if (headerValue.trim() !== "") {
334
+ // Non-empty but UNPARSEABLE (no `name=value` pair, e.g. a bare
335
+ // opaque token `Cookie: <session-token>`). Structural masking found
336
+ // nothing to key on, so mask the whole value — a Cookie header is a
337
+ // sensitive header by definition and this fails closed (codex R2 P2).
338
+ output[headerName] = maskCookieValue(headerValue, engine);
152
339
  didRedact = true;
153
- details.push(...result.details);
340
+ details.push({
341
+ path: headerName,
342
+ plugin: "cookie",
343
+ original: headerValue,
344
+ });
345
+ }
346
+ else {
347
+ output[headerName] = headerValue;
154
348
  }
155
349
  continue;
156
350
  }
@@ -170,7 +364,14 @@ export const headersHandler = {
170
364
  const redactedCookies = [];
171
365
  for (const cookie of headerValue) {
172
366
  if (typeof cookie !== "string") {
173
- redactedCookies.push(cookie);
367
+ // Defensive (codex R5/R6): a malformed/manual trace could put a
368
+ // non-string in a set-cookie array — e.g. a cookie OBJECT
369
+ // `{ name: "sid", value: "<secret>" }` where the secret sits
370
+ // under the non-sensitive key `value`. Key-based redaction misses
371
+ // that; a cookie is sensitive by position, so mask ALL string
372
+ // leaves (structure + non-string scalars preserved).
373
+ redactedCookies.push(maskAllStringLeaves(cookie, engine));
374
+ didRedact = true;
174
375
  continue;
175
376
  }
176
377
  const redacted = redactSetCookie(cookie, ctx, engine);
@@ -195,35 +396,114 @@ export const headersHandler = {
195
396
  return { value: didRedact ? output : value, redacted: didRedact, details };
196
397
  },
197
398
  };
399
+ /**
400
+ * Mask a cookie VALUE as sensitive, honoring the engine's replacement format.
401
+ * Falls back to "[REDACTED]" for third-party engines that don't implement the
402
+ * optional `maskValue`.
403
+ */
404
+ function maskCookieValue(value, engine) {
405
+ return engine.maskValue ? engine.maskValue(value) : "[REDACTED]";
406
+ }
407
+ /** Max recursion depth for `maskAllStringLeaves` — bounds a pathological /
408
+ * cyclic manual-trace object so it can't stack-overflow (codex GLU-104
409
+ * confirmation review). `structuredClone` (used upstream by redactEvent)
410
+ * preserves cycles, so a depth guard is the safe stop condition. */
411
+ const MASK_LEAVES_MAX_DEPTH = 64;
412
+ /**
413
+ * Mask EVERY string leaf of a value, preserving structure and non-string
414
+ * scalars. Used for a non-string element found in a `set-cookie` array
415
+ * (a malformed/manual trace shape): a cookie is sensitive by HEADER POSITION,
416
+ * so key-based redaction is insufficient — the secret often sits under a
417
+ * non-sensitive key name like `value` in `{ name, value }` (codex GLU-104 R6).
418
+ */
419
+ function maskAllStringLeaves(value, engine, depth = 0) {
420
+ if (typeof value === "string") {
421
+ return maskCookieValue(value, engine);
422
+ }
423
+ // Fail closed on excessive depth (cyclic / pathological input): drop the
424
+ // subtree rather than emit it or recurse unbounded.
425
+ if (depth >= MASK_LEAVES_MAX_DEPTH) {
426
+ return "[REDACTED: too deep]";
427
+ }
428
+ if (Array.isArray(value)) {
429
+ return value.map((v) => maskAllStringLeaves(v, engine, depth + 1));
430
+ }
431
+ if (value !== null && typeof value === "object") {
432
+ const out = {};
433
+ for (const [k, v] of Object.entries(value)) {
434
+ out[k] = maskAllStringLeaves(v, engine, depth + 1);
435
+ }
436
+ return out;
437
+ }
438
+ return value; // numbers/booleans/null — not credential material
439
+ }
440
+ /**
441
+ * Standard Set-Cookie attribute names (lower-cased). Anything in attribute
442
+ * position that is NOT one of these is treated as a leaked fragment of a
443
+ * quoted/`;`-bearing cookie value and masked (codex R2 P2 edge).
444
+ */
445
+ const KNOWN_COOKIE_ATTRS = new Set([
446
+ "path",
447
+ "domain",
448
+ "expires",
449
+ "max-age",
450
+ "samesite",
451
+ "secure",
452
+ "httponly",
453
+ "priority",
454
+ "partitioned",
455
+ ]);
198
456
  /**
199
457
  * Redact a Set-Cookie header value.
200
- * Preserves cookie attributes (Path, Domain, HttpOnly, Secure, SameSite, Max-Age, Expires).
458
+ *
459
+ * GLU-104: masks the cookie value UNCONDITIONALLY (a Set-Cookie value is a
460
+ * credential being minted — session id / auth token — and the cookie name is
461
+ * arbitrary, so name-based selectivity leaked opaquely-named session cookies).
462
+ * Standard cookie attributes (Path, Domain, HttpOnly, Secure, SameSite,
463
+ * Max-Age, Expires, Priority, Partitioned) are structural, not secret, and are
464
+ * preserved verbatim; a NON-standard token in attribute position (which a
465
+ * naive `;` split of a quoted value can produce) is masked, not leaked.
201
466
  */
202
467
  function redactSetCookie(raw, ctx, engine) {
203
468
  const parts = raw.split(";").map((p) => p.trim());
204
- if (parts.length === 0) {
205
- return { value: raw, redacted: false, details: [] };
206
- }
207
469
  // First part is name=value
208
- const first = parts[0];
470
+ const first = parts[0] ?? "";
209
471
  const eq = first.indexOf("=");
210
472
  if (eq === -1) {
211
- return { value: raw, redacted: false, details: [] };
473
+ // No `name=value` structure (malformed / bare opaque token). A Set-Cookie
474
+ // header is a minted credential by definition — fail closed and mask the
475
+ // whole value rather than return it verbatim (codex R2 P2).
476
+ if (raw.trim() === "") {
477
+ return { value: raw, redacted: false, details: [] };
478
+ }
479
+ return {
480
+ value: maskCookieValue(raw, engine),
481
+ redacted: true,
482
+ details: [{ path: "set-cookie", plugin: "set-cookie", original: raw }],
483
+ };
212
484
  }
213
485
  const cookieName = first.slice(0, eq).trim();
214
486
  const cookieValue = first.slice(eq + 1).trim();
215
- const result = engine.redact({ [cookieName]: cookieValue }, { id: ctx.scopeId, name: ctx.scopeName });
216
- if (!result.redacted) {
217
- return { value: raw, redacted: false, details: [] };
218
- }
219
- const redacted = result.value;
220
- const redactedValue = String(redacted[cookieName] ?? cookieValue);
221
- // Reconstruct: redacted name=value + original attributes
222
- const attributes = parts.slice(1);
487
+ const redactedValue = maskCookieValue(cookieValue, engine);
488
+ // Attributes: keep standard ones verbatim; mask any non-standard token,
489
+ // which is most likely a leaked fragment of a `;`-bearing/quoted value.
490
+ // Drop EMPTY fragments (a trailing `;` — `sid=x; Path=/;` — would otherwise
491
+ // become a masked pseudo-attribute) (codex R3 P3).
492
+ const attributes = parts
493
+ .slice(1)
494
+ .filter((attr) => attr !== "")
495
+ .map((attr) => {
496
+ const attrName = attr.split("=")[0].trim().toLowerCase();
497
+ return KNOWN_COOKIE_ATTRS.has(attrName) ? attr : maskCookieValue(attr, engine);
498
+ });
223
499
  const reconstructed = attributes.length > 0
224
500
  ? `${cookieName}=${redactedValue}; ${attributes.join("; ")}`
225
501
  : `${cookieName}=${redactedValue}`;
226
- return { value: reconstructed, redacted: true, details: result.details };
502
+ return {
503
+ value: reconstructed,
504
+ redacted: true,
505
+ details: [{ path: cookieName, plugin: "set-cookie", original: cookieValue }],
506
+ };
227
507
  }
228
508
  // ── Handler registry ─────────────────────────────────────────────────────────
229
509
  /** All built-in handlers indexed by name. */
@@ -232,5 +512,6 @@ export const BUILTIN_HANDLERS = {
232
512
  "raw-string": rawStringHandler,
233
513
  "url-query": urlQueryHandler,
234
514
  headers: headersHandler,
515
+ body: bodyHandler,
235
516
  };
236
517
  //# sourceMappingURL=handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -26,7 +26,7 @@
26
26
  export type { CompiledScope, CustomPattern, GlobalRules, HandlerContext, RedactionConfig, RedactionContext, RedactionHandler, RedactionPlugin, RedactionResult, RedactionScope, RedactionScopeDeclaration, ScopeContext, ScopeRules, } from "./types.js";
27
27
  export { genericPartialMask, RedactionEngine } from "./engine.js";
28
28
  export type { RedactionEngineOptions } from "./engine.js";
29
- export { BUILTIN_HANDLERS, headersHandler, jsonHandler, rawStringHandler, urlQueryHandler, } from "./handlers.js";
29
+ export { bodyHandler, BUILTIN_HANDLERS, headersHandler, jsonHandler, rawStringHandler, urlQueryHandler, } from "./handlers.js";
30
30
  export { compileScopes, createScopeEngine, redactValue } from "./compiler.js";
31
31
  export type { CompilerOptions, ScopeOverride } from "./compiler.js";
32
32
  export { redactEvent } from "./adapter.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,YAAY,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,SAAS,EACT,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,YAAY,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,SAAS,EACT,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@
26
26
  // Engine
27
27
  export { genericPartialMask, RedactionEngine } from "./engine.js";
28
28
  // Handlers
29
- export { BUILTIN_HANDLERS, headersHandler, jsonHandler, rawStringHandler, urlQueryHandler, } from "./handlers.js";
29
+ export { bodyHandler, BUILTIN_HANDLERS, headersHandler, jsonHandler, rawStringHandler, urlQueryHandler, } from "./handlers.js";
30
30
  // Compiler
31
31
  export { compileScopes, createScopeEngine, redactValue } from "./compiler.js";
32
32
  // Adapter
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAmBH,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGlE,WAAW;AACX,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG9E,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,WAAW;AACX,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,UAAU;AACV,OAAO,EACL,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,SAAS,EACT,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAmBH,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGlE,WAAW;AACX,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG9E,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,WAAW;AACX,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,UAAU;AACV,OAAO,EACL,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,SAAS,EACT,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -51,6 +51,15 @@ export interface ScopeRules {
51
51
  */
52
52
  export interface RedactionEngineInterface {
53
53
  redact(value: unknown, ctx?: ScopeContext): RedactionResult;
54
+ /**
55
+ * Mask a scalar as fully sensitive, honoring the engine's replacement
56
+ * format (partial → `abc***xyz`, simple/labeled → `[REDACTED]`). For
57
+ * handlers that decide a value is sensitive STRUCTURALLY — e.g. a cookie
58
+ * value, sensitive by virtue of living under a `Cookie`/`Set-Cookie`
59
+ * header — rather than via key/pattern plugins. Optional so third-party
60
+ * engine implementations of this interface need not provide it.
61
+ */
62
+ maskValue?(value: string): string;
54
63
  }
55
64
  export interface RedactionHandler {
56
65
  /** Handler name — must match the `handler` field in scope declarations. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glubean/redaction",
3
- "version": "0.8.4",
3
+ "version": "0.9.1",
4
4
  "engines": {
5
5
  "node": ">=22"
6
6
  },