Skip to main content

KitchenAsty EUVDEUVD-2026-89425

| CVE-2026-79348 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-09-29 cve@mitre.org GHSA-x824-rgwx-3cx4
4.3
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Register/authenticate as customer
  2. Delivery
    Enumerate reservation IDs
  3. Exploit
    Send GET /api/reservations/:id
  4. Execution
    Server skips ownership check
  5. Impact
    Read 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

n/a n/a

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

Vendor (mitre) PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

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

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Rare
obscure single-developer GitHub project, no enterprise deployment footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

22
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2026-92812 CRITICAL POC
9.3 Sep 16

Path traversal in decap-server 3.10.0 and earlier lets unauthenticated remote attackers read, write, and delete files in

CVE-2026-46649 CRITICAL POC
9.1 Sep 21

Joplin Server instances prior to 3.7.2 expose an SSO login-code redemption endpoint (GET /api/login_with_code/:id) that

CVE-2026-63506 HIGH POC
8.8 Sep 16

Cross-tenant authorization bypass in TinaCMS self-hosted deployments allows any holder of a legitimate TinaCloud account

CVE-2026-63116 HIGH POC
8.8 Sep 21

Authenticated clients on deepstream.io 10.1.0 can bypass record-write authorization and modify arbitrary protected recor

CVE-2026-102911 HIGH POC
8.6 Sep 30

OS command injection in zosmaai's pi-llm-wiki through 0.11.7 lets an attacker who can invoke the wiki_capture_source MCP

CVE-2026-102281 HIGH POC
7.5 Sep 28

A remote, unauthenticated denial-of-service condition in the NestJS (Nest) microservices framework lets an attacker cras

CVE-2026-63627 MEDIUM POC
6.9 Sep 22

Fee-sponsoring servers built on mppx before 0.8.2 can be induced by any client with access to the sponsorship endpoint t

CVE-2026-57138 CRITICAL
9.9 Sep 15

Code escaping sandbox in the PraisonAI npm package's built-in codeMode tool (praisonai 1.4.0 through 1.7.1) lets anyone

CVE-2026-54460 CRITICAL
9.8 Sep 17

Unauthenticated passkey enrollment in OpenReception appointment-booking software prior to 1.1.1 lets remote attackers in

CVE-2026-51996 CRITICAL
9.8 Sep 24

A credential-isolation flaw in geelen mcp-remote 0.1.16 through 0.1.38 allows a remote attacker who controls or can pred

CVE-2026-88404 CRITICAL
9.8 Sep 21

Remote code execution affects Univer v1.0.0-alpha.2 through its Uniscript feature: the UniscriptExecutionService.execute

CVE-2026-86059 CRITICAL
9.6 Sep 22

Dokploy instances running versions prior to 0.29.13 disclose stored Git provider secrets - GitHub App private keys, OAut

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy