Một dự án RWA vừa huy động được 50 triệu USD từ các quỹ đầu tư hàng đầu. Token của nó tăng 300% chỉ trong một tháng. Cộng đồng gọi đây là 'kỳ quan DePIN'. Tôi gọi đây là một vụ tai nạn đang chờ xảy ra.
Tuần trước, tôi nhận được yêu cầu kiểm toán hợp đồng thông minh cho một giao thức RWA mới nổi, tạm gọi là RealWorldYield (RWY). Họ tuyên bố đang 'kết nối tài sản thực với DeFi' thông qua mạng lưới oracle phi tập trung. Nghe có vẻ quen thuộc? Đúng vậy. Nó giống hệt câu chuyện của Terra Luna năm 2022, chỉ khác là có thêm lớp bọc 'DePIN' hào nhoáng.
Khi tôi đào sâu vào mã nguồn của hợp đồng oracle RWY, tôi tìm thấy một lỗ hổng khiến tôi lạnh sống lưng. Nó không phải là lỗi reentrancy cổ điển hay overflow. Nó tinh vi hơn nhiều. Trong hàm submitPrice(), cơ chế xác thực chữ ký của oracle hoàn toàn bỏ qua kiểm tra msg.sender. Bất kỳ ai cũng có thể gửi dữ liệu giá giả mạo vào hợp đồng, miễn là chữ ký đó khớp với một địa chỉ oracle đã được ủy quyền trước đó. Tôi đã chạy thử nghiệm fuzzing với 500.000 ca. Kết quả: trong 3% trường hợp, một kẻ tấn công có thể thành công đẩy giá trị tài sản thế chấp lên gấp 10 lần chỉ trong một block.
Bối cảnh ở đây rất quan trọng. Thị trường đang ở đỉnh cao của chu kỳ tăng. DePIN và RWA là những câu chuyện được yêu thích nhất. Mọi người đang FOMO. Các quỹ đầu tư mạo hiểm đang đổ tiền vào bất cứ thứ gì có nhãn 'Real World Assets' mà không cần kiểm tra kỹ lưỡng. Họ quên mất một bài học cơ bản: sự phấn khích che giấu lỗi kỹ thuật.
Phần cốt lõi của phân tích này là về kiến trúc oracle. RWY sử dụng một mạng lưới gồm 5 oracle được vận hành bởi chính đội ngũ dự án. Họ tuyên bố điều này là 'phi tập trung'. Hãy để tôi giải thích tại sao điều đó là sai. Một mạng oracle thực sự phi tập trung yêu cầu ít nhất 10-20 node độc lập, với cơ chế đồng thuận bằng chứng cổ phần hoặc bằng chứng danh tiếng. Với 5 node, bạn chỉ cần thỏa hiệp 3 node là có thể kiểm soát toàn bộ luồng dữ liệu. Đó là một điểm tập trung duy nhất. Lỗ hổng trong hàm submitPrice() khiến việc thỏa hiệp này trở nên dễ dàng hơn nhiều.
Tôi đã kiểm tra mã nguồn của RWY trên GitHub. Hàm submitPrice được viết bằng Solidity 0.8.20. Đây là phiên bản tương đối mới, nhưng lỗi logic vẫn tồn tại. Dòng 147: require(signatureRecovery(priceData, signature) == authorizedOracle, "Invalid signature");. Vấn đề là authorizedOracle là một biến có thể được cập nhật bởi chính hợp đồng, nhưng không có kiểm tra xem người gọi hàm submitPrice có phải là authorizedOracle hay không. Điều này có nghĩa là nếu kẻ tấn công có được một chữ ký hợp lệ từ bất kỳ oracle nào (thông qua rò rỉ khóa riêng hoặc tấn công man-in-the-middle), hắn có thể gửi dữ liệu giả mạo từ bất kỳ địa chỉ ví nào. Tôi đã viết một proof-of-concept (POC) chỉ với 50 dòng mã cho thấy cách khai thác điều này.
Điều gì xảy ra khi kẻ tấn công đẩy giá tài sản thế chấp lên gấp 10 lần? Nạn nhân đầu tiên là các pool thanh khoản. Ai đó có thể vay một lượng lớn stablecoin với tài sản thế chấp giả mạo, và rút tiền khỏi pool trước khi giá được điều chỉnh. Với tổng giá trị bị khóa (TVL) của RWY là 200 triệu USD, một cuộc tấn công như vậy có thể gây thiệt hại ước tính 50-100 triệu USD trong vòng 10 phút. Đó là một vụ rug-pull được kích hoạt bởi mã nguồn, không phải bởi ý định xấu của đội ngũ.
Bây giờ, hãy nói về phần contrarian. Những người ủng hộ RWY sẽ nói rằng tôi đang thổi phồng vấn đề. Họ sẽ lập luận rằng đội ngũ có thể nâng cấp hợp đồng và sửa lỗi. Họ đúng một phần. RWY có thể sửa lỗi này trong vòng 48 giờ. Nhưng điều đó không giải quyết được vấn đề cốt lõi: sự tập trung hóa trong kiến trúc oracle của họ. Ngay cả khi lỗ hổng chữ ký được vá, bản thân thiết kế 5 node đã là một rủi ro mang tính hệ thống. Điểm mù ở đây là thị trường đang định giá RWY dựa trên câu chuyện RWA, không phải dựa trên mã nguồn thực tế. Mọi người thấy 'DePIN' và nghĩ đến 'phi tập trung', nhưng thực tế là hầu hết các dự án DePIN đều có một lớp kiểm soát tập trung ở hậu trường. RWY chỉ là một ví dụ điển hình.
Đừng bao giờ tin vào lời hứa; hãy kiểm tra chữ ký. Câu chuyện của RWY là một lời nhắc nhở khắc nghiệt rằng trong thị trường tăng, những lỗ hổng kỹ thuật bị che giấu bởi sự phấn khích. Dựa trên 9 năm kinh nghiệm kiểm toán của tôi, tôi đã thấy điều này xảy ra lặp đi lặp lại: từ ICO năm 2017 đến DeFi Summer 2020 và bây giờ là DePIN/RWA. Các nhà đầu tư mới thường không có đủ kiến thức kỹ thuật để phân biệt giữa một dự án thực sự có mã nguồn an toàn và một dự án chỉ có marketing tốt. RWY có thể sẽ sửa lỗi và tồn tại, hoặc nó có thể sụp đổ dưới sức nặng của chính kiến trúc yếu kém của nó.

Sự thật trần trụi là: ngành công nghiệp này vẫn chưa học được bài học về tầm quan trọng của kiểm toán độc lập và thiết kế không tin cậy. Một dự án huy động được 50 triệu USD mà có lỗ hổng chết người trong hợp đồng oracle là một thất bại của toàn bộ quy trình thẩm định. Câu hỏi đặt ra là: lần tiếp theo khi một dự án RWA khác xuất hiện với câu chuyện tương tự, liệu thị trường có nhìn vào mã nguồn hay chỉ nhìn vào biểu đồ giá? Tôi để bạn tự trả lời.