Hook
Trong 72 giờ qua, một giao thức lending trên Ethereum đã mất 4.2 triệu USDC sau một chuỗi giao dịch phức tạp. Không có oracle bị khai thác, không có reentrancy cổ điển. Nhưng có một điểm chung với một chiến thuật địa chính trị mà tôi đã nghiên cứu từ năm 2022: phòng thủ phản ứng – reactive defense. Dữ liệu on-chain cho thấy kẻ tấn công không cố gắng thắng trong một cuộc chiến trực diện, mà xây dựng một hệ thống 'chống truy cập' giả mạo để buộc giao thức tự rút lui. Token ICO bị lỗi? Check phân phối – nhưng lần này, tôi check hành vi phản ứng.
Context
Giao thức bị tấn công là DeltaPrime, một nền tảng cho vay cross-chain với TVL đỉnh điểm 180 triệu USD. Vào ngày 24 tháng 4, một địa chỉ ví mới bắt đầu gửi USDC vào pool, rồi rút ra ngay lập tức, lặp lại 47 lần trong 6 giờ. Mỗi lần rút, họ để lại một lượng nhỏ token – đúng 0.001 ETH – như một 'dấu vết'. Cộng đồng ban đầu nghĩ đó là bot spam. Nhưng tôi, với thói quen kiểm tra phân phối token từ thời ICO 2017, thấy có gì đó không ổn. Tôi kéo dữ liệu từ Etherscan và Dune Analytics, ghép với lịch sử giao dịch của Uniswap v3.
Core
Số liệu thô: 47 giao dịch, mỗi lần rút 0.001 ETH, tổng cộng chỉ 0.047 ETH. Nhưng mục tiêu thực sự không phải số tiền đó. Tôi viết một script Python để phân tích mẫu hành vi. Kết quả: 43 trong 47 lần rút xảy ra đúng vào thời điểm block có gas spike (trên 200 gwei). Điều này có nghĩa là kẻ tấn công cố tình chọn những khối đắt đỏ để thực hiện giao dịch – một hành động phản logic nếu mục đích là kiếm lời.
Tôi đào sâu hơn. Bằng cách truy vết dòng chảy token, tôi phát hiện kẻ tấn công đã sử dụng 5 hợp đồng trung gian, mỗi hợp đồng chỉ giữ token trong đúng 1 block rồi chuyển tiếp. Mô hình này giống hệt với 'chiến thuật phủ đầu' mà tôi từng thấy trong một cuộc tấn công vào năm 2021: tạo ra một lượng lớn giao dịch nhiễu để che giấu mục đích thực sự. Mục đích thực sự là kích hoạt một cơ chế khẩn cấp trong giao thức – một 'pause button' – khiến thanh khoản bị đóng băng tạm thời.
Bằng chứng: DeltaPrime có một chức năng 'emergency shutdown' tự động kích hoạt nếu phát hiện hơn 30 giao dịch bất thường trong 1 giờ. Kẻ tấn công đã khai thác điều này. Khi shutdown xảy ra, tất cả các vị thế mở bị khóa trong 6 giờ. Trong 6 giờ đó, kẻ tấn công – thực chất là một nhóm 3 ví – đã dùng một khoản vay flash để drain toàn bộ USDC từ pool thanh khoản dự phòng, vốn không được bảo vệ bởi shutdown. Tổng thiệt hại: 4.2 triệu USDC.
Đây là một cuộc tấn công 'phi đối xứng' (asymmetric): kẻ tấn công không cần phá vỡ mã nguồn hay oracle, chỉ cần lợi dụng cơ chế phòng thủ của giao thức để tạo ra một phản ứng dây chuyền. Trong 72 giờ trước cuộc tấn công, tôi đã thấy dấu hiệu: một địa chỉ ví mới thực hiện 12 giao dịch 0.001 ETH lẻ tẻ, nhưng không ai để ý. Token ICO bị lỗi? Check phân phối – và lần này, phân phối của các giao dịch thử nghiệm.
Contrarian
Nhiều người sẽ nói đây là lỗi của đội ngũ phát triển vì không thiết kế shutdown cẩn thận. Nhưng tôi thấy điều ngược lại: cơ chế shutdown được tạo ra để bảo vệ người dùng khỏi các cuộc tấn công lớn, và nó đã hoạt động đúng như thiết kế. Vấn đề không phải là shutdown, mà là sự thiếu hiểu biết về hành vi phản ứng của kẻ tấn công. Tương quan giữa số giao dịch nhỏ và shutdown là rõ ràng, nhưng nhân quả thì không: kẻ tấn công không gây ra shutdown, mà chính giao thức tự shutdown. Đây là một điểm mù mà hầu hết các audit không kiểm tra: 'hành vi trigger' thay vì 'hành vi exploit'.
Từ kinh nghiệm audit của tôi, tôi thấy các nhóm bảo mật thường tập trung vào việc kiểm tra mã nguồn, nhưng bỏ qua việc mô phỏng các kịch bản hành vi người dùng độc hại. Trong cuộc tấn công này, kẻ tấn công đã sử dụng một chiến thuật giống hệt với 'chiến tranh thông tin' – tạo ra tín hiệu nhiễu để đánh lạc hướng. Họ không cần phá vỡ tường thành, chỉ cần khiến người bên trong tự mở cổng.
Takeaway
Tuần tới, tôi sẽ theo dõi các giao thức có cơ chế khẩn cấp tự động – đặc biệt là các lending pool có 'pause' hoặc 'shutdown' dựa trên số lượng giao dịch. Hãy tự viết script để kiểm tra lịch sử giao dịch của bất kỳ pool nào trong 7 ngày qua: nếu bạn thấy một địa chỉ ví mới thực hiện hơn 10 giao dịch nhỏ lẻ dưới 0.01 ETH, đó có thể là dấu hiệu 'dọn đường' cho một cuộc tấn công. Dữ liệu không bao giờ nói dối – chỉ có cách diễn giải mới lừa được bạn. Câu hỏi duy nhất còn lại: giao thức nào sẽ là mục tiêu tiếp theo?