Webhook SSRF DNS Rebinding Not Fully Mitigated
File: webhook_service.py:161-205
The DNS resolution happens at registration time and again at delivery time (_resolve_target), which is good. However, between resolution and the actual HTTP request (httpx.post), DNS could rebind to an internal IP. The host=connect_host substitution partially mitigates this, but httpx may still perform its own DNS resolution depending on transport configuration. Consider pinning via httpx.AsyncClient(transport=...) with explicit address binding.
Webhook SSRF DNS Rebinding Not Fully Mitigated
File: webhook_service.py:161-205
The DNS resolution happens at registration time and again at delivery time (_resolve_target), which is good. However, between resolution and the actual HTTP request (httpx.post), DNS could rebind to an internal IP. The host=connect_host substitution partially mitigates this, but httpx may still perform its own DNS resolution depending on transport configuration. Consider pinning via httpx.AsyncClient(transport=...) with explicit address binding.