Поломка: як хакер викрав 80 тис. ETH з мосту Solana Wormhole PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Розбивка: як хакер вкрав 80 тис. ETH з мосту Solana Wormhole

Один із найгірших хакі проти блокчейну Solana сталося в середу, коли хакеру вдалося перевести 80,000 214 ефіру (ETH), понад XNUMX мільйонів доларів на момент написання, із системи Solana в блокчейн Ethereum через міст Wormhole – сервіс, що забезпечує можливість передачі кошти між різними блокчейнами.

Пояснення у твіті нитка за псевдонімом Twitter-профілем розумні контракти, хакер завершив експлойт, перерахувавши 80,000 XNUMX ETH зі смарт-контракту Wormhole на Ethereum за один раз угода. Як виявилося, це був лише останній крок у серії хакерських дій, які дозволили хакеру вкрасти кошти. 

«Хоча це драматично, ця транзакція – лише самий кінець цікавої серії подій. Мені довелося почати працювати назад, щоб з’ясувати, як це взагалі можливо», – пише смарт-контракт.

Опікуни підписали фальшиву передачу

Червоточина — це так званий міст, а розумний контракт, у цьому випадку на Ethereum, що забезпечує спосіб переміщення криптоактивів між різними блокчейнами. Відповідно до смарт-контрактів, з точки зору високого рівня, Wormhole спеціально має набір так званих охоронців, які підписують перекази між блокчейнами.

Опікуни Wormhole якимось чином підписали цей переказ 80,000 100 ETH, ніби він був на XNUMX% законним.

«Транзакція, яка витягнула 80,000 тис ETH насправді був зловмисником, який передав 80,000 XNUMX ETH з Solana в Ethereum. Спочатку я думав, що контракт міг неправильно підтвердити підписи під час передачі, але підписи [були] повністю перевірені».

Відповідно до smartcontracts, перший прорив і часткове пояснення прийшли від a угода на Solana, який якимось чином викарбував 120,000 XNUMX «Wormhole ETH», загорнув ефір на Solana, з нізвідки. Оскільки хакер зміг викарбувати Wormhole ETH на Solana, він зміг правильно вивести його назад в Ethereum.

«Солана якась дивна»

Вивчаючи історію транзакцій хакера, ми виявили транзакцію, яка була здійснена безпосередньо перед карбуванням 120,000 XNUMX Wormhole ETH. У цьому угода, хакер карбує лише 0.1 Wormhole ETH, ніби хакер тестував функцію з невеликою кількістю.

Подальше вивчення історії транзакцій хакера показує, що хакер зробив a депозит 0.1 ETH з Ethereum в Солана. Хоча зловмисник не вніс ETH депозит у розмірі 120,000 XNUMX ETH в смарт-контракт Wormhole на Ethereum, у цьому депозиті є щось цікаве.

Як смарт-контракт пояснює у своєму твіті, транзакції, які карбували Wormhole ETH на Solana, ініціювали розумний контракт Wormhole. функція називається "завершений_загорнутий“. Одним із параметрів, які приймає ця функція, є «повідомлення передачі», в основному a повідомлення підписані охоронцями мосту, де зазначено, який жетон карбувати і скільки.

«Солана трохи дивна, тому ці параметри насправді самі по собі розумні контракти. Але важливо, як створюються ці контракти «передачі повідомлення». Ось угода який надіслав повідомлення про переказ 0.1 ETH», — пише у Twitter smartcontracts.

Хто перевіряє шашки?

Цей контракт «передачі повідомлення» створюється шляхом запуску a функція називається "post_vaa“. Найважливіше те, що post_vaa перевіряє, чи дійсне повідомлення, перевіряючи підписи опікунів. Ця частина здається достатньо розумною, каже smartcontracts, але саме цей крок перевірки підпису зламав усе.

Функція “post_vaa” насправді не перевіряє підписи. Замість цього, у типовій манері Solana, є інший розумний контракт, який створюється шляхом виклику «перевірити_підписи" функція. Один з витрати до функції «verify_signatures» є вбудована «системна» програма Solana, яка містить різні утиліти, які може використовувати контракт.

Усередині «verify_signatures» програма Wormhole намагається перевірити, що виконання, яке відбулося безпосередньо перед запуском цієї функції, було Secp256k1 виконано функцію перевірки підпису.

«Ця функція перевірки є вбудованим інструментом, який повинен перевірити правильність наданих підписів. Тому перевірка підпису була передана цій програмі. Але ось де з’являється помилка», – пише в твіті smartcontracts.

Контракти Wormhole використовували цю функцію load_instruction_at щоб перевірити, що функція Secp256k1 була викликана першою, але функція load_instruction_at була застаріла відносно недавно, оскільки вона не перевіряє, що він виконується за фактичною системною адресою!

Гра закінчена

Відповідно до смарт-контрактів, абонент повинен надати як вхід системну адресу програми, яка виконується, але хакер надав іншу системну адресу.

Ось ця системна адреса, яка використовується як вхід для «verify_signatures» для законного депозиту 0.1 ETH:

Правильний введення системної адреси
Правильний введення системної адреси

Але ось транзакція «verify_signatures» для фальшивого депозиту в розмірі 120 тис. ETH:

Введення системної адреси
Введена помилкова адреса системи 

Це не системна адреса!

«Використовуючи цю «фейкову» системну програму, зловмисник міг фактично збрехати про те, що була виконана програма перевірки підпису. Підписи взагалі не перевірялися!», – пише в твіттері smartcontracts.

«Після цього моменту гра закінчилася. Зловмисник зробив вигляд, що опікуни підписали депозит у 120 тис. в Wormhole на Солані, хоча вони цього не зробили. Все, що зловмиснику потрібно було зробити зараз, це зробити свої «ігрові» гроші реальними, витягнувши їх назад в Ethereum. І один виведення 80 тис. ETH + 10 тис. ETH пізніше (все в бриджі на Ethereum), все зникло».

everdome

Інформаційний бюлетень CryptoSlate

Резюме найважливіших щоденних історій у світі криптовалют, DeFi, NFT тощо.

Отримати край на ринку криптоактивів

Отримуйте більше криптоінформації та контексту в кожній статті як платний член CryptoSlate Edge.

Аналіз на ланцюгах

Знімки цін

Більше контексту

Приєднуйтесь зараз за $ 19 / місяць Вивчіть усі переваги

Джерело: https://cryptoslate.com/breakdown-how-the-hacker-stole-80k-eth-from-the-solana-wormhole-bridge/

Часова мітка:

Більше від CryptoSlate