

Vào ngày 5 tháng 9, hội nghị POD do Odaily tổ chức và được đồng tổ chức chiến lược bởi Tập đoàn 36Kr đã được tổ chức tại Bắc Kinh. Tại diễn đàn bảo mật của hội nghị, Guo Yu, người sáng lập SECBIT Lab, đã thảo luận về các vấn đề bảo mật của chuỗi khối với khách mời. Guo Yu đã đưa ra một báo cáo về chủ đề nóng về bảo mật gần đây Người chiến thắng cuối cùng, giải thích chi tiết câu chuyện bên trong.
Khi nói về việc Người chiến thắng cuối cùng tấn công hợp đồng mẹ và tại sao cần phải chuyển địa chỉ của hợp đồng Người chiến thắng cuối cùng, Guo Yu cho biết Người chiến thắng cuối cùng tấn công hợp đồng mẹ thực sự là một vũ khí tổng hợp có thể tấn công nhiều loại trò chơi Fomo3D .Hợp đồng này được xây dựng rất khéo léo.
tiêu đề phụ
Sau đây là bản ghi lại bài phát biểu của Guo Yu, người sáng lập SECBIT Lab:
Tôi là Guo Yu từ Phòng thí nghiệm Amby và hôm nay tôi muốn chia sẻ một số điều thú vị.
Vào ngày 10 tháng 8, một đối tác đột nhiên nói với tôi rằng dường như có một số điều kỳ lạ trong Ethereum và hỏi chúng tôi liệu chúng tôi có thể phân tích nó không. Sau khi chúng tôi lấy nó, chúng tôi cũng cảm thấy mọi thứ thật kỳ lạ. Có một số lượng lớn các giao dịch thất bại liên tiếp và các chấm đỏ đều là 0,1 ETH Những thứ lặp đi lặp lại này dường như đang tấn công thứ gì đó. Và tất cả các giao dịch này bắt nguồn từ một hợp đồng thông minh kỳ lạ có bốn chữ cái đầu tiên là 0x5483. Khối lượng giao dịch của hợp đồng thông minh này vẫn còn rất lớn, có hàng chục giao dịch mỗi phút, điều này dễ gây ra tắc nghẽn nghiêm trọng trong Ethereum, đây là một đặc điểm sơ bộ mà chúng tôi nhận thấy. Thấy lạ và nghi ngờ, chúng tôi cũng thắc mắc không biết nó định làm gì.
Sau đó, chúng tôi phát hiện ra rằng ngoài một số lượng lớn các giao dịch không thành công, còn có một số lượng lớn hơn các giao dịch thành công. Không có đặc điểm quan trọng nào của các giao dịch thành công, điều rất kỳ lạ là 0,1 trong số đó được đầu tư và 0,19 trong số đó xuất hiện. Đồng thời, một điểm đặc biệt của các giao dịch thất bại là mức tiêu thụ Gas cực kỳ thấp, đây dường như là một cỗ máy khai thác rất hiệu quả với tỷ lệ hoàn vốn cao.
Sau đó, chúng tôi phát hiện ra rằng 0X5483 thực sự là một hợp đồng tấn công để tấn công Người chiến thắng cuối cùng, nó được xây dựng cẩn thận và rất mạnh mẽ, các bước tấn công cũng rất phức tạp. Có rất nhiều chuyển khoản trong hợp đồng, ví dụ: trong hợp đồng này trong PPT, 0,1 ETH được chuyển vào và cuối cùng 0,18 ETH hoặc 0,12 ETH sẽ xuất hiện.
Người chiến thắng cuối cùng là gì? Nó là một phiên bản copycat của Fomo3D, chủ yếu để sử dụng trong nước. Trong Baidu, bạn có thể thấy rất nhiều thông tin quảng cáo, ngoài ra còn có nhiều nhóm WeChat và nhóm QQ. Ngoài ra, Người chiến thắng cuối cùng cũng có ứng dụng khách Android và iOS có thể tải xuống. Vào thời điểm đó, có 16.000 người ở mức cao nhất và những người tham gia rất điên cuồng.
Fomo3D là gì? Đây là một trò chơi hợp đồng thông minh cấp độ hiện tượng cách đây một thời gian, trò chơi này ngay lập tức gây ra tắc nghẽn cho người dùng Ethereum. Có một phần thưởng hấp dẫn rất lớn trong trò chơi, và các quy tắc diễn ra như thế này. Đầu tiên là trao đổi chìa khóa và ném nó vào hợp đồng trò chơi giống Fomo3D sau khi nhận được chìa khóa. Điều này bao gồm ba phương pháp kiếm tiền. Phương pháp đầu tiên tồn tại trong nhóm giải thưởng chính và bạn có thể có cơ hội nhận được giải thưởng cuối cùng, đó là trò chơi tiếp tục đếm ngược và người cuối cùng mua chìa khóa sẽ nhận được phần thưởng lớn cuối cùng ; phương pháp thứ hai có một nhóm phần thưởng phụ, cách là xổ số xác suất ngẫu nhiên, nghĩa là có cơ hội bốc thăm khi đổi chìa khóa; cách thứ ba là phần thưởng nhỏ, mua chìa khóa càng sớm , bạn càng sớm có thể hưởng cổ tức sau này. Dựa trên ba mô hình chiến thắng hấp dẫn này, Fomo3D đã gây tắc nghẽn Ethereum trong một thời gian sau khi ra mắt.
Vào ngày 24 tháng 7, Ambi Labs đã phát hiện ra rằng có một kẽ hở trong đợt airdrop thứ hai vừa rồi. Ai đó có thể nhận được kết quả xổ số một cách không công bằng. Chúng tôi chỉ nhận được cảnh báo vào ngày 10 tháng 8.
Mô hình xổ số airdrop đã bị lộ trước đó là ai đó đã tiết lộ một kế hoạch có thể bị tấn công, nhưng phương pháp tấn công này rất kém hiệu quả và thậm chí có thể không thành công. Mọi người đều biết điều đó nhưng không ai thử và dường như họ không thể kiếm được tiền. Nhưng kèo tấn công này thì khác, theo thống kê tỷ lệ thành công của kèo này là gần 60%.
Ngày hôm sau, chúng tôi bắt đầu phân tích hợp đồng và phát hiện ra ba điểm nghi ngờ. Một là có năm địa chỉ để gọi hợp đồng tấn công; hai là địa chỉ của hợp đồng người chiến thắng cuối cùng được chuyển vào hợp đồng tấn công dưới dạng tham số; thứ ba là mọi giao dịch tấn công chiến thắng thành công đều bao gồm việc tạo và tự hủy của hợp đồng. Lúc đó tôi cũng không biết tại sao nhưng chắc chắn đây là một băng nhóm, sau khi phân tích dữ liệu của nó thì phát hiện băng nhóm này còn làm nhiều việc khác, chúng cùng nhau tấn công các hợp đồng game khác nhau. Chúng tôi đặt tên cho nhóm tấn công này là "BAPT-LW20".
Vào ngày 12, nhóm bắt đầu thử phân tích ngược mã hợp đồng. Do công cụ trong tay có hạn nên tôi chỉ có thể xem tự giải mã, sau khi đào một ngày vẫn không có tiến triển gì, quá trình phân tích đã đi vào bế tắc. Ngày hôm sau, bạn tôi đề nghị sao chép hợp đồng tấn công và thay thế địa chỉ của kẻ tấn công trong hợp đồng tấn công bằng địa chỉ của chúng tôi. Liệu chúng tôi có thể nhận được phần thưởng như anh ấy không? Chúng tôi triển khai lại hợp đồng tấn công và khởi động một cuộc tấn công dự kiến. Nhưng sau nhiều lần cố gắng không thể giành được kết quả hòa. Chúng tôi đã thay thế và theo dõi quá trình rất đầy đủ, không hiểu sao nhưng dù có bị lỗi cũng rất chán nản.
Vào lúc 12 giờ đêm, kế hoạch cuối cùng quyết định bế tắc hợp đồng và bắt đầu phân tích ngược lại hợp đồng. Hợp đồng đảo ngược là rất mệt mỏi, chúng ta nên làm gì? Ý tưởng của chúng tôi là phát triển các công cụ hỗ trợ phân tích ngược. Chúng tôi không có gì trong tay, chúng tôi phải làm một số việc. Trước hết, có rất ít công cụ phân tích ngược cho EVM, vì vậy chúng tôi quyết định tự phát triển nó; hơn nữa, rất khó để theo dõi sự lồng ghép nhiều lớp của các hợp đồng; đồng thời, không dễ để xác định quy trình vòng lặp trong mã byte EVM.
Chúng tôi đã dành ba ngày để phát triển công cụ và mọi thứ bắt đầu thay đổi. Công cụ đầu tiên là awesome-tx-tracer (theo dõi hành vi hợp đồng). Với công cụ này, một số công cụ theo dõi có thể được tạo trong toàn bộ quá trình của hợp đồng thông minh và nhiều hành vi giao dịch có thể được phân tích bởi các công cụ theo dõi, do đó tạo ra một lượng lớn dữ liệu; Một công cụ cho kỹ thuật đảo ngược—minievm (trình giả lập thực thi hợp đồng), trong đó nhiều công cụ theo dõi có thể được phân tích định tính theo lô; công cụ thứ ba là ida-evm (bộ phân tích biểu đồ luồng hợp đồng), được sửa đổi dựa trên phần bổ trợ evm . Trình theo dõi được tạo có thể tự động quay đi quay lại, để dễ dàng xem lại toàn bộ quá trình hơn.
Cuối cùng, cuối cùng chúng tôi cũng phát hiện ra sự thật, hợp đồng tấn công là hợp đồng mẹ và hợp đồng mẹ thúc đẩy 1000 hợp đồng phụ, điều này có thể làm tăng đáng kể tỷ lệ trúng thưởng của các số ngẫu nhiên. Đồng thời, khi mỗi hợp đồng phụ tấn công, nó sẽ tạo ra một hợp đồng ma để khởi động cuộc tấn công. Hợp đồng ma là gì? Nó được tạo ra tại thời điểm xảy ra cuộc tấn công và sẽ tự hủy ngay sau cuộc tấn công, không để lại dấu vết trong khu vực lưu trữ chuỗi khối. Tin tặc điều khiển 1.000 hợp đồng phụ thông qua một hợp đồng mẹ nhất định và tạo ra vô số hợp đồng tự hủy. Hợp đồng tự hủy cuối cùng tấn công Người chiến thắng cuối cùng. Đây là một điều rất thông minh.
Quá trình xem xét bắt đầu vào sáng ngày 17 và kết quả cuối cùng mà chúng tôi đưa ra là rút 50% quỹ xổ số trong vòng 6 ngày, thực hiện gần 50.000 cuộc gọi tấn công và tạo ra hơn 20.000 hợp đồng ma. Điều rất thú vị đối với Người chiến thắng cuối cùng là tăng tỷ lệ giải thưởng airdrop từ 1% của Fomo3D lên 10%. Do đó, sau khi hacker tấn công thành công Last winner, họ không biết nhiều về Fomo3D. Hợp đồng gốc này đã phát động một cuộc tấn công trong vòng vài giờ kể từ ngày đầu tiên ra mắt Người chiến thắng cuối cùng, kiếm được hàng trăm nghìn đô la mỗi giờ trong vài ngày đầu tiên.
Thật trùng hợp, vào lúc 10 giờ sáng, giải thưởng Người chiến thắng cuối cùng được trao, đây là giải thưởng đầu tiên trong số ba mô hình lợi nhuận vừa nêu. Giải thưởng lớn đã bị một trong năm kẻ tấn công lấy đi, địa chỉ của kẻ tấn công là 0X5167 và số tiền thưởng cũng siêu cao, lớn hơn cả những gì chúng nhận được trong đợt airdrop.
Nó vẫn chưa kết thúc. Năm ngày sau, vào lúc 3:02 chiều, chúng tôi lại có một khám phá tuyệt vời khác Vòng Fomo3D đầu tiên đã kết thúc và giải thưởng lớn đã được trao. Nó đã được ai đó lấy đi? Không, họ đã sử dụng cùng một phương pháp để giành giải thưởng lớn. Tại sao? Khi chúng tôi xem Giải thưởng Fomo3D, chúng tôi đã tìm thấy một cảnh quen thuộc. Khi giải thưởng lớn được rút ra, một nhóm các khối bất thường liên tục xuất hiện và số lượng tin nhắn trong nhóm các khối bất thường liên tục này giảm mạnh. Cuối cùng, công cụ khai thác nổi tiếng tương tự chặn giao dịch chiến thắng. Trước và sau khi kết thúc Người chiến thắng cuối cùng, các khối bất thường tương tự đã xuất hiện và tin tức chiến thắng cũng được đóng gói bởi cùng một người khai thác, lúc này chúng tôi phát hiện ra rằng đó là một sự trùng hợp ngẫu nhiên. Chúng tôi bắt đầu tự hỏi, nhóm khai thác có thực sự lừa dối Fomo3D không? Sau lần đầu tiên liên hệ với người phụ trách nhóm khai thác và so sánh tất cả thông tin chúng tôi biết với bên kia, chúng tôi thấy rằng nhóm khai thác không tham gia vào gian lận này, nhưng khối bất thường này che giấu một bí mật lớn. Bí mật là các tin nhắn trong khối bất thường đều gọi cùng một hợp đồng, lưu trữ một số giao dịch rất kỳ lạ. Gas của tất cả các giao dịch tương đương với 100 lần Gas bình thường; và người tạo ra hợp đồng này cũng chính là người chiến thắng .
Những người khai thác không gian lận, nhưng những kẻ tấn công đã sử dụng chiến lược đóng gói của người khai thác, tức là những người khai thác sẽ ưu tiên đóng gói giao dịch với mức phí cao, điều này có lợi nhất cho những người khai thác. Bằng cách tạo ra phí xử lý cực cao, nó sẽ gây tắc nghẽn chuỗi khối và chặn những người chơi khác. Kẻ tấn công cũng rất thông minh, hợp đồng tấn công có thể phán đoán một cách thông minh xem có nên kích hoạt chức năng chặn mạng để tối đa hóa lợi ích và giảm thiểu chi phí hay không.
Nói tóm lại, hợp đồng này được xây dựng rất khéo léo. Nếu kẻ tấn công không lấy phần thưởng, nó sẽ vẫn tồn tại trong nhóm ứng dụng của nhiều nhóm khai thác, khi đến thời điểm thích hợp, các giao dịch này sẽ trở thành giao dịch với phí giao dịch rất cao.
Do đó, lỗ hổng trò chơi này khiến nhóm giải thưởng chính và nhóm giải thưởng phụ trước đây có thể dễ dàng bị tấn công. Còn có một vấn đề, mọi người còn nhớ rõ Last winner tấn công cha hợp đồng, tại sao lại cần Last winner làm hợp đồng địa chỉ? Trên thực tế, hợp đồng gốc tấn công này là một hợp đồng gốc chung có thể tấn công nhiều loại trò chơi Fomo3D. Vào ngày thứ hai sau khi Fomo3D ra mắt, ai đó đã phát hiện ra lỗ hổng xổ số airdrop và tấn công thành công.
Bạn đang đối mặt với những tin tặc hàng đầu thế giới, và bạn có thể bị thiệt hại bất cứ lúc nào. Do đó, mức độ nghiêm trọng của bảo mật hợp đồng thông minh vượt xa sức tưởng tượng của mọi người, thế giới phi tập trung trong tương lai mà mọi người tưởng tượng có thực sự tươi đẹp như vậy không? Khi tận hưởng những lợi ích của một thế giới phi tập trung, cũng sẽ có một số chi phí và một số rủi ro bảo mật mới. cảm ơn tất cả.
