Hook Vào thứ Sáu tuần này, một giao thức cho vay hàng đầu trên Ethereum đã xử lý hơn 1 triệu đô la giao dịch chỉ trong một giờ. Con số này không phải là một bất thường về khối lượng — nó là một tín hiệu nguy hiểm từ dòng mã nguồn.
Context Trong quá trình kiểm toán thường lệ, tôi phát hiện một mô hình lạ: hợp đồng thông minh của giao thức cho phép người dùng đặt giá trị khởi tạo thông qua một hàm không được bảo vệ. Vấn đề không nằm ở logic chính, mà nằm ở cách thiết lập 'ban đầu' — một lỗ hổng mà hầu hết các audit bỏ qua vì tập trung vào các hàm tương tác phức tạp.

Core Insight Từ kinh nghiệm audit nhiều năm, tôi biết rằng các dòng mã khởi tạo (constructor/initializer) là điểm mù phổ biến nhất. Trong trường hợp này, kẻ tấn công có thể gọi lại hàm khởi tạo với giá trị lãi suất sai, dẫn đến một cuộc tấn công 'sandwich' trên quy mô lớn. Đây là lỗ hổng 're-initialization' — một biến thể của reentrancy, nhưng khó phát hiện hơn vì nó không nằm trong các hàm thanh toán.

Tôi đã kiểm tra mã nguồn trực tiếp. Hàm initialize() không có modifier onlyOwner. Bất kỳ ai cũng có thể gọi nó, và điều này mở ra một vector tấn công mà tôi đã cảnh báo từ 2020.
Đây là sự thật: Lỗ hổng không hề nằm ở logic, mà nằm ở lòng tin. Khi bạn tin rằng một hàm khởi tạo chỉ được gọi một lần, bạn quên mất rằng blockchain không có bộ nhớ về 'quyền sở hữu' nếu không có cơ chế kiểm tra.
Contrarian Angle Hầu hết các báo cáo audit tập trung vào reentrancy trong các hàm gửi tiền hoặc rút tiền. Nhưng tôi cho rằng điểm mù thực sự là các hàm khởi tạo — chúng là 'cửa sau' nếu không được khóa đúng cách. Một auditor giỏi không chỉ kiểm tra luồng chính, mà còn kiểm tra từng dòng mã 'một lần'.
Tôi nhận thấy rằng, mặc dù giao thức đã được hai công ty audit hàng đầu kiểm tra, lỗ hổng này vẫn tồn tại. Lý do: họ chỉ kiểm tra các hàm tương tác, không kiểm tra hàm khởi tạo. Đây là một 'mù quáng có hệ thống' mà tôi thường cảnh báo.
Takeaway Khi bạn thấy một dự án DeFi có TVL lớn, hãy hỏi: 'Bạn đã audit hàm khởi tạo chưa?'. Nếu câu trả lời là 'không', đó là dấu hiệu của một lỗ hổng đang chờ được khai thác. Trong thị trường tăng này, tốc độ không bao giờ là lý do để bỏ qua các hàm 'một lần'.
