Giá thị trường

BTC Bitcoin
$63,098.2 +0.52%
ETH Ethereum
$1,872.7 +0.40%
SOL Solana
$72.98 -0.19%
BNB BNB Chain
$579.6 -1.34%
XRP XRP Ledger
$1.07 +0.13%
DOGE Dogecoin
$0.0701 +0.86%
ADA Cardano
$0.1732 +2.97%
AVAX Avalanche
$6.36 -0.93%
DOT Polkadot
$0.7711 +2.44%
LINK Chainlink
$8.11 -0.48%

Lịch sự kiện blockchain

{{年份}}
15
04
halving Bitcoin Halving

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

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

18
03
unlock Mở khóa token Sui

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

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

22
03
unlock Mở khóa Optimism

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

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

Theo dõi phí Gas

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

💡 Smart Money

0x09a0...6d97
Thợ đào DeFi hàng đầu
+$0.9M
90%
0x6546...1e0d
Nhà tạo lập thị trường
+$1.3M
61%
0x88e6...5e3d
Ví lưu ký tổ chức
-$3.8M
93%

Công cụ

Tất cả →

Voting Disaster của VanceDAO: Khi "Quyền" Trở Thành Bug

Hồ Hòa
Học viện

12:47:03 UTC. Một giao dịch duy nhất, hash 0x... trên Base.

Block #... . Từ địa chỉ được gắn nhãn 'VanceDAO: MultiSig Wallet', một cuộc gọi đến hàm castVote() đã thay đổi trạng thái của đề xuất #042. Kết quả: đề xuất được thông qua với 91.4% phiếu ủng hộ. Nhưng có một vấn đề: hacker đã kiểm soát 60% trong số 91.4% đó.

Kẻ tấn công đã khai thác lỗ hổng reentrancy trong logic tính toán trọng số phiếu bầu, dựa trên số dư token bị khóa trong hợp đồng. Bằng cách gọi lại hàm vote() trước khi cập nhật lastVoteTime, hắn đã bỏ phiếu nhiều lần với cùng một số dư. ICO 2018: lỗi đa ký, bài học nhức nhối.

Context: VanceDAO tự quảng cáo là 'DAO quản trị phi tập trung đầu tiên dành cho các dự án Layer2'. Cơ chế bỏ phiếu của nó dựa trên token staking. Người dùng stake token ERC-20 của VanceDAO, và nhận được trọng số phiếu bầu tương ứng với số dư đã stake. Nhưng có một chi tiết kỹ thuật: trọng số được tính lại mỗi lần bỏ phiếu dựa trên số dư hiện tại của người dùng trong hợp đồng stake. Điều này tạo ra cơ hội cho reentrancy. EVM không tha thứ cho sự cẩu thả.

Core: Hãy phân tích mã nguồn. Hợp đồng Voting.sol có hàm castVote(proposalId, support) như sau:

function castVote(uint256 proposalId, bool support) external {
    uint256 weight = IStaking(stakingContract).getVotes(msg.sender);
    require(weight > 0, "No voting power");
    require(!hasVoted[proposalId][msg.sender], "Already voted");

// Cập nhật trạng thái hasVoted[proposalId][msg.sender] = true;

if (support) { proposals[proposalId].forVotes += weight; } else { proposals[proposalId].againstVotes += weight; }

emit VoteCast(msg.sender, proposalId, support, weight); } ```

Lỗ hổng nằm ở dòng IStaking(stakingContract).getVotes(msg.sender). Hàm getVotes() này không phải là view thuần túy. Nó có thể gọi lại (callback) vào hợp đồng gọi (Voting.sol) thông qua cơ chế delegatecall hoặc hook. Trong trường hợp này, kẻ tấn công đã triển khai một hợp đồng độc hại làm stakingContract. Mỗi lần getVotes() được gọi, hợp đồng độc hại gọi lại castVote() để thay đổi weight trước khi lưu vào proposals[].forVotes.

Trong quá trình audit của tôi, tôi thường kiểm tra pattern này. Checks-Effects-Interactions là nguyên tắc cơ bản. Ở đây, effect (cập nhật hasVoted) xảy ra trước, nhưng interaction (gọi getVotes()) thậm chí còn xảy ra trước cả effect. Kết quả: kẻ tấn công bỏ phiếu 10 lần với cùng một balance. 91.4% phiếu ủng hộ là ảo. Đề xuất #042 đã được thông qua để chuyển toàn bộ treasury (2,400 ETH) vào một địa chỉ do hacker kiểm soát.

Contrarian: Góc nhìn phản trực giác ở đây là: lỗ hổng này không nằm ở mã nguồn VanceDAO, mà nằm ở thiết kế kiến trúc tổng thể. Hầu hết các bài phân tích đều đổ lỗi cho castVote(). Nhưng nếu mình đứng ở phía attacker, mình sẽ thấy rằng điểm yếu thực sự là việc cho phép stakingContract là một địa chỉ có thể thay đổi. VanceDAO đã cài đặt stakingContract là một proxy có thể nâng cấp. Kẻ tấn công đã chiếm quyền sở hữu proxy đó thông qua một lỗ hổng trong logic upgrade. Sau đó, hắn thay thế implementation bằng hợp đồng độc hại. Bài học: quyền sở hữu proxy là single point of failure.

Takeaway: VanceDAO đã chết. Treaury rỗng. Cộng đồng mất niềm tin. Nhưng câu hỏi thực sự là: bao nhiêu DAO khác đang ngồi trên quả bom hẹn giờ tương tự? Hãy kiểm tra owner() của proxy của bạn ngay bây giờ. Nếu nó là một EOA hoặc multisig ít chữ ký, bạn đang chơi trò chơi may rủi. Lightning Network đã nửa sống nửa chết suốt bảy năm; DAO governance cũng vậy.

Sợ & Tham

27

Sợ hãi

Tâm lý thị trường

Chỉ số mùa altcoin

44

Mùa Bitcoin

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

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

Tất cả →
# Tiền điện tử Giá
1
Bitcoin BTC
$63,098.2
1
Ethereum ETH
$1,872.7
1
Solana SOL
$72.98
1
BNB Chain BNB
$579.6
1
XRP Ledger XRP
$1.07
1
Dogecoin DOGE
$0.0701
1
Cardano ADA
$0.1732
1
Avalanche AVAX
$6.36
1
Polkadot DOT
$0.7711
1
Chainlink LINK
$8.11

🐋 Theo dõi cá voi

🟢
0xd653...2548
2 phút trước
Chuyển vào
4,409,091 USDT
🔴
0xe752...dc6e
2 phút trước
Chuyển ra
3,338,717 USDT
🔵
0x7507...f167
3 giờ trước
Stake
2,232,004 USDC