CVE-2026-40937 | RustFS missing admin authorization on notification target endpoints, which allows unauthenticated configuration of event webhooks

RustFS is a distributed object storage system built in Rust. Prior to 1.0.0-alpha.94, all four notification target admin API endpoints in `rustfs/src/admin/handlers/event.rs` use a `check_permissions` helper that validates authentication only (access key + session token), without performing any admin-action authorization via `validate_admin_request`. Every other admin handler in the codebase correctly calls `validate_admin_request` with a specific `AdminAction`. This is the only admin handler file that skips authorization. A non-admin user can overwrite a shared admin-defined notification target by name, causing subsequent bucket events to be delivered to an attacker-controlled endpoint. This enables cross-user event interception and audit evasion. 1.0.0-alpha.94 contains a patch.

Published: 2026-04-22 Last update: 2026-04-24 Assigner: [email protected] Source: [email protected]

Conclusion & alert: CVE-2026-40937 is rated Low Risk (38.6/100): CVSS High severity, with low exploitation likelihood (EPSS 0.05%). Mandatory action: Monitor for updates and reassess as exploit intelligence or EPSS changes.

Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.

Exploit prediction scoring system (EPSS) score for CVE-2026-40937

EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).

# Date Old EPSS score New EPSS score Delta (New - Old)
1 2026-04-23 0.05%

Full EPSS history (1 record total)

Common vulnerability scoring system (CVSS) metrics for CVE-2026-40937

CVSS metrics for this CVE.

Base score Version Severity Vector Exploitability Impact Score source
8.3 3.1 HIGH
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:L)
Once they can reach the bug, pulling it off is straightforward—no weird race conditions or rare setup.
Privileges required (PR:L)
A normal user session is enough; they don’t have to be admin.
User interaction (UI:N)
Nobody has to click “OK” or open a trap file; it can work without a victim helping.
Scope (S:U)
Damage stays in the same “trust bubble” as the broken component—no big spill into unrelated systems.
Confidentiality (C:H)
Serious risk that confidential data gets exposed in a big way.
Integrity (I:H)
They could widely tamper with or forge data—trust in the data is badly hurt.
Availability (A:L)
Might cause slowdowns, glitches, or partial disruption—not a full brick.
2.8 5.5 [email protected]

Weakness enumeration for CVE-2026-40937

GitHub Security Advisory for CVE-2026-40937

GHSA-pfcq-4gjr-6gjm · Severity: high · Ecosystem: rust — RustFS: Missing admin authorization on notification target endpoints allows unauthenticated configuration of event webhooks

Affected software / configurations for CVE-2026-40937

Vendor Product Version Raw CPE
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha1:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha10:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha11:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha12:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha13:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha14:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha15:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha16:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha17:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha18:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha19:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha2:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha20:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha21:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha22:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha23:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha24:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha25:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha26:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha27:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha28:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha29:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha3:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha30:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha31:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha32:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha33:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha34:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha35:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha36:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha37:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha38:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha39:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha4:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha40:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha41:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha42:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha43:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha44:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha45:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha46:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha47:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha48:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha49:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha5:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha50:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha51:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha52:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha53:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha54:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha55:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha56:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha57:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha58:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha59:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha6:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha60:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha61:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha62:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha63:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha64:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha65:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha66:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha67:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha68:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha69:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha7:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha70:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha71:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha72:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha73:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha74:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha75:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha76:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha77:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha78:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha79:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha8:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha80:*:*:*:rust:*:*
rustfs rustfs 1.0.0 cpe:2.3:a:rustfs:rustfs:1.0.0:alpha81:*:*:*:rust:*:*

References for CVE-2026-40937

cvelogic Threat Intelligence