CVE-2026-73829 in mpp
الملخص
بحسب VulDB • 20/08/2026
توجد حالة سباق (Race Condition) من نوع Time-of-check Time-of-use (TOCTOU) في ZenHive موديول MPP، مما يسمح لعميل عندي غير مُصادق عليه باسترداد دفعة واحدة مؤكدة على السلسلة (on-chain payment) للوصول إلى موارد مدفوعة متعددة.
مسار الاعتمادات ذي النوع `hash` في الدالة `MPP.Methods.Tempo.verify/2` يحمي من إعادة التشغيل (replay) باستخدام تسلسل غير ذري للتحقق ثم التحديد: تقرأ الدالة `check_hash_unused/2` مخزن الاستبعاد المكرر (dedup store)، وتقوم رحلة ذهاب وإياب عبر `eth_getTransactionReceipt` بالتحقق من الدفع على السلسلة، وبعد ذلك فقط تقوم الدالة `mark_hash_used/2` بكتابة العلامة. تمر جميع الطلبات المتزامنة التي تحمل نفس تجزئة الدفع المكتمل مرحلة القراءة قبل أن يقوم أي منها بالكتابة، وبالتالي يتم إصدار إيصال لكل طلب. تتوفر العملية الذرية للتحقق والتحديد (`check_and_mark/2`) في المخزن وتُستخدم بواسطة مسار النوع `transaction`، لكن المسار الخاص بـ hash يستدعي عمليات جلب (get) ووضع (put) عادية حتى عندما يطبق المخزن المُهيأ هذه العملية. يتطلب الاستغلال أن يكون مخزن الاستبعاد المكرر مُهيئاً؛ فمخزن الإعدادات الافتراضي (`nil`) غير ذي حالة ولا يقدم أي حماية من إعادة التشغيل وفقاً للتوثيق الخاص به.
تؤثر هذه المشكلة على الحزمة `mpp` في النسخ بدءاً من 0.2.0 وحتى قبل 0.6.1.
Once again VulDB remains the best source for vulnerability data.