Tài chính phi tập trung các lỗ hổng an ninh phổ biến và biện pháp phòng ngừa
Gần đây, một chuyên gia an ninh đã chia sẻ một buổi học về an ninh DeFi cho các thành viên trong cộng đồng. Ông đã xem xét những sự kiện an ninh lớn mà ngành Web3 đã gặp phải trong hơn một năm qua, thảo luận về nguyên nhân của những sự kiện an ninh này và cách để tránh chúng, tóm tắt các lỗ hổng an ninh phổ biến trong hợp đồng thông minh và các biện pháp phòng ngừa, cũng như đưa ra một số lời khuyên về an ninh cho các dự án và người dùng thông thường.
Các loại lỗ hổng DeFi phổ biến chủ yếu bao gồm vay chớp nhoáng, thao túng giá, vấn đề quyền hạn hàm, gọi bên ngoài tùy ý, vấn đề hàm fallback, lỗ hổng logic kinh doanh, rò rỉ khóa riêng và tấn công tái nhập. Bài viết này sẽ tập trung vào ba loại: vay chớp nhoáng, thao túng giá và tấn công tái nhập.
Vay chớp nhoáng
Vay chớp nhoáng bản thân là một sáng tạo trong Tài chính phi tập trung, nhưng khi bị hacker lợi dụng, họ có thể vay một số lượng lớn vốn mà không tốn bất kỳ chi phí nào, thực hiện giao dịch chênh lệch và hoàn trả lại, chỉ cần trả một khoản phí Gas nhỏ để thu được lợi nhuận khổng lồ.
Nhiều dự án DeFi có vẻ như mang lại lợi nhuận cao, nhưng thực tế trình độ của các dự án rất không đồng đều. Một số dự án có thể đã mua mã nguồn, ngay cả khi mã nguồn không có lỗ hổng, nhưng về mặt logic vẫn có thể có vấn đề. Ví dụ, một dự án sẽ phát thưởng vào thời điểm cố định dựa trên số lượng token mà người nắm giữ có, nhưng lại bị kẻ tấn công lợi dụng vay chớp nhoáng để mua một lượng lớn token, và do đó nhận được phần lớn phần thưởng khi phát thưởng.
Ngoài ra, còn có một số dự án tính giá thông qua token, có thể bị ảnh hưởng giá bởi cho vay chớp nhoáng. Là một bên dự án, bạn nên nâng cao cảnh giác đối với những vấn đề này.
Kiểm soát giá
Vấn đề thao túng giá cả có mối quan hệ chặt chẽ với vay chớp nhoáng, chủ yếu có hai loại phổ biến:
Sử dụng dữ liệu bên thứ ba khi tính toán giá, nhưng cách sử dụng không đúng hoặc thiếu kiểm tra dẫn đến giá bị thao túng một cách độc hại.
Sử dụng số lượng token của một số địa chỉ làm biến số tính toán, trong khi số dư token của những địa chỉ này có thể tạm thời tăng hoặc giảm.
Tấn công tái nhập
Một trong những nguy cơ chính khi gọi hợp đồng bên ngoài là chúng có thể chiếm quyền kiểm soát luồng điều khiển và thực hiện các thay đổi không lường trước đối với dữ liệu thông qua các hàm gọi. Ví dụ:
function withdrawBalance() công cộng {
uint amountToWithdraw = userBalances[msg.sender];
(bool success, ) = msg.sender.call.value(amountToWithdraw)("");
require(success);
userBalances[msg.sender] = 0;
}
Do vì số dư của người dùng chỉ được đặt về 0 vào cuối hàm, nên việc gọi lần thứ hai (và các lần sau) vẫn sẽ thành công, và sẽ liên tục rút số dư.
Giải quyết vấn đề tái nhập cần lưu ý những điểm sau:
Không chỉ ngăn chặn vấn đề tái nhập của một hàm đơn.
Tuân theo mô hình Checks-Effects-Interactions khi lập trình
Sử dụng modifier đã được thời gian kiểm chứng để ngăn chặn tấn công tái nhập.
Trong lĩnh vực này có rất nhiều thực tiễn bảo mật tốt nhất mà chúng ta nên sử dụng trực tiếp thay vì lặp lại việc tạo ra bánh xe. Việc sử dụng các giải pháp trưởng thành, đã được thử nghiệm qua thời gian có xác suất gặp sự cố thấp hơn nhiều so với việc phát triển các giải pháp mới.
Đề xuất an toàn cho dự án
Phát triển hợp đồng tuân theo các thực hành an toàn tốt nhất.
Hợp đồng có thể nâng cấp, có thể tạm dừng: Nhiều cuộc tấn công không phải là một lần chuyển toàn bộ tiền mà là thực hiện qua nhiều giao dịch. Nếu có một cơ chế giám sát tương đối hoàn chỉnh, có thể phát hiện kịp thời và tạm dừng hợp đồng, giảm thiểu thiệt hại một cách hiệu quả.
Sử dụng khóa thời gian: Nếu có khóa thời gian, có thể cho đủ thời gian để mọi người phát hiện bất thường và hành động.
Tăng cường đầu tư an toàn, xây dựng hệ thống an toàn hoàn chỉnh: An toàn là một hệ thống, không chỉ bao gồm kiểm toán hợp đồng mà còn bao gồm quản lý khóa riêng, mô hình kinh tế và nhiều khía cạnh khác.
Nâng cao nhận thức an ninh của tất cả nhân viên: Nhiều vấn đề an ninh có thể được tránh bằng cách nâng cao sự cảnh giác.
Ngăn chặn hành vi xấu bên trong, nâng cao hiệu quả đồng thời cải thiện quản lý rủi ro: Sử dụng các cơ chế như ký nhiều, khóa thời gian có thể nâng cao tính an toàn trong khi vẫn đảm bảo hiệu quả.
Độ an toàn của việc thu hút bên thứ ba: Cần thực hiện kiểm tra an toàn đối với cả dòng chảy lên và xuống, đặc biệt là đối với các hợp đồng không mã nguồn mở cần đặc biệt thận trọng.
Người dùng/LP làm thế nào để xác định hợp đồng thông minh có an toàn không?
Hợp đồng có mã nguồn mở không: Không tham gia vào các dự án không mã nguồn mở.
Chủ sở hữu có sử dụng đa chữ ký hay không, đa chữ ký có phi tập trung hay không.
Xem tình hình giao dịch hiện có của hợp đồng: bao gồm thời gian triển khai, số lần tương tác, v.v.
Hợp đồng có phải là hợp đồng đại diện không, có thể nâng cấp không, có thời gian khóa không.
Hợp đồng có được nhiều tổ chức kiểm toán không, quyền Owner có quá lớn không.
Chú ý đến oracle: Các dự án sử dụng oracle nổi tiếng tương đối an toàn hơn, cần phải cảnh giác với các oracle tự xây dựng hoặc dễ bị thao túng.
Tóm lại, trong môi trường Web3, giữ cảnh giác và đặt ra nhiều câu hỏi tại sao có thể giúp tránh nhiều rủi ro tiềm ẩn. Dù là nhà phát triển dự án hay người dùng bình thường, mọi người nên coi trọng vấn đề an ninh, xây dựng nhận thức an toàn và cơ chế phòng ngừa hoàn thiện.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
9 thích
Phần thưởng
9
6
Chia sẻ
Bình luận
0/400
MEVHunterNoLoss
· 9giờ trước
Những vấn đề an ninh này tính là gì der
Xem bản gốcTrả lời0
AirdropHustler
· 20giờ trước
Còn không bằng dạy cách刷空投
Xem bản gốcTrả lời0
BearMarketBuilder
· 20giờ trước
Lỗ hổng đều đã được bạn phát hết rồi, còn để Hacker làm gì nữa?
Xem bản gốcTrả lời0
LightningAllInHero
· 20giờ trước
Đừng nói nữa, lần trước All in thua sạch là do Khoản vay nhanh gây ra.
Xem bản gốcTrả lời0
FUD_Whisperer
· 20giờ trước
Làm DeFi cả nửa năm mà không bằng tốc độ tay của một Hacker.
Hướng dẫn an toàn DeFi: Chiến lược phòng ngừa khoản vay nhanh, thao túng giá và tấn công tái nhập.
Tài chính phi tập trung các lỗ hổng an ninh phổ biến và biện pháp phòng ngừa
Gần đây, một chuyên gia an ninh đã chia sẻ một buổi học về an ninh DeFi cho các thành viên trong cộng đồng. Ông đã xem xét những sự kiện an ninh lớn mà ngành Web3 đã gặp phải trong hơn một năm qua, thảo luận về nguyên nhân của những sự kiện an ninh này và cách để tránh chúng, tóm tắt các lỗ hổng an ninh phổ biến trong hợp đồng thông minh và các biện pháp phòng ngừa, cũng như đưa ra một số lời khuyên về an ninh cho các dự án và người dùng thông thường.
Các loại lỗ hổng DeFi phổ biến chủ yếu bao gồm vay chớp nhoáng, thao túng giá, vấn đề quyền hạn hàm, gọi bên ngoài tùy ý, vấn đề hàm fallback, lỗ hổng logic kinh doanh, rò rỉ khóa riêng và tấn công tái nhập. Bài viết này sẽ tập trung vào ba loại: vay chớp nhoáng, thao túng giá và tấn công tái nhập.
Vay chớp nhoáng
Vay chớp nhoáng bản thân là một sáng tạo trong Tài chính phi tập trung, nhưng khi bị hacker lợi dụng, họ có thể vay một số lượng lớn vốn mà không tốn bất kỳ chi phí nào, thực hiện giao dịch chênh lệch và hoàn trả lại, chỉ cần trả một khoản phí Gas nhỏ để thu được lợi nhuận khổng lồ.
Nhiều dự án DeFi có vẻ như mang lại lợi nhuận cao, nhưng thực tế trình độ của các dự án rất không đồng đều. Một số dự án có thể đã mua mã nguồn, ngay cả khi mã nguồn không có lỗ hổng, nhưng về mặt logic vẫn có thể có vấn đề. Ví dụ, một dự án sẽ phát thưởng vào thời điểm cố định dựa trên số lượng token mà người nắm giữ có, nhưng lại bị kẻ tấn công lợi dụng vay chớp nhoáng để mua một lượng lớn token, và do đó nhận được phần lớn phần thưởng khi phát thưởng.
Ngoài ra, còn có một số dự án tính giá thông qua token, có thể bị ảnh hưởng giá bởi cho vay chớp nhoáng. Là một bên dự án, bạn nên nâng cao cảnh giác đối với những vấn đề này.
Kiểm soát giá
Vấn đề thao túng giá cả có mối quan hệ chặt chẽ với vay chớp nhoáng, chủ yếu có hai loại phổ biến:
Sử dụng dữ liệu bên thứ ba khi tính toán giá, nhưng cách sử dụng không đúng hoặc thiếu kiểm tra dẫn đến giá bị thao túng một cách độc hại.
Sử dụng số lượng token của một số địa chỉ làm biến số tính toán, trong khi số dư token của những địa chỉ này có thể tạm thời tăng hoặc giảm.
Tấn công tái nhập
Một trong những nguy cơ chính khi gọi hợp đồng bên ngoài là chúng có thể chiếm quyền kiểm soát luồng điều khiển và thực hiện các thay đổi không lường trước đối với dữ liệu thông qua các hàm gọi. Ví dụ:
solidity mapping (address => uint) private userBalances;
function withdrawBalance() công cộng { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }
Do vì số dư của người dùng chỉ được đặt về 0 vào cuối hàm, nên việc gọi lần thứ hai (và các lần sau) vẫn sẽ thành công, và sẽ liên tục rút số dư.
Giải quyết vấn đề tái nhập cần lưu ý những điểm sau:
Trong lĩnh vực này có rất nhiều thực tiễn bảo mật tốt nhất mà chúng ta nên sử dụng trực tiếp thay vì lặp lại việc tạo ra bánh xe. Việc sử dụng các giải pháp trưởng thành, đã được thử nghiệm qua thời gian có xác suất gặp sự cố thấp hơn nhiều so với việc phát triển các giải pháp mới.
Đề xuất an toàn cho dự án
Phát triển hợp đồng tuân theo các thực hành an toàn tốt nhất.
Hợp đồng có thể nâng cấp, có thể tạm dừng: Nhiều cuộc tấn công không phải là một lần chuyển toàn bộ tiền mà là thực hiện qua nhiều giao dịch. Nếu có một cơ chế giám sát tương đối hoàn chỉnh, có thể phát hiện kịp thời và tạm dừng hợp đồng, giảm thiểu thiệt hại một cách hiệu quả.
Sử dụng khóa thời gian: Nếu có khóa thời gian, có thể cho đủ thời gian để mọi người phát hiện bất thường và hành động.
Tăng cường đầu tư an toàn, xây dựng hệ thống an toàn hoàn chỉnh: An toàn là một hệ thống, không chỉ bao gồm kiểm toán hợp đồng mà còn bao gồm quản lý khóa riêng, mô hình kinh tế và nhiều khía cạnh khác.
Nâng cao nhận thức an ninh của tất cả nhân viên: Nhiều vấn đề an ninh có thể được tránh bằng cách nâng cao sự cảnh giác.
Ngăn chặn hành vi xấu bên trong, nâng cao hiệu quả đồng thời cải thiện quản lý rủi ro: Sử dụng các cơ chế như ký nhiều, khóa thời gian có thể nâng cao tính an toàn trong khi vẫn đảm bảo hiệu quả.
Độ an toàn của việc thu hút bên thứ ba: Cần thực hiện kiểm tra an toàn đối với cả dòng chảy lên và xuống, đặc biệt là đối với các hợp đồng không mã nguồn mở cần đặc biệt thận trọng.
Người dùng/LP làm thế nào để xác định hợp đồng thông minh có an toàn không?
Hợp đồng có mã nguồn mở không: Không tham gia vào các dự án không mã nguồn mở.
Chủ sở hữu có sử dụng đa chữ ký hay không, đa chữ ký có phi tập trung hay không.
Xem tình hình giao dịch hiện có của hợp đồng: bao gồm thời gian triển khai, số lần tương tác, v.v.
Hợp đồng có phải là hợp đồng đại diện không, có thể nâng cấp không, có thời gian khóa không.
Hợp đồng có được nhiều tổ chức kiểm toán không, quyền Owner có quá lớn không.
Chú ý đến oracle: Các dự án sử dụng oracle nổi tiếng tương đối an toàn hơn, cần phải cảnh giác với các oracle tự xây dựng hoặc dễ bị thao túng.
Tóm lại, trong môi trường Web3, giữ cảnh giác và đặt ra nhiều câu hỏi tại sao có thể giúp tránh nhiều rủi ro tiềm ẩn. Dù là nhà phát triển dự án hay người dùng bình thường, mọi người nên coi trọng vấn đề an ninh, xây dựng nhận thức an toàn và cơ chế phòng ngừa hoàn thiện.