Tiêu đề gốc: "Khoa học phổ biến | Bắt giữ các robot chạy trước toàn cầu trong Khu rừng tối của Ethereum"
Nguồn gốc: Những người đam mê Ethereum
Những con thú chạy hung hãn trong khu rừng tối tăm của Ethereum không có gì giật gân. Những robot chạy trước này có thể khám phá các cơ hội lợi nhuận tiềm năng bằng cách phân tích các cuộc gọi hợp đồng, ngay cả khi những cuộc gọi và hợp đồng này là những thứ chúng chưa từng thấy trước đây và không biết gì về nó.
Do thực tế là hầu hết mọi người chưa biết đủ về rô-bốt chạy trước, chúng tôi sẽ phân tích vấn đề này hiểu sâu hơn về tình huống và hiểu rõ về rô-bốt chạy phía trước. Tính phổ biến của rô-bốt đang chạy. Chúng tôi đã “bắt” thành công một số bot giao dịch chạy trước phổ biến và phân tích hành vi của chúng. Chúng tôi đã nghiên cứu tính hiệu quả của các bot này và khả năng giao dịch bị thực hiện. Chúng tôi cũng đã thử nghiệm các cách khác nhau để chống lại các bot giao dịch chạy trước.
Nói chung, giao dịch chạy trước là chèn một giao dịch khác vào thực thi trước khi một giao dịch đã biết trong tương lai xảy ra. hàng đợi.
Một ví dụ đơn giản là quy trình giao dịch trên một sàn giao dịch. Giả sử ai đó muốn mua một lượng lớn ETH trên Uniswap (đủ để khiến giá ETH tăng), một cách để kiếm lợi nhuận là mua ETH trước khi giá tăng, sau đó bán ETH sau giao dịch mua khối lượng lớn đẩy giá ETH lên cao. .
Ngoài ví dụ này, các giao dịch chạy trước khác cũng có thể mang lại lợi nhuận khổng lồ, chẳng hạn như thanh lý và mua lại về các NFT hiếm (mã thông báo không thể thay thế) hoặc lỗi người dùng đơn giản. [Giá trị có thể trích xuất của một giao dịch hoặc một nhóm giao dịch là giá trị có thể trích xuất của người khai thác (MEV)]
Trong Ethereum Mặt khác, người đi trước có thể đạt được giao dịch bằng cách cung cấp giá gas cao hơn một chút so với giao dịch mục tiêu và khuyến khích người khai thác xếp hạng giao dịch của chính họ (chứ không phải giao dịch mục tiêu) ở phía trước khi xây dựng khối. Các giao dịch có giá gas cao sẽ được thực hiện trước. Do đó, nếu hai giao dịch muốn kiếm lợi nhuận từ cùng một lệnh gọi hợp đồng giao dịch được đóng gói trong cùng một khối thì chỉ giao dịch đầu tiên mới có thể kinh doanh chênh lệch giá thành công.
Dan Robinson và Georgios Konstantopoulos đã đề cập đến giá trị một lần trong "Ethereum là một khu rừng tối" Sau trận hòa , 12.000 USD rơi vào nanh vuốt của “Kẻ săn mồi”. Kẻ săn mồi này mạnh đến mức nó có thể theo dõi các giao dịch chênh lệch giá trong nhóm giao dịch Ethereum và kiếm lợi nhuận bằng cách chạy trước các giao dịch.
Câu chuyện về khu rừng tối nghe có vẻ "đáng sợ" đến mức thoạt đọc đã thấy khó tin. Chúng ta có lý do để nghi ngờ sự tồn tại của loài săn mồi này. Làm cách nào một người có thể rút tiền từ một nền tảng như Uniswap, nền tảng được giám sát chặt chẽ bởi bot? Uniswap đã trở thành nhà kinh doanh chênh lệch giá “thông thường” chưa?
Đầu năm nay, phân tích chuyên sâu của chúng tôi đã chứng minh điều ngược lại. Đây không phải là robot bình thường. Theo những gì chúng tôi biết, nó đã gọi thành công một chức năng hợp đồng chưa từng được gọi trước đây và trích xuất thành công tiền mặc dù giao dịch ban đầu đã bị hợp đồng thông minh proxy làm xáo trộn.
Điều này ít nhất cũng khiến chúng ta cảnh giác. Có thể giám sát các giao dịch trong nhóm giao dịch tương đương với việc có một sát thủ lớn. Do đó, điều đáng lo ngại là một số nhà cung cấp dịch vụ đang bắt đầu công khai cung cấp các lớp giao dịch "dark pool".
Loại dịch vụ giao dịch độc quyền này không sử dụng các dịch vụ như Infura và thậm chí không yêu cầu chạy các nút riêng tư. sẽ được gửi trực tiếp đến các thợ mỏ và hứa sẽ không truyền bá giao dịch đến các nút khác trong mạng, do đó bảo vệ giao dịch khỏi bị những kẻ săn mồi phát hiện.
samczun và những người khác cũng sử dụng phương pháp tương tự và trích thành công 9,6 triệu USD từ một hợp đồng dễ bị tấn công. Không khó để tưởng tượng rằng các công ty khai thác cũng sẽ bắt đầu chạy các bot giao dịch chạy trước trong khi chỉ cung cấp các kênh an toàn cho những người dùng phải trả thêm phí.
Khác với các phần khác của Ethereum (ví dụ: hợp đồng thông minh có thể được thử nghiệm trong môi trường phát triển hoặc testnet), những phần này bot chỉ chạy trên mạng chính Ethereum. Đối với những robot này, ngoại trừ các thử nghiệm ban đầu, không có tiền nào có thể kiếm được từ các giao dịch trên mạng thử nghiệm trước và điều đó không thú vị. Hơn nữa, họ không cần phải tuân theo các quy tắc như những người khác vì logic của họ bị ẩn đi.
Chúng tôi không biết hoàn cảnh nào khiến những kẻ săn mồi chạy trước này dừng lại. Vì vậy, ở một khía cạnh nào đó, việc theo dõi những kẻ săn mồi này cũng giống như săn lùng những loài động vật quý hiếm. Chúng tôi không muốn xác định tất cả các robot giao dịch chạy trước mà chỉ xác định một số loại robot phổ biến.
Để đảm bảo rằng những người dẫn đầu mà chúng tôi nắm bắt được là những người dẫn đầu phổ quát "thực sự", chúng tôi cần phải đặt Một cái bẫy đặc biệt. Cái bẫy là tạo một hợp đồng mới bằng cách sử dụng hàm băm SHA256 của một chuỗi bí mật và gửi một số tiền vào hợp đồng. Chỉ người cung cấp chuỗi bí mật mới có thể rút tiền bị khóa trong hợp đồng. Khi ai đó gửi giao dịch rút tiền, tiền sẽ được gửi trực tiếp đến người gửi giao dịch.
Ý tưởng là gửi một giao dịch "mồi" cung cấp chuỗi bí mật chính xác và xem liệu có ai sẽ sao chép chuỗi này không chuỗi và tự mình gửi một giao dịch có chứa chuỗi này để rút tiền trong hợp đồng. Nếu ai đó có thể rút tiền trước giao dịch mồi nhử, điều đó cho thấy rằng ai đó có thể phân tích giao dịch mồi nhử trong nhóm giao dịch, sao chép nội dung liên quan của nó và tự gửi giao dịch cung cấp nội dung đó.
Điều thú vị là họ sẽ cung cấp một hợp đồng mà họ chưa từng thấy trước đây. Chuỗi bí mật để rút tiền – đây là một ứng cử viên hàng đầu phổ quát thực sự.
Phần quan trọng nhất của thử nghiệm này là hiểu cách thức hoạt động của người dẫn đầu phổ quát. Tuy nhiên, nếu ai đó chế tạo ra cỗ máy kiếm tiền thì việc chia sẻ nó trên Github là điều không thể. Vì vậy, chúng ta chỉ có thể quan sát hành vi của kẻ săn mồi và thiết kế ngược lại nó.
Xây dựng một công ty tiên phong phổ quát thường đòi hỏi hai thành phần. Thành phần đầu tiên là tài khoản Ethereum có hoặc không có đại lý ví thông minh có thể gửi các giao dịch đã sửa đổi. Thành phần thứ hai là "phụ trợ", là bộ não của toàn bộ hoạt động và thường xảy ra ngoài chuỗi. Người vận hành có thể sử dụng một số công nghệ để kiểm tra từng giao dịch trong nhóm giao dịch, phân tích giao dịch, thay thế các tham số của giao dịch (ví dụ: người gọi giao dịch) và xác định xem giao dịch có sinh lời hay không.

- Luồng xử lý robot giao dịch chạy phía trước-
Một robot lý trí sẽ không cố gắng để bắt đầu giao dịch khi phí giao dịch vượt quá lợi nhuận tiềm năng. Phí giao dịch có thể cao, đặc biệt nếu giá gas cao. Do đó, chúng tôi hy vọng rằng sẽ cần ít nhất một số lợi nhuận để dụ bot cắn câu.
Ngoài ra, có rất nhiều giao dịch trong nhóm giao dịch và thời gian là điều cốt yếu để phân tích từng giao dịch giao dịch. Phải mất trung bình 12 giây để khai thác một khối Ethereum. Nếu giá gas mà một giao dịch phải trả đủ cao, người đi trước phải nhanh chóng phân tích và thay thế giao dịch đó trước khi khai thác khối tiếp theo.
Quá trình này có xác suất nhất định. Có thể sau khi một giao dịch được phát sóng, khối chứa giao dịch đó sẽ được khai thác ngay lập tức và robot không có thời gian để phân tích giao dịch và phát sóng giao dịch chạy trước.
Cân nhắc nhiều yếu tố khác nhau, chúng tôi đã thử nghiệm các cách để thu hút bot.
Hợp đồng (mồi) của chúng tôi có số dư ban đầu là 0,035 ETH, trị giá khoảng 20 USD vào thời điểm đó. Chỉ cần ai đó có thể cung cấp hình ảnh chính xác của hàm băm được lưu trữ trong hợp đồng thì bạn có thể nhận được tiền. Để rút tiền và thu hút kẻ săn mồi, một tài khoản khác (người rút tiền) sẽ cố gắng lấy tiền bằng cách cung cấp hình ảnh chính xác.
Để đảm bảo rằng bẫy của chúng tôi hoạt động bình thường, trước tiên chúng tôi gọi hợp đồng mồi nhử bằng tài khoản của người rút tiền. Trong lần thử đầu tiên, giá gas tương đối cao (được đặt theo khung ether) và chúng tôi đã lấy lại thành công số tiền trong hợp đồng mồi nhử.
Điều này có thể là do lợi nhuận quá thấp để thu hút những kẻ săn mồi hoặc do giao dịch bị săn trộm nhanh chóng, kẻ săn mồi không có thời gian để phản ứng. Rõ ràng, đây không phải là một kết quả lý tưởng, vì mục tiêu là khiến những kẻ săn mồi cắn câu.
Trong vòng này, chúng tôi đã giải quyết được những vấn đề mà chúng tôi gặp phải trước đây. Chúng tôi đã tăng lãi suất tiềm năng và giảm giá gas để giao dịch không được khai thác nhanh chóng, giúp các bot có đủ thời gian để khám phá nó. Chúng tôi cũng tăng số tiền trong hợp đồng lên 0,04 ETH (nhiều hơn 0,005 ETH so với trước đây).
Lần này, chúng tôi đã thành công. Giao dịch này đợi khoảng 3 phút trước khi được khai thác, cuối cùng không lấy được tiền trong hợp đồng mồi nhử. Sau khi xem xét các giao dịch nội bộ của hợp đồng này, chúng tôi phát hiện ra rằng số tiền đã bị người khác lấy đi.
Giao dịch chạy trước này đã sử dụng 25.000001111 Gwei (nhiều hơn 0,000001111Gwei so với giao dịch của chúng tôi) và giống với giao dịch của chúng tôi được đóng gói vào cùng một khối.
Bây giờ chúng ta đã nắm bắt thành công Với một con robot (và phải trả giá cho nó), chúng ta có thể tìm thấy một số điều thú vị. Đầu tiên, giao dịch chạy trước này cho thấy robot không trực tiếp gọi hợp đồng. Thay vì sao chép giao dịch của người rút tiền và gửi nó qua tài khoản mà họ sở hữu, nó sẽ gửi giao dịch đến một hợp đồng thông minh proxy, hoạt động như một ví thông minh để thực hiện giao dịch.
Bây giờ, chúng tôi có thể theo dõi địa chỉ giao dịch trước đó và sau đó của robot để xem nó đã đánh cắp thành công bao nhiêu. Giao dịch và cách thức thực hiện nó hoạt động.
![]()
- Robot đang sử dụng hợp đồng proxy của riêng nó-
Sau khi dịch ngược hợp đồng proxy này, chúng tôi thấy rằng nó chủ yếu có hai chức năng:
Một là chức năng "rút tiền": nó gửi tất cả số tiền trong hợp đồng đến nhà điều hành hợp đồng. Một hàm khác chịu trách nhiệm nhận các tham số: hợp đồng được gọi, danh sách tham số và tham số giá trị được truyền.
Với chức năng rút tiền, hợp đồng đại lý có thể hoạt động như ví thông minh của nhà điều hành. Ngoài khả năng thực hiện các cuộc gọi đến các chức năng bên ngoài, hợp đồng proxy còn có thể đảm bảo số dư khi bắt đầu giao dịch không thấp hơn số dư khi kết thúc giao dịch, nếu không sẽ được khôi phục, từ đó tránh được những tổn thất có thể xảy ra. gây ra bằng cách gọi các hợp đồng không xác định (tất nhiên không bao gồm phí gas) ).
Khi sử dụng Dune Analytics, chúng tôi nhận thấy bot đã đạt được nhiều thành công kể từ khi bắt đầu chạy, kể từ tháng 5 năm 2018.
Nếu robot này luôn sử dụng cùng một hợp đồng proxy và gửi địa chỉ để thực hiện giao dịch, chúng tôi ước tính rằng robot này kiếm được một tổng cộng khoảng 17 ETH.

- Tất cả lợi nhuận mà robot thu được kể từ khi hoạt động (bằng ETH)-
Bây giờ chúng tôi tin rằng bot tồn tại, chúng tôi muốn kiểm tra xem liệu chúng tôi có thể làm xáo trộn thành công cuộc gọi của mình bằng hợp đồng thứ hai hay không. Lấy lại quyền truy cập tiền trong hợp đồng mồi. Hợp đồng thứ hai là hợp đồng đại lý sẽ gọi một chức năng để lấy đi số tiền trong hợp đồng mồi. (Hợp đồng cũng có chức năng "truy xuất" cho phép chúng tôi rút tiền.)
Chúng tôi đã triển khai ProxyTaker hợp đồng và gọi một chức năng để cố gắng rút tiền của chúng tôi. Do chi phí sử dụng hợp đồng proxy để rút tiền cao hơn nên chúng tôi đã tăng số tiền trong hợp đồng mồi nhử lên 0,055 ETH. Chắc chắn, giao dịch của chúng tôi ngay lập tức bị một robot khác cướp đi.
Sự khởi đầu sai lầm này đã để lại ấn tượng sâu sắc hơn với chúng tôi. Robot này không chỉ có thể phát hiện giao dịch rút tiền của chúng tôi mà còn có thể xác định rằng giao dịch đó đến từ một cuộc gọi nội bộ từ một hợp đồng hoàn toàn khác! Và nó đã làm được điều này trong thời gian rất ngắn. Giao dịch của chúng tôi đã được khai thác thành công chỉ sau vài giây (giao dịch của bot này cũng vậy).
Danh tính của robot này cũng khá thú vị. Hợp đồng của robot này chủ yếu được kiểm soát bởi tài khoản như trong hình bên dưới. Tài khoản đã đăng một bình luận trên Etherscan gợi nhớ đến những hacker mũ trắng đang cố gắng lấy tiền của người dùng từ một hợp đồng thông minh Bancor dễ bị tấn công.

- Nhận xét từ tài khoản nhà điều hành bot (Nguồn: etherscan ) -
Do mô hình hành vi của robot này giống với robot trước đó (gọi hợp đồng ủy quyền từ tài khoản A, gửi tiền đến tài khoản B) và hai sự cố chạy trước đều tương tự nhau. Chúng tôi có lý do để nghi ngờ rằng robot này cũng đã phát động một cuộc tấn công chạy trước nhằm vào các hacker mũ trắng trong hoạt động giải cứu.
Robot này phức tạp hơn nhiều so với robot trước. Nó không chỉ tập trung vào ETH mà còn thực hiện các giao dịch chênh lệch giá khác nhau.
Đánh giá dựa trên số dư của tài khoản mà số tiền được rút ra, bot này đã thành công hơn nhiều. Hiện tại, số dư tài khoản của nó nắm giữ khoảng 300 ETH. Chúng tôi cũng có thể ước tính lợi nhuận của robot này dựa trên tất cả số tiền chảy vào và ra khỏi địa chỉ hợp đồng ủy quyền, tổng cộng khoảng 900 ETH. Đây chỉ là ước tính sơ bộ vì tài khoản có thể có các giao dịch không liên quan đến giao dịch trước đó. (Nhấp vào đây để xem tất cả các giao dịch có lợi nhuận của robot này.)
Để làm cho thử thách này trở nên thú vị hơn, một lần nữa chúng tôi đã thử làm xáo trộn các cuộc gọi, lần này bằng cách sử dụng hợp đồng proxy OwnedTaker mà chỉ chúng tôi mới có thể sử dụng.
Việc thiết lập lần này tương tự như vòng thứ ba. Chúng tôi gửi 0,05 ETH vào hợp đồng mồi. Tiền cũng được trả lại cho chúng tôi thông qua giao dịch thay vì tồn tại trong hợp đồng.
Trong lần thử đầu tiên, giao dịch được gửi tới hợp đồng OwnedTaker mất khoảng 1 phút để khai thác, Chúng tôi đã truy xuất thành công số tiền trong hợp đồng mồi nhử.
Chúng tôi lặp lại thí nghiệm một lần nữa. Lần này, chúng tôi nạp 0,06 ETH vào hợp đồng mồi, đây là loại mồi lớn nhất trong các thử nghiệm trước đó, để loại trừ khả năng robot chạy phía trước không cắn mồi vì mồi quá nhỏ.
Chúng tôi cũng cố tình đặt giá xăng ở mức thấp. Giao dịch này phải chờ khoảng 7 phút nhưng vẫn lấy được mồi thành công.
Việc sử dụng hợp đồng proxy được sở hữu mà chỉ chủ sở hữu mới có thể sử dụng để chuyển tiếp giao dịch sẽ ngăn cản robot phân tích dữ liệu một cách hiệu quả và nhảy súng.

- Đã lấy tiền thành công-
Có lẽ vì chỉ chủ sở hữu hợp đồng mới có thể thực thi Cuộc gọi hoặc thực tế là tiền được gửi đến một địa chỉ khác với hợp đồng gọi điện, cho phép chúng tôi trốn tránh thành công các bot giao dịch chạy trước.
Những robot này có thể được lập trình để đặt khả năng tự bảo vệ lên hàng đầu. Rốt cuộc, khi họ gọi một hợp đồng không xác định, hợp đồng đó có khả năng thực thi mã tùy ý. Vì vậy, chúng ta có thể giả định một cách hợp lý rằng khi lợi nhuận không được đảm bảo, họ sẽ chọn cách tránh những rủi ro không đáng có hoặc tổn thất về phí giao dịch.
Nó phụ thuộc vào cách bạn nhìn nhận nó. Chúng tôi sử dụng hợp đồng mới và chỉ chúng tôi biết chuỗi bí mật kiểm soát hợp đồng. Rõ ràng, hai bot chạy trước mà chúng tôi bắt được đã phát hiện tất cả các giao dịch trong nhóm giao dịch. Xét theo lợi nhuận họ kiếm được thì họ thực sự giỏi về việc đó.
Tại sao chúng ta chống lại thành công cuộc tấn công của robot chạy trước trong thí nghiệm vừa qua?
Thật khó để nói. Có thể đó là do các bot không muốn gặp rủi ro khi giao tiếp với một hợp đồng đã được xác thực hoặc vì chúng không mong đợi tiền sẽ được chuyển đến một địa chỉ khác. Điều này không có nghĩa là phương pháp này sẽ bảo vệ khỏi tất cả các bot chạy trước. Nhiều khả năng là có nhiều bot phức tạp hơn đang ẩn nấp trong nhóm giao dịch và chúng không bận tâm đến việc chấp nhận rủi ro chỉ vì lợi nhuận nhỏ như vậy.
Qua điều này Trong thí nghiệm này, chúng tôi đã chứng minh rằng không chỉ tồn tại một loại robot phổ thông chạy phía trước mà còn rất thông minh.
Tất nhiên, chúng tôi biết rằng thí nghiệm này chưa hoàn chỉnh và không thể đưa ra kết luận chính thức. Nhiều loại robot khác có cơ chế kích hoạt và phương thức vận hành hoàn toàn khác nhau. Các yếu tố như tiềm năng lợi nhuận, mô hình giao tiếp và độ phức tạp tối thiểu (chẳng hạn như giới hạn xăng) cũng ảnh hưởng đến cách hoạt động của các bot này.
Tuy nhiên, chúng tôi tin rằng công việc của chúng tôi cung cấp bằng chứng về khái niệm và tiết lộ thêm khả năng của mặt trận có mục đích chung này -robot chạy.Chế độ hoạt động.
Điều đáng sợ là nếu ai đó gọi một hợp đồng có thể tạo ra thu nhập và bất cứ ai cũng có thể gọi nó, ngay cả khi điều này hợp đồng Nó rất phức tạp và rất có thể robot sẽ đến đó trước.
Do đó, điều quan trọng là phải hiểu các bot này và cách chúng hoạt động để chúng ta có thể xây dựng các hệ thống an toàn hơn. Các dự án như Flashbots tìm cách đạt được mục tiêu này bằng cách dân chủ hóa việc khai thác MEV (Thu nhập có thể chiết xuất từ thợ mỏ) và biến nó thành tài nguyên công cộng. Chúng tôi hy vọng nghiên cứu này sẽ hữu ích.
Nếu bạn đã gặp những robot như vậy hoặc đang nghiên cứu các kỹ thuật che giấu phức tạp hơn, vui lòng liên hệ với chúng tôi. Trải nghiệm của bạn có thể giúp chúng tôi hiểu rõ hơn về các loại bot này và xây dựng một cộng đồng tiền điện tử an toàn hơn.
Cảm ơn Tal Be'ery, Omer Shlomovitz, Oded Leiba, Dan Robinson và những người khác đã xem xét bài viết này.
Bản gốc văn bản Liên kết
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia
