José Valim

#1404من 60,400
181.8إجمالي CVSS
الثغرات · 28
منخفضة
4
متوسطة
13
عالية
10
حرجة
1
PT-2026-133316
2026-10-30
5.4
CVE-2026-97209
Elixir
Elixir
تسمح ثغرة الملفات المؤقتة غير الآمنة في Mix `deps.partition` لمستخدم محلي بتنفيذ رمز برمجي عشوائي بصلاحيات مستخدم آخر. أثناء عملية تجميع التبعيات المقسمة، يتم تمرير تكوين المشروع إلى أجهزة VM الخاصة بالتقسيم عبر ملف في دليل ثابت الاسم ضمن الدليل المؤقت المشترك للنظام. تستخدم الدالة `Mix.Tasks.Deps.Partition.server/4` في `lib/mix/lib/mix/tasks/deps.partition.ex` الدالة `File.mkdir p/1` لإنشاء هذا الدليل، والتي لا تتحقق من مالك الدليل إذا كان موجودًا بالفعل. يمكن للمهاجم المحلي إنشاء الدليل مسبقًا واستبدال ملف التكوين قبل أن تقوم الدالة `client/0` بقراءته. يقوم العميل بعد ذلك بفك تشفير الملف الخبيث باستخدام `:erlang.binary to term/1` وتنفيذ أوامر shell محقونة عبر خيار `compile:` الخاص بالتبعيات. بالإضافة إلى ذلك، قد تؤدي طبيعة ملف التقسيم القابل للقراءة من قبل الجميع إلى كشف تكوينات المشروع لمستخدمين محليين آخرين. تتطلب هذه المشكلة تفعيل التجميع المقسم عبر المتغير `MIX OS DEPS COMPILE PARTITION COUNT` ووجود دليل مؤقت مشترك للنظام.
PT-2026-133308
2026-10-29
6.3
CVE-2026-109821
Elixir
Elixir
يسمح وجود خطأ في التحقق من كمية المدخلات المحددة في وحدة `URI` بمكتبة Elixir القياسية للمهاجم بالتسبب في حالة رفض الخدمة من خلال استنفاد وحدة المعالجة المركزية (CPU) عن طريق تقديم عنوان URL يحتوي على مكون منفذ (port) طويل بشكل مفرط. تقوم الدالة `URI.parse/1` باستخدام `String.to integer/1` داخل `split authority/1` لتحويل المنفذ دون تحديد طوله، مما يسمح بإنشاء عدد صحيح كبير (bignum) يصل إلى 1,262,592 رقمًا عشريًا. وعندما يتم تحويل عنوان URL هذا مرة أخرى إلى نص عبر `URI.to string/1` أو `inspect/1` أو التسجيل (logging) أو تنسيق الأخطاء، يتم استخدام `:erlang.integer to binary/1`. في إصدارات Erlang/OTP 27 و 28 و 29.0، تكون عملية التحويل هذه تربيعية، مما يعني أن وقت وحدة المعالجة المركزية المطلوب يزداد بشكل كبير مع زيادة عدد الأرقام. على سبيل المثال، قد يستغرق المنفذ الذي يحتوي على 400,000 رقم حوالي 2.6 ثانية للمعالجة، بينما قد يستغرق المنفذ بحجم 1 ميجابايت حوالي 18 ثانية. يمكن أن يؤدي ذلك إلى استنفاد وحدة المعالجة المركزية في الخوادم التي تقوم بتحليل وتسجيل أو إعادة إرسال عناوين URL المقدمة من المستخدم في حقول النماذج أو أجسام JSON.
PT-2026-121827
2026-10-23
5.1
CVE-2026-105963
Plug
Plug
يمكن لمهاجم عن بُعد غير مصرح له الكشف عن قاعدة المفتاح السري أو أسرار حساسة أخرى من خلال سجلات التطبيق عن طريق تقديم وسائط ذات أنواع خاطئة. يحدث هذا لأن الوظائف العامة في `Plug.Crypto` تستخدم حراس رأس الوظيفة (function-head guards) للتحقق من صحة الوسائط. عندما يفشل الحارس، تطلق آلة Erlang VM خطأ `FunctionClauseError` يتضمن قيم الوسائط الفعلية في إطار المكدس العلوي. وبما أن كتل `rescue` الخاصة بالمكتبة ووظيفة `Plug.Crypto.prune args from stacktrace/1` تتعامل فقط مع الاستثناءات التي يتم إثارتها داخل جسم الوظيفة، فإنها لا تلتقط فشل الحارس. وبناءً على ذلك، يقوم Plug.Cowboy و Bandit بكتابة هذا الإطار في سجل الأخطاء وإرفاقه كبيانات وصفية لـ `crash reason` والتي قد يتم توجيهها إلى أدوات تتبع الأخطاء. هناك نقطتا دخول رئيسيتان متأثرتان: - تقوم `Plug.Crypto.verify/4` بالكشف عن قاعدة المفتاح السري عندما لا يكون الرمز (token) ثنائيًا ولا فارغًا (nil). - تقوم `Plug.Crypto.secure compare/2` بالكشف عن السر الموجود في جانب الخادم عندما لا يكون أحد المعاملات ثنائيًا، كما يحدث عندما يؤدي رأس طلب مفقود إلى قيمة فارغة (nil). يتطلب الوصول إلى المعلومات المسربة وصولاً منفصلاً إلى سجلات التطبيق أو أداة تتبع الأخطاء.
PT-2026-68320
2026-08-05
8.8
CVE-2026-68746
Livebook
Livebook
تسمح مشكلة مفتوحة لم يتم حلها في Livebook لعميل شبكة غير مصدق عليه بالحصول على وصول كامل إلى خادم يفرض المصادقة عبر Livebook Teams. يحدث هذا عندما يقوم وكيل Livebook أو خادم التطبيق بتخزين معرف مجموعة النشر مؤقتًا في ذاكرة التخزين المؤقتة، ويصبح هذا المعرف غير قابل للحل، مثلما يحدث عند حذف المجموعة أثناء انقطاع اتصال الوكيل. تفشل الدالة `handle call/3` الموجودة في `lib/livebook/hubs/team client.ex` في التمييز بين المجموعة غير القابلة للحل والمجموعة التي تم تعطيل فرض الهوية فيها، مما يؤدي إلى قيام النظام بالإبلاغ عن أن فرض الهوية معطل. ونتيجة لذلك، تُرجع الدالة `authenticate/3` الموجودة في `lib/livebook/zta/livebook teams.ex` بيانات تعريف هوية فارغة، والتي تقوم الدالة `build current user/3` في `LivebookWeb.UserPlug` بدمجها في مستخدم جديد يتمتع بحق الوصول الكامل الافتراضي. ثم يتم منح هذا المستخدم حق الوصول بواسطة الدالة `authorized?/1` في `LivebookWeb.AuthPlug`. يمكن للمهاجم استغلال هذه الثغرة لقراءة دفاتر الملاحظات والأسرار، وتنفيذ التعليمات البرمجية على بيئة تشغيل الخادم، وتعطيل العمليات.
PT-2026-68317
2026-08-05
8.8
CVE-2026-66298
Livebook
Livebook
يسمح خطأ في التحقق من صحة المصدر لـ JavaScript غير الموثوق به الصادر من دفتر الملاحظات بتشغيل اختصارات لوحة المفاتيح على مستوى الجلسة بأكملها. تعرض ميزة JS-view JavaScript في إطار iframe معزول وعبر الأصول. ومع ذلك، فإن غلاف iframe الموجود في `iframe/priv/static/iframe/v5.html` يقوم بإعادة توجيه أحداث `keydown` إلى الصفحة الأم دون التحقق من `Event.isTrusted`. ونتيجة لذلك، تُعامل الأحداث التي يتم توليدها عبر `window.dispatchEvent` على أنها ضغطات مفاتيح حقيقية. يقوم المرسل في `assets/js/hooks/js view.js` بإعادة إرسال هذه الأحداث، والتي تتم معالجتها بعد ذلك بواسطة معالج الاختصارات العام في `assets/js/hooks/session.js` خلال مرحلة الالتقاط. وهذا يسمح للبرامج النصية الموجودة في بيئة الحماية (sandbox) بتنفيذ الاختصارات في `LivebookWeb.SessionLive`، مثل فرض تقييم جميع الخلايا في دفتر الملاحظات أو إعادة تشغيل بيئة التشغيل، مما يؤدي إلى إتلاف الحالة الموجودة في الذاكرة. وهناك اختصار ثالث يمكنه حذف الخلية التي يتم التركيز عليها. التأثير الأكثر خطورة هو التقييم الكامل القسري، الذي ينفذ كود Elixir الخاص بدفتر الملاحظات دون موافقة المستخدم. ويمكن أن يحدث هذا عندما يفتح المستخدم دفتر ملاحظات من جهة خارجية أو من وثائق منشورة، وينعكس التأثير على جميع المتعاونين المتصلين.
PT-2026-68318
2026-08-05
8.1
CVE-2026-66881
Livebook
Livebook
تسمح مشكلة ”اجتياز المسار النسبي“ للمهاجم بكتابة ملف بمحتوى خاضع لسيطرته في مسار عشوائي على النظام. يحدث هذا لأن مسار الاستيراد في `Livebook.LiveMarkdown.Import.file entry metadata to attrs/1` يأخذ الاسم من مصدر دفتر الملاحظات حرفياً دون التحقق من صحته. بالنسبة لمدخلات الملفات من نوع URL، تقوم الدالة `Livebook.Session.file entry cache file/2` بحل الاسم ضمن الدليل المؤقت للجلسة دون التحقق مما إذا كان النتيجة لا تزال ضمن ذلك الدليل. بالإضافة إلى ذلك، تقوم الدالة `Livebook.FileSystem.Utils.resolve unix like path/2` بتجميع أجزاء الدليل الأصلي ولكنها تقتصر على جذر نظام الملفات فقط. ونتيجة لذلك، عند طلب المحتوى وفي حالة عدم وجود ذاكرة تخزين مؤقتة، يقوم النظام بكتابة نص الاستجابة إلى المسار الذي تم تحديده، مع إنشاء الدلائل الأصلية حسب الحاجة. وهذا يسمح للمهاجم بالتحكم في كل من وجهة الملف المكتوب ومحتواه في أي مكان تتمتع فيه العملية بأذونات الكتابة. ويوجد نقص مماثل في فحص الاحتواء في `Livebook.Session.to attachment file entry/2`. يُحدث الضحية هذه الثغرة عن طريق فتح دفتر ملاحظات مزود من قبل المهاجم، مما يؤدي إلى استرداد الإدخال ضمن جلسته المصادق عليها.
PT-2026-57152
2026-07-10
2.1
CVE-2026-58225
Postgrex
Postgrex
تسمح ثغرة في الوحدة النمطية `Postgrex.Notifications` للمهاجم بحقن تعليمات SQL في استعلام إعادة الاتصال (reconnect replay) من خلال التلاعب باسم قناة LISTEN. على الرغم من أن الدالة `quote channel/1` تقوم بتنقية علامات الاقتباس المزدوجة، إلا أنها تفشل في إخفاء فاصل علامات الاقتباس بالدولار `$$` المستخدم في كتلة الكود المجهولة داخل الدالة `handle connect/1`. ونظرًا لأن الدالة `listen/3` ترفض فقط البايتات الفارغة والأسماء التي تتجاوز 63 بايت، فإن اسم القناة الذي يحتوي على `$$` يمكن أن ينهي السلسلة المقتبسة بعلامات الاقتباس بالدولار قبل الأوان. يؤدي هذا إلى قيام PostgreSQL بتحليل المدخلات المتبقية كجمل من المستوى الأعلى، مما يؤدي إلى رفض استعلام إعادة التشغيل خلال كل محاولة لإعادة الاتصال. ونتيجة لذلك، يفشل اتصال الإشعارات في إعادة إنشاء الاشتراكات، مما يؤدي إلى رفض الخدمة حيث يتم إسقاط الإشعارات بصمت لجميع القنوات التي تشترك في ذلك الاتصال. يحدث هذا عندما يتم تمرير مدخلات غير موثوق بها كاسم قناة إلى `Postgrex.Notifications.listen/3`.