عند التفاعل مع DApps ، يحتاج المستخدمون إلى الانتباه إلى التحكم في عدد الرموز المعتمدة ، والتحقق من محتوى التوقيع وحالات الترخيص غير الطبيعية.
** بقلم: ليزا **
خلفية
في 11 مايو ، غرد مستخدم تويتر "pineapple.eth" بأن محفظته سُرقت بسبب نقرة خاطئة على أحد مواقع التصيد الاحتيالي (شبكة syncswap [.]) ، وخسر أكثر من 100 دولار.
(*
على الرغم من أن مقدار الخسارة ليس كبيرًا ، إلا أن هناك خطرًا أمنيًا كبيرًا مختبئًا فيه. غالبًا ما يفقد الضحايا أصولًا ضخمة بسبب خطر التوقيع "غير الواضح" المتمثل في "عدم القدرة على الرؤية". لهذا السبب كتبنا هذا المقال.
وبحسب وصف الضحية فإن المعاملات المسروقة هي كما يلي:
(
* (*
من هاتين المعاملتين ، يقوم طالب العقد (0x00002 ... d0000) بتحويل 34.87 USDC على عنوان الضحية (0xA4089… 82C3) إلى (0x8256 ... D6B8) ونقل 81.36 USDC إلى (0x5A69 ... 1C17). إذا نظرت للتو إلى وظيفة TransferFrom ، فليس من الصعب أن تجد أن وظيفة هذه الوظيفة هي السماح لطرف ثالث ببدء معاملة لنقل الأصول الرقمية ذات الصلة من حساب المالك إلى حساب المستلم.
ثم قم بتحليل عنوان المتصل بالعقد (0x00002 ... d0000) ، واكتشف أن هناك عملية تصريح إضافية ، وهي ليست في سجلات معاملات الضحية. ما هو دور التصريح؟
(*
ما هو التصريح؟
وفقًا للمقدمة الرسمية ، تم إدخال التصريح في بروتوكول ERC20 في EIP-2612 ، ويمكن للمستخدمين التفاعل مع عقد التطبيق من خلال إرفاق توقيع تفويض (تصريح) دون إذن مسبق. على وجه التحديد ، نعلم جميعًا أنه في معاملة عملة ERC20 ، يمكن لـ A استدعاء وظيفة الموافقة لتفويض B ، أي لتفويض الرمز المميز المحدد بواسطة A لحساب آخر للعمل ، ويجب أن يكون مالك هذا الحساب لاستدعاء الموافقة وظيفة. تتمثل وظيفة وظيفة التصريح في أن A يوقع على كائن التفويض مقدمًا تحت السلسلة ، ويبلغ B بالتوقيع الذي تم الحصول عليه ، ويمكن لـ B استخدام هذا التوقيع لاستدعاء تصريح لتحقيق عملية التفويض لـ A (استخدم TransferFrom لنقل البدل ) ، يمكن لـ A تحويل الرمز المحدد دون إرسال المعاملة ، وسواء كان صاحب الحساب أم لا ، يمكنه تنفيذ التصريح لتفويض العملية. بالإضافة إلى ذلك ، أصدرت Uniswap معيارًا جديدًا لترخيص رمز Permit2.
فيما يلي مقارنة بين الموافقة والتصريح:
وظيفة الموافقة (عنوان usr ، uint wad) عوائد خارجية (منطقية)
{
بدل [msg.sender] [usr] = رزمة ؛
...
}
تصريح عمل (
صاحب العنوان ، عنوان المنفق ،
uint256 nonce ، انتهاء صلاحية uint256 ، مسموح منطقي ،
uint8 v ، بايت 32 r ، بايت 32 ثانية
) خارجي {
...
مخصص [holder] [spender] = رزمة ؛
...
}
بعد فهم الأساسيات ، ثم العودة إلى حدث التصيد نفسه ، يمكنك إرسال وظيفة التصريح هذه باستخدام 7 معلمات:
المالك: العنوان المعتمد
المنفق: من هو المفوض
القيمة: عدد الرموز المميزة المصرح بها المقدمة
الموعد النهائي: هو طابع زمني ، صالح فقط قبل الوقت المحدد
v ، r ، s: بيانات التوقيع
من بينها ، الموعد النهائي هو 1714509304969 ، والقيمة 116239404 ، مما يعني أن التفويض ساري المفعول حتى 0:42 يوم 22 أغسطس ، 56300 (بتوقيت جرينتش) ، تقريبًا إلى أجل غير مسمى. وعدد الرموز الممنوحة هو 116.239404 دولار أمريكي ، وهو نفس المبلغ المسروق من قبل الضحية. قيم v و r و s هي بيانات التوقيع بعد أن يوقع المستخدم (المالك) على موقع التصيد الاحتيالي ، وستتحقق وظيفة التصريح من صحة بيانات التوقيع. بعد اجتياز التحقق من صحة التوقيع ، سيتم تفويض رمز المستخدم للمتسلل (المنفق).
العملية برمتها واضحة للغاية: وقع الضحية على التوقيع وأرسلته إلى موقع التصيد الاحتيالي ولكنه لم يحمّله إلى السلسلة. بعد الحصول على معلومات التوقيع ، قدم المخترق التصريح على السلسلة ، أي يُسمى الموافقة للحصول على إذن . يتم التوقيع خارج السلسلة دون إنفاق أي غاز. لكن يجب أن يكون واضحًا أنه لا يوجد غاز هنا لا يعني عدم استهلاك الغاز ، لكن الموقع (الضحية) لا يحتاج إلى دفع الغاز مقابل الترخيص والنقل.
مما لا شك فيه ، على غرار الموافقة على التصيد المصرح به ، يعتبر التصريح أكثر خطورة من الموافقة على التصيد المصرح به ، بعد كل شيء ، طالما أن التوقيع مسروق ، يتم الحصول على إذن. على سبيل المثال ، تحتاج وظيفة الأمر المعلق في dex إلى أن يقوم المستخدم فقط بتوقيع رسالة معينة ، ويمكن للمستخدم أن يعهد بالأصل إلى dex للمعالجة دون دفع الغاز ، وقد يتم فقد أصول المستخدم. على حد علمنا ، ستقوم بعض المحافظ بفك تشفير وعرض معلومات التوقيع الخاصة بتصيد التصريح بالموافقة ، ولكن المحفظة لا تحتوي تقريبًا على أي تحذيرات بشأن التصيد الاحتيالي للتوقيع ، ويكون المستخدمون أكثر عرضة للهجوم. في الوقت نفسه ، يعد توقيع التصريح سلوكًا خارج السلسلة ، ويصعب على المستخدمين ملاحظة ما إذا كانت توقيعاتهم قد تم تسريبها.
ميستراك
في الوقت الحالي ، تم وضع علامة على عنوان المخترق كعنوان تصيد احتيالي ضار بواسطة MistTrack.
استخدم MistTrack لتحليل عملات ETH و WBTC و USDT و USDC و SHIB و DAI و WETH و DAI و stETH و APE. حاليًا ، يحقق العنوان 1 ربحًا يبلغ حوالي 120000 دولار أمريكي ، ويحقق العنوان 2 ربحًا يبلغ حوالي 200000 دولار أمريكي ، والعنوان 3 يحقق ربحًا حوالي 2000 دولار. بالإضافة إلى ذلك ، وفقًا لتحليل ساد سنيفير ، وهي منصة Web3 لمكافحة الاحتيال ، اعتبارًا من 9 مايو ، تمت سرقة أصول أكثر من 300 ضحية بحوالي 690 ألف دولار أمريكي من خلال التوقيعات الخبيثة بناءً على Permit2. من إطلاق Permit2 على Uniswap حتى 9 مايو حتى الآن ، سمح ما يقرب من 670.000 عنوان على شبكة Ethereum mainnet بتصريح Permit2. بالطبع ، هذه البيانات ليست سوى غيض من فيض للصورة الكاملة لهذه العصابة.
لخص
تبدأ هذه المقالة بشكل أساسي بقضية مسروقة فعلية وتقدم مخاطر توقيع التصريح. يذكرك فريق أمان SlowMist بعدم فتح مواقع ويب مجهولة المصدر للعمل كما تشاء. عند التفاعل مع DApps ، انتبه إلى التحكم في عدد الرموز المرخصة للعقد وتحقق بعناية من محتوى التوقيع.استخدم أدوات التفويض مثل RevokeCash من وقت إلى وقت (تحقق من وجود ترخيص غير طبيعي ، ويمكنك أيضًا استخدام أداة إدارة التفويض لـ Uniswap Permit2 (للتحقق ، إذا كان هناك أي ترخيص غير طبيعي ، يرجى إلغاء التفويض في الوقت المناسب.
** رابط مرجعي: **
شاهد النسخة الأصلية
المحتوى هو للمرجعية فقط، وليس دعوة أو عرضًا. لا يتم تقديم أي مشورة استثمارية أو ضريبية أو قانونية. للمزيد من الإفصاحات حول المخاطر، يُرجى الاطلاع على إخلاء المسؤولية.
تحليل توقيع التصريح: هل يمكن للتوقيعات خارج السلسلة أيضًا التقاط الرمز الخاص بك؟
** بقلم: ليزا **
خلفية
في 11 مايو ، غرد مستخدم تويتر "pineapple.eth" بأن محفظته سُرقت بسبب نقرة خاطئة على أحد مواقع التصيد الاحتيالي (شبكة syncswap [.]) ، وخسر أكثر من 100 دولار.
على الرغم من أن مقدار الخسارة ليس كبيرًا ، إلا أن هناك خطرًا أمنيًا كبيرًا مختبئًا فيه. غالبًا ما يفقد الضحايا أصولًا ضخمة بسبب خطر التوقيع "غير الواضح" المتمثل في "عدم القدرة على الرؤية". لهذا السبب كتبنا هذا المقال.
وبحسب وصف الضحية فإن المعاملات المسروقة هي كما يلي:
(
من هاتين المعاملتين ، يقوم طالب العقد (0x00002 ... d0000) بتحويل 34.87 USDC على عنوان الضحية (0xA4089… 82C3) إلى (0x8256 ... D6B8) ونقل 81.36 USDC إلى (0x5A69 ... 1C17). إذا نظرت للتو إلى وظيفة TransferFrom ، فليس من الصعب أن تجد أن وظيفة هذه الوظيفة هي السماح لطرف ثالث ببدء معاملة لنقل الأصول الرقمية ذات الصلة من حساب المالك إلى حساب المستلم.
ثم قم بتحليل عنوان المتصل بالعقد (0x00002 ... d0000) ، واكتشف أن هناك عملية تصريح إضافية ، وهي ليست في سجلات معاملات الضحية. ما هو دور التصريح؟
ما هو التصريح؟
وفقًا للمقدمة الرسمية ، تم إدخال التصريح في بروتوكول ERC20 في EIP-2612 ، ويمكن للمستخدمين التفاعل مع عقد التطبيق من خلال إرفاق توقيع تفويض (تصريح) دون إذن مسبق. على وجه التحديد ، نعلم جميعًا أنه في معاملة عملة ERC20 ، يمكن لـ A استدعاء وظيفة الموافقة لتفويض B ، أي لتفويض الرمز المميز المحدد بواسطة A لحساب آخر للعمل ، ويجب أن يكون مالك هذا الحساب لاستدعاء الموافقة وظيفة. تتمثل وظيفة وظيفة التصريح في أن A يوقع على كائن التفويض مقدمًا تحت السلسلة ، ويبلغ B بالتوقيع الذي تم الحصول عليه ، ويمكن لـ B استخدام هذا التوقيع لاستدعاء تصريح لتحقيق عملية التفويض لـ A (استخدم TransferFrom لنقل البدل ) ، يمكن لـ A تحويل الرمز المحدد دون إرسال المعاملة ، وسواء كان صاحب الحساب أم لا ، يمكنه تنفيذ التصريح لتفويض العملية. بالإضافة إلى ذلك ، أصدرت Uniswap معيارًا جديدًا لترخيص رمز Permit2.
فيما يلي مقارنة بين الموافقة والتصريح:
وظيفة الموافقة (عنوان usr ، uint wad) عوائد خارجية (منطقية)
{
بدل [msg.sender] [usr] = رزمة ؛
...
}
تصريح عمل (
صاحب العنوان ، عنوان المنفق ،
uint256 nonce ، انتهاء صلاحية uint256 ، مسموح منطقي ،
uint8 v ، بايت 32 r ، بايت 32 ثانية
) خارجي {
...
مخصص [holder] [spender] = رزمة ؛
...
}
بعد فهم الأساسيات ، ثم العودة إلى حدث التصيد نفسه ، يمكنك إرسال وظيفة التصريح هذه باستخدام 7 معلمات:
من بينها ، الموعد النهائي هو 1714509304969 ، والقيمة 116239404 ، مما يعني أن التفويض ساري المفعول حتى 0:42 يوم 22 أغسطس ، 56300 (بتوقيت جرينتش) ، تقريبًا إلى أجل غير مسمى. وعدد الرموز الممنوحة هو 116.239404 دولار أمريكي ، وهو نفس المبلغ المسروق من قبل الضحية. قيم v و r و s هي بيانات التوقيع بعد أن يوقع المستخدم (المالك) على موقع التصيد الاحتيالي ، وستتحقق وظيفة التصريح من صحة بيانات التوقيع. بعد اجتياز التحقق من صحة التوقيع ، سيتم تفويض رمز المستخدم للمتسلل (المنفق).
العملية برمتها واضحة للغاية: وقع الضحية على التوقيع وأرسلته إلى موقع التصيد الاحتيالي ولكنه لم يحمّله إلى السلسلة. بعد الحصول على معلومات التوقيع ، قدم المخترق التصريح على السلسلة ، أي يُسمى الموافقة للحصول على إذن . يتم التوقيع خارج السلسلة دون إنفاق أي غاز. لكن يجب أن يكون واضحًا أنه لا يوجد غاز هنا لا يعني عدم استهلاك الغاز ، لكن الموقع (الضحية) لا يحتاج إلى دفع الغاز مقابل الترخيص والنقل.
مما لا شك فيه ، على غرار الموافقة على التصيد المصرح به ، يعتبر التصريح أكثر خطورة من الموافقة على التصيد المصرح به ، بعد كل شيء ، طالما أن التوقيع مسروق ، يتم الحصول على إذن. على سبيل المثال ، تحتاج وظيفة الأمر المعلق في dex إلى أن يقوم المستخدم فقط بتوقيع رسالة معينة ، ويمكن للمستخدم أن يعهد بالأصل إلى dex للمعالجة دون دفع الغاز ، وقد يتم فقد أصول المستخدم. على حد علمنا ، ستقوم بعض المحافظ بفك تشفير وعرض معلومات التوقيع الخاصة بتصيد التصريح بالموافقة ، ولكن المحفظة لا تحتوي تقريبًا على أي تحذيرات بشأن التصيد الاحتيالي للتوقيع ، ويكون المستخدمون أكثر عرضة للهجوم. في الوقت نفسه ، يعد توقيع التصريح سلوكًا خارج السلسلة ، ويصعب على المستخدمين ملاحظة ما إذا كانت توقيعاتهم قد تم تسريبها.
ميستراك
في الوقت الحالي ، تم وضع علامة على عنوان المخترق كعنوان تصيد احتيالي ضار بواسطة MistTrack.
العنوان 1: 0x00002644e79602F056B03235106A9963826d0000
العنوان 2: 0x82563Ba592986Cb277d67B2E7c56ab3BB3FDD6B8
العنوان 3: 0x5A697967F0791d12db8A0f92344Abc6DD07a1C17
تم تبادل كل من USDC للضحية مقابل ETH.
استخدم MistTrack لتحليل عملات ETH و WBTC و USDT و USDC و SHIB و DAI و WETH و DAI و stETH و APE. حاليًا ، يحقق العنوان 1 ربحًا يبلغ حوالي 120000 دولار أمريكي ، ويحقق العنوان 2 ربحًا يبلغ حوالي 200000 دولار أمريكي ، والعنوان 3 يحقق ربحًا حوالي 2000 دولار. بالإضافة إلى ذلك ، وفقًا لتحليل ساد سنيفير ، وهي منصة Web3 لمكافحة الاحتيال ، اعتبارًا من 9 مايو ، تمت سرقة أصول أكثر من 300 ضحية بحوالي 690 ألف دولار أمريكي من خلال التوقيعات الخبيثة بناءً على Permit2. من إطلاق Permit2 على Uniswap حتى 9 مايو حتى الآن ، سمح ما يقرب من 670.000 عنوان على شبكة Ethereum mainnet بتصريح Permit2. بالطبع ، هذه البيانات ليست سوى غيض من فيض للصورة الكاملة لهذه العصابة.
لخص
تبدأ هذه المقالة بشكل أساسي بقضية مسروقة فعلية وتقدم مخاطر توقيع التصريح. يذكرك فريق أمان SlowMist بعدم فتح مواقع ويب مجهولة المصدر للعمل كما تشاء. عند التفاعل مع DApps ، انتبه إلى التحكم في عدد الرموز المرخصة للعقد وتحقق بعناية من محتوى التوقيع.استخدم أدوات التفويض مثل RevokeCash من وقت إلى وقت (تحقق من وجود ترخيص غير طبيعي ، ويمكنك أيضًا استخدام أداة إدارة التفويض لـ Uniswap Permit2 (للتحقق ، إذا كان هناك أي ترخيص غير طبيعي ، يرجى إلغاء التفويض في الوقت المناسب.