Commit f562723
committed
fix(tasks): redact webhook query values and the reason phrase
The webhook URL is the credential, and redactWebhookUrlIn is what keeps it out
of a diagnostic that quotes an endpoint's reply. Two shapes escaped it.
Query values were never candidates. Only `pathname+search`, `search` and the
individual path segments were admitted, so a `?token=SUPERSECRET1` endpoint
that answers `bad token SUPERSECRET1` matched nothing — the whole `?token=…`
pair was a candidate but the echo quotes the value alone. `?token=` auth is an
ordinary deployment shape, not a corner case. Query values are now admitted in
both raw and decoded form; the raw query is split by hand rather than read from
searchParams, whose decoder turns `+` into a space and so would not match the
bytes an endpoint echoes.
All-lowercase candidates were exempted outright, on the theory that such a run
is a word rather than a token. A lowercase token is still a token. The exemption
existed to protect `services` and `webhooks`, the routing segments of the two
supported providers' paths, which are now named explicitly instead. Accepted
cost, stated in the JSDoc and pinned by a test: a generic webhook whose path
carries a long lowercase word has that word redacted from echoed diagnostics.
Also folds in `response.statusText`, which was interpolated into the message and
stored as `httpStatusText` with no redaction at all, and unlike the body was not
withheld for a private destination — leaving the SSRF read open through a
narrower channel, since a server can put anything in a reason phrase.
The length floor is unchanged and now applies to query values too, so a short
`?t=abc` still leaks. Same policy as segments, said out loud rather than
silently special-cased.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H797qbH356jjznKgUax63o1 parent 59529b9 commit f562723
2 files changed
Lines changed: 175 additions & 18 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
68 | 76 | | |
69 | 77 | | |
70 | 78 | | |
| |||
73 | 81 | | |
74 | 82 | | |
75 | 83 | | |
76 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
77 | 89 | | |
78 | 90 | | |
79 | 91 | | |
80 | 92 | | |
81 | 93 | | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
87 | 110 | | |
88 | 111 | | |
89 | 112 | | |
| |||
100 | 123 | | |
101 | 124 | | |
102 | 125 | | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
| 126 | + | |
107 | 127 | | |
108 | 128 | | |
109 | 129 | | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
110 | 138 | | |
111 | 139 | | |
112 | 140 | | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
117 | 160 | | |
118 | 161 | | |
119 | 162 | | |
| |||
582 | 625 | | |
583 | 626 | | |
584 | 627 | | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
585 | 633 | | |
586 | 634 | | |
587 | 635 | | |
588 | | - | |
| 636 | + | |
| 637 | + | |
589 | 638 | | |
590 | 639 | | |
591 | 640 | | |
592 | | - | |
| 641 | + | |
593 | 642 | | |
594 | 643 | | |
595 | 644 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
471 | 471 | | |
472 | 472 | | |
473 | 473 | | |
474 | | - | |
475 | | - | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
476 | 477 | | |
477 | 478 | | |
478 | 479 | | |
| |||
488 | 489 | | |
489 | 490 | | |
490 | 491 | | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
491 | 572 | | |
492 | 573 | | |
493 | 574 | | |
| |||
1252 | 1333 | | |
1253 | 1334 | | |
1254 | 1335 | | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
1255 | 1363 | | |
1256 | 1364 | | |
1257 | 1365 | | |
| |||
0 commit comments