Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L
PR:L required (reader-role UI account mandatory); cache deletion yields limited I:L and A:L with no confidentiality breach (C:N) and no scope change (S:U).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
bunkerweb is an Open-source and next-generation Web Application Firewall (WAF). From 1.6.2 until 1.6.12, the BunkerWeb web UI BiscuitMiddleware authorization bypass list included the /cache/ URL prefix, so routes in src/ui/app/routes/cache.py protected only by @login_required, including POST /cache/delete, allowed low-privilege read-only reader accounts to permanently delete job cache files containing blacklist, greylist, DNSBL, CrowdSec, GeoIP, ModSecurity CRS, Let's Encrypt, ACME, and custom configuration data. This issue is fixed in version 1.6.12.
AnalysisAI
Improper authorization in BunkerWeb's web UI middleware allows authenticated reader-role accounts to permanently delete WAF job cache files in versions 1.6.2 through 1.6.11. The BiscuitMiddleware bypass list incorrectly included the /cache/ URL prefix, causing the POST /cache/delete route to skip Biscuit role-based access control and enforce only Flask's @login_required decorator, making write-privileged cache operations accessible to any authenticated user. Deleted cache can include blacklists, GeoIP data, ModSecurity CRS rules, CrowdSec data, and ACME/Let's Encrypt certificate material, degrading WAF protective capability. No public exploit is identified at time of analysis; vendor-released patch is available in version 1.6.12.
Technical ContextAI
BunkerWeb is an open-source next-generation WAF whose web UI uses Biscuit tokens for role-based authorization, enforced by a middleware class (BiscuitMiddleware in src/ui/app/models/biscuit.py). This middleware maintains a static list of URL prefixes that bypass Biscuit evaluation - historically intended for genuinely static assets such as CSS, images, fonts, and JavaScript. The /cache/ prefix was erroneously included in this bypass list, meaning requests to routes under /cache/ in src/ui/app/routes/cache.py were only validated by Flask's @login_required (authentication check), never by the Biscuit operation policy that maps HTTP verbs to read or write roles. CWE-285 (Improper Authorization) captures this precisely: the system correctly authenticated users but failed to verify whether the authenticated identity held sufficient privilege for the requested write operation. The fix (commit 685ccbbe) removes /cache/ from the bypass list, introduces a STATIC_PATH_PREFIXES constant for the remaining legitimate bypasses, and routes all /cache/ requests through the standard GET→read / POST→write Biscuit policy evaluation. The same patch also addressed Datalog injection risks in Biscuit fact construction, session fixation, open redirect, and hostname validation - indicating a broader security audit accompanied this fix.
RemediationAI
Upgrade BunkerWeb to version 1.6.12, which is the vendor-released patch that removes /cache/ from the BiscuitMiddleware bypass list and enforces full role-based authorization on all cache routes. The patched release is available at https://github.com/bunkerity/bunkerweb/releases/tag/v1.6.12, with the fix committed in https://github.com/bunkerity/bunkerweb/commit/685ccbbe7d204132a843a7b7fd802d1bdb3f20a9. Prior to patching, the only effective compensating control is to audit and remove all non-admin (reader-role) UI accounts, accepting the operational trade-off of reduced delegation capability. No configuration-level workaround exists - the bypass is hardcoded in the middleware and cannot be remediated without a code change or upgrade.
Privilege escalation in BunkerWeb's UI and API allows a low-privileged authenticated user to inject attacker-controlled
Bypass of rDNS-based security controls in BunkerWeb prior to 1.6.13 allows unauthenticated remote attackers who control
Same weakness CWE-285 – Improper Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-45032