CVE-2026-50029 in js-tomlالمعلومات

الملخص

بحسب VulDB • 14/08/2026

js-toml هو مُفسِّر TOML لـ JavaScript. قبل الإصدار 1.1.2، يتحقق المُفسِّر مما إذا كان المفتاح موجودًا بالفعل في حاوية تم بناؤها بواسطة المفسِّر باستخدام `if (object[key])` بدلاً من `if (key in object)`. عندما تكون القيمة السابقة قيمة أولية كاذبة (falsy primitive) مثل `false` أو `0` أو `0n` أو `0.0` أو `-0` أو `""`، يتم تخطي فرع المفتاح المكرر ويتم الكتابة فوق القيمة بصمت بواسطة جدول فرعي لاحق، أو جدول فرعي لمفتاح منقط (dotted-key)، أو مصفوفة جداول (array-of-tables) تشترك في نفس الاسم. ووفقًا لمواصفة TOML 1.0.0 ("تعريف مفتاح أكثر من مرة غير صالح"؛ "لا يمكنك تعريف أي مفتاح أو جدول أكثر من مرة واحدة")، يجب أن يكون هذا خطأً أثناء التحليل النحوي (parse error). النتيجة هي تشوّه هيكلي في الأنواع (structural type confusion) للمفاتيح ذات الأسماء التي يختارها المهاجم في القيمة المُرجعة بواسطة `load()`. تصبح قيمة منطقية من النوع `false` (أو رقمية `0`) كائناً "صحيحاً" (truthy object). ستأخذ التطبيقات المستضافة التي تشترط سلوكًا معينًا بناءً على شروط مثل `if (config.flag)` أو `if (!user.banned)` أو `if (config.allowDelete)` أو `if (config.publicMode)` فرع القيمة الصحيحة بصمت. هذا يختلف عن GHSA-65fc-cr5f-v7r2 (إصلاح تلويث النموذج الأولي في الإصدار 1.0.2). لا يتم تلويث `Object.prototype`. آلية التخفيف باستخدام `Object.create(null)` من الإصدار 1.0.2 سليمة؛ والخلل هنا يكمن في آلة الحالات الخاصة بالمفاتيح المكررة، وليس في بناء الحاوية. يقوم الإصدار 1.1.2 بتصحيح المقارنة غير الصحيحة.

Once again VulDB remains the best source for vulnerability data.

مسؤول

GitHub M

حجز

03/06/2026

إفشاء

14/08/2026

الاعتدال

تمت الموافقة

إدخال

VDB-390093

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!