اختطاف DNS لـ Curve Finance: لما "العقود المُدققة" مش كفاية لحماية الباب الأمامي

في أغسطس 2022، العقود الذكية لـ Curve Finance اتلمستش — لكن المهاجمين خطفوا دومين curve.fi من عند الـ registrar، عملوا نسخة مزيفة من الموقع، وسرقوا حوالي $570K من المستخدمين. تحليل عميق للهجوم على الواجهة الأمامية لمشروع DeFi، وإيه اللي بيعلمنا إياه عن أمان الدومينات.

نُشر في ١٧ يونيو ٢٠٢٦بقلم فريق Namefi
  • domains
  • security
  • dns
  • domain-security
اختطاف DNS لـ Curve Finance: لما "العقود المُدققة" مش كفاية لحماية الباب الأمامي

العقود الذكية كانت بخير.

ده أول حاجة لازم تفهمها عن اللي حصل لـ Curve Finance في 9 أغسطس 2022، وده بالظبط اللي لسه بيزعج مهندسين الأمان لحد دلوقتي. الكود الـ on-chain لـ Curve — الـ automated market maker المُدقق والمُجرَّب اللي بيحتفظ بمليارات من العملات المستقرة — اتلمستش خالص. مفيش ثغرة reentrancy. مفيش تلاعب في الـ oracle. مفيش استغلال flash-loan. الـ blockchain عمل بالظبط اللي المفروض يعمله.

ومع ذلك، المستخدمون خسروا حوالي $570,000.

الهجوم ماجاش من العقود. جه من الدومين. حد سيطر على curve.fi على مستوى الـ registrar، وحوّله لموقع مستنسخ مربوط بـ wallet-drainer، وسيب سمعة البروتوكول تعمل الباقي. كل تدقيق أمني اجتازه Curve كان مش مهم، لأن المهاجم مراضيش على الباب ده أصلاً. دخل من الأمام — من عنوان الويب اللي المستخدمين بيكتبوه من غير ما يفكروا.

ده الحلقة 13 من Domain Mayday. قصة عن إزاي الجزء الأكثر أمانًا في النظام ممكن يكون بخير تماماً، بينما الجزء اللي الكل بيثق فيه من غير ما يتحقق — الدومين — يتحوّل بهدوء لسطح هجوم.

"العقود المُدققة" مش بتحمي الباب الأمامي

الـ DeFi قضى سنين طويلة بيبني ثقافة أمان العقود. الـ audits بقت ضرورة مفيش غنى عنها. مكافآت Bug bounty وصلت للملايين. "تم التحقق على Etherscan" بقت علامة ثقة. التصور الذهني الجماعي اتصلّب على أن: لو العقود آمنة، البروتوكول آمن.

لكن المستخدم بالكاد بيتفاعل مع العقد مباشرة. بيروح لموقع ويب. بيكتب curve.fi، المتصفح بيحوّل الاسم ده لعنوان IP، بيحمّل صفحة، والصفحة دي بتقوله محفظته تعمل إيه. كل ده بيحصل قبل ما سطر واحد من Solidity المُدقق ينفّذ — وكل ده بيعيش في بنية تحتية الـ audit مشملهاش.

الدومين هو الحلقة الأولى في السلسلة دي. وهو كمان الحلقة اللي معظم الفرق بتتعامل معاها كأنها ثابتة: تسجيلها مرة واحدة، توجيه الـ DNS، ومننساهاش للأبد. كما قال أحد التحليلات بعد الحادثة، هذا النوع من الهجمات "بيستغل طبقة الثقة" بين المستخدم وواجهة التطبيق اللامركزي بدل ما يخترق الـ blockchain للبروتوكول. العقود ممكن تكون مثالية. لو مهاجم سيطر على مكان ما curve.fi بيشاور، كل ده مش هيفيد.

9 أغسطس 2022: الاختطاف

فن مفاهيمي ملوّن نابض بالحياة لواجهة محل بيتبدّل فيها لافتة العنوان لتحويل الزبائن لمحل مزيف متطابق فيه فخ خفي في الأرض، درجات ألوان دافئة وباردة، استعارة أمنية سريالية، من غير شعارات تجارية

بعد ظهر 9 أغسطس 2022، الواجهة الأمامية الرئيسية لـ Curve بطلت تبع Curve.

تحليل CertiK لما بعد الحادثة حدد الجدول الزمني بدقة: "في حوالي الساعة 4:20 مساءً بتوقيت الساحل الشرقي في 9 أغسطس 2022، اتسرق سجل DNS لـ Curve Finance وبدأ يشاور على موقع مستنسخ خبيث." أي حد بيزور curve.fi مكانش ظاهرله أي حاجة غلط. الصفحة اتحمّلت. الشعار كان موجود. الـ pools والواجهة والألوان — كل حاجة اتنسخت بأمانة.

الفرق كان غير مرئي وكامل: الموقع اللي اتحمّل في متصفح المستخدم مش بيتقدّم من Curve. ده نسخة مستنسخة، قاعدة على بنية تحتية المهاجم، مستنية حد يوصّل محفظته.

الباحث الأمني Lefteris Karapetsas وصف الميكانيكية بصراحة — المهاجمين "استنسخوا الموقع، خلّوا الـ DNS يشاور على الـ IP بتاعهم اللي الموقع المستنسخ متنشور عليه، وأضافوا طلبات موافقة لعقد خبيث." شرح Cointelegraph اللاحق وصف نفس النمط: "المهاجمين استنسخوا موقع Curve Finance وتلاعبوا في إعدادات الـ DNS بتاعته عشان يبعتوا المستخدمين لنسخة مزيفة منه."

وبعدين استنّوا.

إيه اللي خسره المستخدمون

لما مستخدم وصل للنسخة المستنسخة وحاول يستخدمها، الصفحة طلبت من محفظته تعمل حاجة بتعملها آلاف المرات يومياً على مواقع DeFi الشرعية: الموافقة على رمز. وفقاً لـ CertiK، "المهاجم حقن كود خبيث في الموقع ده طلب من المستخدمين إعطاء صلاحيات الرمز لعقد غير موثق." Coingape وصف الفخ بكلمات أبسط: "الهاكرز تمكنوا من نشر عقد خبيث على الصفحة الرئيسية، اللي لما الضحية تعتمده بتتفضي محفظتها تماماً."

الموافقة على صلاحية رمز حاجة تبدو عادية. هو نفس الكليك اللي المستخدمين بيعملوه للتبادل على بورصة شرعية. لكن هنا العقد اللي اتوافق عليه كان بتاع المهاجم — وبمجرد الموافقة، قدر ينقل العملات المستقرة للضحية.

المحاسبة على الـ blockchain كانت محددة. CertiK أفاد بأن "في الإجمالي، 7 مستخدمين تأثروا بالاستغلال واللي نتج عنه خسائر بحوالي $612K،" والرقم انقسم كـ "$612,724.16 من USDC وDAI" اللي الهاكر بعدين بدّلها بـ ETH. rekt.news قرّب الرقم لرقم أكتر شيوعاً: "الأموال المسروقة (340 ETH، أو حوالي $575K، إجمالاً)." معظم التغطيات المعاصرة جاءت في نفس النطاق — Cryptopotato أفادت أن الهاكرز سرقوا حوالي $570,000 من ETH؛ CryptoDaily لاحظت إن الهاكر سرق أكتر من $573,000. الرقم الدقيق بيختلف شوية حسب وقت اللقطة وسعر ETH. الصورة الكبيرة ثابتة: ستة أرقام متوسطة منخفضة، اتسرقت من حفنة مستخدمين، بموقع كان شبه بالظبط اللي وثقوا فيه.

وده الجزء اللي يستحق التأمل. Tronweekly لخصه بشكل نظيف: الهجوم ده "مالمسش العقود الذكية لـ Curve على Ethereum ولا أي من الـ $5.7B من الأصول المخزنة فيها." خمس فاصلة سبعة مليار دولار من أصول البروتوكول، في أمان تام. Curve نفسها، كما لاحظت نفس المقالة، "بخير ولم تتكبد أي خسائر." البروتوكول كسب. المستخدمون خسروا. لأن الهجوم مكانش مستهدف البروتوكول أصلاً.

إزاي حصل ده: الدومين مش الـ chain

فن مفاهيمي ملوّن نابض بالحياة لموظف لوحة هاتفية بيحوّل سراً كابل مكالمة متوهج لمبنى مزيف متطابق، كابلات ودوائر نيون، استعارة سريالية لإعادة توجيه DNS، من غير شعارات تجارية

طيب إزاي مهاجم بيخلي curve.fi يحلّ لـ سيرفره هو بدل سيرفر Curve؟

ابدأ بفهم DNS بيعمل إيه. اسم دومين زي curve.fi هو تسمية سهلة للإنسان. الكمبيوترات محتاجة عنوان IP. نظام أسماء النطاقات هو طبقة البحث اللي بتترجم واحدة للتانية — شرح Cointelegraph مقارناه بـ "دليل التليفون" اللي "بيحوّل أسماء النطاقات السهلة دي لعناوين IP اللي الكمبيوترات محتاجتها للتواصل." اختطاف الـ DNS يعني التلاعب في البحث ده عشان دليل التليفون يدّي رقم غلط — "تغيير طريقة حل استعلامات DNS، وإعادة توجيه المستخدمين لمواقع خبيثة من غير ما يعرفوا."

المهم، مش محتاج تكسر كمبيوتر المستخدم عشان تعمل ده. بتغيّر الإجابة الرسمية من مصدرها — الـ nameserver اللي الدومين بيفوّض ليه. والمصدر ده موجود عند الـ registrar بتاع الدومين.

مؤسس Curve، Michael Egorov، كان صريحاً في مكان الإخفاق. كما نقل عنه rekt.news، "الـ registrar لـ dns اسمه iwantmyname اتاخد الـ ns بتاعه،" وقراءة الفريق كانت أن "Curve بتعتقد إن الـ nameserver الأساسي اتاخد، مش ثغرة على مستوى الحساب." بمعنى آخر: ده مكانش (حسب ما يعرفه Curve) كلمة مرور مسروقة من حساب الـ registrar بتاع Curve. كانت مشكلة طبقة أعمق — في بنية الـ nameserver اللي الـ registrar نفسه بيشغّلها. شرح Cointelegraph اللاحق أكد الـ registrar بالاسم، ملاحظاً أن المشروع "كان بيستخدم نفس الـ registrar، 'iwantmyname'، وقت الهجوم السابق."

الفرق ده مهم جداً للدرس. الفريق ممكن يطبق كلمة مرور قوية، يفعّل المصادقة الثنائية، ويأمن تسجيل الدخول للـ registrar بتاعه تماماً — وبرضو يخسر دومينه لو الـ nameserver تحته اتاخد. صاحب الدومين مش لازم يكون اتغلط. الثقة اللي وضعها في الطبقة تحته اتكسرت ببساطة. صياغة Cointelegraph لكيفية عمل الهجمات دي بتعمّم الخطر: "لو خريطة الموقع اتغيرت بسبب بيانات اعتماد مسروقة أو ثغرة في الـ registrar، المستخدمين ممكن يتحولوا لسيرفرات ضارة من غير ما يدروا."

بمجرد ما الـ nameserver رد بـ IP المهاجم، الباقي كان تلقائي. كل مستخدم بيكتب curve.fi كان بيتسلّم النسخة المستنسخة بهدوء. دليل التليفون اتعدّل، وتقريباً محدش بيتحقق من دليل التليفون.

الاستجابة والتداعيات

فريق Curve تحرّك بسرعة، والاستجابة مفيدة بالظبط بسبب إيه اللي قدروا يعملوه وإيه اللي معقدروش.

اللي قدروا يعملوه فوراً هو التحذير. الفريق قال للمستخدمين بصراحة: "من فضلك متعملش أي موافقات أو تبادلات. بنحاول نحدد المشكلة، بس دلوقتي، لسلامتك، متستخدمش curve.fi أو curve.exchange." ووجّهوا المستخدمين للبديل النظيف — "استخدم https://curve.exchange دلوقتي لحد ما يرجع الـ propagation لـ https://curve.fi لوضعه الطبيعي" — لأن curve.exchange كان شغّال على بنية تحتية مختلفة ومتأثرش.

اللي مقدروش يعملوه على الفور هو إرجاع الأمور فوراً. غيّروا الـ nameserver، لكن الـ DNS مش بيتحدث في كل مكان دفعة واحدة. كما لاحظ rekt.news، "الموقع المرايا بتاع الهاكر اتشال بسرعة، لكن في بعض الـ nameservers لسه محتاجة تتحدث." لفترة من الوقت، حتى بعد إصلاح المشكلة، الـ caches حول العالم فضلت تقدّم الإجابة القديمة الخبيثة. تأخير الانتشار ده خاصية مدمجة في الـ DNS — وميزة مدمجة للمهاجم.

المستخدمين اللي كانوا وافقوا على العقد الخبيث، الدفاع الوحيد كان الإلغاء. الرسالة اتكررت في كل مكان: "لو وافقت على أي عقود على Curve في الساعات الأخيرة، ألغِ الموافقة فوراً." rekt.news نشر عنوان الـ drainer المحدد اللي المستخدمين محتاجين يلغوا صلاحيته — 0x9eb5f8e83359bb5013f3d8eee60bdce5654e8881 — عشان الضحايا يقدروا يقطعوا الصلاحية قبل ما يتسرق أكتر.

الأموال المسروقة انتشرت عبر قنوات الغسيل المعتادة. CertiK تتبّع التدفق — "FixedFloat: 292 ETH، Tornado Cash: 27.7 ETH، Binance: 20 ETH" — ولاحظ لفّة في التوقيت: مع Tornado Cash المعاقب حديثاً من OFAC بأيام قبل كده، "العقوبة الأخيرة لـ Tornado Cash من OFAC على الأرجح قلقت الهاكر بما يكفي عشان يبعت غالبية الأموال المسروقة لـ FixedFloat،" بورصة مركزية. الخيار ده ساعد: rekt.news أفاد بأن من الأموال المبعوتة لـ FixedFloat، 112 ETH اتجمّدت. في غضون ساعات، Curve أكدت "المشكلة اتحددت واترجعت."

إيه اللي بيعلمنا إياه عن الـ DNS لواجهات الـ DeFi

حادثة Curve درس مضغوط في مكان سطح الهجوم الحقيقي لـ DeFi. كام نقطة بتتعمم كويس بعيداً عن Curve:

  1. الدومين بتاعك جزء من محيط الأمان بتاعك. من السهل تتعامل مع الدومين كبنية تحتية تسويقية — تسمية، مش نظام. لكن الدومين هو أول تعليمة يتبعها متصفح المستخدم. لو غلط، كل حاجة بعده هتكون غلط. الـ audits اللي بتوقف عند حدود العقود بتسيب أكتر حلقة موثوق بيها من غير تغطية.

  2. أمان الـ registrar والـ nameserver فوقيك. نظافة حساب Curve بنفسها كانت ممكن تكون كويسة؛ الاختراق كان على الأرجح على مستوى طبقة الـ nameserver. بتورّث الوضع الأمني لكل مزود في سلسلة الـ DNS بتاعتك. اختار registrars ومضيفي DNS بيدعموا registrar locks، وحماية قوية للحساب، ومثالياً DNSSEC — وافهم إنك حتى في الحالة دي بتثق في طبقة مش بتتحكم فيها بالكامل.

  3. المستخدمون مش قادرين يشوفوا الـ DNS. النسخة المستنسخة بدت متطابقة لأن الاسم كان متطابق. القفل كان أخضر؛ الـ URL كان صح. مفيش حاجة مستخدم حذر بيتحقق منها عادةً كانت هتلفت انتباهه. ده اللي بيخلي اختطاف الـ DNS فعّال جداً حتى مع الجمهور المتطور — الخداع بيحصل تحت الطبقة اللي البشر بيفحصوها.

  4. خليك عندك بديل نظيف. منقذة Curve كانت curve.exchange على بنية تحتية منفصلة. مسار واجهة أمامية تانية — دومين مختلف، مزود DNS مختلف، مرآة مبنية على IPFS أو ENS — بيدّيك مكان تبعت منه المستخدمين لما اسمك الأساسي يتسمّم.

  5. الموافقات على الرموز هي الـ payload. كل هجوم على واجهة أمامية من الفئة دي بينتهي بنفس الطريقة: موافقة تبدو عادية على عقد معادي. المحافظ والواجهات والمستخدمين كلهم محتاجين يتعاملوا مع طلبات الموافقة على صفحة تحمّلت حديثاً كالإجراء عالي الخطورة اللي هي عليه فعلاً.

زاوية Namefi

رسم توضيحي ملوّن لملكية دومين قابلة للتحقق ومقاومة للتلاعب — بطاقة دومين مأمونة بدرع أخضر، رمز Namefi أخضر، واستمرارية DNS

اختطاف Curve هو في جوهره سؤال عن مين بيتحكم في الاسم — وكيف التحكم ده ممكن يتحقق بوضوح، يتمسك، ويتعافى.

في النموذج التقليدي، السيطرة على دومين هي حزمة هشة: حساب registrar، مجموعة سجلات nameserver، وسلسلة مزودين لازم تثق بيهم بصمت. لما أي حلقة في السلسلة دي تتاخد — كما كان يُعتقد بالنسبة لـ nameserver بتاع iwantmyname — صاحب الدومين الشرعي ممكن يخسر السيطرة الفعلية على اسمه من غير ما يغلط خالص، ومن غير أي سجل واضح مقاوم للتلاعب عن إيه اللي اتغيّر وامتى.

Namefi متبني على فكرة إن الدومينات المفروض تتصرف كأصول أصيلة للإنترنت — إن الملكية والتحكم ممكن يتحولوا لقابلين للتحقق والمراجعة ومقاومين للتلاعب مع الحفاظ على التوافق مع الـ DNS. الدرس العميق من Curve مش "الـ DeFi مش آمن". الدرس هو أن طبقة الدومين بنية تحتية أمنية حاملة للحمل، ولسنين طويلة اتعامل معاها كديكور. سواء كنت بتشغّل بروتوكول DeFi، متجر إلكتروني، أو مدونة، الاسم اللي مستخدميك بيكتبوه هو وعد — ونزاهة الوعد ده قوية بقوة سطح التحكم وراءه فقط.

عقود Curve حافظت على خمس فاصلة سبعة مليار دولار بدون أي خدش. الدومين سلّم نص مليون في بعد ظهر واحد. الفجوة دي هي الحكاية كلها.

المصادر وقراءة إضافية

عن الكاتب/الكاتبة

فريق Namefi
فريق Namefi • Namefi

يضم Namefi مهندسين ومصممين ومشغلين شغوفين بتطوير أدوات تجعل إدارة أسماء النطاقات على السلسلة أكثر سهولة وسلاسة.

أدلة ذات صلة