Roadmap-to-9/10 (design: scratchpad/design/). Serial PROTO queue via WS-A. Brief at dispatch. DoD per docs/STORY-WORKFLOW.md.
Size S. Coordinate WS-B8.
Roadmap-to-9/10 (design: scratchpad/design/). Serial PROTO queue via WS-A. Brief at dispatch. DoD per docs/STORY-WORKFLOW.md.
Delivered via PR #343 (WS-D10, squash-merged to dev). Webhook dispatch now resolves the host once, checks every candidate IP with is_blocked_webhook_target (#203), then pins the connection to the checked IP via reqwest .resolve(host, addr) (SNI/Host preserved -> cert validation unaffected) so reqwest cannot re-resolve — closing the DNS-rebind TOCTOU by construction. Test uses an unresolvable .invalid host reaching a wiremock loopback only via the override. Residual (trust in the single DNS answer; no multi-resolver/DNSSEC) documented as out-of-scope. Resolution+pinning now unconditional + malformed URL rejected up front (fail-closed improvements).
Delivered via PR #343 (WS-D10, squash-merged to dev). Webhook dispatch now resolves the host once, checks every candidate IP with is_blocked_webhook_target (#203), then pins the connection to the checked IP via reqwest .resolve(host, addr) (SNI/Host preserved -> cert validation unaffected) so reqwest cannot re-resolve — closing the DNS-rebind TOCTOU by construction. Test uses an unresolvable .invalid host reaching a wiremock loopback only via the override. Residual (trust in the single DNS answer; no multi-resolver/DNSSEC) documented as out-of-scope. Resolution+pinning now unconditional + malformed URL rejected up front (fail-closed improvements).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Size S. Coordinate WS-B8.
Roadmap-to-9/10 (design: scratchpad/design/). Serial PROTO queue via WS-A. Brief at dispatch. DoD per docs/STORY-WORKFLOW.md.
Delivered via PR #343 (WS-D10, squash-merged to dev). Webhook dispatch now resolves the host once, checks every candidate IP with is_blocked_webhook_target (#203), then pins the connection to the checked IP via reqwest .resolve(host, addr) (SNI/Host preserved -> cert validation unaffected) so reqwest cannot re-resolve — closing the DNS-rebind TOCTOU by construction. Test uses an unresolvable .invalid host reaching a wiremock loopback only via the override. Residual (trust in the single DNS answer; no multi-resolver/DNSSEC) documented as out-of-scope. Resolution+pinning now unconditional + malformed URL rejected up front (fail-closed improvements).
Reopening — closed in error. PR #343 delivered WS-D10 (webhook IP-pin, issue #306), not this WS-D11 (remove dead age cipher), which is not started.