Tổng kết và suy nghĩ về hành động cứu trợ lỗ hổng dự án
Vào ngày 18 tháng 1 năm 2022, hệ thống giám sát giao dịch bất thường của chúng tôi đã phát hiện ra một cuộc tấn công nhằm vào một dự án cross-chain. Do một hàm trong hợp đồng dự án không được triển khai cơ chế kiểm tra đúng cách, dẫn đến việc token mà người dùng đã ủy quyền cho dự án có thể bị kẻ tấn công rút ra.
Mặc dù nhóm dự án đã cố gắng nhiều cách để nhắc nhở người dùng bị ảnh hưởng, vẫn có nhiều người dùng không phản hồi kịp thời, khiến cho kẻ tấn công có thể tiếp tục thực hiện tấn công và thu lợi. Do cuộc tấn công tiếp tục diễn ra, để bảo vệ các nạn nhân tiềm năng, chúng tôi quyết định thực hiện các biện pháp ứng phó khẩn cấp. Cuộc cứu trợ này nhằm vào các tài khoản bị ảnh hưởng trên Ethereum, chúng tôi sẽ chuyển tiền của các tài khoản liên quan vào một tài khoản đa chữ ký được thiết lập đặc biệt cho các nhà bảo mật. Để đảm bảo hành động minh bạch, chúng tôi sẽ công khai mã băm của tài liệu kế hoạch liên quan với cộng đồng, vừa phân biệt được hành động của chúng tôi với kẻ tấn công, vừa không tiết lộ chi tiết. Cuộc cứu trợ bắt đầu từ ngày 21 tháng 1 năm 2022 và kết thúc vào ngày 11 tháng 3.
Các hoạt động cứu trợ khẩn cấp phải đối mặt với nhiều thách thức kỹ thuật và phi kỹ thuật. Sau khi hành động kết thúc, chúng tôi đã tổng kết toàn bộ quá trình, hy vọng chia sẻ những kinh nghiệm liên quan, nhằm giúp đỡ an toàn cho cộng đồng và hệ sinh thái DeFi.
Tổng quan về tình hình cứu援
Trong khoảng thời gian chúng tôi quan sát từ 18 tháng 1 năm 2022 đến 20 tháng 3 năm 2022, tình hình tổng thể về tấn công và cứu trợ như sau: (
9 tài khoản cứu trợ đã bảo vệ 483.027693 ETH, thanh toán phí Flashbots 295.970554 ETH) chiếm 61.27%(
21 tài khoản tấn công đã thu lợi 1433.092224 ETH, thanh toán phí Flashbots 148.903707 ETH) chiếm 10.39%(
Cần lưu ý rằng, do có một số tình huống phức tạp ) như một số kẻ tấn công sau đó đã đạt thỏa thuận với bên dự án để hoàn trả một phần lợi nhuận (, các số liệu thống kê trên chỉ là dữ liệu ước tính.
Cuộc cạnh tranh giữa hacker mũ trắng và kẻ tấn công để gửi giao dịch Flashbots thực hiện cứu trợ, phí Flashbots được thanh toán phản ánh mức độ cạnh tranh. Chúng tôi đã thống kê tỷ lệ phí Flashbots của giao dịch tấn công và cứu trợ theo khối giao dịch.
Phí Flashbots cho giao dịch tấn công ban đầu là 0, cho thấy kẻ tấn công chưa sử dụng Flashbots. Sau đó, tỷ lệ phí Flashbots nhanh chóng tăng lên, trong một số khối thậm chí đạt 80%-91%. Điều này phản ánh cuộc chạy đua vũ trang về phí do cuộc chiến giành quyền lên chuỗi của Flashbots.
Ý tưởng cơ bản của việc cứu hộ là giám sát các tài khoản có khả năng trở thành nạn nhân, khi có WETH chuyển vào, lợi dụng lỗ hổng hợp đồng để chuyển ra ví đa chữ ký của những người bảo vệ. Điều quan trọng là phải đáp ứng các yêu cầu sau:
Xác định giao dịch chuyển tiền cho nạn nhân một cách hiệu quả
Xây dựng giao dịch cứu trợ đúng cách
Giao dịch của kẻ tấn công đã thành công trong việc chạy trước
Hai điều đầu tiên không gây trở ngại cho chúng tôi, nhưng điều thứ ba vẫn là một thách thức. Mặc dù có thể sử dụng Flashbots để chạy trước, nhưng do áp dụng mô hình đấu giá phí, tỷ lệ thành công phụ thuộc vào mức phí, cần cân nhắc thêm trong việc thiết lập chiến lược. Ngoài ra, vị trí và thứ tự giao dịch khi gửi giao dịch thông thường trong mempool cũng là những yếu tố quan trọng. Chúng tôi cũng đang cạnh tranh với các "hacker mũ trắng" khác, một số hành vi của "hacker mũ trắng" là đáng nghi.
Tổng thể, chúng tôi cố gắng bảo vệ 171 tài khoản tiềm năng bị thiệt hại. Trong số đó, 10 tài khoản đã kịp thời thu hồi quyền ủy quyền tự bảo vệ, và trong số 161 tài khoản còn lại, do sự cạnh tranh khác nhau, chúng tôi chỉ thành công cứu hộ 14 tài khoản.
Chiến lược phí của chúng tôi khá bảo thủ, có xu hướng thiết lập phí thấp hơn để bảo vệ lợi ích của nạn nhân. Tuy nhiên, chiến lược này không quá thành công, những kẻ tấn công và một số hacker mũ trắng thường áp dụng chiến lược quyết liệt hơn. Ví dụ:
Một kẻ tấn công đã đặt tỷ lệ phí là 70%
Một hacker mũ trắng đã đặt tỷ lệ phí là 79%-81%
Một kẻ tấn công khác đã tăng tỷ lệ phí lên 86%
Điều này dường như trở thành một trò chơi tổng bằng không, cần mô hình hóa để khám phá các mô hình hành vi của các bên, tìm kiếm sự cân bằng giữa việc giảm chi phí và giành chiến thắng trong cạnh tranh.
Do sự cạnh tranh khốc liệt từ nhiều bên, Flashbots không phải lúc nào cũng hiệu quả. Việc gửi giao dịch thông thường qua mempool, nếu được sắp xếp ở vị trí phù hợp, cũng có thể đạt được mục tiêu. Một kẻ tấn công đã áp dụng chiến lược này và thành công kiếm được 312 ETH mà không phải trả phí cho Flashbots.
Các giao dịch tấn công được sắp xếp một cách khéo léo ngay sau giao dịch chuyển khoản của nạn nhân. Chiến lược này vừa thực tiễn vừa mang tính gợi mở, đáng để chú ý.
Việc nhận diện hacker mũ trắng không phải lúc nào cũng đơn giản và rõ ràng. Chẳng hạn, một địa chỉ ban đầu bị đánh dấu là kẻ tấn công, sau đó đã được đổi thành hacker mũ trắng. Điều này xuất phát từ việc dự án đã thương lượng với kẻ tấn công, kẻ tấn công đồng ý giữ lại một phần lợi nhuận như phần thưởng và trả lại phần lợi nhuận khác. Hiện tượng này đã gây ra cuộc thảo luận trong cộng đồng về sự công bằng trong việc khuyến khích.
Cạnh tranh mũ trắng
Cộng đồng cần thiết lập cơ chế phối hợp để giảm thiểu sự cạnh tranh giữa các hacker mũ trắng. Sự cạnh tranh này sẽ lãng phí tài nguyên cứu hộ, làm tăng chi phí cứu hộ. Ví dụ, chúng tôi cùng với ba tổ chức hacker mũ trắng khác đã cố gắng bảo vệ 54 nạn nhân, liên quan đến khoản mất mát 450 ETH.
Cải thiện hoạt động cứu trợ
Mũ trắng có thể công khai tuyên bố hành vi với cộng đồng mà không tiết lộ thông tin nhạy cảm, nhằm xây dựng niềm tin với cộng đồng.
Các bên trong cộng đồng có thể hợp tác để cứu trợ nhanh chóng và hiệu quả hơn:
Flashbots/Thợ mỏ cung cấp kênh xanh cho mũ trắng đáng tin cậy
Phía dự án chịu phí Flashbots
Nhóm dự án áp dụng cơ chế cảnh báo người dùng thuận tiện hơn
Nhóm dự án thực hiện các biện pháp khẩn cấp cần thiết trong mã
Thông qua việc tổng hợp kinh nghiệm và bài học, chúng tôi hy vọng rằng các hoạt động cứu trợ trong tương lai sẽ hiệu quả hơn, bảo vệ lợi ích của người dùng ở mức tối đa.
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.
Hành động cứu trợ lỗ hổng dự án chuỗi cross: Tóm tắt kinh nghiệm và những gợi ý về an ninh Tài chính phi tập trung
Tổng kết và suy nghĩ về hành động cứu trợ lỗ hổng dự án
Vào ngày 18 tháng 1 năm 2022, hệ thống giám sát giao dịch bất thường của chúng tôi đã phát hiện ra một cuộc tấn công nhằm vào một dự án cross-chain. Do một hàm trong hợp đồng dự án không được triển khai cơ chế kiểm tra đúng cách, dẫn đến việc token mà người dùng đã ủy quyền cho dự án có thể bị kẻ tấn công rút ra.
Mặc dù nhóm dự án đã cố gắng nhiều cách để nhắc nhở người dùng bị ảnh hưởng, vẫn có nhiều người dùng không phản hồi kịp thời, khiến cho kẻ tấn công có thể tiếp tục thực hiện tấn công và thu lợi. Do cuộc tấn công tiếp tục diễn ra, để bảo vệ các nạn nhân tiềm năng, chúng tôi quyết định thực hiện các biện pháp ứng phó khẩn cấp. Cuộc cứu trợ này nhằm vào các tài khoản bị ảnh hưởng trên Ethereum, chúng tôi sẽ chuyển tiền của các tài khoản liên quan vào một tài khoản đa chữ ký được thiết lập đặc biệt cho các nhà bảo mật. Để đảm bảo hành động minh bạch, chúng tôi sẽ công khai mã băm của tài liệu kế hoạch liên quan với cộng đồng, vừa phân biệt được hành động của chúng tôi với kẻ tấn công, vừa không tiết lộ chi tiết. Cuộc cứu trợ bắt đầu từ ngày 21 tháng 1 năm 2022 và kết thúc vào ngày 11 tháng 3.
Các hoạt động cứu trợ khẩn cấp phải đối mặt với nhiều thách thức kỹ thuật và phi kỹ thuật. Sau khi hành động kết thúc, chúng tôi đã tổng kết toàn bộ quá trình, hy vọng chia sẻ những kinh nghiệm liên quan, nhằm giúp đỡ an toàn cho cộng đồng và hệ sinh thái DeFi.
Tổng quan về tình hình cứu援
Trong khoảng thời gian chúng tôi quan sát từ 18 tháng 1 năm 2022 đến 20 tháng 3 năm 2022, tình hình tổng thể về tấn công và cứu trợ như sau: (
9 tài khoản cứu trợ đã bảo vệ 483.027693 ETH, thanh toán phí Flashbots 295.970554 ETH) chiếm 61.27%(
21 tài khoản tấn công đã thu lợi 1433.092224 ETH, thanh toán phí Flashbots 148.903707 ETH) chiếm 10.39%(
Cần lưu ý rằng, do có một số tình huống phức tạp ) như một số kẻ tấn công sau đó đã đạt thỏa thuận với bên dự án để hoàn trả một phần lợi nhuận (, các số liệu thống kê trên chỉ là dữ liệu ước tính.
![])https://img-cdn.gateio.im/webp-social/moments-30d2c3346816e15ab7c89a6a25d0ad83.webp(
Xu hướng thay đổi phí Flashbots
Cuộc cạnh tranh giữa hacker mũ trắng và kẻ tấn công để gửi giao dịch Flashbots thực hiện cứu trợ, phí Flashbots được thanh toán phản ánh mức độ cạnh tranh. Chúng tôi đã thống kê tỷ lệ phí Flashbots của giao dịch tấn công và cứu trợ theo khối giao dịch.
Phí Flashbots cho giao dịch tấn công ban đầu là 0, cho thấy kẻ tấn công chưa sử dụng Flashbots. Sau đó, tỷ lệ phí Flashbots nhanh chóng tăng lên, trong một số khối thậm chí đạt 80%-91%. Điều này phản ánh cuộc chạy đua vũ trang về phí do cuộc chiến giành quyền lên chuỗi của Flashbots.
![])https://img-cdn.gateio.im/webp-social/moments-d22626977feebe325b02c899454022c7.webp(
Thực hiện và thách thức của các hoạt động cứu trợ
Ý tưởng cơ bản của việc cứu hộ là giám sát các tài khoản có khả năng trở thành nạn nhân, khi có WETH chuyển vào, lợi dụng lỗ hổng hợp đồng để chuyển ra ví đa chữ ký của những người bảo vệ. Điều quan trọng là phải đáp ứng các yêu cầu sau:
Hai điều đầu tiên không gây trở ngại cho chúng tôi, nhưng điều thứ ba vẫn là một thách thức. Mặc dù có thể sử dụng Flashbots để chạy trước, nhưng do áp dụng mô hình đấu giá phí, tỷ lệ thành công phụ thuộc vào mức phí, cần cân nhắc thêm trong việc thiết lập chiến lược. Ngoài ra, vị trí và thứ tự giao dịch khi gửi giao dịch thông thường trong mempool cũng là những yếu tố quan trọng. Chúng tôi cũng đang cạnh tranh với các "hacker mũ trắng" khác, một số hành vi của "hacker mũ trắng" là đáng nghi.
Tổng thể, chúng tôi cố gắng bảo vệ 171 tài khoản tiềm năng bị thiệt hại. Trong số đó, 10 tài khoản đã kịp thời thu hồi quyền ủy quyền tự bảo vệ, và trong số 161 tài khoản còn lại, do sự cạnh tranh khác nhau, chúng tôi chỉ thành công cứu hộ 14 tài khoản.
![])https://img-cdn.gateio.im/webp-social/moments-3a365a505b5c5ac87a42a6d277af23ff.webp(
Bài học kinh nghiệm
) Cài đặt phí Flashbots
Chiến lược phí của chúng tôi khá bảo thủ, có xu hướng thiết lập phí thấp hơn để bảo vệ lợi ích của nạn nhân. Tuy nhiên, chiến lược này không quá thành công, những kẻ tấn công và một số hacker mũ trắng thường áp dụng chiến lược quyết liệt hơn. Ví dụ:
Điều này dường như trở thành một trò chơi tổng bằng không, cần mô hình hóa để khám phá các mô hình hành vi của các bên, tìm kiếm sự cân bằng giữa việc giảm chi phí và giành chiến thắng trong cạnh tranh.
![]###https://img-cdn.gateio.im/webp-social/moments-cb547989448abc96498684cb89da8860.webp(
) Sắp xếp giao dịch Mempool
Do sự cạnh tranh khốc liệt từ nhiều bên, Flashbots không phải lúc nào cũng hiệu quả. Việc gửi giao dịch thông thường qua mempool, nếu được sắp xếp ở vị trí phù hợp, cũng có thể đạt được mục tiêu. Một kẻ tấn công đã áp dụng chiến lược này và thành công kiếm được 312 ETH mà không phải trả phí cho Flashbots.
Các giao dịch tấn công được sắp xếp một cách khéo léo ngay sau giao dịch chuyển khoản của nạn nhân. Chiến lược này vừa thực tiễn vừa mang tính gợi mở, đáng để chú ý.
![]###https://img-cdn.gateio.im/webp-social/moments-adbfab235ed4a4c2a3ef7a58915c4deb.webp(
Những suy nghĩ khác
) Định nghĩa giữa mũ trắng và kẻ tấn công
Việc nhận diện hacker mũ trắng không phải lúc nào cũng đơn giản và rõ ràng. Chẳng hạn, một địa chỉ ban đầu bị đánh dấu là kẻ tấn công, sau đó đã được đổi thành hacker mũ trắng. Điều này xuất phát từ việc dự án đã thương lượng với kẻ tấn công, kẻ tấn công đồng ý giữ lại một phần lợi nhuận như phần thưởng và trả lại phần lợi nhuận khác. Hiện tượng này đã gây ra cuộc thảo luận trong cộng đồng về sự công bằng trong việc khuyến khích.
Cạnh tranh mũ trắng
Cộng đồng cần thiết lập cơ chế phối hợp để giảm thiểu sự cạnh tranh giữa các hacker mũ trắng. Sự cạnh tranh này sẽ lãng phí tài nguyên cứu hộ, làm tăng chi phí cứu hộ. Ví dụ, chúng tôi cùng với ba tổ chức hacker mũ trắng khác đã cố gắng bảo vệ 54 nạn nhân, liên quan đến khoản mất mát 450 ETH.
Cải thiện hoạt động cứu trợ
Mũ trắng có thể công khai tuyên bố hành vi với cộng đồng mà không tiết lộ thông tin nhạy cảm, nhằm xây dựng niềm tin với cộng đồng.
Các bên trong cộng đồng có thể hợp tác để cứu trợ nhanh chóng và hiệu quả hơn:
Thông qua việc tổng hợp kinh nghiệm và bài học, chúng tôi hy vọng rằng các hoạt động cứu trợ trong tương lai sẽ hiệu quả hơn, bảo vệ lợi ích của người dùng ở mức tối đa.
![]###https://img-cdn.gateio.im/webp-social/moments-f6e97c80d0049ad9d2cc45cbbaf91c5a.webp(