Description
EspoCRM before 10.0.4 is vulnerable to server-side request forgery. HostCheck::ipAddressIsNotInternal(), which validates outbound URLs to block requests to internal/private IP addresses, strips ::ffff: (IPv4-mapped IPv6) prefixes but does not recognize IPv6 transition addresses that embed private IPv4 addresses: NAT64 (64:ff9b::), 6to4 (2002::), and Teredo (2001:0000::). An attacker who controls a domain with AAAA records pointing to such transition addresses can bypass both the internal-host validation and the CURLOPT_RESOLVE IP-pinning check, causing EspoCRM to issue outbound requests to internal network services. Affected paths include POST /Attachment/fromImageUrl, reachable by any authenticated user with attachment access, and outbound webhook delivery, which requires an admin or API user.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| espocrm | espocrm | < 10.0.4 | 10.0.4 |
References
- GitHub Security Advisory (GHSA-xwmh-j8hf-cfqw) vendor-advisory
- VulnCheck Advisory: EspoCRM before 10.0.4 SSRF via IPv6 Transition Address Bypass third-party-advisory