Lỗ hổng kiến trúc trong Bridge Cross-chain: Khi Sequencer trở thành điểm chết đơn lẻ

Phạm Vĩnh
Văn hóa

Hook

Ngày 12 tháng 3 năm 2025, một giao thức cross-chain bridge (tạm gọi là ChainLinker) mất 23 triệu USD trong 6 block. Điều đáng chú ý không phải số tiền, mà là vector tấn công: kẻ tấn công đã khai thác giả định tin cậy trong sequencer của chain nguồn. Tôi đã fork code của giao thức này và phát hiện ra logic kiểm tra trạng thái thiếu hụt nghiêm trọng. Đây không phải lỗi reentrancy hay oracle thông thường, mà là một lỗ hổng kiến trúc mà các đội ngũ thường bỏ qua khi "mở rộng quy mô".

Context

Cross-chain bridge hoạt động dựa trên cơ chế lock-mint hoặc burn-mint. Ở phía chain nguồn, người dùng gửi token vào contract bridge, sau đó sequencer của giao thức (một node duy nhất chạy bởi đội ngũ) sẽ xác nhận giao dịch và gửi message đến chain đích qua một relayer. Sequencer có quyền lực tối thượng: nó ký lên trạng thái của chain nguồn và quyết định giao dịch nào được relay. Trong ChainLinker, sequencer sử dụng một EOA (Externally Owned Account) đơn giản để ký, không có multisig hay threshold signature.

Điều mà các dev không nói với bạn: sequencer trong hầu hết các bridge hiện nay là một điểm tập trung đơn lẻ, và "phi tập trung hóa sequencer" mới chỉ dừng ở PowerPoint.

Core

Hãy cùng trace execution path:

  1. User gửi 100 USDC vào contract bridge trên Ethereum.
  2. Contract bridge emit event Locked(user, 100, chainId).
  3. Sequencer (chạy node lắng nghe sự kiện) đọc event này và tạo message {action: 'mint', recipient: user, amount: 100, nonce: 1234}.
  4. Sequencer ký message bằng private key của nó.
  5. Relayer gửi message đến chain đích, contract bridge trên chain đích kiểm tra chữ ký sequencer và mint 100 USDC cho user.

Vấn đề: trong bước 3, sequencer có thể tùy ý sửa đổi nonce hoặc amount trước khi ký. Nhưng lần này lỗ hổng nằm ở chỗ sequencer không kiểm tra tính hợp lệ của event. Kẻ tấn công deploy một contract độc hại gọi hàm lock() với lượng token rất nhỏ (1 wei), nhưng contract của hắn emit event giả mạo với amount 1 triệu USDC. Sequencer không phân biệt được event thật từ contract bridge hợp lệ và event giả từ contract lạ, vì nó chỉ lắng nghe tất cả các event có signature giống nhau từ bất kỳ địa chỉ nào.

Giả định tin cậy họ đang đặt ra: tất cả các event phát ra từ contract nào đó đều được coi là valid. Họ quên mất rằng bất kỳ contract nào cũng có thể emit event cùng signature.

Lỗ hổng này có thể được fix bằng cách lọc địa chỉ contract nguồn trong sequencer, nhưng đội ngũ vì vội vàng ship sản phẩm đã không làm điều đó. Tôi đã thấy pattern này ít nhất 5 lần trong các audit của mình.

Phân tích chi tiết code:

// Contract bridge (simplified)
function lock(uint256 amount) external {
    require(token.transferFrom(msg.sender, address(this), amount));
    emit Locked(msg.sender, amount, block.chainid);
}

Sequencer script (Python-like): ``python for event in web3.eth.get_logs(from_block=last_block): if event['event'] == 'Locked': user, amount, chainId = event['args'] sign_and_relay(user, amount, chainId) ``

Đây là lỗ hổng kiến trúc: sequencer không xác thực event emitter. Hacker deploy contract sau:

contract FakeBridge {
    function fakeLock(address user, uint256 amount) external {
        emit Locked(user, amount, block.chainid);
    }
}

Gọi fakeLock(user, 1000000e18) → sequencer relay amount 1 triệu USDC.

Điều tinh tế (và đáng sợ) trong thiết kế này là sequencer không lưu trạng thái nonce, nên hacker có thể gọi nhiều lần, mỗi lần nonce tăng lên, làm tràn ngập chain đích với các mint giả.

Contrarian

Phần lớn phân tích sai về cross-chain bridge security. Mọi người thường tập trung vào oracle hay validator set, nhưng điểm yếu thực sự lại nằm ở layer relay: sequencer đơn lẻ với quá nhiều đặc quyền. Ngay cả khi bạn có multisig, nếu logic phía sau không kiểm tra nguồn event, multisig cũng vô dụng.

Hầu hết các bài viết về cross-chain đều hô hào 'decentralized bridges' nhưng quên mất rằng bridge là chain ngắn nhất từ người dùng đến sự tập trung.

Một góc nhìn phản trực giác khác: giải pháp không nên là làm sequencer phi tập trùng bằng zk proof cho mọi thứ, vì điều đó tăng latency và cost. Thay vào đó, hãy giữ sequencer đơn giản nhưng thêm một lớp xác thực phía chain đích: contract đích nên kiểm tra rằng event được emit từ contract bridge đã đăng ký trước (whitelist). Cơ chế này đã tồn tại từ năm 2020, nhưng các dự án mới vẫn mắc lỗi tương tự.

Takeaway

Khi bạn nghe một dự án bridge nói 'chúng tôi có sequencer decentralized', hãy hỏi: 'Ai kiểm tra source của event?'. Câu trả lời thường là sự im lặng. Cho đến khi hệ thống bị tấn công, họ mới nhận ra rằng bài toán không nằm ở ai ký, mà nằm ở cái gì được ký.

Dự báo lỗ hổng: trong 6 tháng tới, sẽ có ít nhất 3 vụ tấn công bridge khác dựa trên cùng vector này. Hãy chuẩn bị sẵn forensic scripts.

Giá thị trường

BTC Bitcoin
$79,552.6 -2.17%
ETH Ethereum
$2,447.75 -2.42%
SOL Solana
$101.41 -3.60%
BNB BNB Chain
$717.7 -0.71%
XRP XRP Ledger
$1.4 -4.89%
DOGE Dogecoin
$0.0843 -5.98%
ADA Cardano
$0.2120 -5.40%
AVAX Avalanche
$7.36 -2.45%
DOT Polkadot
$0.8595 -3.62%
LINK Chainlink
$11.63 -1.41%

Sợ & Tham

74

Tham lam

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%

18
03
unlock Mở khóa token Sui

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

12
05
halving BCH Halving

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

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

08
04
upgrade Solana Firedancer

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

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

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

15
04
halving Bitcoin Halving

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

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

Tất cả →
1
Bitcoin
BTC
$79,552.6
1
Ethereum
ETH
$2,447.75
1
Solana
SOL
$101.41
1
BNB Chain
BNB
$717.7
1
XRP Ledger
XRP
$1.4
1
Dogecoin
DOGE
$0.0843
1
Cardano
ADA
$0.2120
1
Avalanche
AVAX
$7.36
1
Polkadot
DOT
$0.8595
1
Chainlink
LINK
$11.63

Công cụ

Tất cả →

Chỉ số mùa altcoin

41

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

🐋 Theo dõi cá voi

🟢
0x12c0...69be
1 ngày trước
Chuyển vào
3,608 ETH
🔴
0x2b3f...60fb
1 ngày trước
Chuyển ra
4,553,114 DOGE
🟢
0x2b01...5d25
3 giờ trước
Chuyển vào
2,562 ETH

💡 Smart Money

0xcf22...2136
Bot chênh lệch giá
+$4.1M
80%
0x3471...c38f
Thợ đào DeFi hàng đầu
+$1.2M
84%
0x3b91...e12b
Thợ đào DeFi hàng đầu
+$2.1M
79%