المواضيع الرائجة
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
مرحبا بك مرة أخرى في تسليط الضوء على الثغرات الأمنية في Sherlock ، حيث نسلط الضوء على ثغرة أمنية مؤثرة تم اكتشافها أثناء تدقيق شيرلوك.
هذا الأسبوع ، لدينا سلسلة رفض الخدمة (CDoS).
تم الكشف عنه من قبل @0xPapaPitufo خلال مسابقة @MorphLayer L2.
🧵👇

في Rollup.sol ، إذا تم اقتراح دفعة ضارة ، فإن الافتراض هو أن جهاز التسلسل الذي اقترحها سيفقد التحدي ، ويتعرض للقطع ، وسيتم إعادة تعيين السلسلة. هذه الحوافز الاقتصادية تمنع السلسلة من التوقف بانتظام.
يعتمد هذا على افتراض أن جهاز التسلسل لا يمكنه الفوز بالتحديات إلا إذا كانت الدفعة التي اقترحها صالحة.
ومع ذلك، فإن التحقق من أن prevStateRoot هو postStateRoot للدفعة السابقة يحدث فقط في finalizeBatch(). هذا الفحص كاف لمنع الانتهاء من الدفعات التي تحتوي على prevStateRoots المزيفة ، لكنه لا يمنع هذه الدفعات من الارتكاب.
يسمح هذا لمنظم التسلسل الضار باقتراح أي دفعة تقوم بإجراء معاملة حالة صالحة على prevStateRoot مزيف.
في معظم الحالات، سيهاجم المنافس هذه الدفعة غير الصالحة. ومع ذلك ، يمكن أن يقدم جهاز التسلسل دليلا صالحا على انتقال الحالة هذا لسرقة إيداع المنافس الصادق والفوز بالتحدي.
في حالة حدوث ذلك، أو عدم تنفيذ أي اعتراض، لن تتمكن الدفعة الملتزم بها من الانتهاء منها بسبب الفحص التالي:
سيؤدي ذلك إلى تجميد السلسلة وعدم السماح بوضع اللمسات الأخيرة على أي دفعات جديدة ، حيث يتم الالتزام بالدفعات بالتتابع ويجب الانتهاء منها بالتتابع.

مسار الهجوم:
1) يقترح المهاجم دفعة تحتوي على انتقال حالة صالح من prevStateRoot مزيف.
2) إذا تحدى منافس نزيه الدفعة ، فإن المهاجم يقدم دليلا صالحا على انتقال الدولة للفوز بالتحدي وسرقة وديعة المنافس.
3) سواء حدث ما سبق أم لا ، فقد توقفت السلسلة الآن ، حيث لا يمكن إنهاء دفعة المهاجم ، ولا يمكن إنهاء أي دفعات أخرى دون الانتهاء منها أولا.
4) لن يتم قطع المهاجم ، لأنه فاز بالتحدي.
ما هو التأثير؟
تحد صادق سيفقد إيداعه عندما يتغلب عليه منظم غير نزيه في تحد ، ولن يكون من الممكن وضع اللمسات الأخيرة على دفعات جديدة ، مما يتسبب في رفض خدمة السلسلة ، وسيتعين على المسؤولين التراجع عنها يدويا.
التخفيف:
تحقق من commitBatch() أن prevStateRoot يساوي parentBatchHeader.postStateRoot.
نحن فخورون بأننا ساعدنا في تأمين @morphlayer من خلال هذا الاكتشاف.
عندما تحتاج إلى أن تكون آمنة تماما ، فإن شيرلوك هو الخيار الصحيح.
2.78K
الأفضل
المُتصدِّرة
التطبيقات المفضلة