CVE-2026-79788 Overview
CVE-2026-79788 is a server-side request forgery (SSRF) vulnerability in Dradis Community Edition. The ProvidersController and AgentsController gate their admin_requiredbefore_action on defined?(Dradis::Pro), a constant that never exists in the Community Edition build. As a result, the authorization check is skipped entirely, and any authenticated non-admin user can create an AI provider that points to arbitrary HTTP or HTTPS destinations. Attackers can target internal or link-local addresses such as http://169.254.169.254 to reach cloud metadata services. The classification maps to [CWE-918]: Server-Side Request Forgery.
Critical Impact
Authenticated low-privilege users can force the Dradis server to issue requests to internal endpoints and read response bodies reflected through ActionCable/Turbo Stream error messages.
Affected Products
- Dradis Community Edition 5.1.0 through 5.2.0
- dradis-echo engine ProvidersController
- Built-in Roslin agent (AgentsController)
Discovery Timeline
- 2026-08-25 - CVE-2026-79788 published to NVD
- 2026-08-26 - Last updated in NVD database
Technical Details for CVE-2026-79788
Vulnerability Analysis
Dradis Community Edition ships with controllers that manage AI provider configuration and agent assignment. Both ProvidersController and AgentsController declare an admin_requiredbefore_action, but the callback is guarded by if defined?(Dradis::Pro). The Dradis::Pro constant only exists in the commercial Pro edition. In Community Edition, the guard evaluates to false and the authorization callback never registers.
Any authenticated user, regardless of role, can therefore reach the provider creation and agent reassignment endpoints. The application accepts an arbitrary HTTP or HTTPS URL as the provider address without allowlisting, DNS resolution checks, or protocol restrictions. Once the attacker reassigns the built-in Roslin agent to the malicious provider, subsequent AI interactions trigger outbound server-side HTTP requests to the attacker-supplied destination.
For non-2xx responses, the server surfaces the target response body verbatim through ActionCable/Turbo Stream error messages. This makes the SSRF a readable primitive, exposing content from internal services, cloud instance metadata endpoints, and other network-restricted resources.
Root Cause
The root cause is a broken access control pattern combined with missing egress validation. The defined?(Dradis::Pro) guard was intended to conditionally activate paid-tier features, but it also gates the authorization check itself. The provider address input lacks scheme, host, and IP validation, permitting requests to loopback, private, and link-local ranges.
Attack Vector
An authenticated user submits a crafted POST request to the providers endpoint with a URL such as http://169.254.169.254/latest/meta-data/iam/security-credentials/ and reassigns the Roslin agent. Triggering any AI interaction causes Dradis to fetch the URL server-side. The response body is echoed back to the attacker's browser session through Turbo Stream error rendering, exfiltrating internal data.
Refer to the VulnCheck SSRF Advisory for Dradis and the GitHub Issue #1641 for the vendor tracking record.
Detection Methods for CVE-2026-79788
Indicators of Compromise
- Outbound HTTP requests from the Dradis application server to RFC1918, loopback, or link-local addresses (notably 169.254.169.254).
- Provider records in the Dradis database referencing URLs outside expected AI vendor domains such as OpenAI or Anthropic endpoints.
- Roslin agent configuration changes performed by non-administrator user accounts.
Detection Strategies
- Inspect application logs for POST requests to the dradis-echoproviders and agents routes originating from non-admin session identifiers.
- Correlate Turbo Stream error events containing large or binary response payloads with recent provider updates.
- Baseline egress traffic from the Dradis server and alert on connections to cloud metadata IPs or unusual ports.
Monitoring Recommendations
- Enable web server access logging with authenticated user identity and monitor for privilege anomalies on /providers and /agents endpoints.
- Instrument outbound HTTP calls from the Rails process to log destination host, resolved IP, and initiating controller.
- Forward Dradis application and reverse-proxy logs to a centralized analytics platform for correlation with network telemetry.
How to Mitigate CVE-2026-79788
Immediate Actions Required
- Restrict access to Dradis CE deployments to trusted network segments and authenticated administrators until a patched release is applied.
- Audit existing AI provider entries and remove any provider records pointing to internal, loopback, or link-local addresses.
- Rotate any credentials or tokens accessible from the Dradis host, including cloud instance role credentials, if SSRF exploitation is suspected.
Patch Information
Monitor the Dradis Community Edition GitHub repository and GitHub Issue #1641 for a fixed release. The corrective change must remove the defined?(Dradis::Pro) conditional from the admin_requiredbefore_action in ProvidersController and AgentsController, and add strict URL validation for provider addresses. Reference the dradis-echo providers_controller source for the affected code path.
Workarounds
- Enforce administrator-only access to the provider and agent endpoints using an upstream reverse proxy access control list.
- Block egress from the Dradis application host to internal management ranges and cloud metadata endpoints such as 169.254.169.254 at the network layer.
- Disable AI provider and Roslin agent functionality by removing or restricting the dradis-echo engine routes if AI features are not required.
# Example nginx egress and admin path restriction
location ~ ^/pro/plugins/echo/(providers|agents) {
allow 10.0.0.0/24; # admin subnet only
deny all;
proxy_pass http://dradis_upstream;
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

