CVE-2023-38052

9.9 CRITICAL

📋 TL;DR

This CVE describes a Broken Object Level Authorization (BOLA) vulnerability in Easy!Appointments that allows low-privileged users to access, modify, or delete administrator accounts by manipulating admin ID parameters. This affects all Easy!Appointments installations with user accounts, enabling privilege escalation and unauthorized data manipulation.

💻 Affected Systems

Products:
  • Easy!Appointments
Versions: All versions before the fix
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Affects all installations with user accounts; requires at least one low-privileged user account to exploit.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of the appointment system with admin account takeover, data destruction, and potential lateral movement to connected systems.

🟠

Likely Case

Unauthorized access to sensitive appointment data, modification of system settings, and disruption of business operations.

🟢

If Mitigated

Limited impact with proper authorization checks preventing unauthorized object access despite the vulnerability.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Requires authenticated low-privileged user access; exploitation involves simple HTTP request manipulation.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Check latest Easy!Appointments release

Vendor Advisory: https://github.com/alextselegidis/easyappointments

Restart Required: No

Instructions:

1. Update to latest Easy!Appointments version. 2. Verify authorization checks are implemented for admin endpoints. 3. Test that low-privileged users cannot access admin resources.

🔧 Temporary Workarounds

Implement API Authorization Middleware

all

Add server-side authorization checks to verify user permissions before processing admin endpoint requests.

Implement authorization middleware in your API routes

Restrict Admin Endpoint Access

linux

Use web server configuration to restrict access to /admins/* endpoints to admin users only.

# Apache: <Location "/admins"> Require admin-role </Location>
# Nginx: location /admins { allow admin-ips; deny all; }

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate the application from sensitive systems
  • Enable detailed logging and monitoring for unauthorized access attempts to admin endpoints

🔍 How to Verify

Check if Vulnerable:

As a low-privileged user, attempt to access GET /admins/{adminId} with another user's admin ID. If successful, system is vulnerable.

Check Version:

Check Easy!Appointments version in admin panel or application configuration files

Verify Fix Applied:

Repeat the vulnerable test; requests should return 403 Forbidden or similar authorization error.

📡 Detection & Monitoring

Log Indicators:

  • Unauthorized access attempts to /admins/* endpoints
  • 403 Forbidden errors from admin endpoints
  • Admin account modifications from non-admin users

Network Indicators:

  • HTTP requests to /admins/* from non-admin IPs or user agents
  • Unusual pattern of PUT/DELETE requests to admin resources

SIEM Query:

source="web_logs" AND (uri_path="/admins/*" AND (user_role!="admin" OR response_code=403))

🔗 References

📤 Share & Export