تفکیک: چگونه هکر 80 هزار ETH را از پل کرم چاله سولانا دزدید

Breakdown: How the hacker stole 80k ETH from the Solana Wormhole bridge


یکی از بدترین ها هک ها علیه بلاک چین سولانا روز چهارشنبه اتفاق افتاد زمانی که یک هکر موفق شد 80000 اتر (ETH)، بیش از 214 میلیون دلار را در لحظه نگارش مقاله، از سیستم Solana و به بلاک چین اتریوم از طریق پل Wormhole منتقل کند – سرویسی که توانایی انتقال را فراهم می کند. وجوه بین بلاک چین های مختلف

در یک توییت توضیح داده شده است نخ با نام مستعار توییتر قراردادهای هوشمند، هکر با انتقال 80000 ETH به خارج از قرارداد هوشمند Wormhole در اتریوم در یک واحد اکسپلویت را نهایی کرد. معامله. همانطور که مشخص شد، این تنها آخرین حرکت در یک سری هک بود که هکر را قادر به سرقت وجوه کرد.

اگرچه این معامله دراماتیک است، اما این معامله تنها پایان یک سری رویدادهای جالب است. من مجبور شدم به سمت عقب حرکت کنم تا بفهمم که چگونه این امکان وجود دارد.

نگهبانان یک انتقال دروغین را امضا کردند

کرم چاله به اصطلاح پل است، الف قرارداد هوشمنددر اتریوم در این مورد، راهی برای جابجایی دارایی‌های کریپتو بین بلاک چین‌های مختلف فراهم می‌کند. طبق قراردادهای هوشمند، از دیدگاه سطح بالا، Wormhole به طور خاص دارای مجموعه‌ای از نگهبانان نامیده می‌شود که انتقالات بین بلاک چین‌ها را امضا می‌کنند.

نگهبانان Wormhole این انتقال 80000 ETH را به نحوی امضا کرده بودند که گویی 100٪ قانونی است.

«تراکنشی که 80000 را بیرون کشید ETH در واقع مهاجمی بود که 80000 ETH را از Solana به Ethereum منتقل کرد. من در ابتدا فکر می کردم که قرارداد ممکن است به اشتباه امضاهای مربوط به انتقال را تأیید کند، اما امضاها [were] کاملا بررسی شد.»

طبق قراردادهای هوشمند، اولین پیشرفت و توضیح جزئی از a معامله روی سولانا که به نوعی 120000 “Wormhole ETH” را بر روی سولانا پیچید. از آنجایی که هکر توانست Wormhole ETH را روی سولانا ضرب کند، توانست آن را به درستی به اتریوم بازگرداند.

“سولانا کمی عجیب است”

با بررسی تاریخچه تراکنش هکرها، تراکنشی وجود دارد که درست قبل از ضرب 120000 Wormhole ETH انجام شده است. در این معامله، هکر تنها 0.1 کرم چاله اتریوم را برش می دهد، گویی هکر در حال آزمایش عملکرد با مقدار کمی است.

بررسی بیشتر تاریخچه تراکنش هکر نشان می دهد که هکر یک اقدام را انجام داده است سپرده از 0.1 ETH از اتریوم به سولانا. اگرچه مهاجم 120000 ETH را در قرارداد هوشمند Wormhole در اتریوم واریز نکرده است، اما نکته جالبی در مورد این سپرده وجود دارد.

همانطور که قرارداد هوشمند در توییت خود توضیح می‌دهد، تراکنش‌هایی که Wormhole ETH در Solana منعقد کردند، باعث ایجاد یک قرارداد هوشمند Wormhole شدند. عملکرد به نام “complete_wrapped”. یکی از پارامترهایی که این تابع می گیرد “پیام انتقال” است، اساساً a پیام با امضای نگهبانان پل که می گوید کدام ژتون ضرابخانه و چقدر.

سولانا کمی عجیب است، بنابراین این پارامترها در واقع خود قراردادهای هوشمند هستند. اما نکته مهم این است که این قراردادهای “پیام انتقال” چگونه ایجاد می شوند. اینجاست معامله که پیام انتقال 0.1 ETH را ایجاد کرد.

چه کسی چکرها را چک می کند؟

این قرارداد “پیام انتقال” با راه اندازی a ایجاد می شود عملکرد به نام “post_vaa”. مهمترین چیز این است که post_vaa با بررسی امضای قیم بررسی می کند که آیا پیام معتبر است یا خیر. Smartcontracts می گوید که این بخش به اندازه کافی معقول به نظر می رسد، اما این مرحله بررسی امضا است که همه چیز را شکست.

تابع “post_vaa” در واقع امضاها را بررسی نمی کند. در عوض، به روش معمولی سولانا، قرارداد هوشمند دیگری وجود دارد که با فراخوانی “verify_signatures” ایجاد می شود. عملکرد. یکی از ورودی ها برای تابع “verify_signatures” یک برنامه “سیستم” داخلی Solana است که شامل ابزارهای مختلفی است که قرارداد می تواند استفاده کند.

در “verify_signatures”، برنامه Wormhole تلاش می کند تا بررسی کند که اجرای درست قبل از راه اندازی این تابع، این بوده است که Secp256k1 تابع تأیید امضا اجرا شد.

«این تابع تأیید یک ابزار داخلی است که قرار است تأیید کند که امضاهای داده شده درست هستند. بنابراین تأیید امضا به این برنامه برون سپاری شده است. اما اینجا جایی است که اشکال وارد می‌شود.

قراردادهای کرم چاله از این تابع استفاده کردند load_instruction_at برای بررسی اینکه ابتدا تابع Secp256k1 فراخوانی شده است، اما تابع load_instruction_at نسبتاً اخیراً منسوخ شده است زیرا بررسی نمی کند که در برابر آدرس واقعی سیستم اجرا می شود!

بازی تمام شد

طبق قراردادهای هوشمند، تماس گیرنده قرار است به عنوان ارائه دهد ورودی آدرس سیستم به برنامه در حال اجرا، اما هکر آدرس سیستم دیگری را ارائه کرد.

در اینجا آدرس سیستم به عنوان ورودی برای “verify_signatures” برای واریز قانونی 0.1 ETH استفاده می شود:

ورودی آدرس سیستم را درست کنید
ورودی آدرس سیستم را درست کنید

اما در اینجا تراکنش “verify_signatures” برای سپرده جعلی 120 هزار ETH است:

ورودی آدرس سیستم
ورودی آدرس اشتباه سیستم

این آدرس سیستم نیست!

“با استفاده از این برنامه سیستم “جعلی”، مهاجم می تواند به طور موثر در مورد این واقعیت که برنامه بررسی امضا اجرا شده است دروغ بگوید. امضاها اصلاً بررسی نمی‌شدند!

بعد از آن نقطه، بازی تمام شد. مهاجم اینطور به نظر می‌رسید که نگهبانان یک سپرده 120 هزار تومانی در Wormhole در Solana امضا کرده‌اند، حتی اگر این کار را نکرده‌اند. تنها کاری که مهاجم باید انجام می داد این بود که پول «بازی» خود را با پس گرفتن آن به اتریوم واقعی کند. و یک برداشت 80 هزار اتریوم + 10 هزار اتریوم بعدا (همه چیز در پل اتریوم)، همه چیز از بین رفت.

Everdome

خبرنامه CryptoSlate

دارای خلاصه‌ای از مهم‌ترین داستان‌های روزانه در دنیای کریپتو، DeFi، NFT و موارد دیگر.

دریافت کنید حاشیه، غیرمتمرکز در بازار دارایی های رمزنگاری شده

به عنوان یک عضو پولی در هر مقاله به بینش‌ها و زمینه‌های رمزنگاری بیشتری دسترسی داشته باشید CryptoSlate Edge.

آنالیز روی زنجیره

عکس های فوری قیمت

زمینه بیشتر

اکنون با 19 دلار در ماه بپیوندید. همه مزایا را کاوش کنید