Skip to main content

Beszel EUVDEUVD-2026-83909

| CVE-2026-94382 LOW
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-09-21 VulnCheck GHSA-x7pw-mf2h-rgr4
2.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as any Beszel user
  2. Delivery
    Obtain/guess a target system ID
  3. Exploit
    POST arbitrary systemId to /api/beszel/user-alerts
  4. Execution
    Alert rule registered on inaccessible system
  5. Impact
    Receive notifications leaking system names and metrics

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 Beszel account of any privilege level, including read-only users (confirmed by the patch's readOnlyUser test cases). The attacker must supply a valid target system ID in the POST/DELETE body of /api/beszel/user-alerts; because Beszel/PocketBase system record IDs are 15-character random identifiers, successful exploitation depends on knowing or guessing them (the CVSS AT:P requirement). Exploitation is most realistic on multi-user/multi-tenant instances; a single-user deployment or one running with SHARE_ALL_SYSTEMS=true has no meaningful boundary to cross. Impact is limited to disclosure of target system names/metrics and tampering with alert rules - no data destruction, code execution, or service disruption.

Impact

This is a genuine but low-severity authorization flaw, not a high-impact issue. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:N, base 2.3) correctly captures modest impact: an authenticated, low-privileged user can cross an object-ownership boundary but only gains partial confidentiality (system names/metrics) and partial integrity (alert-rule creation/deletion) - no availability or code-execution impact. The AT:P (attack-requirement present) metric is well-justified because valid target system IDs must be known or guessed; Beszel is built on PocketBase, whose record IDs are 15-character random strings, so blind exploitation is non-trivial on a well-populated instance. No EPSS score, KEV listing, or POC is provided in the input, and VulnCheck reported it as a coordinated disclosure with a vendor patch rather than observed exploitation - so there is no signal of real-world attacks. My independent 3.1 assessment (~5.4, S:U/C:L/I:L) reads slightly higher than the vendor 4.0 figure, reflecting the known tendency of CVSS 4.0 to score all-Low, single-requirement bugs lower than 3.1; the two frameworks are consistent in substance. Net: real but low priority - patch during normal maintenance, prioritize on multi-tenant/shared instances.

Exploit ScenarioDerived

On a shared Beszel instance, a low-privileged (even read-only) user sends a POST to /api/beszel/user-alerts with a JSON body containing another tenant's system ID, registering an alert rule on a system they have no access to. When that alert fires, the attacker receives notifications that disclose the target system's name and metric values, leaking monitoring data across the ownership boundary; the DELETE handler similarly lets them remove others' alerts. No public exploit code is identified in the provided data, though the fix commit and its tests concretely demonstrate the vulnerable request shape.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 21, 2026

In Beszel before 0.19.0, any authenticated user - including a read-only account - can create or delete alert rules on monitoring systems they are not authorized to view, because the POST and DELETE /api/beszel/user-alerts handlers fail to verify that the supplied system ID belongs to the caller. Exploitation requires knowledge or guessing of a target system's 15-character PocketBase record ID (reflected in the CVSS 4.0 AT:P prerequisite), which limits practical impact and severity; successful abuse leaks target system names and metrics through the resulting alert notifications and allows unauthorized tampering with alert configuration. No public exploit code has been identified at time of analysis, and this CVE is not listed in CISA KEV; the vendor-released fix is Beszel 0.19.0.

RemediationAI

Upgrade to Beszel 0.19.0 or later - the vendor-released patch - which enforces the userHasSystem ownership check in both the POST and DELETE handlers of /api/beszel/user-alerts; the fixing commit is 6f92b9396dfbacaf71c20444d175af78e0517409 (https://github.com/henrygd/beszel/commit/6f92b9396dfbacaf71c20444d175af78e0517409) and release notes are at https://github.com/henrygd/beszel/releases/tag/v0.19.0, with the advisory at https://github.com/henrygd/beszel/security/advisories/GHSA-759g-ch5m-2gch. If immediate upgrade is not possible, compensating controls are limited because the vulnerable endpoints are the same ones legitimate users rely on: restrict Beszel account provisioning so only trusted operators hold credentials, since any authenticated account (including read-only) can exploit the flaw; audit the alerts collection for rules whose 'user' field does not match a system in that user's access list and remove them; and reduce exposure of system record IDs by ensuring non-admin users cannot enumerate systems through other API paths or shared dashboards. Do not treat SHARE_ALL_SYSTEMS=true as a mitigation - it deliberately removes per-system boundaries and would eliminate the access model entirely, but note that flipping it to false on an instance that previously relied on it will break users who legitimately shared all systems. Deployments serving a single operator have no cross-tenant boundary to protect and can prioritize this upgrade accordingly.

Affected VersionsENISA

beszel 0 <0.19.0

Affected Packages

euvd beszel fix: 0.19.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Beszel is a lightweight server-monitoring hub built on PocketBase (Go) with a SvelteKit front end; its alerts subsystem stores alert rules in a PocketBase 'alerts' collection keyed by user and system. CWE-639 (Authorization Bypass Through User-Controlled Key) is the exact root cause here: the UpsertUserAlerts and DeleteUserAlerts handlers accepted a client-supplied 'systems' array and iterated over it without checking ownership, so the request body's object reference - not server-side session context - determined which records were touched. The upstream commit 6f92b9396dfbacaf71c20444d175af78e0517409 adds a userHasSystem() helper that resolves the system record by ID and requires either the requesting userID to appear in the system's 'users' list or the SHARE_ALL_SYSTEMS environment variable to be 'true'; records failing the check are skipped (continue) rather than processed. Regression tests added in the same commit confirm both the read-only-user scenario ('POST/DELETE ignores systems the user cannot access') and that legitimate access still works. Because the underlying record identifiers are random 15-character PocketBase IDs, the attack surface is broad only where IDs are exposed or guessable and where multiple tenants share one hub instance.

Know when Beszel 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 (VulnCheck) PRIMARY 2.3 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.4 MEDIUM

Remote authenticated low-priv user (PR:L) crossing an object boundary; partial confidentiality (system names/metrics) and integrity (alert rules), no availability; ID-guessing captured as AT:P in 4.0.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Beszel before 0.19.0 contains an insecure direct object reference vulnerability in the POST and DELETE /api/beszel/user-alerts handlers that allows any authenticated user to create or delete alerts on systems they cannot access. Attackers can supply arbitrary system IDs in the request body to register alert rules and receive notifications disclosing target system names and metrics.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Medium
popular open-source self-hosted server-monitoring hub, common in homelab/SMB
Data Quality
6 sources
Confidence: High

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 LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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

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