Đơn vị 3 / 11

Hỗ trợ kiểm tra hợp đồng thông minh: Đánh giá bảo mật và phát hiện dự thảo

Lợi nhuận:

  • Khả năng hiểu rằng trí tuệ nhân tạo mở rộng phạm vi của kiểm toán viên nhưng không thay thế nó và rất hữu ích trong việc quét danh mục và tìm bản soạn thảo.
  • Có thể nhận ra rằng trí tuệ nhân tạo đã bỏ sót lỗ hổng ban đầu và lỗi logic nghiệp vụ, đồng thời tuyên bố 'an toàn' trôi chảy không phải là sự đảm bảo
  • Khả năng phân loại các phát hiện theo mức độ nghiêm trọng và hiểu rằng sự phê duyệt cuối cùng và trách nhiệm nghề nghiệp thuộc về kiểm toán viên có thẩm quyền.

Kiểm tra bảo mật (kiểm tra có hệ thống hợp đồng thông minh để tìm lỗ hổng) là công việc có trách nhiệm nhất của Web3. Một dòng duy nhất bị kiểm toán viên bỏ qua có thể dẫn đến tổn thất hàng triệu đô la. Trong phần này, bạn sẽ học cách sử dụng AI làm trợ lý kiểm toán; Chúng ta sẽ học từ việc tìm ra manh mối cho đến viết tóm tắt các phát hiện. Nhưng câu quan trọng nhất là: AI không kiểm soát; Nó là trợ thủ giúp kiểm toán viên tinh mắt hơn. Sự phê duyệt cuối cùng thuộc về kiểm toán viên có thẩm quyền, người chịu trách nhiệm nghề nghiệp.

Tại sao việc kiểm tra lại quan trọng về mặt bảo mật

Một báo cáo kiểm toán trấn an dự án và các nhà đầu tư rằng “quy tắc này đã được xem xét”. Nếu sự đảm bảo này là sai, hậu quả sẽ rất tai hại: giao thức bị khai thác, mất vốn, dự án sụp đổ. Vì vậy, việc sử dụng AI trong kiểm tra là phần cẩn trọng nhất của học phần này. AI mở rộng phạm vi của kiểm toán viên (nhớ nhiều mẫu hơn, đọc nhanh hơn) nhưng không thay thế kiểm toán viên.

Tại sao nó không vượt qua? Bởi vì:

  • AI không thể nhìn thấy lỗ hổng duy nhất/mới không có trong dữ liệu đào tạo.
  • AI thường bỏ sót lỗ hổng trong logic kinh doanh của giao thức—mã đúng về mặt kỹ thuật nhưng có thể khai thác được về mặt kinh tế.
  • AI có thể đưa ra sự trấn an sai lầm bằng cách nói “an toàn” bằng ngôn ngữ trôi chảy; Đây là kết quả nguy hiểm nhất.

Các lớp sử dụng AI trong kiểm soát

1. Nhắc nhở mẫu và quét lần đầu. AI xem xét các mẫu lỗ hổng đã biết như danh sách kiểm tra: truy cập lại, kiểm soát truy cập, thao túng oracle, chạy trước. Điều này đảm bảo rằng kiểm toán viên không bỏ sót bất kỳ hạng mục nào.

2. Giải thích mã. Việc giải thích một chức năng phức tạp cho AI bằng ngôn ngữ đơn giản cho phép kiểm toán viên nhanh chóng nắm bắt được logic; nhưng mô tả luôn được so sánh với mã.

3. Viết bản thảo kết quả nghiên cứu. Khi kiểm toán viên tìm thấy lỗ hổng, AI tiết kiệm thời gian viết bản dự thảo báo cáo (mô tả, tác động, đề xuất giải pháp).

4. Tạo phản giả thuyết. Hãy hỏi AI "làm thế nào chức năng này có thể bị lạm dụng?" Hỏi " nhắc nhở chúng ta về quan điểm hung hăng.

Chú ý: Chỉ vì AI nói "Tôi không tìm thấy bất kỳ lỗ hổng nào trong mã này" KHÔNG có nghĩa là "mã này an toàn". Bằng chứng vắng mặt không phải là không có bằng chứng. Việc AI không thể tìm thấy thứ gì đó không khiến kiểm toán viên không cần thiết phải kiểm tra khu vực đó.

Tìm mức độ nghiêm trọng

Các phát hiện kiểm toán được phân loại theo mức độ nghiêm trọng của chúng. AI nên sử dụng khung này khi tạo bản nháp:

Cấp độ

Ý nghĩa

ví dụ

quan trọng

Có thể mất/khóa quỹ trực tiếp

Rút tiền bằng cách đăng ký lại

cao

Tác động nghiêm trọng trong một số điều kiện nhất định

In trái phép (đúc)

trung bình

Tác động hạn chế hoặc tình trạng khó khăn

Mất mát nhỏ với độ lệch của Oracle

thấp

Rủi ro nhỏ, vi phạm thông lệ tốt

Thiếu phát sóng sự kiện

Thông tin

Không bảo mật, dễ đọc

Thiếu NatSpec

Dấu nhắc yếu / Dấu nhắc mạnh

Dấu nhắc yếu:

Hợp đồng này có an toàn không?

Câu hỏi này buộc AI phải đưa ra phán đoán tuyệt đối, không có cơ sở như “có/không” - chính xác là điều chúng ta không muốn.

Lời nhắc mạnh mẽ:

Vai trò của bạn: trợ lý cho kiểm toán viên hợp đồng thông minh cấp cao. Quét hợp đồng sau để đảm bảo an toàn. Lần lượt xem qua các danh mục sau: truy cập lại, kiểm soát truy cập, hoạt động số nguyên, xác thực đầu vào, dữ liệu oracle/bên ngoài, chạy trước, giới hạn gas. Đối với mỗi PHÁT HIỆN: (1) dòng mã liên quan, (2) gây ra rủi ro, (3) mức độ nghiêm trọng ước tính (Quan trọng/Cao/Trung bình/Thấp), (4) đề xuất giải pháp. Đây là những GIẢ THUYẾT CẦN ĐƯỢC XÁC NHẬN; Đừng đưa ra phán quyết "an toàn". Đánh dấu những phần bạn không chắc chắn và nói rõ ràng "hãy để kiểm toán viên xác nhận".

Bốn mẫu có thể sao chép

1) Duyệt dựa trên danh mục:

Quét hợp đồng này để tìm các danh mục sau: reentrancy, kiểm soát truy cập, tràn số nguyên, xác thực đầu vào, phụ thuộc oracle, chạy trước, DoS/gas. Đối với mỗi danh mục, hãy nói "không có rủi ro/Tôi không chắc chắn" và kết nối lời giải thích của bạn với dòng trong mã. Đừng đưa ra phán xét cuối cùng.

2) Phản giả thuyết từ góc nhìn của kẻ tấn công:

Hãy suy nghĩ như một kẻ tấn công: có những cách nào để lạm dụng chức năng này? Viết từng kịch bản từng bước và chỉ ra những điều kiện cần thiết. Những kịch bản này là những giả thuyết cần được kiểm tra; KHÔNG tạo mã khai thác thực tế, chỉ mô tả rủi ro.

3) Dự thảo báo cáo kết quả:

Báo cáo phát hiện đã được xác minh sau đây bằng ngôn ngữ kiểm tra chính thức: tiêu đề, mức độ nghiêm trọng, mô tả, tác động, mã bị ảnh hưởng, các bước tái tạo, giải pháp đề xuất. Sử dụng ngôn ngữ đo lường và kỹ thuật; cường điệu. Giả sử phát hiện này đã được kiểm toán viên xác nhận, không bịa ra phát hiện mới.

4) Sửa lỗi xác minh:

Dưới đây là một lỗ hổng và cách khắc phục được nhà phát triển áp dụng. Kiểm tra xem bản sửa lỗi có thực sự đóng được lỗ hổng hay không; đánh dấu xem nó có tạo ra tác dụng phụ hoặc lỗ hổng mới hay không. Đừng nói "đóng cửa" chắc chắn; Kết thúc bằng "phải được xác nhận bằng thử nghiệm".

Ba trường hợp nhỏ (theo số lượng)

Trường hợp 1 - AI đã ngăn chặn việc nhảy danh mục. Một kiểm toán viên sắp tập trung vào hợp đồng 400 dòng và bỏ qua hạng mục tiên tri. Quá trình quét danh mục của AI đã đưa ra cảnh báo rằng "dữ liệu giá được lấy từ một nguồn duy nhất, có thể bị thao túng". Kiểm toán viên đã kiểm tra và nhận thấy đây thực sự là một rủi ro trung bình. Bài học: AI duy trì kỷ luật đưa tin.

Trường hợp 2 - Đảm bảo “an toàn” sai. Một nhóm khác hỏi AI “điều này có an toàn không?” anh ấy hỏi; AI cho biết: “Dường như không có vấn đề gì đáng kể”. Việc kiểm tra phi hành đoàn diễn ra nhẹ nhàng. Sau đó, kiểm toán viên độc lập phát hiện ra một lỗ hổng trong logic kinh doanh: một phép tính đúng về mặt kỹ thuật nhưng động cơ của nó lại có thể bị lợi dụng. Bài học: AI bỏ sót lỗi logic nghiệp vụ; Không thể tin tưởng anh ta khi nói "an toàn".

Trường hợp 3 - Soạn thảo báo cáo tiết kiệm được 3 giờ. Kiểm toán viên đã dành nửa ngày để báo cáo thủ công 8 phát hiện. Sau khi tôi đưa những phát hiện đã được xác minh cho AI và in bản dự thảo chính thức, thời gian đã giảm xuống ~ 3 giờ; Kiểm toán viên đã dành thời gian để tìm hiểu sâu hơn. Bài học: AI an toàn và hiệu quả trong việc báo cáo vì các phát hiện đã được con người xác minh.

Lỗ hổng logic kinh doanh: Điểm mù của AI

Các lỗ hổng đắt giá nhất thường không đến từ lỗi kỹ thuật trong mã mà đến từ khả năng khai thác logic kinh doanh: khai thác làm tròn tài khoản phần thưởng, chiếm đoạt phiếu bầu nhanh chóng, thao túng giá tức thời. Đây là những trường hợp mã hoạt động "chính xác" nhưng giao thức có thể bị lừa về mặt kinh tế. AI có thể bỏ sót những lỗi như vậy, đặc biệt là những lỗi liên quan đến giao thức. Do đó, đánh giá logic kinh doanh là lĩnh vực sử dụng nhiều con người nhất của kiểm toán viên và ít phụ thuộc nhất vào AI.

Gợi ý: Hãy hỏi AI “làm cách nào để khai thác các ưu đãi kinh tế của giao thức này?” và sử dụng các tình huống xuất hiện làm điểm khởi đầu - nhưng hãy nhớ rằng bạn và nhóm của bạn nên thực hiện phân tích thực sự.

Những lỗi thường gặp

  • Hỏi AI "có an toàn không?" Hỏi và tin tưởng vào sự đồng ý của bạn. Sự phán xét tuyệt đối là không cần thiết.
  • Dừng đánh giá khi AI nói "Tôi không thể tìm thấy nó". Sự vắng mặt không phải là bằng chứng.
  • Ủy quyền đánh giá logic kinh doanh cho AI. Đó là điểm mù lớn nhất của anh ấy.
  • Không sử dụng các công cụ độc lập (Slither, v.v.). Chỉ AI thôi là chưa đủ.
  • Đưa phát hiện do AI tạo ra vào báo cáo mà không xác minh. Nguy cơ bị ảo giác.
  • Cố gắng đặt trách nhiệm kiểm soát lên AI. Trách nhiệm thuộc về chuyên gia.

Tóm lại

  • Kiểm toán là quan trọng về an toàn; AI mở rộng phạm vi của kiểm toán viên nhưng không thay thế nó.
  • AI bỏ sót lỗ hổng ban đầu và lỗi logic nghiệp vụ; Nói "an toàn" không phải là đảm bảo.
  • Các phát hiện được phân loại theo mức độ nghiêm trọng; AI rất hữu ích trong việc tạo bản nháp.
  • Phản giả thuyết và sàng lọc phạm trù duy trì nguyên tắc bao hàm.
  • Sự phê duyệt cuối cùng và trách nhiệm nghề nghiệp luôn thuộc về kiểm toán viên có thẩm quyền.

Nhiệm vụ ứng dụng

Tìm hợp đồng mẫu có chứa lỗ hổng đã biết (vì mục đích giáo dục, ví dụ về "hợp đồng dễ bị tổn thương" có sẵn trong nguồn mở). Áp dụng lời nhắc "quét dựa trên danh mục" cho AI. Lưu ý xem AI: (1) có tìm thấy lỗ hổng thực sự hay không, (2) đưa ra các phát hiện bịa đặt/sai, (3) đưa ra các phán đoán tuyệt đối như “an toàn”. Sau đó so sánh nó với một công cụ phân tích tĩnh.

danh sách kiểm tra

  • [ ] Hỏi AI "có an toàn không?" Thay vào đó, tôi đã quét theo danh mục.
  • [ ] Tôi coi mỗi phát hiện này như một giả thuyết.
  • [ ] Tôi đã tự mình/nhóm đánh giá logic kinh doanh.
  • [ ] Tôi đã xác thực chéo nó bằng một công cụ phân tích tĩnh độc lập.
  • [ ] Tôi đã xác nhận rằng AI không bịa đặt kết quả.
  • [ ] Tôi đã phân loại các phát hiện theo mức độ nghiêm trọng.
  • [ ] Tôi chấp nhận rằng sự phê duyệt cuối cùng thuộc về kiểm toán viên có thẩm quyền.