Từ lỗ hổng nhỏ nhất, một hệ thống có thể sụp đổ.
Hai tuần trước, tôi nhận được một yêu cầu audit khẩn cấp. Một dự án DeFi mới nổi, tạm gọi là 'Nexus Finance', vừa kết thúc vòng gọi vốn Series A với 50 triệu USD từ các quỹ đầu tư lớn. Họ tự xưng là 'DeFi 4.0' – một nền tảng cho vay cross-chain với cơ chế lãi suất động học dựa trên AI. Whitepaper của họ dày 80 trang, đầy những thuật ngữ như 'liquidity fragmentation solver' và 'dynamic risk-adjusted yield'. Ấn tượng đấy chứ? Nhưng tôi không tin vào lời nói, tôi tin vào bytecode. Và thứ tôi tìm thấy trong hợp đồng thông minh của họ khiến tôi phải ngồi thẳng dậy.
Một lỗi reentrancy cổ điển. Có mặt trong hàm withdraw của pool thanh khoản chính. Một lỗi mà bất kỳ lập trình viên Solidity nào cũng biết từ năm 2016. Nhưng nó ở đó, ẩn mình trong một đống code được comment 'optimized for gas efficiency'. Và nó đủ để rút sạch toàn bộ pool.
Hãy cùng tôi đi sâu vào mã nguồn. Bối cảnh: Nexus Finance sử dụng một kiến trúc modular, nơi mỗi pool thanh khoản là một hợp đồng riêng biệt giao tiếp với nhau qua các cuộc gọi bên ngoài. Hàm withdraw được thiết kế để cho phép người dùng rút tiền bằng cách đốt token LP. Logic cơ bản: kiểm tra số dư, đốt token, chuyển tài sản. Nhưng thứ tự thực hiện sai. Trong đoạn code tôi trích xuất, lệnh chuyển tài sản (transfer) được gọi TRƯỚC khi cập nhật trạng thái số dư token LP. Điều này mở ra cánh cửa cho reentrancy: một hợp đồng độc hại có thể gọi lại hàm withdraw trước khi lần gọi đầu tiên kết thúc, rút tiền nhiều lần từ cùng một số dư.
Tôi đã thấy điều này hàng trăm lần trong sự nghiệp. Lỗi reentrancy là một trong những lỗ hổng bảo mật phổ biến nhất trong DeFi. Nhưng điều làm tôi ngạc nhiên là đội ngũ Nexus Finance – họ có ba kỹ sư từ Google, một người từ ConsenSys, và hai người có bằng PhD về khoa học máy tính. Họ đã thuê một công ty audit hàng đầu (mà tôi sẽ không nêu tên) để kiểm tra code. Báo cáo audit công bố: 'Không tìm thấy lỗi nghiêm trọng'. Vậy tại sao lỗi này vẫn tồn tại?

Tôi có ba giả thuyết. Thứ nhất: áp lực thời gian. Thị trường tăng giá, họ muốn ra mắt nhanh chóng, audit bị cắt xén. Thứ hai: sự phụ thuộc quá mức vào công cụ tự động. Các công cụ phân tích tĩnh như Slither có thể bỏ sót reentrancy nếu code được viết theo cách không chuẩn. Thứ ba: và đây là giả thuyết tôi tin nhất – sự 'mù quáng' của đội ngũ. Họ quá tập trung vào các tính năng 'DeFi 4.0' phức tạp mà quên mất những nguyên tắc cơ bản. Họ nghĩ rằng họ thông minh hơn lịch sử.
Nhưng sự thật là: bear market là mùa của những kẻ kiên nhẫn đào sâu. Còn thị trường tăng giá che giấu những lỗ hổng chết người. Khi giá token tăng, ai cũng vội vã kiếm tiền nhanh. Audit bị coi như một thủ tục giấy tờ, không phải là một công cụ sinh tồn.
Tôi đã báo cáo lỗi này cho đội ngũ Nexus Finance qua kênh riêng. Họ phản hồi trong vòng 24 giờ – một tốc độ đáng kinh ngạc. Họ vá lỗi, triển khai lại hợp đồng, và cảm ơn tôi. Nhưng câu chuyện không kết thúc ở đó. Tôi yêu cầu xem lại toàn bộ báo cáo audit từ công ty kia. Họ từ chối. 'Đó là thông tin nội bộ'. Tôi hiểu. Nhưng điều này cho thấy một vấn đề hệ thống: thị trường audit đang bị chi phối bởi các công ty lớn, nơi chất lượng có thể bị đánh đổi vì doanh thu.
Tôi nhớ lại năm 2020, khi tôi audit Uniswap v2. Tôi phát hiện một lỗi tính toán phí không chính xác khi có nhiều pool. Uniswap đã vá lỗi trước mainnet. Họ không chỉ cảm ơn tôi, họ còn chia sẻ báo cáo chi tiết với cộng đồng. Đó là văn hóa của sự minh bạch. Ngày nay, với dòng tiền tổ chức đổ vào, văn hóa đó đang phai nhạt. Các dự án giấu audit report, chỉ công bố tóm tắt. Họ nói 'đã được audit bởi công ty X' như một badge danh dự. Nhưng badge đó có nghĩa gì nếu lỗ hổng vẫn còn?

Sự tĩnh lặng của dữ liệu thường che giấu bão tố. Trong trường hợp Nexus Finance, lỗi reentrancy là một cơn bão nhỏ. Nhưng nó là triệu chứng của một căn bệnh lớn hơn: sự thiếu kỷ luật kỹ thuật trong cơn sốt thị trường tăng. Tôi đã thấy điều này vào năm 2017, 2021, và bây giờ là 2025. Lịch sử không lặp lại, nhưng nó vần điệu.
Tôi không viết bài này để chỉ trích Nexus Finance. Họ đã sửa lỗi, và tôi tin rằng họ có thể thành công. Nhưng tôi viết để gửi một thông điệp đến cộng đồng: đừng để FOMO làm mờ con mắt kỹ thuật. Mỗi dòng code đều có câu chuyện của nó. Và đôi khi, câu chuyện đó là một lời cảnh báo.
Hợp đồng là luật, nhưng lỗ hổng là ngoại lệ. Và trong thế giới on-chain, không có thẩm phán nào ngoài chính bạn. Hãy tự kiểm tra, hoặc thuê người kiểm tra. Đừng tin vào brand name. Đừng tin vào whitepaper. Hãy tin vào bytecode.
Vậy, câu hỏi đặt ra: Liệu chúng ta có đang học hỏi từ quá khứ, hay chỉ đang lặp lại những sai lầm cũ với công nghệ mới? Khi thị trường tăng giá tiếp tục kéo dài, tôi e rằng câu trả lời là sự lặp lại. Nhưng tôi vẫn hy vọng. Bởi vì mỗi lỗ hổng được phát hiện, mỗi bài audit được thực hiện nghiêm túc, là một bước tiến về phía trước. Và đó là lý do tôi vẫn ở đây, viết những dòng này, sau gần một thập kỷ trong ngành.
Tôi sẽ tiếp tục audit. Tôi sẽ tiếp tục viết. Bởi vì tôi tin rằng, cuối cùng, sự thật kỹ thuật sẽ chiến thắng sự cường điệu của thị trường. Và khi cơn bão FOMO qua đi, những ai đã xây dựng trên nền tảng vững chắc sẽ còn đứng vững.
