مرحبا بك مرة أخرى في تسليط الضوء على الثغرات الأمنية في Sherlock ، حيث نسلط الضوء على ثغرة أمنية مؤثرة تم اكتشافها أثناء تدقيق شيرلوك. هذا الأسبوع ، لدينا انتحال الودائع. تم الكشف عنه من قبل @0xalpharush & @bernd_eth في مسابقة @zetablockchain Cross-Chain. 🧵
فيما يلي ملخص @bernd_eth للثغرة الأمنية: 1. يراقب مراقبو ZetaChain المعاملات على السلاسل الخارجية (على سبيل المثال ، Ethereum و Solana) ويضيفونها إلى متتبع وارد مركزي لمعالجتها كعمليات إيداع وسحب ، بافتراض نجاح المعاملات. 2. على عكس تكامل EVM ، يتخطى تنفيذ Solana فحوصات نجاح المعاملات ، مما يسمح للمراقب الخبيث بإضافة الودائع الفاشلة ، وسك ZRC20 SOL غير المدعوم ، واستنزاف الأموال الجسرة. 3. على الرغم من أن المراقبين مسموح بهم صراحة من قبل ZetaChain ، فمن الأهمية بمكان التأكد من عدم تمكن أي طرف واحد من المساومة على أصول السلسلة أو السيفون.
عادة، لا يعالج المراقبون المعاملات الفاشلة، ولكن مسار التعليمات البرمجية هذا يفشل في إجراء نفس التحقق من الصحة مثل نظيره في EVM. في حين أن هذا يتطلب دورا "متميزا" ، فإن كل مدقق هو مراقب ، ومن المفترض أن يكون إجماع BFT متسامحا بيزنطيا ، أي يتسامح مع <1/3 الأطراف الخبيثة. وبالتالي ، لا ينبغي أن يكون أحد المراقبين الخبيثين قادرا على تزوير وديعة وحث المدققين الصادقين على التصويت لسك ZRC20 Sol للمعاملات الفاشلة من خلال المتعقب الوارد ، والذي يفتقر إلى التحقق من صحة تنفيذ Solana.
السبب الجذري لهذه الثغرة: لا تتطلب الدالة ProcessInboundEvents نجاح المعاملة، على عكس المراقب الوارد EVM، الذي يقوم بذلك بشكل صحيح هنا. نظرا لأنه تم فك تشفير التعليمات كما لو كانت ناجحة ، يمكن للمراقب الخبيث انتحال إيداع لرصيد ZRC20-SOL بالكامل ثم سحب SOL المقفل في جانب Solana من الجسر ، وسرقة جميع المصابيح في الجسر. يمكن أيضا استخدام هذا الهجوم لسحب رموز SPL أو إجراء عمليات إيداع ومكالمات عشوائية. على سبيل المثال، تؤدي إزالة الخاصية القابلة للكتابة من المساعد الرقمي الشخصي للبوابة في تعليمات الإيداع إلى فشل المعاملة (راجع خطأ قيد الإرساء في POC)، ولا يزال من الممكن معالجتها بمجرد إضافتها إلى المتعقب الوارد عبر MsgAddInboundTracker.
الشروط المسبقة الداخلية: يضيف المراقب الضار أو المهمل Solana tx فاشلا يحتوي على إرشادات البوابة إلى المتعقب الوارد باستخدام MsgAddInboundTracker ، مما يؤدي إلى قيام جميع المدققين بمعالجة التصويت على ZRC20 Sol على Zetachain. يحصل CCTX على أصوات كافية ، ويتم سك ZRC20 Sol غير المدعوم على Zetachain.
الشروط المسبقة الخارجية: يرسل أي طرف معاملة فاشلة إلى البوابة مع تعليمات الإيداع (أو الإيداع والاتصال). يقوم متلقي ZRC20 Sol على Zetachain بسحبها ويستقبل لامبورتس على Solana.
مسار الهجوم: 1) يرسل أي طرف معاملة فاشلة إلى البوابة مع تعليمات الإيداع (أو الإيداع والاتصال). 2) يضيف المراقب الضار أو المهمل Solana tx فاشلا يحتوي على تعليمات البوابة إلى المتعقب الوارد باستخدام MsgAddInboundTracker ، مما يؤدي إلى قيام جميع المدققين بمعالجة التصويت على ZRC20 Sol على Zetachain. 3) تتسبب مهمة ProcessInboundTrackers في حصول CCTX المخادع على أصوات كافية، ويتم سك ZRC20 Sol غير المدعوم على Zetachain. 4) يقوم متلقي ZRC20 Sol على Zetachain بسحبها ويستقبل لامبورتس على Solana.
ما هو التأثير؟ يمكن سرقة جميع الرموز المميزة ورموز SPL المودعة في جسر Solana ، نظرا لأنه يمكن تزوير الودائع بأي مبلغ (تتم معالجتها على الرغم من أن برنامج Gateway يتسبب في عودة المعاملات).
التخفيف: في معالجة المتتبع الوارد ل Solana Observer ، تحقق مما إذا كانت المعاملة ناجحة قبل التصويت عليها.
نحن فخورون بأننا ساعدنا في تأمين @zetablockchain من خلال هذا الاكتشاف. عندما تحتاج إلى أن تكون آمنة تماما ، فإن شيرلوك هو الخيار الصحيح.
‏‎2.62‏K