ما هو هجوم إعادة الإرسال؟
هجوم إعادة الإرسال هو عندما يلتقط شخص ما فعلاً مشفّعاً صالحاً ويعيد إرساله مرة أخرى حتى يتعامل الشبكة معه كأنه جديد. التوقيع شرعي، والتوقيت ماكر. فكر في الأمر كأن شخصاً يعيد استخدام شيكَّك الموقّع عند كاونتر آخر لا يزال يحترم نفس القواعد.
هجوم إعادة الإرسال يعني سرقة مفتاحك الخاص. ليس بالضبط. يمكن للمهاجم إعادة استخدام رسالتك الموقّعة بالفعل إذا قبلها مكانان بنفس الطريقة، حتى دون معرفة مفتاحك.
كيف يعمل هجوم إعادة الإرسال
عرض سريع حتى يثبت الأمر.
- الخطوة 1: تبث رسالة مُعاملات موقّعة.
- الخطوة 2: ينسخ المهاجم البيانات الموقّعة تماماً كما هي.
- الخطوة 3: يعيد إرسالها حيث تتحقق لا يزال، مثل بعد انقسام سلسلة أو على سلسلة تقبل نفس قواعد التوقيعات.
- الخطوة 4: ترى الشبكة توقيعاً صالحاً وتعيد معالجته، فتنقل القيمة مرتين.
- الخطوة 5: تمنعها فقط فحوصات مقاومة إعادة التشغيل، مثل معرّفات السلاسل، أو nonce، أو تصاريح واحدية المستوى من التطبيق.
هذه هي كل الحيلة. مزعجة، وممنوعة بشكل كبير.
لماذا يهم هجوم إعادة الإرسال
لماذا تهتم بهجوم إعادة الإرسال؟ لأنه يمكن أن يكرر إجراءاً حقيقياً كان من المفترض أن تقوم به مرة واحدة، ويحوّلها إلى مرتين.
- الفائدة: معرفة الخطر يوفر المال والضغط من خلال مساعدتك في هيكلة حركات أكثر أماناً.
- وجهة نظر: الحياة على عدة سلاسل أصبحت عادية الآن، لذا حدوث وصول رسائل منسوخة إلى المكان الخطأ يحدث أكثر مما يعتقد الناس.
- الأهمية: ستشاهد هذا المصطلح عند نقل الأموال عبر شبكة blockchain، خلال انقسامات السلاسل، أو عند توقيع رسائل خارج السلسلة لتطبيقات.
استخدم محفظة تعرض السلسلة النشطة بوضوح وتضبط معرّفات السلسلة بشكل صحيح. عند الشك، أرسل اختباراً صغيراً أولاً، ثم الباقي.
السمات الرئيسية لهجوم إعادة الإرسال
التقط النمط بسرعة من خلال هذه المؤشرات:
- النسخ: يعيد استخدام الرسالة الموقّعة تماماً، بايتاً مقابل بايت.
- الصلاحية: التوقيع حقيقي، لذلك تقبله العقد ما دام لا توجد حواجز مضادة لإعادة الإرسال.
- التوقيت: الأكثر شيوعاً حول انقسامات السلاسل، الجسور، أو عندما تتخطى التطبيقات فحص nonce.
التVariations
نفس الخطة، ميادين مختلفة:
- Fork: إعادة الإرسال عبر سلسلتين تفترقان وتلتزمان بنفس التوقيعات.
- Crosschain: إعادة الإرسال بين سلاسل تشترك في المعايير أو تقبل نفس صيغ الرسائل.
- Contract: إعادّة إرسال لتصاريح موقّعة أو معاملات ميتا داخل التطبيقات التي نسيت nonce لمرة واحدة.
بعد الترقيات الكبيرة أو الانقسام، تحقق من سجل المعاملات على كلا السلسلتين. إذا بدا أي شيء مضاعفاً، توقف قبل إرسال المزيد.
مثال
بعد انقسام DAO، تم قبول بعض السحوبات الموقّعة على Ethereum مرة أخرى على Ethereum Classic حتى تم تقديم حماية أقوى من Replay.
معلومة ممتعة
أصدرت Ethereum معرّفات السلسلة في 2016 عبر EIP-155 خصيصاً لوقف حيل Replay Attack، وهذا الاختيار التصميمي أثر في الطريقة التي تجعلك المحفظة الحديثة تختار سلسلة مقدماً.
إغلاق
Replay Attack في سطر واحد: توقيع حقيقي، يعاد استخدامه حيث لا ينبغي ذلك. عاملها كرسوم مضاعفة وستكتشفها أسرع.