← Back to CVE Explorer

CVE-2026-52838

Full vulnerability record from the local CVENow database.

Description

Easy!Appointments is a self hosted appointment scheduler. Versions prior to 1.6.0 allow administrators to define a custom "booking disabled" message through the booking settings page. That value is stored in the `disable_booking_message` setting via a rich-text editor and later passed directly to the public `booking_message` view without escaping or sanitization. An authenticated administrator can store HTML or JavaScript in this field, enable disabled-booking mode, and trigger stored XSS in every unauthenticated visitor who opens the public booking page. Version 1.6.0 fixes the issue.

Severity
LOW
CVSS score
2.6 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-07-14 16:17:00.410000
Last modified
2026-10-24 21:10:00.130000
View original CVE JSON
{
  "id": "CVE-2026-52838",
  "sourceIdentifier": "[email protected]",
  "published": "2026-07-14T16:17:00.410",
  "lastModified": "2026-10-24T21:10:00.130",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Easy!Appointments is a self hosted appointment scheduler. Versions prior to 1.6.0 allow administrators to define a custom \"booking disabled\" message through the booking settings page. That value is stored in the `disable_booking_message` setting via a rich-text editor and later passed directly to the public `booking_message` view without escaping or sanitization. An authenticated administrator can store HTML or JavaScript in this field, enable disabled-booking mode, and trigger stored XSS in every unauthenticated visitor who opens the public booking page. Version 1.6.0 fixes the issue."
    },
    {
      "lang": "es",
      "value": "Easy!Appointments es un programador de citas autoalojado. Las versiones anteriores a la 1.6.0 permiten a los administradores definir un mensaje personalizado de ’reserva deshabilitada’ a través de la página de configuración de reservas. Ese valor se almacena en la configuración “disable_booking_message” a través de un editor de texto enriquecido y luego se pasa directamente a la vista pública “booking_message” sin escape ni saneamiento. Un administrador autenticado puede almacenar HTML o JavaScript en este campo, habilitar el modo de reserva deshabilitada y desencadenar XSS almacenado en cada visitante no autenticado que abre la página pública de reservas. La versión 1.6.0 corrige el problema."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "alextselegidis",
          "product": "easyappointments",
          "versions": [
            {
              "version": "< 1.6.0",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:C/C:N/I:L/A:N",
          "baseScore": 2.6,
          "baseSeverity": "LOW",
          "attackVector": "NETWORK",
          "attackComplexity": "HIGH",
          "privilegesRequired": "HIGH",
          "userInteraction": "REQUIRED",
          "scope": "CHANGED",
          "confidentialityImpact": "NONE",
          "integrityImpact": "LOW",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 1.0,
        "impactScore": 1.4
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-07-14T15:59:57.528356Z",
          "id": "CVE-2026-52838",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-79"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/alextselegidis/easyappointments/commit/629a0415f54f75556c17f4f5d9c77fda1fdbdeae",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-996f-334j-67g7",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/alextselegidis/easyappointments/security/advisories/GHSA-996f-334j-67g7",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
    }
  ]
}