أوقفت Zilliqa في 22 يوليو تداول ZIL الأصلي مؤقتاً؛ إذ كشفت تحقيقات سابقة عن وجود خلل في nonce لتوقيعات Schnorr كان موجوداً في تطبيقات محافظ الأجهزة من Ledger منذ عام 2019: إذ يثبت هذا الخلل أول 64 بت من كل nonce توقيع على الصفر، ما يضعف العشوائية بشكل كبير، بحيث يمكن للمهاجم إعادة بناء مفتاح خاص من حوالي 5 توقيعات أو أكثر متأثرة، ولا يتطلب ذلك سوى بيانات منشورة على السلسلة.
شرح تقني لثغرة Schnorr nonce في Ledger عام 2019
وفقاً لشرح Zilliqa الرسمي، فإن السبب الجذري التقني للثغرة كالتالي: تتطلب توقيعات Schnorr استخدام رقم عشوائي فريد وغير قابل للتنبؤ به في كل مرة (nonce). فإذا تم إضعاف عشوائية nonce، فإن الخوارزمية الرياضية التي تحمي المفتاح الخاص تتعطل.
وجدت Zilliqa أن تطبيق Ledger يقوم عند إنشاء توقيعات Schnorr باستخراج الأجزاء الخاطئة من قيمة طولها 40 بايت، حيث يتم استخلاص 32 بايت غير صحيحة، ما يؤدي إلى أن تكون أول 64 بت من كل nonce صفراً. وتصف Zilliqa هذه النتيجة بأنها «nonce مؤقتة قابلة للتنبؤ ومُضعفة».
يحتاج المهاجم فقط إلى امتلاك حوالي 5 توقيعات أو أكثر من هذا النوع المتأثر لتمكينه من إعادة بناء المفتاح الخاص لصاحب التوقيع من بيانات منشورة على السلسلة؛ وقد كانت هذه الثغرة موجودة منذ إصدار تطبيق Ledger في 2019، ويمكن استخدام أي توقيعات مستوفية للشروط صدرت بعد 2019 لإعادة البناء.
الخط الزمني للأحداث من 19 إلى 22 يوليو: KuCoin تساعد في العرض، سرقة من المحفظة الباردة
وفقاً للإفصاح الرسمي من Zilliqa، فإن تسلسل الأحداث هو كالتالي: في 19 يوليو، رصدت Zilliqa نشاطاً على السلسلة يتوافق مع استغلال الثغرة؛ في 20 يوليو، تم اختراق محفظة باردة مرتبطة بشريك تبادل لدى Zilliqa وتمت سرقة رمز ZIL، وهبط ZIL إلى أدنى مستوى تاريخي عند 0.002441 دولار، كما أوقفت Coinone وKuCoin إيداع/سحب ZIL؛ في 21 يوليو، عثرت Zilliqa على السبب الجذري؛ في 22 يوليو، تم الإفصاح علناً عن الأمر وإيقاف تداول ZIL الأصلي.
أدى KuCoin دوراً حاسماً في هذه الحادثة: فقد ساعد في تحديد ثغرة nonce، وتمكن من إعادة بناء المفتاح الخاص المتأثر بنجاح من توقيعات عامة كعرض عملي، ما يؤكد أن الثغرة تم استغلالها، وأن Zilliqa يمكن أن تتخذ إجراءات لحماية الأصول وتضع خطة إصلاح أوسع نطاقاً.
تعليمات المستخدمين وتقدم الإصلاح: نسخة الإصلاح لتطبيق Ledger بانتظار النشر
وفقاً لتوصية Zilliqa الرسمية، فيما يلي التعليمات الحالية للمستخدمين المتأثرين:
· انتظر التعليمات الرسمية: يجب على جميع المستخدمين الذين يستخدمون Ledger لتوقيع ZIL الأصلي انتظار
· لا تنقل أي أموال
· لا تحاول إصلاح الأمر بنفسك
· مستخدمو معاملات EVM وSDK غير متأثرين: لا يحتاج مستخدمو الأدوات المتوافقة مع EVM وZilliqa SDK إلى اتخاذ أي إجراء
· نسخة إصلاح Ledger: تعمل Ledger على تطوير نسخة إصلاح لتطبيق Ledger، وسيتم الإبلاغ عن موعد الإصدار المحدد لاحقاً
حتى 22 يوليو وقت إعداد التقرير، بلغ سعر ZIL وفقاً لبيانات CoinGecko 0.00244 دولار، مع انخفاض بنسبة 3.5% خلال 24 ساعة، مقارنةً بأعلى مستوى تاريخي حوالي 0.2563 دولار في مايو 2021، والذي تراجع بشكل كبير.
الأسئلة الشائعة
لماذا أوقفت Zilliqa تداول ZIL الأصلي في 22 يوليو؟
وفقاً لإعلان Zilliqa الرسمي في 22 يوليو، فإن السبب هو اكتشاف خلل في nonce لتوقيعات Schnorr كان موجوداً في تطبيق Ledger منذ 2019: إذ يتم قفل أول 64 بت من كل nonce على الصفر، ما يتيح للمهاجم إعادة بناء المفتاح الخاص من حوالي 5 توقيعات عامة على السلسلة أو أكثر متأثرة.
ما نوع مستخدمي ZIL المتأثرين؟
بحسب شرح Zilliqa، فإن الخطر يقتصر على المستخدمين الذين يقومون بالتوقيع على معاملات ZIL الأصلية (غير الخاصة بـ EVM) على أجهزة Ledger؛ بينما لا يتعرض مستخدمو الأدوات المتوافقة مع EVM وZilliqa SDK لأي تأثير.
متى سيتم إصدار نسخة إصلاح Ledger؟
وفقاً لبيان Zilliqa الرسمي، فإن Ledger تعمل على تطوير نسخة إصلاح لتطبيق Ledger، وسيتم الإبلاغ عن موعد الإصدار المحدد لاحقاً؛ ويجب على المستخدمين متابعة القنوات الرسمية لكل من Zilliqa وLedger للحصول على أحدث الإعلانات.