CVE-2025-54070 in openzeppelin-contractsالمعلومات

الملخص

بحسب VulDB • 28/05/2026

تُعد مكتبة OpenZeppelin Contracts مكتبةً لتطوير العقود الذكية الآمنة. بدءاً من الإصدار 5.2.0 وحتى الإصدارات السابقة لـ 5.4.0، قد تؤدي دالة `lastIndexOf(bytes,byte,uint256)` الموجودة في مكتبة `Bytes.sol` إلى الوصول إلى ذاكرة غير مهيأة (uninitialized memory) عند تحقق الشرطين التاليين معاً: 1) أن يكون طول المخزن المؤقت (buffer) المقدم فارغاً (أي `buffer.length == 0`)، وأن تكون الموضع (position) غير مساوية لـ `2**256 - 1` (أي `pos != type(uint256).max`). يمكن استخدام وسيط `pos` للوصول إلى بيانات عشوائية خارج حدود المخزن المؤقت. قد يؤدي هذا إلى نفاد غاز التشغيل (running out of gas) أو إرجاع فهرس غير صالح (خارج حدود المخزن المؤقت الفارغ). معالجة هذا النتيجة غير الصالحة للوصول إلى `buffer` ستسبب تراجعاً (revert) في الظروف العادية. عند التفعيل، تقرأ الدالة الذاكرة عند الإزاحة `buffer + 0x20 + pos`. إذا تطابقت الذاكرة في ذلك الموقع (خارج `buffer`) مع نمط البحث، فستعيد الدالة فهرساً خارج الحدود بدلاً من القيمة المتوقعة `type(uint256).max`. يخلق هذا سلوكاً غير متوقع حيث يتلقى المتصلون فهرساً يبدو صالحاً ويشير إلى خارج حدود المخزن المؤقت. يجب مراجعة التأثير المحتمل بعناية لأي عمليات وصول لاحقة إلى الذاكرة لا تتحقق من الحدود وتستخدم الفهرس المُرجع، وذلك اعتماداً على إعداداتها. قد تظهر الشفرة المعتمدة على إرجاع هذه الدالة للقيمة `type(uint256).max` للمخازن المؤقتة الفارغة، أو التي تستخدم الفهرس المُرجع دون التحقق من الحدود، سلوكاً غير معرف (undefined behavior). يجب على المستخدمين الترقية إلى الإصدار 5.4.0 لتلقي التصحيح.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

GitHub M

حجز

16/07/2025

إفشاء

17/07/2025

الاعتدال

تمت الموافقة

إدخال

VDB-316817

EPSS

0.00334

KEV

لا

النشاطات

منخفض جدًا

المصادر

Might our Artificial Intelligence support you?

Check our Alexa App!