Nguyên nhân của sự cố này là do cộng đồng khi kiểm tra đề xuất đã không phát hiện ra các rủi ro trong đề xuất, không kiểm tra kỹ xem code của hợp đồng đề xuất có lỗ hổng bảo mật hay không.
Được viết bởi: SharkTeam
Vào ngày 20 tháng 5 năm 2023, giờ Bắc Kinh, Tornado.Cash đã bị một cuộc tấn công đề xuất và kẻ tấn công đã kiếm được khoảng 680.000 đô la Mỹ. SharkTeam lần đầu tiên tiến hành phân tích kỹ thuật về sự cố này và tóm tắt các biện pháp phòng ngừa bảo mật, hy vọng rằng các dự án tiếp theo có thể rút kinh nghiệm và xây dựng tuyến phòng thủ bảo mật cho ngành công nghiệp chuỗi khối.
1. Phân tích sự kiện
Địa chỉ kẻ tấn công:
0x092123663804f8801b9b086b03B98D706f77bD59
0x592340957eBC9e4Afb0E9Af221d06fDDDF789de9
Hợp đồng tấn công:
0xAF54612427d97489707332efe0b6290F129DbAcb
0x03ecf0d22f9ccd21144a7d492cf63b471916497a
0x7dc86183274b28e9f1a100a0152dac975361353d (hợp đồng triển khai)
0xc503893b3e3c0c6b909222b45f2a3a259a52752d (hợp đồng cầu hôn giả mạo)
(1) Đầu tiên, kẻ tấn công (0x08e80ecb) đưa ra đề xuất cho hợp đồng bị tấn công (0x5efda50f), tuyên bố rằng đề xuất này là phần bổ sung cho Đề xuất 16
(2) Nhưng thực tế có thêm chức năng tự hủy trong đề xuất.
(3) Thật không may, cộng đồng đã không tìm thấy bất kỳ vấn đề nào trong đề xuất này và hầu hết các thành viên đã bỏ phiếu thông qua đề xuất này.
(4) Kẻ tấn công đã tạo nhiều hợp đồng để thực hiện việc chuyển mã thông báo
(5) Kẻ tấn công (0x08e80ecb) phá hủy hợp đồng đề xuất (0xc503893b) và hợp đồng tạo của anh ta (0x7dc86183). Hợp đồng tấn công (0xc503893b) sau đó đã được triển khai lại tại cùng một địa chỉ.
(6) Sau khi sửa đổi hợp đồng đề xuất, kẻ tấn công (0x08e80ecb) thực hiện đề xuất và sửa đổi số lượng khóa mã thông báo của địa chỉ hợp đồng dưới sự kiểm soát của anh ta thành 10000.
(7) Sau khi đề xuất được thực hiện, kẻ tấn công (0x08e80ecb) chuyển mã thông báo đến địa chỉ của chính mình và giành quyền sở hữu hợp đồng bị tấn công.
Phân tích lỗ hổng: Vì hợp đồng tạo (0x7dc86183) của hợp đồng đề xuất (0xc503893b) được triển khai thông qua creat2, sau khi hai hợp đồng bị hủy, một hợp đồng logic mới có thể được triển khai trên cùng một địa chỉ và việc thực thi đề xuất được gọi trong biểu mẫu của một cuộc gọi được ủy quyền. Hợp đồng tấn công có thể tùy ý sửa đổi giá trị trong hợp đồng bị tấn công.
Tóm tắt sự cố: Nguyên nhân của sự cố này là do cộng đồng khi kiểm tra đề xuất đã không phát hiện ra các rủi ro trong đề xuất, không xác minh kỹ xem code của hợp đồng đề xuất có lỗ hổng bảo mật hay không.
2. Khuyến nghị bảo mật
Để đối phó với cuộc tấn công này, chúng ta nên tuân theo các biện pháp phòng ngừa sau trong quá trình phát triển:
Khi thiết kế đề xuất, hãy xem xét đầy đủ tính bảo mật của cơ chế đề xuất và giảm thiểu rủi ro đề xuất bị kiểm soát tập trung. Cân nhắc giảm giá trị của các cuộc tấn công, tăng chi phí giành quyền biểu quyết và tăng chi phí thực hiện các cuộc tấn công, v.v.
Trước khi bỏ phiếu cho đề xuất, cộng đồng nên kiểm tra kỹ xem mã hợp đồng có backdoor hay không.
Trước khi đề xuất được chấp thuận, bạn có thể liên hệ với công ty kiểm toán bảo mật bên thứ ba để tiến hành kiểm tra bảo mật mã logic hợp đồng.
Xem bản gốc
Nội dung chỉ mang tính chất tham khảo, không phải là lời chào mời hay đề nghị. Không cung cấp tư vấn về đầu tư, thuế hoặc pháp lý. Xem Tuyên bố miễn trừ trách nhiệm để biết thêm thông tin về rủi ro.
SharkTeam: Phân tích nguyên tắc tấn công đề xuất Tornado.Cash
Được viết bởi: SharkTeam
Vào ngày 20 tháng 5 năm 2023, giờ Bắc Kinh, Tornado.Cash đã bị một cuộc tấn công đề xuất và kẻ tấn công đã kiếm được khoảng 680.000 đô la Mỹ. SharkTeam lần đầu tiên tiến hành phân tích kỹ thuật về sự cố này và tóm tắt các biện pháp phòng ngừa bảo mật, hy vọng rằng các dự án tiếp theo có thể rút kinh nghiệm và xây dựng tuyến phòng thủ bảo mật cho ngành công nghiệp chuỗi khối.
1. Phân tích sự kiện
Địa chỉ kẻ tấn công:
0x092123663804f8801b9b086b03B98D706f77bD59
0x592340957eBC9e4Afb0E9Af221d06fDDDF789de9
Hợp đồng tấn công:
0xAF54612427d97489707332efe0b6290F129DbAcb
0x03ecf0d22f9ccd21144a7d492cf63b471916497a
0x7dc86183274b28e9f1a100a0152dac975361353d (hợp đồng triển khai)
0xc503893b3e3c0c6b909222b45f2a3a259a52752d (hợp đồng cầu hôn giả mạo)
Hợp đồng bị tấn công:
0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce
Bắt đầu giao dịch đề xuất:
0x34605f1d6463a48b818157f7b26d040f8dd329273702a0618e9e74fe350e6e0d
Giao dịch tấn công:
0x3274b6090685b842aca80b304a4dcee0f61ef8b6afee10b7c7533c32fb75486d
Quá trình tấn công:
(1) Đầu tiên, kẻ tấn công (0x08e80ecb) đưa ra đề xuất cho hợp đồng bị tấn công (0x5efda50f), tuyên bố rằng đề xuất này là phần bổ sung cho Đề xuất 16
(2) Nhưng thực tế có thêm chức năng tự hủy trong đề xuất.
(3) Thật không may, cộng đồng đã không tìm thấy bất kỳ vấn đề nào trong đề xuất này và hầu hết các thành viên đã bỏ phiếu thông qua đề xuất này.
(4) Kẻ tấn công đã tạo nhiều hợp đồng để thực hiện việc chuyển mã thông báo
(5) Kẻ tấn công (0x08e80ecb) phá hủy hợp đồng đề xuất (0xc503893b) và hợp đồng tạo của anh ta (0x7dc86183). Hợp đồng tấn công (0xc503893b) sau đó đã được triển khai lại tại cùng một địa chỉ.
(6) Sau khi sửa đổi hợp đồng đề xuất, kẻ tấn công (0x08e80ecb) thực hiện đề xuất và sửa đổi số lượng khóa mã thông báo của địa chỉ hợp đồng dưới sự kiểm soát của anh ta thành 10000.
(7) Sau khi đề xuất được thực hiện, kẻ tấn công (0x08e80ecb) chuyển mã thông báo đến địa chỉ của chính mình và giành quyền sở hữu hợp đồng bị tấn công.
Phân tích lỗ hổng: Vì hợp đồng tạo (0x7dc86183) của hợp đồng đề xuất (0xc503893b) được triển khai thông qua creat2, sau khi hai hợp đồng bị hủy, một hợp đồng logic mới có thể được triển khai trên cùng một địa chỉ và việc thực thi đề xuất được gọi trong biểu mẫu của một cuộc gọi được ủy quyền. Hợp đồng tấn công có thể tùy ý sửa đổi giá trị trong hợp đồng bị tấn công.
Tóm tắt sự cố: Nguyên nhân của sự cố này là do cộng đồng khi kiểm tra đề xuất đã không phát hiện ra các rủi ro trong đề xuất, không xác minh kỹ xem code của hợp đồng đề xuất có lỗ hổng bảo mật hay không.
2. Khuyến nghị bảo mật
Để đối phó với cuộc tấn công này, chúng ta nên tuân theo các biện pháp phòng ngừa sau trong quá trình phát triển: