Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
bitwarden-cipher-create-acl — Bitwarden Server v2026.9.2 - عالي - IDOR - زرع عناصر خزنة قابلة لفك التشفير في مجموعات لا يملك المستدعي صلاحية الكتابة فيها | Kitploit
أدوات/GitHubGitHub/abraxas/bitwarden-cipher-create-acl
المصادقة والترخيصتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHub

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
abraxas/bitwarden-cipher-create-acl

bitwarden-cipher-create-acl

Bitwarden Server v2026.9.2 - عالي - IDOR - زرع عناصر خزنة قابلة لفك التشفير في مجموعات لا يملك المستدعي صلاحية الكتابة فيها

عرض المستودع
226منذ 9 أياملم تتم المراجعة بعد

Abraxas Labs - bitwarden-cipher-create-acl

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  bitwarden-cipher-create-acl

المقال التفصيلي: https://abraxaslabs.tech/research/bitwarden-cipher-create-acl

bitwarden-cipher-create-acl

Bitwarden Server v2026.9.2 - Bitwarden

إنشاء عنصر مشفّر (cipher) على مستوى المؤسسة عبر مسار Entity Framework (MariaDB وPostgres وSQLite) يُسقط معرّف المستدعي قبل ربط المجموعة. يمكن لعضو مؤكَّد أن يزرع عنصرًا بمفتاح المؤسسة داخل مجموعة لا يملك صلاحية الكتابة فيها. يقوم أعضاء المجموعة بمزامنته كتسجيل دخول مشترك عادي.

المعرّفلا يوجد CVE بعد
CWECWE-863 / CWE-639
CVSSعالٍ: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L
المنتجBitwarden Server
المتأثرv2026.9.2 (9ee4e0eb) lite EF (MariaDB / Postgres / SQLite). أما MSSQL/Dapper فيحتفظ بـ @UserId.
المصادقةعضو مؤكَّد في المؤسسة
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

يقوم المهاجم بإضافة عناصر إلى خزنة مجموعة مشتركة. وهو لا يقرأ أو يستبدل الأسرار الموجودة فيها بالفعل.

يمتلك العضو المؤكَّد في المؤسسة مفتاح المؤسسة مسبقًا، لذا يُفكّ تشفير العنصر الجديد لكل من يمكنه رؤية تلك المجموعة. ويعرضه Bitwarden كتسجيل دخول أو ملاحظة أو بطاقة أو مفتاح SSH مشترك عادي من داخل خزنة الشركة.

  • التصيّد من داخل الخزنة. زرع تسجيل دخول باسم يشبه عنصرًا مشتركًا حقيقيًا (Okta، GitHub، VPN، Payroll) يشير عنوان URI الخاص به إلى مضيف يتحكم به المهاجم. يفتحه أعضاء المجموعة من Bitwarden فيصلون إلى صفحة المهاجم، أو يُملأ تلقائيًا مقابل موقع مماثل.
  • تسميم العمليات. زرع ملاحظة آمنة أو تسجيل دخول يبدو كعملية تدوير (new AWS key، bastion SSH key، DB password after change). فينسخه أحدهم إلى بيئة الإنتاج أو إلى طرفية.
  • البقاء بعد الطرد. الإنشاء هو عنصر مشفّر جديد في المجموعة. ويبقى متاحًا لكل من لديه صلاحية الوصول بعد إزالة عضوية المهاجم.
  • تجاوز وضع القراءة فقط. يمكن لمتعهد يملك صلاحية القراءة فقط على Production أن يُسقط عنصرًا جديدًا فيها على lite EF.

إذا لم تكن لديهم صلاحية الوصول إلى المجموعة المستهدفة، فقد يُرجع POST /api/ciphers/create رمز 404 بعد أن تكون الكتابة قد نُفّذت بالفعل. ومع ذلك يتلقى الضحايا العنصر عند المزامنة.

كيف اكتشفتها

ثبّتُّ إصدار bitwarden/server v2026.9.2 (9ee4e0eb) بعد موجة 2026: طلب المسؤول TDE (CVE-2026-60104)، واقتطاع SSO ExternalId (CVE-2026-101878)، واستيراد المؤسسة للمجموعات الفارغة (CVE-2026-43638). تلك الثغرات مغلقة. أما قائمة التحكم بالوصول (ACL) للمجموعة عند الإنشاء فلم تكن كذلك.

لا يتحقق CiphersController.PostCreate إلا من عضوية المؤسسة، ثم يمرّر skipPermissionCheck: true عند تعيين OrganizationId. بعد ذلك يتعامل SaveDetailsAsync مع عبارة "هذه المجموعة موجودة في المؤسسة" باعتبارها الفحص الوحيد للمجموعة.

تستخدم MariaDB/Postgres/SQLite في lite إطار EF. يضبط CreateAsyncReturnCipher القيمة cipher.UserId = null لوجود معرّف مؤسسة، ثم يمرّر هذه القيمة الفارغة إلى UpdateCollectionsAsync. معرّف المستخدم الفارغ يعني كل المجموعات في المؤسسة. أما SQL Server Dapper فيحتفظ بـ @UserId من أجل Cipher_UpdateCollections (ReadOnly = 0). ذلك المسار هو الحالة السلبية.

المسارات الخاطئة المسجّلة مسبقًا: التعامل مع POST /organizations السحابي كأنه إنشاء الاستضافة الذاتية (فهو [NotSelfHostedOnly]؛ وتحتاج النسخة الخفيفة إلى ملف ترخيص، لذا يزرع المختبر صفوف المؤسسات بعد التسجيل)؛ والزرع في مجموعة لا يستطيع المستدعي قراءتها وقراءة HTTP 404 كأنها عدم إصابة (فصف CollectionCipher مُثبَّت بالفعل)؛ والافتراض بأن MSSQL الخفيف سيُظهره (فـ Dapper لا يُسقط معرّف المستدعي)؛ وترك BW_ENABLE_ADMIN معطّلًا بحيث لا تُهاجر النسخة الخفيفة User / OrganizationDomain أبدًا (فالمشرف هو مُهاجِر EF على هذه الصورة)؛ وإغفال Bitwarden-Client-Version على /identity/connect/token ومشاهدة منح كلمة المرور يعيد 400. صدفة عكسية. مسرح.

المختبر

cd lab
./run.sh

استهدف فقط http://127.0.0.1:18160. الصورة ghcr.io/bitwarden/lite:2026.9.2 بالإضافة إلى MariaDB.

SUCCESS BITWARDEN-CIPHER-CREATE-ACL create-http=404 collectioncipher=1 victim-sync-has-cipher=yes cipher=<id> negative-http=404 readonly-http=200 BITWARDEN-CIPHER-CREATE-ACL-WITNESS

تُرجع محفظة النبات بدون صلاحية وصول 404 بعد تنفيذ CollectionCipher. يحتوي كل من GET /api/ciphers و/api/sync الخاص بالضحية على المعرّف الجديد. القراءة فقط على B تُرجع 200 ولا تزال تزرع. تبقى مجموعة المؤسسة الخارجية 404 دون صف انضمام.

الإصلاح

مرّر معرّف المستخدم الحافظ إلى UpdateCollectionsAsync في EF بالطريقة نفسها التي لا يزال بها CipherDetails_CreateWithCollections يمرّر @UserId بعد أن يجعل عمود UserId المخزّن فارغًا (null). لا تتعامل مع مستخدم فارغ على أنه "كل المجموعات" في مسار إنشاء العضو. الوجود في المؤسسة ليس صلاحية كتابة.

المراجع

  • github.com/bitwarden/server وسم v2026.9.2
  • CiphersController.cs (Post، PostCreate)
  • CipherService.cs (SaveDetailsAsync)
  • CipherRepository.cs (CreateAsyncReturnCipher، UpdateCollectionsAsync)
  • CWE-863

الترخيص

GNU Affero GPL v3.0

تنزيل الأداة