BTC $78,510.53 -0.90%
ETH $2,485.60 -0.36%
BNB $751.03 +1.51%
XRP $1.41 +1.09%
SOL $103.10 -0.97%
TRX $0.3378 +1.03%
DOGE $0.0897 -0.99%
ADA $0.2211 +0.14%
BCH $256.47 -1.72%
LINK $12.53 -1.97%
HYPE $84.26 -1.22%
AAVE $129.21 -2.45%
SUI $0.8111 -2.33%
XLM $0.1884 -2.14%
ZEC $1,156.91 +0.15%
BTC $78,510.53 -0.90%
ETH $2,485.60 -0.36%
BNB $751.03 +1.51%
XRP $1.41 +1.09%
SOL $103.10 -0.97%
TRX $0.3378 +1.03%
DOGE $0.0897 -0.99%
ADA $0.2211 +0.14%
BCH $256.47 -1.72%
LINK $12.53 -1.97%
HYPE $84.26 -1.22%
AAVE $129.21 -2.45%
SUI $0.8111 -2.33%
XLM $0.1884 -2.14%
ZEC $1,156.91 +0.15%

a16z: Hướng dẫn an toàn hợp đồng thông minh cho dự án Web3

Summary: Thực hiện 8 điểm này có thể tối đa hóa việc phòng ngừa tấn công của hacker.
a16z
2022-06-08 14:03:45
Thực hiện 8 điểm này có thể tối đa hóa việc phòng ngừa tấn công của hacker.

Nguồn: a16z

Biên soạn: Katie 辜, Sao Hỏa Nhật Báo

Thông thường, hacker sẽ phát hiện và khai thác các lỗ hổng trong toàn bộ quy trình phát triển phần mềm (từ thiết kế đến triển khai và bảo trì), từ đó phá vỡ rào cản an ninh của các dự án blockchain. Nếu có thể biết trước những kinh nghiệm liên quan, tôi tin rằng các sự cố an ninh sẽ ít xảy ra hơn.

Bài viết này tóm tắt các yếu tố an ninh mà các nhà phát triển Web3 và đội ngũ an ninh cần xem xét khi thiết kế, phát triển và bảo trì hợp đồng thông minh, bao gồm toàn bộ chu kỳ từ mô hình đe dọa đến chuẩn bị ứng phó khẩn cấp.

Phát triển một phần mềm an toàn bao gồm năm giai đoạn sau:

  1. Thiết kế: Các nhà phát triển mô tả các chức năng và hoạt động cần thiết của hệ thống, bao gồm các tiêu chuẩn và thuộc tính cố định quan trọng;

  2. Phát triển: Các nhà phát triển viết mã hệ thống;

  3. Kiểm tra và đánh giá: Các nhà phát triển tập hợp tất cả các mô-đun trong một môi trường kiểm tra và đánh giá tính chính xác, quy mô và các yếu tố khác của chúng;

  4. Triển khai: Các nhà phát triển đưa hệ thống vào sản xuất;

  5. Bảo trì: Các nhà phát triển đánh giá và sửa đổi hệ thống, đảm bảo nó thực hiện các chức năng mong đợi.

Hình dưới đây sẽ liên kết các yếu tố an ninh cần xem xét với các giai đoạn trên.

a16z: Hướng dẫn an ninh hợp đồng thông minh cho dự án Web3

Cần lưu ý rằng vòng đời phát triển phần mềm không nhất thiết phải luôn theo một con đường tuyến tính: các loại có thể chồng chéo hoặc mở rộng sang các giai đoạn khác. Đối với mỗi phiên bản, các bước có thể được lặp lại. Một số nhiệm vụ an ninh (như kiểm tra và đánh giá an ninh) có thể cần được thực hiện liên tục.

Các bước vòng đời phần mềm được mô tả ở trên và các yếu tố an ninh tương ứng cung cấp nền tảng để thúc đẩy tính an toàn của hợp đồng thông minh. Dưới đây sẽ đi sâu vào ba vấn đề để nghiên cứu chi tiết hơn.

1. Các yếu tố an ninh hợp đồng thông minh trong giai đoạn thiết kế ------ Xem xét mô hình đe dọa và thiết kế an ninh

  • Nội dung: Việc xác định rõ ràng các mối đe dọa tiềm ẩn của hệ thống từ giai đoạn đầu của vòng đời phát triển dự án và xác định ưu tiên của chúng là rất quan trọng. Các nhà phát triển hợp đồng thông minh nên xác định tất cả các biện pháp kiểm soát an ninh cần thực hiện trong quá trình phát triển, cũng như các mối đe dọa cần kiểm tra trong kiểm tra, kiểm toán và giám sát. Tất cả các giả định an ninh, bao gồm mức độ phức tạp và phương tiện kinh tế mà kẻ tấn công dự kiến, nên được định nghĩa và làm rõ trong giai đoạn thiết kế.

  • Lý do: Mặc dù việc chỉ tập trung vào mục đích sử dụng dự kiến của hợp đồng thông minh hoặc giao thức rất hấp dẫn đối với các nhà phát triển, nhưng sự tập trung duy nhất này có thể để lại cho họ "điểm mù", có thể bị kẻ tấn công khai thác.

  • Phương pháp: Tuân theo các thực tiễn mô hình đe dọa đã biết. Nếu một nhóm phát triển không có chuyên gia an ninh nội bộ, thì họ nên liên hệ với các cố vấn an ninh từ sớm trong giai đoạn thiết kế. Khi thiết kế hệ thống, hãy có tâm lý của một "kẻ tấn công" và giả định trước rằng bất kỳ cá nhân, máy móc hoặc dịch vụ nào cũng có thể bị tấn công.

2. Các yếu tố an ninh trong giai đoạn phát triển ------ Quản lý và kiểm soát truy cập

  • Nội dung: Thực hiện kiểm soát truy cập, hạn chế khả năng thực hiện các nhiệm vụ quản lý (như nâng cấp hợp đồng và thiết lập các tham số đặc biệt) đối với các tài khoản đặc quyền và các cuộc gọi hợp đồng thông minh. Tuân theo "nguyên tắc quyền tối thiểu" ------ mỗi người tham gia chỉ nên có quyền truy cập tối thiểu cần thiết.

  • Lý do: Bằng cách duy trì giao thức thông qua quy trình nâng cấp và quản trị, các nhà phát triển có thể cải thiện giao thức bằng cách thêm các tính năng mới, sửa chữa các vấn đề an ninh và giải quyết các điều kiện thay đổi. Nếu khả năng nâng cấp không được kiểm soát đúng cách, điều này có thể tạo ra lỗ hổng an ninh nghiêm trọng.

  • Phương pháp: Thiết lập ví đa chữ ký hoặc hợp đồng DAO để đại diện cho cộng đồng quản lý các thay đổi một cách minh bạch. Các thay đổi nên trải qua quy trình xem xét kỹ lưỡng và thiết lập một khóa thời gian (cố ý trì hoãn việc quy định và có khả năng hủy bỏ), để đảm bảo rằng trong trường hợp tấn công quản trị, có thể xác minh tính chính xác của chúng và quay lại (rolled-back). Đảm bảo rằng các khóa đặc quyền có thể được lưu trữ và truy cập an toàn trong ví tự quản hoặc dịch vụ lưu giữ an toàn.

3. Xem xét các mẫu và tích hợp có thể tái sử dụng, đã được thử nghiệm thực chiến

  • Nội dung: Tận dụng các tiêu chuẩn hợp đồng thông minh hiện có (như hợp đồng OpenZeppelin) càng nhiều càng tốt và đánh giá các giả định an ninh có thể cần thiết cho việc tích hợp giao thức với các giao thức hiện có.

  • Lý do: Việc sử dụng các tiêu chuẩn đã được kiểm nghiệm thực chiến và được cộng đồng kiểm toán sẽ giúp giảm thiểu rủi ro an ninh. Đánh giá rủi ro tích hợp giao thức giúp phát triển các kiểm tra an ninh để ngăn chặn các cuộc tấn công vào các thành phần bên ngoài (như thao túng oracle).

  • Phương pháp: Nhập các thư viện hợp đồng đáng tin cậy đã được kiểm toán an ninh và các giao diện. Web3 tập trung vào việc sử dụng mã nguồn mở, khả năng tái sử dụng và khả năng kết hợp. Đảm bảo ghi lại các phụ thuộc hợp đồng và phiên bản của chúng trong kho mã, giảm thiểu mã chiếm dụng càng nhiều càng tốt. Ví dụ, nhập các mô-đun con cụ thể của các dự án lớn, thay vì nhập tất cả nội dung. Hiểu rõ rủi ro của bạn, theo dõi các cuộc tấn công chuỗi cung ứng. Sử dụng các giao diện chính thức để gọi các giao thức bên ngoài và đảm bảo xem xét các rủi ro tích hợp tiềm năng. Theo dõi các bản cập nhật và công bố an ninh của các hợp đồng được tái sử dụng.

4. Các yếu tố an ninh trong giai đoạn kiểm tra và đánh giá ------ Xem xét kiểm tra và tài liệu

  • Nội dung: Tạo tài liệu mã rõ ràng và toàn diện, và thiết lập một bộ kiểm tra nhanh chóng, kỹ lưỡng và dễ thực hiện. Khi có thể, thiết lập môi trường kiểm tra trên mạng thử nghiệm hoặc mô phỏng qua mạng chính để thực hiện các thí nghiệm sâu hơn.

  • Lý do: Việc viết ra các giả định về hành vi dự kiến của kho mã giúp đảm bảo rằng các rủi ro trong mô hình đe dọa được giải quyết và người dùng cũng như các kiểm toán viên bên ngoài có thể hiểu được ý định của nhóm phát triển. Tạo bộ kiểm tra cho mã giúp chứng minh (hoặc bác bỏ) các giả định phát triển và khuyến khích suy nghĩ sâu hơn về mô hình đe dọa. Bộ kiểm tra này nên bao gồm kiểm tra thiết kế cơ chế kinh tế của mã thông báo dự án trong các kịch bản thị trường cực đoan, cũng như kiểm tra đơn vị và kiểm tra tích hợp.

  • Phương pháp: Thực hiện các khung kiểm tra và công cụ kiểm tra an ninh đã biết, như Hardhat, Mythril, Slither, Truffle, v.v., cung cấp các kỹ thuật kiểm tra khác nhau, như làm mờ, kiểm tra thuộc tính, thậm chí xác minh chính thức. Sử dụng NatSpeccomments để ghi lại mã một cách rộng rãi, chỉ định các tác dụng phụ, tham số và giá trị trả về dự kiến. Sử dụng công cụ tạo tài liệu và các mô tả thiết kế nâng cao để tạo tài liệu theo thời gian thực.

5. Xem xét kiểm tra nội bộ và kiểm toán an ninh

  • Nội dung: Dành thời gian để phát hiện lỗ hổng thông qua kiểm tra mã nội bộ và bên ngoài.

  • Lý do: Việc chuyển từ phát triển tính năng sang tập trung vào các vấn đề an ninh đã cho các nhà phát triển thời gian để phát hiện các vấn đề mờ. Kiểm toán bên ngoài đặc biệt phát huy tác dụng trong lĩnh vực này, vì chúng có thể mang lại góc nhìn và chuyên môn bên ngoài mà nhóm phát triển không có.

  • Phương pháp: Tại các điểm thích hợp trong quá trình phát triển dự án, đóng băng một chức năng để có thời gian thực hiện kiểm tra nội bộ, sau đó tiến hành kiểm toán bên ngoài. Điều này nên được thực hiện trước bất kỳ triển khai thực tế và nâng cấp nào.

Vui lòng tham khảo hướng dẫn từ ConsenSys, Nassent, OpenZeppelin và Trail of Bits, những hướng dẫn này cung cấp danh sách các yếu tố cần xem xét cho các nhà phát triển, bao gồm thời gian biểu, để tham khảo cho bất kỳ ai chuẩn bị kiểm toán. Cũng cần đảm bảo kiểm tra các giao dịch triển khai, đảm bảo rằng chúng sử dụng phiên bản mã đã được kiểm toán và có các tham số thích hợp, đặc biệt là khi nâng cấp phần mềm.

6. Các yếu tố an ninh trong giai đoạn triển khai và bảo trì ------ Khuyến khích cộng đồng white hat tham gia

  • Nội dung: Tạo ra các chương trình khuyến khích cộng đồng tham gia cải thiện an ninh cho kho mã nguồn mở. Một cách là tạo ra phần thưởng cho lỗ hổng. Một cách khác là khuyến khích cộng đồng phát triển các bot giám sát giao thức.

  • Lý do: Nhóm phát triển có thể hưởng lợi từ một kho kiến thức và kinh nghiệm rộng lớn (đó cũng là vai trò của mã nguồn mở trong lĩnh vực tiền điện tử). Những chương trình như vậy có thể giúp kích thích sự nhiệt tình đối với một dự án, về bản chất biến cộng đồng và các hacker white hat thành những người truyền bá. Bằng cách cung cấp cho hacker một con đường để trở thành người bảo vệ, chúng cũng có thể giúp biến những kẻ tấn công tiềm năng thành tài sản an ninh.

  • Phương pháp: Sử dụng các nền tảng thưởng lỗ hổng (như Code4rena, HackenProof, mmunef hoặc Secureum) để khuyến khích các hacker có kỹ năng tiết lộ lỗ hổng một cách an toàn.

Chú thích: Một số tác giả trong bài viết này làm việc tại công ty Forta, công ty này sở hữu một mạng lưới cung cấp một cấu trúc khuyến khích mã hóa để tạo ra các bot giám sát an ninh chất lượng cao cho các ứng dụng phi tập trung. Nhóm phát triển có thể khuyến khích cộng đồng giao thức của họ sử dụng cả hai phương pháp truyền thống và bản địa Web3 để khuyến khích phần thưởng lỗ hổng và tiềm năng kiếm lợi cho người tham gia thông qua việc tăng cường an ninh, đạt được lợi ích đôi bên.

7. Các yếu tố an ninh trong giám sát thời gian thực

  • Nội dung: Thực hiện hệ thống giám sát các hợp đồng thông minh và các thành phần hoạt động quan trọng (như oracle và cầu nối chuỗi) và báo cáo các hoạt động đáng ngờ cho nhóm phát triển và cộng đồng dựa trên các mô hình đe dọa đã biết.

  • Lý do: Việc phát hiện sớm các vấn đề cho phép nhóm phản ứng nhanh chóng với các lỗ hổng, tiềm năng ngăn chặn hoặc giảm thiểu bất kỳ tổn thất nào.

  • Phương pháp: Sử dụng nền tảng giám sát hoặc chạy bot trên các nút phân phối để giám sát các sự kiện hợp đồng thông minh theo thời gian thực. Chèn bảng điều khiển dữ liệu và thông báo cảnh báo cho nhóm phát triển và cộng đồng rộng lớn hơn khi cần thiết.

8. Các yếu tố an ninh trong ứng phó với sự cố và tình huống khẩn cấp

  • Nội dung: Sử dụng các công cụ và quy trình có khả năng phản ứng ngay lập tức khi xảy ra bất kỳ vấn đề an ninh nào.

  • Lý do: Ngay cả khi có các biện pháp bảo vệ trước triển khai tốt nhất, hợp đồng thông minh và các thành phần quan trọng (như oracle và cầu nối chuỗi) vẫn có thể gặp phải các vấn đề theo thời gian thực. Được trang bị nhân viên chuyên trách, quy trình rõ ràng và thiết bị tự động hóa thích hợp, đảm bảo có thể nhanh chóng điều tra sự cố và giải quyết càng sớm càng tốt.

  • Phương pháp: Chuẩn bị cho tình huống xấu nhất, lập kế hoạch cách ứng phó với sự cố hoặc tình huống khẩn cấp, và tự động hóa khả năng phản ứng đến mức tối đa. Bao gồm việc phân công trách nhiệm điều tra và phản ứng, những người này có thể liên hệ công khai về các vấn đề an ninh thông qua danh sách email an ninh phân phối, chỉ dẫn trong kho mã hoặc sổ đăng ký hợp đồng thông minh. Phát triển một tập hợp quy trình dựa trên mô hình đe dọa của giao thức, có thể bao gồm các buổi diễn tập kịch bản và thời gian phản ứng dự kiến cần thiết để thực hiện hành động khẩn cấp, có thể xem xét tích hợp tự động hóa vào phản ứng sự cố khẩn cấp.

Các yếu tố an ninh nên là một phần cấu thành của sự phát triển thành công, chứ không chỉ là một suy nghĩ sau hoặc bổ sung. Mặc dù khung này chia sẻ một số hướng dẫn nhanh để xây dựng các giao thức và ứng dụng Web3 nhằm thúc đẩy tính an toàn trong toàn bộ quá trình phát triển, nhưng không có bất kỳ tóm tắt ngắn gọn nào có thể thảo luận toàn diện về an ninh hợp đồng thông minh. Các nhóm thiếu chuyên môn an ninh nội bộ nên liên hệ với các chuyên gia an ninh Web3 đủ điều kiện, những người có thể hướng dẫn và giúp áp dụng cho tình huống cụ thể của họ.

Hãy nhớ rằng, an ninh không phải là một vấn đề đơn giản. An ninh sẽ luôn là một bộ các thực tiễn tốt nhất không bao giờ kết thúc và liên tục. Chúng ta vẫn đang ở giai đoạn đầu trong việc thiết lập những thực tiễn này, và bây giờ là thời điểm để tất cả các nhà phát triển hợp tác tạo ra và chia sẻ chúng.

warnning Cảnh báo rủi ro
app_icon
ChainCatcher Building the Web3 world with innovations.