/

CVE-2026-69137

Severity:

HIGH RISK

(7.7)

SSRF (CWE-918) in SuiteCRM CalendarAccount testConnection

CVE-2026-69137

Undergoing Analysis

Vulnerability type

Category:

Server-Side Request Forgery (SSRF)

CWE:

CWE-918

Impact:

Internal service access and partial response disclosure

Severity:

HIGH RISK

(7.7)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

SuiteCRM's CalendarAccount testConnection action can make a server-side request to a caller-supplied URL without validating its host, address, or scheme. An authenticated caller able to invoke the action may use the server's network access to reach internal services and obtain response data.

SuiteCRM's CalendarAccount testConnection action can make a server-side request to a caller-supplied URL without validating its host, address, or scheme. An authenticated caller able to invoke the action may use the server's network access to reach internal services and obtain response data.

Affected context

The issue occurs in the CalendarAccount connection-test flow, which passes server_url to curl through CalDAVProvider::makeCalDAVRequest() and sends a PROPFIND request. It is risky when an authenticated caller can invoke this action with a URL that the server can reach, because the URL is not checked for an allowed scheme, host, or destination address.

The issue occurs in the CalendarAccount connection-test flow, which passes server_url to curl through CalDAVProvider::makeCalDAVRequest() and sends a PROPFIND request. It is risky when an authenticated caller can invoke this action with a URL that the server can reach, because the URL is not checked for an allowed scheme, host, or destination address.

Exploit preconditions

  • Attack surface: The CalendarAccount testConnection action, which makes outbound requests from the SuiteCRM server.
  • Required access: An authenticated caller able to invoke the action and supply server_url.
  • Trigger point: The action passes the supplied URL into the CalDAV request flow, which sends a PROPFIND request.
  • Why exploitation is possible: The destination is not validated against host, address, or scheme restrictions, and the server may return non-success response bodies to the caller.
  • Attack surface: The CalendarAccount testConnection action, which makes outbound requests from the SuiteCRM server.
  • Required access: An authenticated caller able to invoke the action and supply server_url.
  • Trigger point: The action passes the supplied URL into the CalDAV request flow, which sends a PROPFIND request.
  • Why exploitation is possible: The destination is not validated against host, address, or scheme restrictions, and the server may return non-success response bodies to the caller.

Why this happens

The application uses caller-controlled URL data in a server-side request without adequately validating or constraining the destination. This is a CWE-918: Server-Side Request Forgery (SSRF) pattern: an application makes a request on behalf of a caller, allowing the caller to influence which network resource the server contacts.

The application uses caller-controlled URL data in a server-side request without adequately validating or constraining the destination. This is a CWE-918: Server-Side Request Forgery (SSRF) pattern: an application makes a request on behalf of a caller, allowing the caller to influence which network resource the server contacts.

Potential impact

  • An attacker could reach internal services accessible from the SuiteCRM server.
  • Response bodies may disclose partial information from internal services.
  • Internal services could be enumerated based on request outcomes.
  • Cloud metadata endpoints may be accessible if network controls permit.
  • An attacker could reach internal services accessible from the SuiteCRM server.
  • Response bodies may disclose partial information from internal services.
  • Internal services could be enumerated based on request outcomes.
  • Cloud metadata endpoints may be accessible if network controls permit.

General mitigation guidance

Defensive patterns focus on treating caller-supplied URLs as untrusted and limiting where the server can connect.

  • Prefer a secure-by-default design that accepts a configured service identifier rather than an arbitrary URL.
  • If URLs must be accepted, enforce strict scheme and destination allowlists, and validate resolved addresses against prohibited network ranges.
  • Apply egress controls so the application can reach only required services.
  • Avoid returning raw upstream response bodies or unnecessary details to callers.
  • Run the application with the minimum network and system privileges needed.

Defensive patterns focus on treating caller-supplied URLs as untrusted and limiting where the server can connect.

  • Prefer a secure-by-default design that accepts a configured service identifier rather than an arbitrary URL.
  • If URLs must be accepted, enforce strict scheme and destination allowlists, and validate resolved addresses against prohibited network ranges.
  • Apply egress controls so the application can reach only required services.
  • Avoid returning raw upstream response bodies or unnecessary details to callers.
  • Run the application with the minimum network and system privileges needed.

How teams detect issues like this

  • Use static analysis to identify request APIs such as curl that receive user-controlled URLs.
  • Review code paths that pass request parameters into outbound HTTP clients, including redirects and DNS resolution behavior.
  • Enforce code-review or CI policies requiring destination validation and approved outbound hosts.
  • Monitor outbound requests for unexpected destinations, internal address ranges, and access to metadata endpoints.
  • Automated security review tools may help flag flows from user input to server-side request operations.
  • Use static analysis to identify request APIs such as curl that receive user-controlled URLs.
  • Review code paths that pass request parameters into outbound HTTP clients, including redirects and DNS resolution behavior.
  • Enforce code-review or CI policies requiring destination validation and approved outbound hosts.
  • Monitor outbound requests for unexpected destinations, internal address ranges, and access to metadata endpoints.
  • Automated security review tools may help flag flows from user input to server-side request operations.

Sources

SourceLink
github.comgithub.com/SuiteCRM/SuiteCRM-Core/commit/a11f50180d939f639cc468b5d536e8ad714dfb68
github.comgithub.com/SuiteCRM/SuiteCRM-Core/releases/tag/v8.10.2
github.comgithub.com/SuiteCRM/SuiteCRM/commit/d6bca97a0159ec019a969b86eca32affab3beb7c
github.comgithub.com/SuiteCRM/SuiteCRM/releases/tag/v7.15.2
github.comgithub.com/SuiteCRM/SuiteCRM/security/advisories/GHSA-72r3-24x4-j46c

Frequently asked

questions

An authenticated caller who can invoke the CalendarAccount connection-test action and provide its server_url may be able to trigger requests from the SuiteCRM server.

The described flow requires access to the application action, not necessarily direct network access to the host. The server must be able to reach the chosen destination for that destination to be affected.

Avoid arbitrary caller-provided destinations where possible. Otherwise, validate allowed schemes and destinations, restrict outbound network access, and limit response details returned to callers.

Treat URLs as untrusted input, enforce destination allowlists and egress policies, and review every path from request parameters to outbound network clients.

An authenticated caller who can invoke the CalendarAccount connection-test action and provide its server_url may be able to trigger requests from the SuiteCRM server.

The described flow requires access to the application action, not necessarily direct network access to the host. The server must be able to reach the chosen destination for that destination to be affected.

Avoid arbitrary caller-provided destinations where possible. Otherwise, validate allowed schemes and destinations, restrict outbound network access, and limit response details returned to callers.

Treat URLs as untrusted input, enforce destination allowlists and egress policies, and review every path from request parameters to outbound network clients.

Find out what's already
exploitable in your codebase.