GHSA-fpx8-73gf-7x73HighCVSS 8.5
Plane has SSRF via Incomplete IP Validation in Webhook URL Serializer
🔗 CVE IDs covered (1)
📋 Description
Summary
The webhook URL validation in plane/app/serializers/webhook.py only checks ip.is_loopback, allowing attackers with workspace ADMIN role to create webhooks pointing to private/internal network addresses (10.x.x.x, 172.16.x.x, 192.168.x.x, 169.254.169.254, etc.). When webhook events fire, the server makes requests to these internal addresses and stores the response — enabling SSRF with full response read-back.
Impact
- Cloud metadata exfiltration: Access AWS/GCP/Azure instance metadata (IAM credentials, tokens)
- Internal service scanning: Probe internal network services not exposed to the internet
- Data exfiltration via response logs: Full response body from internal services is stored and returned to the attacker through the webhook logs API
- Bypass vectors:
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,0.0.0.0,::ffff:mapped addresses
🎯 Affected products1
- pip/plane:<= 1.2.1