Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain provider-role credentials
-
DeliveryAuthenticate to Easy!Appointments API
-
ExploitEnumerate peer provider numeric IDs via scheduling UI
-
InstallCraft POST body with foreign id_users_provider
-
C2Submit to /appointments/store or /appointments/update
-
ExecuteUnauthorized appointment committed to database despite error response
-
ImpactVictim provider's schedule silently manipulated
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires a valid authenticated provider-role account within the target Easy!Appointments instance - unauthenticated external attackers cannot exploit this directly. The instance must be running any version prior to 1.6.0. Single-provider deployments have no peer provider to target and are not meaningfully affected; multi-provider instances (clinics, booking platforms, shared scheduling tools) are the realistic attack surface. No non-default configuration is required beyond the presence of more than one registered provider account. The write-before-crash variant on |
| Impact | The assigned CVSS 3.1 score of 3.3 (AV:N/AC:H/PR:H) materially underestimates exploitability. The description explicitly states 'a normal authenticated provider' is the threat actor, which maps to PR:L, not PR:H; and the attack requires only substituting a numeric provider ID in an API parameter - a trivially low-complexity operation, not AC:H. A corrected assessment places this at approximately CVSS 5.3 (Medium). No EPSS data was available for this CVE, and KEV status is not confirmed. The practical blast radius is limited to multi-provider deployments: a clinic, salon, or service business where competing providers share the same instance is the realistic threat model. In that context, schedule injection between peers could enable business disruption, privacy violations between providers, or appointment-booking fraud. The write-before-crash variant on |
| Exploit ScenarioDerived | An attacker holding a valid Easy!Appointments provider account enumerates the numeric IDs of peer providers (discoverable via scheduling UI or API), then posts a crafted JSON body to |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 14, 2026
Horizontal privilege escalation in Easy!Appointments prior to 1.6.0 permits any authenticated provider to inject appointments into a peer provider's calendar or reassign existing appointments across provider boundaries by supplying an arbitrary id_users_provider value to the store and update API endpoints. The asymmetry is stark: the search endpoint correctly enforces provider-scoped filtering, confirming the isolation boundary was intentionally designed - making this an incomplete implementation rather than a missing feature. An additional write-before-crash defect on the store path means the unauthorized database row is silently persisted even when the attacker receives an HTTP error response. No active exploitation is confirmed (not in CISA KEV) and no public exploit code has been identified at time of analysis.
RemediationAI
Upgrade to Easy!Appointments version 1.6.0, which patches the provider authorization bypass per the vendor security advisory at https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-w8xc-8g92-v77h; the fix is tracked in commit 4abb10545d83ac1a57d03f6502376ee67696ee7c. If an immediate upgrade is not feasible, restrict provider account registration to fully trusted internal personnel, as exploitation requires a valid provider-role credential - removing untrusted provider accounts eliminates the attack surface entirely. As a detection compensating control, query the database directly for appointments where the id_users_provider value does not match the account that submitted the booking, rather than relying on HTTP error logs, since the write-before-crash defect means unauthorized rows persist despite error responses. WAF rules blocking id_users_provider parameter substitution on the store and update endpoints are possible but require session-aware logic tied to the application's provider ID mapping, which is complex to implement correctly without application-layer access.
Affected VersionsENISA
Affected Packages
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
CWE-639 (Authorization Bypass Through User-Controlled Key) is the root cause: the application exposes the internal relational key id_users_provider directly in user-controlled API request bodies for appointments/store and appointments/update, then validates only generic appointment-write privileges without confirming the submitted key is owned by the authenticated session. This is a textbook Insecure Direct Object Reference (IDOR) applied to a horizontal privilege boundary between peer provider accounts. CPE cpe:2.3:a:alextselegidis:easyappointments:*:*:*:*:*:*:*:* covers all pre-1.6.0 releases. The write-before-crash defect arises because the CodeIgniter-based controller layer commits the ORM row to the database before a downstream type error terminates execution, producing a persisted unauthorized record with no successful HTTP response to the caller - a particularly dangerous combination for detection.
Know when Easyappointments 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
AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:N
Any normal provider account can exploit this with a simple parameter substitution (AC:L, PR:L); impact is integrity-only - no confidentiality or availability loss described.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Easy!Appointments is a self hosted appointment scheduler. Versions prior to 1.6.0 correctly filter provider-scoped appointments in the appointments/search response, proving that provider isolation is an intended security boundary. However, the direct mutation endpoints appointments/store and appointments/update only check generic appointment privileges and never verify that the submitted id_users_provider belongs to the current session. A normal authenticated provider can inject new appointments into another provider's schedule via store, or reassign existing appointments into a foreign provider's calendar via update. The store path contains an additional write-before-crash bug: the unauthorized row is committed to the database before the controller crashes on a type error, so the attacker receives an error response while the foreign appointment is already persisted. Version 1.6.0 patches the issue.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Easyappointments
View allAn issue in Alex Tselegidis EasyAppointments v.1.5.0 allows a remote attacker to escalate privileges via the index.php f
Use of Hard-coded Credentials in GitHub repository alextselegidis/easyappointments prior to 1.5.0. Rated critical severi
Exposure of Private Personal Information to an Unauthorized Actor in GitHub repository alextselegidis/easyappointments p
Session Fixation in GitHub repository alextselegidis/easyappointments prior to 1.5.0. Rated high severity (CVSS 8.8), th
API Privilege Escalation in GitHub repository alextselegidis/easyappointments prior to 1.5.0. Rated high severity (CVSS
alextselegidis Easy!Appointments v1.5.1 was discovered to contain a SQL injection vulnerability via the order_by paramet
Cross-Site Request Forgery (CSRF) in Easy!Appointments 1.5.2 and earlier allows remote attackers to perform administrati
Broken object-level authorization in Easy!Appointments 1.5.2 lets any authenticated user query the customers search endp
The reschedule endpoint in Easy!Appointments 1.5.2 and earlier exposes the complete customer database record to any part
Cross Site Scripting vulnerability in Alex Tselegidis EasyAppointments v.1.5.0 allows a remote attacker to execute arbit
Improper Access Control in GitHub repository alextselegidis/easyappointments prior to 1.5.0. Rated medium severity (CVSS
Cross-site Scripting (XSS) - Stored in GitHub repository alextselegidis/easyappointments prior to 1.5.0. Rated medium se
EUVD-2026-43720
GHSA-w8xc-8g92-v77h
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB