Lợi nhuận:
- Khả năng nhận biết các mẫu lỗ hổng phổ biến như reentrancy, kiểm soát truy cập, thao tác oracle và chạy trước và quét chúng bằng công cụ phân tích tĩnh + trí tuệ nhân tạo + con người
- Khả năng phân biệt giữa các điểm mạnh của AI trong việc giải thích đầu ra của công cụ và ưu tiên các điểm yếu và điểm yếu trong MEV và logic kinh doanh
- Hiểu rằng 'quét sạch' không phải là chứng chỉ bảo mật, việc quét đó chỉ là một lớp kiểm soát
Chúng ta đã thấy tính kỷ luật toàn diện của kiểm toán ở bài học trước. Trong bài này, chúng ta tập trung vào một chủ đề kỹ thuật hơn: quét lỗ hổng bảo mật — tìm kiếm có hệ thống các mẫu lỗ hổng đã biết trong mã. Ở đây, chúng tôi sẽ sử dụng AI, cùng với các công cụ phân tích tĩnh, làm trợ lý quét và mô tả các mẫu lỗ hổng đã biết. Mục tiêu: tìm hiểu sâu về các lỗ hổng phổ biến nhất và phân biệt nơi nào AI đáng tin cậy và nơi nào AI không đủ khả năng quét chúng.
Quét tĩnh và động
Quét có hai loại. Phân tích tĩnh - kiểm tra mã mà không chạy mã: Các công cụ như Slither và Mythril quét mã hợp đồng và gắn cờ các mẫu đã biết. Phân tích động/ký hiệu (chạy mã với các đầu vào khác nhau hoặc khám phá nó bằng toán học): làm mờ (bắn phá với đầu vào ngẫu nhiên) và thực thi biểu tượng (khám phá tất cả các đường dẫn có thể) thuộc nhóm này.
AI không thay thế những công cụ này mà bổ sung cho chúng: khi xe đưa ra cảnh báo, AI sẽ giải thích cảnh báo bằng ngôn ngữ đơn giản; AI có thể nhắc nhở khi công cụ bỏ lỡ một mẫu; Nhưng chỉ riêng AI không thể đảm bảo nó sẽ quét được bao nhiêu. Quy trình làm việc phù hợp: công cụ + AI + con người.
Mẹo: Cung cấp cho AI đầu ra của một công cụ phân tích tĩnh (ví dụ: báo cáo Slither) và yêu cầu “giải thích từng cảnh báo bằng ngôn ngữ đơn giản, đâu là rủi ro thực sự và đâu là rủi ro có thể là dương tính giả?” hỏi. AI có vai trò vô giá trong việc làm cho đầu ra của công cụ thô trở nên dễ hiểu và được ưu tiên đối với con người.
Các mẫu lỗ hổng phổ biến nhất
1. Tái nhập. Nếu một hàm gọi một hợp đồng bên ngoài mà không cập nhật trạng thái của nó thì hợp đồng được gọi có thể quay trở lại, kích hoạt lại chức năng tương tự và rút tiền nhiều lần. Giải pháp: thứ tự kiểm tra-hiệu ứng-tương tác và bảo vệ reentrancy.
2. Thiếu kiểm soát truy cập. Một chức năng quan trọng (rút tiền, thu hồi, nâng cấp) vô tình bị công khai. Đó là một trong những sai lầm phổ biến và tốn kém nhất.
3. Thao túng Oracle. Sự phụ thuộc mù quáng của hợp đồng vào nguồn giá bên ngoài (oracle). Kẻ tấn công thao túng giá ngay lập tức và đánh lừa giao thức. Giải pháp: giá trung bình theo thời gian (TWAP), đa nguồn.
4. Tràn/xuống số nguyên. Khi một số vượt quá giá trị tối đa cho phép và quay về đầu. Modern Solidity tự động nắm bắt hầu hết chúng, nhưng rủi ro vẫn ở mã (lắp ráp) cấp thấp.
5. Chạy trước. Các giao dịch xuất hiện trong nhóm công khai (mempool) trước khi chúng được xác nhận; Kẻ tấn công có thể nhìn thấy giao dịch của bạn và chèn giao dịch của chính hắn vào trước giao dịch đó. MEV (Giá trị có thể trích xuất tối đa - giá trị được trích xuất từ chuỗi giao dịch) là tên chung của chủ đề này.
6. Từ chối dịch vụ (DoS). Vòng lặp trở nên quá tốn kém và khiến chức năng không thể sử dụng được hoặc phần phụ thuộc vào một địa chỉ sẽ bị khóa.
7. Rủi ro nâng cấp. Xung đột lưu trữ và lạm dụng quyền hạn trong các hợp đồng có thể nâng cấp.
tính dễ bị tổn thương
Sự tin tưởng quét AI
tại sao
sự trở lại
cao
Mẫu mã nổi tiếng, rõ ràng
kiểm soát truy cập
cao
Có thể quét khuôn
Các phép toán số nguyên
cao
kiểm soát tiêu chuẩn
Thao túng Oracle
trung bình
Yêu cầu ngữ cảnh
Chạy trước/MEV
Trung bình-Thấp
giao thức cụ thể
lỗi logic kinh doanh
thấp
Xác thực, theo ngữ cảnh
Dấu nhắc yếu / Dấu nhắc mạnh
Dấu nhắc yếu:
Có lỗ hổng nào trong mã này không?
Lời nhắc mạnh mẽ:
Vai trò của bạn: trợ lý kiểm tra an ninh. Quét hợp đồng bên dưới để biết các mẫu đã biết sau và "có nguy cơ/không/không chắc chắn" cho từng mẫu: truy cập lại, kiểm soát truy cập, hoạt động số nguyên, phụ thuộc vào oracle, chạy trước, DoS, nâng cấp bảo mật. Liên kết từng quyết định với dòng liên quan và giải thích tại sao lại có rủi ro. Đây là những giả thuyết SẼ ĐƯỢC XÁC MINH bằng công cụ phân tích tĩnh và công cụ kiểm tra. Lưu ý rằng có thể có kết quả dương tính giả.
Bốn mẫu có thể sao chép
1) Mô tả đầu ra của công cụ:
Dưới đây là báo cáo của công cụ phân tích tĩnh (Slither). Giải thích từng cảnh báo bằng ngôn ngữ đơn giản: nó có nghĩa là gì, đó là rủi ro thực sự hay có thể là dương tính giả, ưu tiên của nó là gì? Đừng đưa ra quyết định chắc chắn; Ưu tiên xác nhận của kiểm toán viên.
2) Sàng lọc tập trung vào việc quay lại:
Tìm tất cả các chức năng thực hiện cuộc gọi bên ngoài trong hợp đồng này. Kiểm tra xem thứ tự kiểm tra-hiệu ứng-tương tác có được tuân thủ cho từng thứ tự trong số chúng hay không và liệu có bộ phận bảo vệ quay lại hay không. Hiển thị những rủi ro bằng một dòng. Đánh dấu nếu bạn không chắc chắn; Tạo mã khai thác.
3) Bản đồ kiểm soát truy cập:
Liệt kê tất cả các chức năng bên ngoài/công cộng trong hợp đồng này và chỉ định "ai có thể gọi" (mọi người/chủ sở hữu/vai trò) cho mỗi chức năng. Thực hiện các hoạt động quan trọng (rút, in, nâng cấp) và đánh dấu những hoạt động có khả năng kiểm soát truy cập yếu. Trình bày nó với một bảng.
4) Loại bỏ dương tính giả:
Hãy xem xét lý do tại sao cảnh báo quét này có thể không phải là rủi ro THỰC SỰ (dương tính giả): bối cảnh hoặc điều kiện mã nào sẽ làm mất hiệu lực cảnh báo này? Nhưng đừng nói “hoàn toàn không có vấn đề gì”; Liệt kê những điểm cần xác nhận.
Ba trường hợp nhỏ (theo số lượng)
Trường hợp 1 - Xe + AI tăng gấp đôi hiệu quả. Một nhóm điều hành Slither trong một dự án gồm 12 hợp đồng và nhận được 140 cảnh báo. Khi chúng tôi nhờ AI giải thích và ưu tiên các cảnh báo, hóa ra 95 trong số 140 cảnh báo là dương tính giả; Nhóm tập trung vào 45 ứng viên thực sự. Thời gian phân loại giảm từ 2 ngày xuống còn 5 giờ. Bài học: AI có sức mạnh nhân bản hóa đầu ra của phương tiện.
Trường hợp 2 - AI đã tấn công MEV. Trong hợp đồng DEX (trao đổi phi tập trung), AI đã tìm thấy các mẫu tiêu chuẩn rõ ràng nhưng không phát hiện được lỗ hổng chạy trước; bởi vì điều này đặc trưng cho thứ tự hoạt động của giao thức. Kiểm toán viên con người và mô phỏng bị bắt. Bài học: Các rủi ro dành riêng cho giao thức như MEV/chạy trước là điểm yếu của AI.
Trường hợp 3 - Tránh lãng phí thời gian vào kết quả dương tính giả. Nhóm đã tránh phải viết lại không cần thiết khi AI giải thích rằng cảnh báo quay lại thực sự là dương tính giả (chức năng này đã được bảo vệ). Nhưng nhóm nghiên cứu vẫn xác nhận điều đó bằng một bài kiểm tra duy nhất. Bài học: AI ưu tiên; Xác nhận một lần nữa đi kèm với thử nghiệm.
Giới hạn quét
Quá trình quét tìm thấy các mẫu đã biết. Cả công cụ và AI đều không được đảm bảo có thể phát hiện ra lỗ hổng mới, duy nhất hoặc dành riêng cho giao thức. Vì vậy, sàng lọc là một phần của cuộc kiểm toán; không phải chính mình. Quan điểm cho rằng “quét sạch nên tức là an toàn” là một trong những quan niệm sai lầm nguy hiểm nhất trong lĩnh vực này. Nạo vét nhặt quả thấp; Đối với những rủi ro sâu sắc và đặc biệt, chuyên môn của con người, việc kiểm tra, làm mờ và kiểm toán chính thức là rất cần thiết.
Thận trọng: Báo cáo “sạch” về công cụ quét hoặc AI không phải là chứng chỉ bảo mật. Trình bày nó theo cách đó - đặc biệt là với các nhà đầu tư - là sai lầm và phi đạo đức.
Những lỗi thường gặp
- Thay thế sàng lọc để kiểm tra. Quét là một lớp, không phải toàn bộ.
- Sử dụng AI mà không cần công cụ. Phân tích tĩnh + AI + con người làm việc cùng nhau.
- Loại bỏ các kết quả dương tính giả mà không cần xác nhận. Mỗi màn hình đều được kiểm tra/xác minh bởi con người.
- Vượt qua các rủi ro dành riêng cho giao thức (MEV) bằng cách dựa vào AI. Điểm yếu của AI.
- Suy nghĩ "quét sạch" = "an toàn". Nó không thể tìm thấy cái chưa biết.
- Tạo mã khai thác. Chỉ mô tả rủi ro phòng thủ là hợp pháp.
Tóm lại
- Quét lỗ hổng bảo mật sẽ tìm kiếm các mẫu lỗ hổng đã biết bằng phương tiện + AI + con người.
- AI rất mạnh trong việc giải thích và ưu tiên đầu ra của công cụ phân tích tĩnh.
- Đáng tin cậy trong các mô hình rõ ràng như kiểm soát truy cập lại và truy cập; Yếu về MEV và logic kinh doanh.
- Ngay cả việc loại bỏ các kết quả dương tính giả cũng cần có sự xác nhận.
- "Quét sạch" không phải là chứng chỉ bảo mật; Nó không thể thay thế cho việc giám sát.
Nhiệm vụ ứng dụng
Chạy công cụ phân tích tĩnh trên hợp đồng mẫu (nếu có thể) hoặc tìm báo cáo Slither làm sẵn. Áp dụng lời nhắc "mô tả đầu ra công cụ" cho AI. Đánh giá xem AI: (1) giải thích chính xác các cảnh báo hay không, (2) có ý nghĩa trong việc phân biệt giữa các kết quả dương tính giả và (3) bỏ sót một rủi ro theo giao thức cụ thể. Điền vào các cột “đã tìm thấy xe / AI giải thích / con người xác nhận” trong bảng.
danh sách kiểm tra
- [ ] Tôi định vị cửa sập như một lớp điều khiển.
- [ ] Tôi đã sử dụng công cụ phân tích tĩnh + AI + con người cùng nhau.
- [ ] Tôi đã tìm kiếm theo danh mục để tìm các mẫu đã biết.
- [ ] Tôi đã loại bỏ các kết quả dương tính giả bằng xác nhận.
- [ ] Tôi đã dựa vào con người trong những lĩnh vực còn yếu như MEV/logic kinh doanh.
- [ ] Tôi không đưa ra lời đảm bảo "quét sạch".
- [ ] Tôi làm việc chỉ vì mục đích phòng thủ; Tôi không tạo ra sự khai thác.