fix(ploeg): verify forge webhook signatures before recording the delivery #141

Merged
ryangr0 merged 1 commit from ryangr0/ploeg-webhook-auth-before-dedup into development 2026-10-03 00:01:43 +00:00 AGit
Owner

handleForgeWebhook inserted the delivery id into forge_deliveries before the
provider checked the signature. An unsigned request carrying a real delivery
id got it recorded, and the genuine delivery that arrived later was answered
202 and dropped. Parsing, which verifies the signature against the raw body,
now runs first. Prepared in the 2026-10-02 Execution Pack (AUTH-01).

Adds a regression test: a rejected delivery leaves no dedup row, the verified retry with the same id is processed once, and an invalid replay after it is still rejected.

Verified with mise run verify on the pinned toolchain (all gates passed).

Ticket: https://vikunja.webgrip.dev/tasks/1715

🤖 Generated with Claude Code

handleForgeWebhook inserted the delivery id into forge_deliveries before the provider checked the signature. An unsigned request carrying a real delivery id got it recorded, and the genuine delivery that arrived later was answered 202 and dropped. Parsing, which verifies the signature against the raw body, now runs first. Prepared in the 2026-10-02 Execution Pack (AUTH-01). Adds a regression test: a rejected delivery leaves no dedup row, the verified retry with the same id is processed once, and an invalid replay after it is still rejected. Verified with `mise run verify` on the pinned toolchain (all gates passed). Ticket: https://vikunja.webgrip.dev/tasks/1715 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(ploeg): verify forge webhook signatures before recording the delivery
Some checks failed
[Workflow] On Pull Request / checks (pull_request) Has been cancelled
[Workflow] On Pull Request / warnings (pull_request) Has been cancelled
[Workflow] On Pull Request / release-policy (pull_request) Has been cancelled
86477f7ded
handleForgeWebhook inserted the delivery id into forge_deliveries before the
provider checked the signature. An unsigned request carrying a real delivery
id got it recorded, and the genuine delivery that arrived later was answered
202 and dropped. Parsing, which verifies the signature against the raw body,
now runs first. Prepared in the 2026-10-02 Execution Pack (AUTH-01).

VIK-1715

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ryangr0 merged commit 1f08ee82b8 into development 2026-10-03 00:01:43 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
webgrip/unfold!141
No description provided.