Building a Hardened Webhook Ingestion Engine: Preventing Replay Attacks, Timing Side-Channels, and Why Our Automation Blew Up on Line 1
Описание и применение
Разработан защищённый механизм обработки вебхуков, включающий валидацию заголовков, десериализацию JSON, проверку HMAC‑SHA256 с постоянным временем сравнения, проверку временного окна и фильтр идемпотентности, что предотвращает атаки подделки, повторения и тайминг‑атаки.
Задача
Webhook endpoints are vulnerable to payload tampering, replay attacks, timing attacks, and idempotency race conditions when lacking strict defensive programming.
Результат
The hardened engine rejects malformed, tampered, or replayed webhooks with appropriate HTTP status codes (400, 401, 403, 409) and ensures each valid request is processed exactly once.
Рабочий процесс
- Receive HTTP POST with raw headers and body
- Validate headers via Pydantic v2
- Deserialize JSON from raw bytes with orjson and Pydantic v2
- Verify HMAC‑SHA256 signature using hmac.compare_digest
- Check timestamp drift against max_drift_seconds
- Check idempotency via MockRedisStore.is_duplicated
- Execute core business logic if all gates pass
Доказательства
Payload tampering and spoofing via missing or weak signature validation.
HMAC-SHA256 Signature Check (Constant-time compare_digest)
MockRedisStore.is_duplicated registers new ID with expiration timestamp
- Дата записи: 2026-10-19T11:41:20.358Z