CVE-2023-39967

10.0 CRITICAL

📋 TL;DR

CVE-2023-39967 is a server-side request forgery (SSRF) vulnerability in WireMock Studio that allows attackers to make arbitrary HTTP requests from the WireMock instance to internal services. This affects users of WireMock Studio who have configured vulnerable request URLs. Attackers can exploit this to access internal systems using WireMock's credentials.

💻 Affected Systems

Products:
  • WireMock Studio
Versions: All versions up to discontinuation
Operating Systems: All platforms running WireMock Studio
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects WireMock Studio product, not the core WireMock library. Requires configuration fields accepting request URLs.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of internal network services, data exfiltration, and lateral movement using WireMock's credentials to access sensitive systems.

🟠

Likely Case

Unauthorized access to internal APIs, services, or data stores that are reachable from the WireMock instance.

🟢

If Mitigated

Limited impact if WireMock runs in isolated network segments with strict egress filtering and minimal credentials.

🌐 Internet-Facing: HIGH - If WireMock Studio is exposed to the internet, attackers can directly exploit this vulnerability.
🏢 Internal Only: MEDIUM - Internal attackers or compromised internal systems could exploit this for lateral movement.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation is straightforward via three attack vectors: TestRequester, webhooks, and proxy mode. Public advisory includes technical details.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: N/A

Vendor Advisory: https://github.com/wiremock/wiremock/security/advisories/GHSA-676j-xrv3-73vc

Restart Required: No

Instructions:

No official fix available. Vendor has discontinued WireMock Studio. Users must migrate to alternative solutions.

🔧 Temporary Workarounds

Disable vulnerable features

all

Disable TestRequester functionality, webhooks, and proxy mode in WireMock Studio configuration

Configure WireMock Studio to disable: testRequester.enabled=false, webhooks.enabled=false, proxy.enabled=false

Input validation for URLs

all

Implement strict validation to reject URLs containing localhost or internal IP addresses

Implement regex validation: reject URLs containing @127.0.0.1, @localhost, @192.168.*, @10.*, @172.16.*

🧯 If You Can't Patch

  • Immediately isolate WireMock Studio instances from internal networks using firewall rules
  • Migrate to alternative mocking solutions and decommission WireMock Studio entirely

🔍 How to Verify

Check if Vulnerable:

Check if WireMock Studio is installed and if any configuration accepts URLs with patterns like @127.0.0.1:port

Check Version:

Check WireMock Studio documentation or interface for version information

Verify Fix Applied:

Verify WireMock Studio has been removed or disabled, and test that vulnerable URL patterns are rejected

📡 Detection & Monitoring

Log Indicators:

  • Unusual outbound HTTP requests from WireMock instance to internal IP addresses
  • Requests containing @127.0.0.1 or similar patterns in URL fields

Network Indicators:

  • HTTP traffic from WireMock instance to unexpected internal services
  • Requests with unusual headers or methods originating from WireMock

SIEM Query:

source_ip=wiremock_instance AND dest_ip IN (internal_ranges) AND http_user_agent CONTAINS 'WireMock'

🔗 References

📤 Share & Export