Một trong những điều tồi tệ nhất Hacks chống lại blockchain Solana đã xảy ra vào thứ Tư khi một hacker quản lý để chuyển 80.000 ether (ETH), hơn 214 triệu đô la tại thời điểm viết, ra khỏi hệ thống Solana và vào blockchain Ethereum thông qua cầu Wormhole – một dịch vụ cung cấp khả năng chuyển tiền giữa các blockchain khác nhau.
Giải thích trong một tweet chỉ bằng hồ sơ Twitter bút danh hợp đồng thông minh, hacker đã hoàn thành việc khai thác bằng cách chuyển 80.000 ETH ra khỏi hợp đồng thông minh Wormhole trên Ethereum trong một lần duy nhất. Giao dịch. Hóa ra, đây chỉ là động thái cuối cùng trong một loạt các vụ hack cho phép hacker đánh cắp tiền.
“Mặc dù rất kịch tính, giao dịch này chỉ là kết thúc của một loạt các sự kiện thú vị. Tôi đã phải bắt đầu làm việc theo cách của mình để tìm ra làm thế nào điều này thậm chí có thể”, smartcontracts tweet.
Người giám hộ đã ký một vụ chuyển nhượng sai
Wormhole là một cái gọi là cây cầu, một hợp đồng thông minh, trên Ethereum trong trường hợp này, cung cấp một cách để di chuyển tài sản tiền điện tử giữa các blockchain khác nhau. Theo smartcontracts, từ quan điểm cấp cao, Wormhole đặc biệt có một tập hợp các người bảo vệ đồng gọi là ký kết chuyển giao giữa các blockchain.
Những người bảo vệ Wormhole bằng cách nào đó đã ký vào việc chuyển 80.000 ETH này như thể nó hợp pháp 100%.
“Giao dịch đã rút 80.000 ETH Thực ra kẻ tấn công đã chuyển 80.000 ETH từ Solana sang Ethereum. Ban đầu tôi nghĩ rằng hợp đồng có thể đã xác nhận không chính xác chữ ký trên chuyển nhượng, nhưng chữ ký [were] hoàn toàn kiểm tra.”
Theo smartcontracts, bước đột phá đầu tiên và lời giải thích một phần đến từ một Giao dịch trên Solana bằng cách nào đó đã đúc 120.000 “Wormhole ETH”, bọc ether trên Solana, không biết từ đâu. Vì hacker đã có thể đúc Wormhole ETH vào Solana, anh ta đã có thể rút nó trở lại Ethereum một cách chính xác.
“Solana thật kỳ lạ”
Kiểm tra lịch sử giao dịch của hacker, có một giao dịch đến ngay trước khi đúc 120.000 Wormhole ETH. Trong việc này Giao dịch, hacker chỉ đúc 0,1 Wormhole ETH, như thể hacker đang thử nghiệm chức năng với một lượng nhỏ.
Một cuộc kiểm tra thêm về lịch sử giao dịch của hacker cho thấy hacker đã thực hiện một lắng 0,1 ETH từ Ethereum vào Solana. Mặc dù kẻ tấn công đã không thực hiện một khoản tiền gửi ETH 120.000 ETH vào hợp đồng thông minh Wormhole trên Ethereum, nhưng có một điều thú vị về khoản tiền gửi này.
Như smartcontract giải thích trong tweet của mình, các giao dịch đúc Wormhole ETH trên Solana đã kích hoạt hợp đồng thông minh Wormhole chức năng được gọi là “complete_wrapped“. Một trong những thông số mà hàm này thực hiện là “thông điệp chuyển giao”, về cơ bản là một thông điệp Có chữ ký của những người bảo vệ cây cầu nói rằng mã thông báo nào để đúc tiền và bao nhiêu.
“Solana thật kỳ lạ, vì vậy những thông số này thực sự là hợp đồng thông minh. Nhưng điều quan trọng là làm thế nào các hợp đồng “thông điệp chuyển nhượng” này được tạo ra. Đây là Giao dịch điều đó đã tạo ra thông điệp chuyển giao ETH 0.1″, smartcontracts tweet.
Ai đang kiểm tra người kiểm tra?
Hợp đồng “thông điệp chuyển nhượng” này được tạo ra bằng cách kích hoạt một chức năng được gọi là “post_vaa“. Điều quan trọng nhất là post_vaa kiểm tra xem thư có hợp lệ hay không bằng cách kiểm tra chữ ký từ người giám hộ. Phần đó có vẻ đủ hợp lý, các nhà thầu thông minh nói, nhưng chính bước kiểm tra chữ ký này đã phá vỡ mọi thứ.
Chức năng “post_vaa” không thực sự kiểm tra chữ ký. Thay vào đó, theo kiểu Solana điển hình, có một hợp đồng thông minh khác được tạo ra bằng cách gọi “verify_signatures” chức năng. Một trong những đầu vào đến chức năng “verify_signatures” là một chương trình “hệ thống” tích hợp Solana chứa các tiện ích khác nhau mà hợp đồng có thể sử dụng.
Trong “verify_signatures”, chương trình Wormhole cố gắng kiểm tra xem việc thực hiện đã xảy ra ngay trước khi chức năng này được kích hoạt hay không, là Secp256k1 chức năng xác minh chữ ký đã được thực hiện.
“Chức năng xác minh này là một công cụ tích hợp được cho là để xác minh rằng các chữ ký đã cho là chính xác. Vì vậy, xác minh chữ ký đã được thuê ngoài cho chương trình này. Nhưng đây là nơi lỗi xuất hiện”, smartcontracts tweet.
Các hợp đồng Wormhole sử dụng chức năng load_instruction_at để kiểm tra xem hàm Secp256k1 có được gọi trước hay không, nhưng hàm load_instruction_at đã bị loại bỏ tương đối gần đây vì nó không kiểm tra xem nó có thực hiện chống lại địa chỉ hệ thống thực tế hay không!
Kết thúc trò chơi
Theo smartcontracts, người gọi được cho là cung cấp như Nhập địa chỉ hệ thống cho chương trình đang được thực hiện, nhưng hacker cung cấp một địa chỉ hệ thống khác.
Đây là địa chỉ hệ thống đang được sử dụng làm đầu vào cho “verify_signatures” cho khoản tiền gửi hợp pháp 0,1 ETH:

Nhưng đây là giao dịch “verify_signatures” cho khoản tiền gửi giả 120k ETH:

Đó không phải là địa chỉ hệ thống!
Sử dụng chương trình hệ thống “giả mạo” này, kẻ tấn công có thể nói dối một cách hiệu quả về thực tế là chương trình kiểm tra chữ ký đã được thực hiện. Các chữ ký hoàn toàn không được kiểm tra!”, smartcontracts tweet.
“Sau thời điểm đó, mọi thứ đã kết thúc. Kẻ tấn công làm cho nó trông giống như những người giám hộ đã ký vào một khoản tiền gửi 120k vào Wormhole trên Solana, mặc dù họ đã không. Tất cả những gì kẻ tấn công cần làm bây giờ là làm cho tiền “chơi” của họ thành hiện thực bằng cách rút nó trở lại Ethereum. Và một lần rút 80k ETH + 10k ETH sau đó (mọi thứ trong cầu nối trên Ethereum), mọi thứ đã biến mất.