Skip to main content

Easy!Appointments CVE-2026-52840

| EUVDEUVD-2026-43722 LOW
Server-Side Request Forgery (SSRF) (CWE-918)
2026-07-14 GitHub_M GHSA-pm5p-7w5h-jm5q
2.7
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain or compromise backend user credentials
  2. Delivery
    Authenticate to Easy!Appointments backend interface
  3. Exploit
    Submit crafted caldav_url targeting internal host
  4. Execution
    Guzzle dispatches REPORT to RFC1918 or loopback address
  5. Persist
    Exception handler leaks upstream status and ~120 bytes of body
  6. Impact
    Enumerate internal services via repeated probes

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires an active, authenticated backend account with admin, provider, or secretary role in Easy!Appointments - unauthenticated attackers cannot reach the vulnerable endpoint. The CalDAV synchronization feature must be available to the logged-in user, which is part of the standard backend interface and requires no special configuration to enable. The attacker supplies an arbitrary value for the caldav_url POST parameter; no additional configuration changes or elevated operating system permissions are needed beyond the web application credential. Exploitation is further limited by: (1) PR:H authentication gate preventing external unauthenticated access; (2) semi-blind response leakage of approximately 120 bytes per request, requiring many probes to map internal hosts meaningfully; (3) unchanged scope (S:U), meaning the vulnerability does not directly pivot into another security domain. Deployments with strict network egress controls blocking outbound RFC1918, loopback, and link-local traffic from the application server are not exploitable for internal network reconnaissance.

Impact

The CVSS 3.1 score of 2.7 (Low) with vector AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N accurately reflects constrained real-world risk. The PR:H requirement is the dominant mitigating factor - exploitation is gated on possession of a valid backend account, restricting the threat to malicious insiders or attackers who have already compromised credentials through a separate vector. The C:L rating is appropriate given only ~120 bytes of semi-blind response leakage per probe, which significantly throttles reconnaissance throughput compared to a full-response SSRF. No EPSS data was supplied in the input and cannot be cited; however, the combination of required authentication, niche product footprint, and partial-blind data return suggests exploitation probability is low. This CVE is not in CISA KEV and no public POC has been identified at time of analysis, so no active exploitation is confirmed. The unchanged scope (S:U) means the SSRF does not cross into another system's trust domain by itself. Real-world prioritization should be LOW for most deployments, escalating to MEDIUM if the application server has network adjacency to sensitive internal services (e.g., cloud metadata endpoints, CI/CD agents, or internal APIs) that yield meaningful data within 120 bytes.

Exploit ScenarioDerived

A malicious secretary with a valid Easy!Appointments backend account navigates to the CalDAV settings page and submits a crafted caldav_url such as http://169.254.169.254/latest/meta-data/ or http://192.168.1.1:8500/v1/agent/members. The application server dispatches a Guzzle REPORT request to the target, and the exception handler returns the upstream HTTP status code along with approximately 120 bytes of the response body in the JSON error message, revealing the presence and partial content of internal services. By iterating across common RFC1918 addresses and ports, the attacker can map services reachable from the application host without any publicly available exploit code.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 14, 2026

Server-side request forgery in Easy!Appointments prior to 1.6.0 allows authenticated backend users - admins, providers, or secretaries - to probe internal network hosts by supplying arbitrary URLs to the CalDAV synchronization endpoint. The Guzzle HTTP client in Caldav.php:60 forwards a REPORT request to the caller-supplied caldav_url without validating the scheme or destination host, enabling access to loopback, RFC1918, and link-local addresses on the deployment network. The SSRF is semi-blind, returning up to approximately 120 bytes of upstream response body through the exception path; no public exploit has been identified, exploitation requires an active backend account, and version 1.6.0 resolves the issue.

RemediationAI

Upgrade Easy!Appointments to version 1.6.0, which introduces SSRF host validation directly within the Caldav_sync library with validation enabled by default. The fix is documented in commit 6eb9336a91cfb276379506625e81f5bd9ed3a536 at https://github.com/alextselegidis/easyappointments/commit/6eb9336a91cfb276379506625e81f5bd9ed3a536 and the security advisory at https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-pm5p-7w5h-jm5q. If an immediate upgrade is not feasible, implement network egress filtering on the application server to block outbound connections to RFC1918 ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), loopback (127.0.0.0/8), and link-local (169.254.0.0/16) addresses; this eliminates the internal network reach of the SSRF at the infrastructure layer without modifying application code, though it does not prevent SSRF against external targets. Additionally, enforce the principle of least privilege by auditing backend user accounts and removing secretary or provider accounts that do not require CalDAV access.

Affected VersionsENISA

easyappointments < 1.6.0

Affected Packages

composer alextselegidis/easyappointments no fix
euvd easyappointments fix: 1.6.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Easy!Appointments is a self-hosted PHP appointment scheduling application built on CodeIgniter. The vulnerable code resides in the CalDAV integration controller at application/controllers/Caldav.php, where connect_to_server passes the raw caller-supplied caldav_url parameter to the Guzzle HTTP client for a REPORT call at line 60. No scheme allowlist or host validation is applied before the request is dispatched, satisfying CWE-918 (Server-Side Request Forgery). The Guzzle exception handler at lines 74-78 echoes the upstream HTTP status code plus approximately 120 bytes of the response body back to the caller within a JSON message field, making this a semi-blind rather than fully blind SSRF. The affected CPE cpe:2.3:a:alextselegidis:easyappointments:*:*:*:*:*:*:*:* covers all versions prior to 1.6.0. The patch in commit 6eb9336a moved SSRF host validation into the Caldav_sync library itself, enabled by default, and removed the previously configurable Config::ENABLE_CALDAV_SSRF_CHECK toggle from config-sample.php.

Know when PHP gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 2.7 LOW
AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 2.7 LOW

PR:H reflects mandatory backend authentication; C:L reflects partial ~120-byte semi-blind response leakage; no integrity or availability impact applies.

3.1 AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Jul 14, 2026 - 18:20 EUVD

DescriptionCVE.org

Easy!Appointments is a self hosted appointment scheduler. In versions prior to 1.6.0, Caldav::connect_to_server at application/controllers/Caldav.php:60 hands the request's caldav_url to a Guzzle REPORT call without scheme or host validation. A logged-in backend user (admin, provider, or secretary) reaches loopback, RFC1918, and link-local hosts on the deployment's network. The Guzzle exception path returns the upstream status code plus ~120 bytes of response body in the JSON message field (Caldav.php:74-78), so the SSRF is semi-blind. Version 1.6.0 contains a patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
niche self-hosted appointment scheduler, small-business and clinic deployments
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +14
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2012-1823 CRITICAL POC
9.8 May 11

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy