Kiểm toán hợp đồng thông minh
Tên gọi khác Kiểm toán bảo mật · Kiểm toán DeFi
Kiểm toán hợp đồng thông minh là việc rà soát bảo mật độc lập đối với mã của một giao thức nhằm tìm lỗ hổng trước, hoặc ngay sau, khi giao thức đi vào hoạt động. Nó giảm rủi ro trong phạm vi và thời điểm đã nêu, nhưng không phải lời hứa rằng mã không có lỗi.
Hợp đồng thông minh là một loại phần mềm khác thường. Chúng trực tiếp nắm giữ tiền, chạy công khai để ai cũng có thể nghiên cứu, và một khi đã triển khai thì khó hoặc không thể thay đổi. Một dòng mã bị bỏ sót có thể cho phép kẻ tấn công rút cạn một giao thức chỉ trong một giao dịch. Kiểm toán là tuyến phòng thủ chính trước khi ra mắt: các chuyên gia đọc mã trước khi kẻ tấn công kịp đọc.
Kiểm toán viên tìm kiếm điều gì
- Lỗi logic: mã làm đúng như nó viết nhưng không đúng như dự định, chẳng hạn một công thức phần thưởng trả hai lần.
- Kiểm soát truy cập: những hàm ai cũng gọi được trong khi lẽ ra chỉ quản trị viên mới được gọi.
- Reentrancy (tái nhập): một lệnh gọi ra bên ngoài cho phép kẻ tấn công quay lại một hàm trước khi lệnh gọi đầu tiên kết thúc, lỗi đứng sau vụ tấn công The DAO năm 2016.
- Thao túng giá: logic tin vào một mức giá có thể bị dịch chuyển trong một giao dịch, thường thông qua một oracle yếu.
- Thiết kế kinh tế: các cơ chế khuyến khích mà một bên có nhiều vốn có thể lợi dụng ngay cả khi từng dòng mã chạy đúng như viết.
Kiểm toán viên kết hợp rà soát thủ công với công cụ tự động và, ngày càng nhiều, xác minh hình thức (formal verification), phương pháp chứng minh bằng toán học rằng mã đáp ứng một đặc tả đã viết.
Hai mô hình kiểm toán
Trong một cuộc kiểm toán truyền thống của công ty kiểm toán, một nhóm nhỏ kỹ sư bảo mật nghiên cứu bộ mã trong một khoảng thời gian cố định và giao một báo cáo. Trong một cuộc kiểm toán cạnh tranh, nhiều nhà nghiên cứu độc lập cùng lúc rà soát cùng một bộ mã và được trả tiền theo các vấn đề họ tìm ra. Hai mô hình thường phát hiện những thứ khác nhau, nên các giao thức thường dùng cả hai.
Cách đọc báo cáo kiểm toán
Bắt đầu với phạm vi: những hợp đồng nào, phiên bản mã nào và những ngày nào. Một cuộc kiểm toán phiên bản một nói rất ít về phiên bản hai. Sau đó đọc các phát hiện theo mức độ nghiêm trọng. Phát hiện mức nghiêm trọng (critical) và cao có thể dẫn đến mất tiền; mức trung bình thường cần những điều kiện cụ thể; mức thấp và mức thông tin liên quan đến vệ sinh mã. Với mỗi phát hiện, hãy kiểm tra xem nó được đánh dấu đã sửa, đã ghi nhận hay đang tranh luận, và bản sửa có được rà soát lại hay không.
Ví dụ đơn giản
Một báo cáo liệt kê một phát hiện mức cao: một lỗi làm tròn cho phép người dùng rút ra nhiều hơn một chút so với số đã đưa vào, và lặp lại qua hàng nghìn giao dịch có thể rút cạn một vault. Nhóm phát triển sửa lỗi trước khi ra mắt và kiểm toán viên xác nhận bản sửa. Không ai bên ngoài biết đến lỗi đó. Đó là một cuộc kiểm toán làm đúng việc của nó, và là lý do phần phát hiện quan trọng hơn logo trên trang bìa.
Rủi ro và giới hạn
Một cuộc kiểm toán là một ảnh chụp tại một thời điểm. Mã thay đổi sau đợt rà soát, các hợp đồng mới tương tác với nó và kỹ thuật tấn công ngày càng tinh vi. Một số vụ khai thác DeFi gây thiệt hại lớn đã nhắm vào các giao thức đã được kiểm toán, thường qua phần mã nằm ngoài phạm vi hoặc qua cách nhiều giao thức tương tác với nhau. Kiểm toán cũng không thể đánh giá các phần offchain của hệ thống, chẳng hạn cách quản lý khóa hay dự trữ gồm những gì. Đó là lý do kiểm toán hữu ích nhất khi là một lớp trong nhiều lớp: một chương trình bug bounty tiếp tục trả thưởng cho nhà nghiên cứu sau khi ra mắt, giám sát runtime theo dõi các giao dịch đang diễn ra, và bằng chứng dự trữ cho chính các tài sản.
Tori Finance sử dụng khái niệm này như thế nào
Các hợp đồng thông minh của Tori Finance được kiểm toán bởi Sherlock và Nethermind. Kiểm toán là một lớp trong hệ thống bảo mật của Tori Finance, cùng với giám sát runtime của Hypernative và bằng chứng dự trữ của Accountable.
Câu hỏi thường gặp
Một giao thức đã được kiểm toán vẫn có thể bị tấn công không?
Có. Một cuộc kiểm toán bao quát một bộ mã cụ thể tại một thời điểm cụ thể. Những thay đổi về sau, phần mã ngoài phạm vi, tương tác với các giao thức khác và kỹ thuật tấn công mới đều có thể dẫn đến thiệt hại.
Các mức nghiêm trọng, cao, trung bình và thấp trong kiểm toán nghĩa là gì?
Chúng xếp hạng các phát hiện theo mức độ tác động và khả năng xảy ra. Vấn đề mức nghiêm trọng và cao có thể dẫn đến mất tiền hoặc làm hỏng giao thức, vấn đề mức trung bình cần những điều kiện cụ thể, còn phát hiện mức thấp và mức thông tin là nhỏ hoặc liên quan đến chất lượng mã.
Một cuộc kiểm toán hợp đồng thông minh mất bao lâu?
Tùy thuộc vào quy mô và độ phức tạp của mã. Một hợp đồng nhỏ có thể mất vài ngày; một giao thức lớn có thể mất vài tuần, thường kèm theo một đợt rà soát ngắn hơn cho các bản sửa.
Thuật ngữ liên quan
Bug bounty
Chương trình bug bounty trả thưởng cho các nhà nghiên cứu bảo mật khi họ báo cáo lỗ hổng một cách có trách nhiệm thay vì khai thác chúng, với mức thưởng tương ứng với độ nghiêm trọng của vấn đề. Chương trình giúp mã của giao thức tiếp tục được rà soát rất lâu sau khi các cuộc kiểm toán kết thúc.
Giám sát runtime
Giám sát runtime là việc liên tục theo dõi hoạt động onchain trực tiếp của một giao thức để gắn cờ, và đôi khi chặn, các giao dịch đáng ngờ ngay khi chúng diễn ra. Nó bổ sung cho kiểm toán, vốn rà soát mã tại một thời điểm, bằng cách theo dõi những gì mã thực sự đang làm.
Bằng chứng dự trữ
Bằng chứng dự trữ là việc kiểm tra độc lập rằng tài sản đứng sau một token hoặc một nền tảng thực sự tồn tại, lý tưởng là được công bố liên tục để ai cũng có thể kiểm chứng. Nó cho thấy phía tài sản của bảng cân đối; tự nó không chứng minh các khoản nợ phải trả hay bao quát mọi rủi ro.
Nguồn
- ethereum.org: Smart contract securityethereum.org
- ethereum.org: Formal verification of smart contractsethereum.org
- BIS Quarterly Review: DeFi risks and the decentralisation illusionwww.bis.org
Do đội ngũ Tori Finance biên soạn. Không phải lời khuyên đầu tư. Lợi suất có thể thay đổi; vốn có thể bị thua lỗ.