CVE-2026-48082
Full vulnerability record from the local CVENow database.
Description
OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.6, the bootstrap challenge endpoint at `/api/tenants/{id}/appointments/bootstrap-challenge` issues a SHA-256 proof-of-work with `difficulty=4` hex zeros, equivalent to 16 bits of work. Modern hardware solves this in under 200 milliseconds, providing essentially no friction against automated abuse of the patient booking flow. Proof-of-work is used in the booking flow as a rate-limiter for unauthenticated clients establishing tunnels and submitting appointments. At 16 bits of difficulty, the construct is decorative rather than effective. An attacker can solve PoW challenges as fast as the server can issue them, defeating the rate-limiting purpose. The handler also calls `challengeThrottleService.checkThrottle(binding, "passkey")`, but the binding includes attacker-controlled values (`tunnelId`, `clientPublicKey`, and optional `emailHash`). For each fresh attempt, the attacker can supply new values, producing a new throttle key and bypassing the per-binding accumulation. Practical abuse friction is therefore the PoW difficulty itself, not a stable per-IP or per-email server-side throttle. Version 1.0.6 fixes the issue.
View original CVE JSON
{
"id": "CVE-2026-48082",
"sourceIdentifier": "[email protected]",
"published": "2026-08-06T22:17:10.997",
"lastModified": "2026-10-23T21:10:00.157",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.6, the bootstrap challenge endpoint at `/api/tenants/{id}/appointments/bootstrap-challenge` issues a SHA-256 proof-of-work with `difficulty=4` hex zeros, equivalent to 16 bits of work. Modern hardware solves this in under 200 milliseconds, providing essentially no friction against automated abuse of the patient booking flow. Proof-of-work is used in the booking flow as a rate-limiter for unauthenticated clients establishing tunnels and submitting appointments. At 16 bits of difficulty, the construct is decorative rather than effective. An attacker can solve PoW challenges as fast as the server can issue them, defeating the rate-limiting purpose. The handler also calls `challengeThrottleService.checkThrottle(binding, \"passkey\")`, but the binding includes attacker-controlled values (`tunnelId`, `clientPublicKey`, and optional `emailHash`). For each fresh attempt, the attacker can supply new values, producing a new throttle key and bypassing the per-binding accumulation. Practical abuse friction is therefore the PoW difficulty itself, not a stable per-IP or per-email server-side throttle. Version 1.0.6 fixes the issue."
},
{
"lang": "es",
"value": "El software de reserva de citas de OpenReception proporciona una plataforma de reserva de citas cifrada de extremo a extremo. Antes de la versión 1.0.6, el endpoint de desafío de arranque en “/api/tenants/{id}/appointments/bootstrap-challenge” emite una prueba de trabajo SHA-256 con “difficulty=4” ceros hexadecimales, equivalente a 16 bits de trabajo. El hardware moderno resuelve esto en menos de 200 milisegundos, proporcionando esencialmente ninguna fricción contra el abuso automatizado del flujo de reserva de pacientes. La prueba de trabajo se utiliza en el flujo de reserva como un limitador de velocidad para clientes no autenticados que establecen túneles y envían citas. Con 16 bits de dificultad, la construcción es decorativa en lugar de efectiva. Un atacante puede resolver desafíos de PoW tan rápido como el servidor puede emitirlos, frustrando el propósito de limitación de velocidad. El gestor también llama a “challengeThrottleService.checkThrottle(binding, “passkey”)”, pero el binding incluye valores controlados por el atacante (“tunnelId”, “clientPublicKey”, y “emailHash” opcional). Para cada nuevo intento, el atacante puede proporcionar nuevos valores, produciendo una nueva clave de limitación y eludiendo la acumulación por binding. La fricción práctica contra el abuso es, por lo tanto, la dificultad de la PoW en sí misma, no una limitación estable por IP o por correo electrónico del lado del servidor. La versión 1.0.6 corrige el problema."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "open-reception",
"product": "appointment-booking-software",
"versions": [
{
"version": "< 1.0.6",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L",
"baseScore": 3.7,
"baseSeverity": "LOW",
"attackVector": "NETWORK",
"attackComplexity": "HIGH",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "NONE",
"integrityImpact": "NONE",
"availabilityImpact": "LOW"
},
"exploitabilityScore": 2.2,
"impactScore": 1.4
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-08-07T14:58:35.100533Z",
"id": "CVE-2026-48082",
"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-770"
}
]
}
],
"references": [
{
"url": "https://github.com/open-reception/appointment-booking-software/commit/e9c96c049ebf558df7a9e4c5c93f6fe2b092c8c6",
"source": "[email protected]"
},
{
"url": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hm9g-mh7x-657g",
"source": "[email protected]"
},
{
"url": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hm9g-mh7x-657g",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
]
}