CVE-2026-22662 Overview
CVE-2026-22662 is a blind Server-Side Request Forgery (SSRF) vulnerability discovered in prompts.chat, specifically within the Wiro media generator component. The vulnerability exists in versions prior to commit 1464475 and allows authenticated users to manipulate the inputImageUrl parameter to perform unauthorized server-side fetches. This can be exploited to probe internal networks, access internal services, and potentially exfiltrate data through the upstream Wiro service.
Critical Impact
Authenticated attackers can leverage this blind SSRF to scan internal infrastructure, access cloud metadata endpoints, and potentially pivot to internal services that would otherwise be unreachable from external networks.
Affected Products
- prompts.chat versions prior to commit 1464475
- Applications utilizing the Wiro media generator /api/media-generate endpoint
Discovery Timeline
- 2026-04-03 - CVE-2026-22662 published to NVD
- 2026-04-07 - Last updated in NVD database
Technical Details for CVE-2026-22662
Vulnerability Analysis
This blind SSRF vulnerability (CWE-918) resides in the Wiro media generator functionality of prompts.chat. The application accepts user-controlled inputImageUrl parameters via POST requests to the /api/media-generate endpoint without proper validation or URL filtering. Unlike traditional SSRF vulnerabilities, this is classified as "blind" because attackers do not receive direct response bodies from their malicious requests. However, the vulnerability still enables reconnaissance of internal network topology, access to internal services, and potential data exfiltration through side-channel techniques.
The vulnerability is exploitable over the network by any authenticated user. While authentication is required, no additional privileges are necessary to exploit this flaw. The impact is primarily on confidentiality, as attackers can extract information about internal services and potentially access sensitive data from internal endpoints.
Root Cause
The root cause of this vulnerability is insufficient input validation and URL sanitization in the media generation endpoint. The application directly processes user-supplied inputImageUrl values and forwards them to the upstream Wiro service without implementing proper allowlisting of permitted URL schemes, domains, or IP address ranges. This allows attackers to specify arbitrary URLs, including those pointing to internal network addresses such as 127.0.0.1, private IP ranges, or cloud metadata services.
Attack Vector
The attack is executed by sending specially crafted POST requests to the /api/media-generate endpoint. An authenticated attacker can manipulate the inputImageUrl parameter to target internal resources. Common attack patterns include probing for internal services on localhost and private IP ranges (e.g., 192.168.x.x, 10.x.x.x), accessing cloud metadata endpoints (e.g., http://169.254.169.254/), and attempting to connect to internal APIs or databases. Since this is a blind SSRF, attackers typically rely on timing differences or out-of-band techniques to confirm successful requests.
The vulnerability can be exploited to probe internal networks and discover running services, access cloud provider metadata services to obtain credentials or configuration data, bypass firewall restrictions by using the server as a proxy, and potentially exfiltrate sensitive information through DNS queries or timing-based side channels.
Detection Methods for CVE-2026-22662
Indicators of Compromise
- POST requests to /api/media-generate containing inputImageUrl values pointing to internal IP addresses (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x)
- Requests with inputImageUrl targeting cloud metadata endpoints such as 169.254.169.254
- Unusual patterns of requests to the media-generate endpoint from single authenticated users
- Outbound connections from the application server to unexpected internal hosts
Detection Strategies
- Implement web application firewall (WAF) rules to inspect and block requests containing internal IP addresses in the inputImageUrl parameter
- Deploy network monitoring to detect anomalous outbound connections from the prompts.chat server to internal network segments
- Configure application-level logging to capture all parameters submitted to the /api/media-generate endpoint for forensic analysis
- Use SentinelOne Singularity to monitor for suspicious network behavior patterns consistent with SSRF exploitation
Monitoring Recommendations
- Enable verbose logging on the application server to capture full request details including all POST parameters
- Monitor for DNS queries to internal hostnames originating from the prompts.chat server
- Set up alerts for any connections from the application server to cloud metadata IP ranges
- Review authentication logs to identify potential account compromise or abuse by authenticated users
How to Mitigate CVE-2026-22662
Immediate Actions Required
- Update prompts.chat to commit 1464475df2698fb7ccd0cdbc382b0750466f891d or later immediately
- Review application logs for any historical exploitation attempts against the /api/media-generate endpoint
- Implement network segmentation to limit the prompts.chat server's access to internal resources
- Consider disabling the media-generate functionality if not immediately required until patching is complete
Patch Information
The vulnerability has been addressed in commit 1464475. The fix is available in the GitHub repository. Organizations should pull the latest version from the repository or ensure their deployment includes this commit or any subsequent patches. Additional context and discussion can be found in the related pull request.
Workarounds
- Implement a reverse proxy or WAF rule to validate inputImageUrl parameters and reject requests containing internal IP addresses or private network ranges
- Configure network-level controls to prevent the application server from initiating connections to internal networks or cloud metadata services
- Deploy URL allowlisting at the application level to restrict inputImageUrl to known, trusted external domains only
- Use egress filtering on the server to block outbound connections to RFC1918 private address space and link-local addresses
# Example nginx configuration to block SSRF attempts
location /api/media-generate {
# Block requests containing internal IP patterns in request body
if ($request_body ~* "(127\.0\.0\.1|10\.\d+\.\d+\.\d+|172\.(1[6-9]|2[0-9]|3[0-1])\.\d+\.\d+|192\.168\.\d+\.\d+|169\.254\.\d+\.\d+)") {
return 403;
}
proxy_pass http://backend;
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


