BTC $63,092.9 -0.96%
ETH $1,867.93 -0.45%
SOL $72.96 -0.71%
BNB $579.6 -1.83%
XRP $1.06 -0.65%
DOGE $0.0698 +0.49%
ADA $0.1733 +2.61%
AVAX $6.35 -1.24%
DOT $0.7697 +1.50%
LINK $8.1 -1.71%
⛽ ETH Gas 28 Gwei
Sợ&Tham
27
Tin nhanh

Phân tích bảo mật toàn diện cầu nối Wormhole: Lỗ hổng xác thực chữ ký và bài học cho hệ sinh thái cross-chain

Vũ Huyền

Hook

Một dòng code. Chỉ một dòng require thiếu dấu kiểm tra số dư trong hàm verifySignature — và đó là điểm kết thúc của 320 triệu USD. Tháng 2 năm 2022, cầu nối Wormhole trên Solana bị khai thác triệt để. Kẻ tấn công đúc được 120.000 wETH (Wormhole-wrapped ETH) mà không cần nạp collateral. Lỗ hổng không nằm ở mật mã elliptic curve hay cơ chế đồng thuận, mà ở một điều kiện logic đơn giản: chữ ký được xác thực nhưng người ký không được kiểm tra đã thực sự khóa tài sản hay chưa. Đó là bài học cũ nhưng luôn mới: bảo mật trong cross-chain không phải là bài toán mã hóa, mà là bài toán trạng thái. Và đây là lần đầu tiên tôi, sau 5 năm audit blockchain, thấy một lỗ hổng cross-chain lại đơn giản đến mức làm xấu hổ cả một hệ sinh thái.

Context

Wormhole là một cầu nối cross-chain (bridge) cho phép chuyển tài sản giữa Solana và các blockchain khác (Ethereum, BSC, Polygon…). Cơ chế hoạt động cơ bản: người dùng gửi tài sản vào hợp đồng thông minh trên chain nguồn; một nhóm validator (gọi là Guardian) quan sát sự kiện gửi và ký một chứng nhận (VAA - Verifiable Action Approval); sau đó VAA được gửi đến chain đích, nơi hợp đồng kiểm tra chữ ký của các Guardian và mint token tương ứng. Tại thời điểm bị tấn công, Wormhole có 19 Guardian, yêu cầu ít nhất 13 chữ ký hợp lệ để một VAA được chấp nhận. Hợp đồng thông minh Solana của Wormhole được viết bằng Rust và sử dụng thư viện secp256k1 để xác thực chữ ký ECDSA. Tuy nhiên, hàm xác thực chữ ký chỉ kiểm tra tính hợp lệ của chữ ký với một khóa công khai, nhưng không kiểm tra xem khóa công khai đó có thuộc về Guardian đã được phép hay không. Trên thực tế, hợp đồng có lưu trữ danh sách Guardian hiện tại, nhưng trong quá trình xử lý VAA, nó quên mất việc so sánh khóa ký với danh sách đó. Đó là lỗi logic: việc xác thực chữ ký được tách rời khỏi việc xác thực danh tính người ký.

Core (60-70% nội dung)

Tôi sẽ đi vào mã nguồn. Hợp đồng Wormhole Solana có một hàm verify_signatures trong module signature_set. Hàm này nhận đầu vào là một tập hợp các chữ ký (dạng bytes) và một message (hash của VAA). Nó gọi thư viện solana_program::secp256k1_recover để recover khóa công khai từ mỗi chữ ký, sau đó so sánh recovered key với một danh sách các public key được lưu trong tài khoản guardian_set. Đây là đoạn pseudocode:

Giá thị trường

Tiền điện tử Giá 24h
BTC Bitcoin
$63,092.9 -0.96%
ETH Ethereum
$1,867.93 -0.45%
SOL Solana
$72.96 -0.71%
BNB BNB Chain
$579.6 -1.83%
XRP XRP Ledger
$1.06 -0.65%
DOGE Dogecoin
$0.0698 +0.49%
ADA Cardano
$0.1733 +2.61%
AVAX Avalanche
$6.35 -1.24%
DOT Polkadot
$0.7697 +1.50%
LINK Chainlink
$8.1 -1.71%

Sợ & Tham

27

Sợ hãi

Tâm lý thị trường

Lịch sự kiện blockchain

{{年份}}
22
03
unlock Mở khóa Optimism

Lượng cung lưu hành tăng khoảng 2%

10
05
upgrade Nâng cấp Ethereum Pectra

Tăng giới hạn validator và trừu tượng hóa tài khoản

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

15
04
halving Bitcoin Halving

Phần thưởng khối giảm xuống 3,125 BTC

18
03
unlock Mở khóa token Sui

Phần đội ngũ và nhà đầu tư sớm được giải phóng

30
04
upgrade Nâng cấp Celestia Mainnet

Cải thiện hiệu quả lấy mẫu tính khả dụng dữ liệu

08
04
upgrade Solana Firedancer

Trình xác thực độc lập ra mắt trên mainnet

12
05
halving BCH Halving

Sự kiện giảm một nửa phần thưởng khối

Chỉ số mùa altcoin

44

Mùa Bitcoin

Sự thống trị BTC Mùa altcoin

Theo dõi phí Gas

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

Vốn hóa thị trường

Tất cả →
# Tiền điện tử Giá
1
Bitcoin BTC
$63,092.9
1
Ethereum ETH
$1,867.93
1
Solana SOL
$72.96
1
BNB Chain BNB
$579.6
1
XRP Ledger XRP
$1.06
1
Dogecoin DOGE
$0.0698
1
Cardano ADA
$0.1733
1
Avalanche AVAX
$6.35
1
Polkadot DOT
$0.7697
1
Chainlink LINK
$8.1

🐋 Theo dõi cá voi

🔵
0x5cf1...14f4
6 giờ trước
Stake
1,734.64 BTC
🔴
0x8a3d...7c94
5 phút trước
Chuyển ra
4,136,444 USDT
🔵
0x687b...1602
1 ngày trước
Stake
1,933.06 BTC

💡 Smart Money

0x561b...c198
Bot chênh lệch giá
-$1.2M
76%
0xbc1e...49e8
Thợ đào DeFi hàng đầu
+$0.2M
75%
0x102c...02b4
Ví lưu ký tổ chức
+$1.2M
67%

Công cụ

Tất cả →