CVE-2026-48079 (GCVE-0-2026-48079)
Vulnerability from cvelistv5 – Published: 2026-08-06 21:00 – Updated: 2026-08-07 17:11- CWE-613 - Insufficient Session Expiration
| URL | Tags |
|---|---|
| https://github.com/open-reception/appointment-boo… | x_refsource_CONFIRM |
| https://github.com/open-reception/appointment-boo… | x_refsource_MISC |
| https://github.com/open-reception/appointment-boo… | x_refsource_MISC |
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| open-reception | appointment-booking-software |
Affected:
< 1.0.2
|
guessed |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-48079",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-08-07T17:10:37.562868Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-08-07T17:11:36.655Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"references": [
{
"tags": [
"exploit"
],
"url": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hrhm-m2hm-7cjh"
}
],
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "appointment-booking-software",
"vendor": "open-reception",
"versions": [
{
"status": "affected",
"version": "\u003c 1.0.2"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "OpenReception\u0027s appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.2, when a user navigates to the `/logout` page, the page\u0027s server-side load handler deletes the `access_token` cookie before calling `/api/auth/logout` via an internal `event.fetch()`. The internal fetch consequently runs without the auth cookie, so `apiAuthHandle` rejects it, the logout handler never executes, and `SessionService.revokeSession()` is never called for the current session. The DB session row remains valid until its natural expiry (one week by default). The user sees a successful logout (cookie gone, UI returns to login), but any party still holding a copy of the now-deleted access token can continue making authenticated API calls until the session naturally expires. The root cause is a simple ordering mistake. The same auth subsystem implements the correct order in `/api/auth/logout`: revoke the current DB session first, then delete the cookie. The page-level wrapper does the opposite. Version 1.0.2 initiates server-side logout before removing authentication cookies and first appears in version 1.0.2. Version 2.0.0 later replaces this with a race-free client-side logout flow."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 7.4,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-613",
"description": "CWE-613: Insufficient Session Expiration",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-06T21:00:44.615Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hrhm-m2hm-7cjh",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hrhm-m2hm-7cjh"
},
{
"name": "https://github.com/open-reception/appointment-booking-software/commit/2419f9e87a8abad72f31b1fedeb80c758b30322e",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/open-reception/appointment-booking-software/commit/2419f9e87a8abad72f31b1fedeb80c758b30322e"
},
{
"name": "https://github.com/open-reception/appointment-booking-software/commit/f833dbf50059ff7d4ea42ce7bbb3a5cdcf7a6929",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/open-reception/appointment-booking-software/commit/f833dbf50059ff7d4ea42ce7bbb3a5cdcf7a6929"
}
],
"source": {
"advisory": "GHSA-hrhm-m2hm-7cjh",
"discovery": "UNKNOWN"
},
"title": "OpenReception\u0027s logout page clears local access_token before server-side revocation, leaving duplicated tokens valid until expiry"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-48079",
"datePublished": "2026-08-06T21:00:44.615Z",
"dateReserved": "2026-05-20T18:25:25.709Z",
"dateUpdated": "2026-08-07T17:11:36.655Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-48079",
"date": "2026-11-07",
"epss": "0.00501",
"percentile": "0.43187"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"product": "appointment-booking-software",
"vendor": "open-reception",
"versions": [
{
"status": "affected",
"version": "\u003c 1.0.2"
}
]
}
],
"source": "security-advisories@github.com"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "OpenReception\u0027s appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.2, when a user navigates to the `/logout` page, the page\u0027s server-side load handler deletes the `access_token` cookie before calling `/api/auth/logout` via an internal `event.fetch()`. The internal fetch consequently runs without the auth cookie, so `apiAuthHandle` rejects it, the logout handler never executes, and `SessionService.revokeSession()` is never called for the current session. The DB session row remains valid until its natural expiry (one week by default). The user sees a successful logout (cookie gone, UI returns to login), but any party still holding a copy of the now-deleted access token can continue making authenticated API calls until the session naturally expires. The root cause is a simple ordering mistake. The same auth subsystem implements the correct order in `/api/auth/logout`: revoke the current DB session first, then delete the cookie. The page-level wrapper does the opposite. Version 1.0.2 initiates server-side logout before removing authentication cookies and first appears in version 1.0.2. Version 2.0.0 later replaces this with a race-free client-side logout flow."
},
{
"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\u00f3n 1.0.2, cuando un usuario navega a la p\u00e1gina \u2019/logout\u2019, el gestor de carga del lado del servidor de la p\u00e1gina elimina la \u2019cookie\u2019 \u2019access_token\u2019 antes de llamar a \u2019/api/auth/logout\u2019 a trav\u00e9s de un \u2019event.fetch()\u2019 interno. La \u2019fetch\u2019 interna, en consecuencia, se ejecuta sin la \u2019cookie\u2019 de autenticaci\u00f3n, por lo que \u2019apiAuthHandle\u2019 la rechaza, el gestor de cierre de sesi\u00f3n nunca se ejecuta y \u2019SessionService.revokeSession()\u2019 nunca se llama para la \u2019sesi\u00f3n\u2019 actual. La fila de la \u2019sesi\u00f3n\u2019 de la base de datos permanece v\u00e1lida hasta su caducidad natural (una semana por defecto). El usuario ve un cierre de sesi\u00f3n exitoso (\u2019cookie\u2019 eliminada, la interfaz de usuario vuelve al inicio de \u2019sesi\u00f3n\u2019), pero cualquier parte que a\u00fan conserve una copia del \u2019token\u2019 de acceso ahora eliminado puede seguir realizando llamadas a la API autenticadas hasta que la \u2019sesi\u00f3n\u2019 expire naturalmente. La causa ra\u00edz es un simple error de orden. El mismo subsistema de autenticaci\u00f3n implementa el orden correcto en \u2019/api/auth/logout\u2019: revocar primero la \u2019sesi\u00f3n\u2019 actual de la base de datos, luego eliminar la \u2019cookie\u2019. El envoltorio a nivel de p\u00e1gina hace lo contrario. La versi\u00f3n 1.0.2 inicia el cierre de \u2019sesi\u00f3n\u2019 del lado del servidor antes de eliminar las \u2019cookies\u2019 de autenticaci\u00f3n y aparece por primera vez en la versi\u00f3n 1.0.2. La versi\u00f3n 2.0.0 m\u00e1s tarde reemplaza esto con un flujo de cierre de \u2019sesi\u00f3n\u2019 del lado del \u2019cliente\u2019 sin condiciones de carrera."
}
],
"id": "CVE-2026-48079",
"lastModified": "2026-10-23T21:10:00.157",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 7.4,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N",
"version": "3.1"
},
"exploitabilityScore": 2.2,
"impactScore": 5.2,
"source": "security-advisories@github.com",
"type": "Secondary"
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-48079",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-08-07T17:10:37.562868Z",
"version": "2.0.3"
}
}
]
},
"published": "2026-08-06T22:17:10.557",
"references": [
{
"source": "security-advisories@github.com",
"url": "https://github.com/open-reception/appointment-booking-software/commit/2419f9e87a8abad72f31b1fedeb80c758b30322e"
},
{
"source": "security-advisories@github.com",
"url": "https://github.com/open-reception/appointment-booking-software/commit/f833dbf50059ff7d4ea42ce7bbb3a5cdcf7a6929"
},
{
"source": "security-advisories@github.com",
"url": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hrhm-m2hm-7cjh"
},
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"url": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hrhm-m2hm-7cjh"
}
],
"sourceIdentifier": "security-advisories@github.com",
"vulnStatus": "Deferred",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-613"
}
],
"source": "security-advisories@github.com",
"type": "Secondary"
}
]
}
},
"vulnrichment": {
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-48079",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-08-07T17:10:37.562868Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-08-07T17:11:00.306Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"references": [
{
"tags": [
"exploit"
],
"url": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hrhm-m2hm-7cjh"
}
],
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "appointment-booking-software",
"vendor": "open-reception",
"versions": [
{
"status": "affected",
"version": "\u003c 1.0.2"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "OpenReception\u0027s appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.2, when a user navigates to the `/logout` page, the page\u0027s server-side load handler deletes the `access_token` cookie before calling `/api/auth/logout` via an internal `event.fetch()`. The internal fetch consequently runs without the auth cookie, so `apiAuthHandle` rejects it, the logout handler never executes, and `SessionService.revokeSession()` is never called for the current session. The DB session row remains valid until its natural expiry (one week by default). The user sees a successful logout (cookie gone, UI returns to login), but any party still holding a copy of the now-deleted access token can continue making authenticated API calls until the session naturally expires. The root cause is a simple ordering mistake. The same auth subsystem implements the correct order in `/api/auth/logout`: revoke the current DB session first, then delete the cookie. The page-level wrapper does the opposite. Version 1.0.2 initiates server-side logout before removing authentication cookies and first appears in version 1.0.2. Version 2.0.0 later replaces this with a race-free client-side logout flow."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 7.4,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-613",
"description": "CWE-613: Insufficient Session Expiration",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-06T21:00:44.615Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hrhm-m2hm-7cjh",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/open-reception/appointment-booking-software/security/advisories/GHSA-hrhm-m2hm-7cjh"
},
{
"name": "https://github.com/open-reception/appointment-booking-software/commit/2419f9e87a8abad72f31b1fedeb80c758b30322e",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/open-reception/appointment-booking-software/commit/2419f9e87a8abad72f31b1fedeb80c758b30322e"
},
{
"name": "https://github.com/open-reception/appointment-booking-software/commit/f833dbf50059ff7d4ea42ce7bbb3a5cdcf7a6929",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/open-reception/appointment-booking-software/commit/f833dbf50059ff7d4ea42ce7bbb3a5cdcf7a6929"
}
],
"source": {
"advisory": "GHSA-hrhm-m2hm-7cjh",
"discovery": "UNKNOWN"
},
"title": "OpenReception\u0027s logout page clears local access_token before server-side revocation, leaving duplicated tokens valid until expiry"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-48079",
"datePublished": "2026-08-06T21:00:44.615Z",
"dateReserved": "2026-05-20T18:25:25.709Z",
"dateUpdated": "2026-08-07T17:11:36.655Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
How durations are calculated
Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.
Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.
Loading timeline…
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.