
إثبات مفهوم (PoC) لاستغلال الثغرة ونشرة استشارية أمنية لثغرة CVE-2026-54356، وهي خلل نقص التفويض في Budibase يسمح للمستخدمين ذوي الامتيازات المنخفضة بإنشاء روابط رفع موقّعة مسبقًا لخدمة S3 باستخدام بيانات اعتماد AWS المخزنة.
يمكن لمستخدم مصادق بصلاحيات منخفضة (دور BASIC) في مساحة عمل Budibase منشورة استدعاء
POST /api/attachments/:datasourceId/url والحصول على رابط رفع مسبق التوقيع من S3 موقَّع
ببيانات اعتماد AWS من جانب الخادم الخاصة بمصدر بيانات مساحة العمل، لمفتاح كائن يتحكم
به المهاجم (وإذا لم يكن لمصدر البيانات دلو ثابت، فالدلو أيضًا تحت سيطرة المهاجم).
| CVE | CVE-2026-54356 |
| الاستشارة الأمنية | GHSA-6x9p-4r67-5gjx |
| الحزمة | @budibase/server |
| النوع | CWE-862: نقص التفويض |
| المتأثر | < 3.41.3 |
| الإصلاح | 3.41.3 |
| الخطورة | عالية — CVSS 3.1 7.1 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N) |
| الصلاحية المطلوبة | مستخدم تطبيق BASIC مصادق |
packages/server/src/api/routes/static.ts:
.post(
"/api/attachments/:datasourceId/url",
recaptcha,
authorized(PermissionType.TABLE, PermissionLevel.WRITE), // too low, wrong resource
controller.getSignedUploadURL
)
packages/server/src/api/controllers/static/index.ts (الدالة getSignedUploadURL) تحمّل
مصدر البيانات عبر :datasourceId، وتستخرج accessKeyId/secretAccessKey المخزَّنين،
وتوقّع طلب PutObject للدلو bucket والمفتاح key المقدمَين من المهاجم:
const { bucket, key } = ctx.request.body || {}
const s3 = new S3({
credentials: {
accessKeyId: datasource?.config?.accessKeyId as string,
secretAccessKey: datasource?.config?.secretAccessKey as string,
},
})
signedUrl = await getSignedUrl(s3, new PutObjectCommand({ Bucket: bucket, Key: key }))
إنشاء رابط موقّع مدعوم ببيانات اعتماد هو إجراء يتطلب صلاحيات مرتفعة، غير أن الفحص لا يتطلب
سوى إذن كتابة عام على الجداول (وهو متاح لدور BASIC) ولا يتحقق أبدًا من أن المستدعي مخوَّل
باستخدام مصدر البيانات هذا تحديدًا. المتوقع: 403. الفعلي: 200 مع signedUrl/publicUrl.
PutObject مسبقة التوقيع وصالحة موقَّعة ببيانات اعتماد AWS المخزَّنة لدى المؤسسة.curl/PUT مباشرة).انظر poc/:
poc/exploit.sh — نص PoC بلغة curl (تسجيل الدخول → إنشاء رابط موقّع → رفع ملف إثبات).poc/poc.py — نفس التدفق بلغة Python.python3 poc/poc.py \
--target http://localhost:10000 \
--app-id app_xxx --datasource-id datasource_xxx \
--email [email protected] --password 'Password123!' \
--bucket my-attachments --key poc/cve-2026-54356/proof.txt \
--upload
قم بترقية Budibase إلى الإصدار 3.41.3+. إذا تعذّر الترقية فورًا، فقيّد بيانات اعتماد AWS
لمصدر بيانات S3 بصلاحيات الحد الأدنى (سياسة IAM مقيّدة بدلو/بادئة محددة) وراقب أي نشاط
PutObject غير معتاد.
تم اكتشاف الثغرة والإبلاغ عنها بواسطة @KovachVL.
للاستخدام التعليمي/الدفاعي وللكشف المنسّق فقط. لا تختبر سوى الأنظمة التي تملكها أو المخوَّل لك اختبارها صراحةً.