Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister/authenticate as customer
-
DeliveryEnumerate reservation IDs
-
ExploitSend GET /api/reservations/:id
-
ExecutionServer skips ownership check
-
ImpactRead other customers' reservation records
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 | Requires a valid authenticated account on the KitchenAsty application (the authenticate middleware is applied and enforced), so a completely anonymous attacker cannot exploit it - this is what limits exploitation. Given any authenticated principal, no further conditions apply: the GET /api/reservations/:id endpoint performs no ownership comparison (reservation.customerId vs the authenticated principal) and no role check, so it works against default configurations of KitchenAsty through version 0.3.0. Impact is read-only disclosure of a single reservation record per request; there is no user-interaction, non-default-configuration, or special-platform requirement beyond holding a low-privilege customer session. |
| Impact | This is a genuine but low-severity access-control flaw, and the signals are internally consistent rather than conflicting. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N, base 4.3) matches the description precisely: exploitation is remote and trivial (increment/guess an :id path parameter) but requires an authenticated account (PR:L), yields only read access to another customer's single reservation record (C:L), and causes no integrity or availability impact. No EPSS score, CISA KEV entry, or public exploit code is present in the supplied intelligence, so the correct exploitation status is: no public exploit identified at time of analysis. There is no conflict between severity and real risk here - this is correctly a low priority, not a high-CVSS-but-low-risk false alarm. The dominant risk-reducer is prevalence: KitchenAsty is an obscure GitHub hobby/small-project codebase (mighty840/kitchenasty), so real-world exposure is minimal. The fix is confirmed available (PR #43 and GHSA-2w4m-hjg2-2v92 advisory), and the vulnerable-code path is confirmed by source (reservation.controller.ts). Note that the fix diff in PR #43 shown here demonstrates the ownership-check pattern on the ORDER controller (order.customerId !== user.id with a staff bypass) rather than the reservation controller named in the description - the same remediation pattern applies, but the exact reservation.controller.ts hunk is not in the provided diff, so verify the reservation fix landed. |
| Exploit ScenarioDerived | An attacker registers or already holds a legitimate low-privilege customer account, authenticates, then issues GET /api/reservations/:id iterating or guessing reservation identifiers belonging to other customers. Because the handler returns the record without comparing reservation.customerId to the authenticated principal, the attacker harvests other patrons' reservation details (e.g., names, contact, party/booking data). No public exploit code is identified; exploitation is manual and requires only a valid session. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 29, 2026
KitchenAsty versions through 0.3.0 expose an object-level authorization flaw in the reservations API: the authenticated endpoint GET /api/reservations/:id returns whatever reservation record matches the caller-supplied identifier without ever comparing reservation.customerId to the authenticated principal, allowing any logged-in low-privilege customer to read other customers' reservation data. Because the authenticate middleware is enforced, an anonymous attacker cannot reach the handler, which is the main constraint on exploitation; the impact per request is a read-only disclosure of a single reservation record and the assessed severity is correspondingly low (CVSS 3.1 base 4.3, PR:L). No confirmed active exploitation (CISA KEV) and no public exploit code were identified at time of analysis, though the attack requires only a valid account plus enumeration of sequential or guessable reservation identifiers.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - the vendor advisory GHSA-2w4m-hjg2-2v92 and pull request https://github.com/mighty840/kitchenasty/pull/43 address the broken object level authorization, but no tagged release version newer than 0.3.0 is confirmed in the provided data, so operators should track the advisory and pull request and validate the exact patched version before relying on it. Note that the fetched diff excerpt for PR #43 changes order.controller.ts (adding a user.type ! 'staff' && order.customerId ! user.id 403 check) and settings.controller.ts (adding a toPublicSettings() serializer), not reservation.controller.ts, so the reservation handler fix should be explicitly verified after upgrade - confirm the deployed build denies access when reservation.customerId does not equal the authenticated principal's id. Where upgrading is not yet possible, the most effective compensating control is to add an ownership/role check in front of getReservation, e.g. rejecting with 403 unless the record's customerId matches req.user.id or the principal is staff; the trade-off is a custom code change that must be maintained and re-verified against future upstream releases. If code changes are not feasible, restrict the reservations API at the reverse-proxy or API-gateway layer so that GET /api/reservations/:id is only reachable from trusted internal networks or an admin-only route, accepting that this breaks the legitimate customer-facing reservation lookup. Replacing sequential integer reservation identifiers with unguessable UUIDs raises the enumeration cost but is not a substitute for the ownership check, since identifiers still leak through logs, referrers and shared links. Finally, since this endpoint requires a valid low-privilege account, tightening account provisioning and monitoring for high-volume sequential :id enumeration against /api/reservations/ can detect abuse in the interim, at the cost of added logging and alerting overhead.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The weakness is a classic Insecure Direct Object Reference / Broken Object Level Authorization (IDOR/BOLA), the access-control class commonly mapped to CWE-639 (Authorization Bypass Through User-Controlled Key) and CWE-284 (Improper Access Control). KitchenAsty is a Node/TypeScript monorepo; the affected surface is the server package, specifically the reservation router in packages/server/src/routes/reservation.routes.ts, which wires the getReservation handler in packages/server/src/controllers/reservation.controller.ts behind the authenticate middleware. Authentication and authorization are conflated here: the middleware proves identity but the controller never performs the ownership comparison (reservation.customerId versus the authenticated principal's id) nor any staff/role check before responding, so the client-supplied :id path parameter is trusted as an authorization token. The CPE/product data provided does not enumerate a broader product matrix; the scope is the KitchenAsty server through 0.3.0, with the default configuration exhibiting the flaw. Cross-referencing the referenced upstream pull request (github.com/mighty840/kitchenasty/pull/43) is useful context: the fetched diff excerpt hardens adjacent code paths in the same package - adding a user.type ! 'staff' && order.customerId ! user.id denial in order.controller.ts and introducing a toPublicSettings() serializer that stops the settings controller from returning API keys and credentials to unauthenticated storefront callers. Those changes illustrate the same missing-ownership-check pattern recurring across controllers, but they are distinct issues from CVE-2026-79348, and the excerpt shown does not itself contain the reservation.controller.ts ownership check.
Know when TypeScript 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:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Remote HTTP endpoint (AV:N), trivial ID manipulation (AC:L), but a valid account is required (PR:L); read-only leak of one record (C:L), no write or availability impact.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
DescriptionCVE.org
KitchenAsty through 0.3.0 contains a broken object level authorization (IDOR) vulnerability in the reservations API. The endpoint GET /api/reservations/:id in packages/server applies the authenticate middleware but performs no ownership or role check, and the getReservation handler in packages/server/src/controllers/reservation.controller.ts returns the record retrieved by the client-supplied identifier without comparing reservation.customerId to the authenticated principal
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 TypeScript
View allPath traversal in decap-server 3.10.0 and earlier lets unauthenticated remote attackers read, write, and delete files in
Joplin Server instances prior to 3.7.2 expose an SSO login-code redemption endpoint (GET /api/login_with_code/:id) that
Cross-tenant authorization bypass in TinaCMS self-hosted deployments allows any holder of a legitimate TinaCloud account
Authenticated clients on deepstream.io 10.1.0 can bypass record-write authorization and modify arbitrary protected recor
OS command injection in zosmaai's pi-llm-wiki through 0.11.7 lets an attacker who can invoke the wiki_capture_source MCP
A remote, unauthenticated denial-of-service condition in the NestJS (Nest) microservices framework lets an attacker cras
Fee-sponsoring servers built on mppx before 0.8.2 can be induced by any client with access to the sponsorship endpoint t
Code escaping sandbox in the PraisonAI npm package's built-in codeMode tool (praisonai 1.4.0 through 1.7.1) lets anyone
Unauthenticated passkey enrollment in OpenReception appointment-booking software prior to 1.1.1 lets remote attackers in
A credential-isolation flaw in geelen mcp-remote 0.1.16 through 0.1.38 allows a remote attacker who controls or can pred
Remote code execution affects Univer v1.0.0-alpha.2 through its Uniscript feature: the UniscriptExecutionService.execute
Dokploy instances running versions prior to 0.29.13 disclose stored Git provider secrets - GitHub App private keys, OAut
EUVD-2026-89425
GHSA-x824-rgwx-3cx4
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB