Amber avatar
Coin98 Insights
Nơi chia sẻ tất cả những kiến thức Crypto từ cơ bản đến nâng cao, kinh nghiệm đầu tư Bitcoin và các hình thức đầu tư tiền điện tử khác.

Tấn công Sandwich là gì? Các hình thức tấn công Sandwich

Thị trường DeFi đem đến cho nhà đầu tư vô vàn cơ hội kiếm lợi nhuận, song vẫn có nhiều mối nguy tiềm ẩn đến từ các hình thức tấn công như exploit, exit scam, tấn công sandwich. Chúng có thể khai thác và gây thiệt hại đến tài sản của người dùng và các nhà đầu tư.
Amber avatar
vych
8 min read
Published Aug 15 2023
Updated Aug 16 2023
Amber media

Vậy tấn công sandwich là gì? Cách nhận biết và phòng tránh tấn công sandwich như  thế nào?

Tấn công Sandwich là gì?

Tấn công sandwich (hay sandwich attack) là một hình thức tấn công chạy trước (front-run*) thường diễn ra trong thị trường crypto và nhắm vào các giao dịch đang chờ (pending) của người dùng để kiếm lợi nhuận. 

*Front-run là hành vi lợi dụng việc biết trước một giao dịch trong tương lai có thể ảnh hưởng đến giá một loại tài sản và đặt lệnh ngay trước giao dịch đó nhằm kiếm lợi nhuận. 

Kẻ tấn công lợi dụng tính minh bạch của công nghệ blockchain để theo dõi giao dịch on-chain và phát hiện các giao dịch đang ở trạng thái chờ cần được xử lý. Sau đó, hắn thực hiện giao dịch ngay trước và sau các giao dịch pending của người dùng nhằm thao túng giá tài sản và kiếm lời từ việc chênh lệch giá.  

tấn công sandwich
Tấn công sandwich là gì? 

Hình thức tấn công này trông giống hình ảnh khi giao dịch của kẻ tấn công và người dùng kẹp vào nhau tạo nên một chiếc bánh sandwich, trong đó giao dịch đang chờ của nạn nhân nằm ở giữa. 

advertising

Phần lớn các cuộc tấn công sandwich diễn ra trên các giao thức AMM, nổi bật như Uniswap, Sushiswap… do những hạn chế về mặt kiến trúc của loại hình sản phẩm này.

Tác động của tấn công Sandwich 

Tấn công sandwich không phổ biến khi so với các hình thức tấn công khác như exploit, exit scam… Tuy nhiên, nó có thể tác động và gây thiệt hại đáng kể cho giá trị tài sản của người dùng. 

Theo EigenPhi, tổng số giao dịch bị tấn công sandwich trên Ethereum trong tháng 7/2023 lên đến 140,598, với hơn 73 nghìn nạn nhân và tổng thiệt hại gây ra là hơn 2 triệu USD. 

Ngoài ra, tấn công sandwich ảnh hưởng lớn đến các giao thức AMM trên Ethereum về mặt đảm bảo quyền lợi người dùng. Số liệu cũng chỉ ra Uniswap là giao thức AMM bị nhắm đến nhiều nhất trong các vụ tấn công sandwich kể từ khi hình thức này hình thành từ tháng 6/2020. 

Việc những kẻ tấn công sandwich nhằm vào các giao thức AMM này sẽ khiến giá token trong pool tăng cao. Làm tăng chi phí giao dịch của người dùng, đồng thời giảm giá trị tài sản quy đổi do bị chạy trước giao dịch. 

sandwich tấn công tác động ethereum
Số lượng các vụ tấn công sandwich diễn ra từ tháng 6/2020 đến tháng 6/2023. Nguồn: Dune Analytics.

Tấn công Sandwich hoạt động như thế nào? 

Kẻ tấn công sẽ lợi dụng hình thức MEV để nắm thông tin các giao dịch đang có trong mempool, từ đó họ có thể chọn các giao dịch chờ theo mong muốn và tiến hành vụ tấn công. 

Một số thuật ngữ cần biết

Kẻ tấn công sẽ lợi dụng các yếu tố sau để thực hiện cuộc tấn công sandwich:

MEV (Maximal Extractable Value): là lợi nhuận mà thợ đào kiếm được nhờ việc lợi dụng quyền hạn của mình. Theo đó, thợ đào không cần xử lý giao dịch theo thời gian người dùng đưa lệnh on-chain mà họ có thể ưu tiên những giao dịch trả mức phí cao hơn. Điều này tạo điều kiện để thợ đào “kiếm thêm nhiều nhất có thể” từ người dùng thông qua việc sắp xếp thứ tự giao dịch. Hậu quả là phí giao dịch trong mạng lưới và độ trượt giá tăng cao. 
Mempool: (viết tắt của hai từ “memory" và “pool”) - một phòng chờ lưu trữ tạm thời các giao dịch đang đợi xác thực để đưa lên mạng lưới blockchain.
quy trình miner sắp xếp giao dịch
Cách một giao dịch được đưa lên blockchain và miner sẽ ưu tiên các lệnh trả nhiều phí hơn.

Quy trình tấn công Sandwich

Thông thường, quy trình cơ bản để tấn công sandwich diễn ra như sau:

Bước 1: Người dùng thực hiện giao dịch trên các AMM

Khi có nhiều giao dịch được thực hiện cùng lúc, mạng lưới có khả năng bị tắc nghẽn. Các giao dịch pending sẽ được đưa vào mempool và chờ xác thực. 

Bước 2:  Kẻ tấn công tìm giao dịch mục tiêu 

Kẻ tấn công sử dụng bot để quét các giao dịch trong mempool. Thông thường, các giao dịch có giá trị lớn sẽ được chúng chú ý tới. 

Bước 3: Kẻ tấn công thực hiện front-run giao dịch của người dùng

Sau khi xác định mục tiêu, kẻ tấn công sẽ sử dụng bot để front-run một giao dịch tương tự của người dùng. Tuy nhiên, chúng sẽ trả phí gas cao hơn để giao dịch được xác thực trước.  

Lúc này, kẻ tấn công đã thành công đẩy giá token lên. Khi lệnh pending của người dùng được thông qua, họ sẽ nhận về lượng token ít hơn và chi phí cao hơn so với dự kiến.

Bước 4: Kẻ tấn công thực hiện lệnh bán và chốt lời

Ngay sau khi mua thành công, kẻ tấn công sẽ thực hiện lệnh bán (back-run) ở mức giá cao nhằm thu về lợi nhuận từ phần chênh lệch. 

quy trình tấn công sandwich
Quy trình tấn công sandwich.

Các hình thức tấn công sandwich

Tấn công sandwich có thể được thực hiện dưới hai hình thức: 

Tấn công front-run và back-run với các giao dịch pending. 
Rút thanh khoản.
các loại sandwich attack
Các hình thức tấn công sandwich.

Tấn công front-run

Trong một cuộc tấn công sandwich, tin tặc sẽ tìm một giao dịch ở trạng thái chờ trên mạng lưới bất kỳ, ví dụ như Ethereum. Sau đó, kẻ tấn công front-run với giao dịch của người dùng và đồng thời đặt một lệnh sau khi người dùng giao dịch (back-run) và giao dịch đang chờ sẽ nằm ở giữa. 

Mục đích của việc đặt 2 lệnh trước sau xoay quanh giao dịch đang chờ của người dùng nhằm thao túng giá tài sản. Điều này giúp kẻ tấn công khai thác độ biến động của tỷ giá cặp giao dịch trong pool và kiếm lợi nhuận từ phần chênh lệch. 

Rút thanh khoản

Điểm tương tự giữa việc rút thanh khoản và tấn công front-run nằm ở bước đầu tiên: quét giao dịch pending. Tuy nhiên, hình thức tấn công này còn có thêm một số bước khác:

Bước 1: Kẻ tấn công rút thanh khoản

Người dùng thực hiện lệnh swap X sang Y trên AMM. 

Kẻ tấn công quét các giao dịch pending và xác định mục tiêu. Sau đó, kẻ tấn công sẽ rút thanh khoản cặp giao dịch X-Y trước khi lệnh của người dùng được xác thực. Điều này khiến cho mức trượt giá tăng, người dùng nhận về số token có giá trị bị giảm so với ước tính.  

Bước 2:  Kẻ tấn công thêm lại thanh khoản để mức trượt giá trong pool thấp. 

Bước 3: Kẻ tấn công bán tài sản và thu lợi nhuận

Cuối cùng, hắn sẽ thực hiện một giao dịch bán back-run ngay sau giao dịch của người dùng và kiếm được lợi nhuận. 

tấn công sandwich rút thanh khoản
Hình thức tấn công sandwich bằng cách rút thanh khoản

Cách nhận biết tấn công Sandwich 

Tấn công sandwich là hình thức tương đối khó nhận diện đối với người dùng, vì nó có thể được hiểu nhầm thành phí cao do mạng lưới bị tắc nghẽn. 

Việc nhận biết tấn công sandwich đòi hỏi người dùng trang bị một số kiến thức về việc kiểm tra các thông tin liên quan đến giao dịch như phí gas, mức độ trượt giá, tỷ giá mà người dùng muốn hoán đổi…

Thay vào đó, hiểu rõ cách phòng tránh lại là biện pháp hữu hiệu hơn. 

Cách phòng tránh tấn công Sandwich

Tấn công sandwich được Vitalik Buterin cảnh báo sẽ trở nên nguy hiểm với thị trường DeFi từ năm 2018 và nó đã trở thành sự thật. 

Hình thức tấn công sandwich chủ yếu phụ thuộc vào kiến trúc của các giao thức AMM, do đó, rất khó để có những phương thức cụ thể giúp phòng chống hoàn toàn các cuộc tấn công này.

Tuy nhiên, nhiều dự án đã phát triển các sản phẩm, dịch vụ, mô hình giúp người dùng phòng tránh tấn công sandwich.

Sản phẩm, dịch vụ phòng chống tấn công Sandwich

Một số giao thức, công nghệ phát triển sản phẩm có thể nâng cao khả năng chống tấn công sandwich như: 

Flashbots:  Một tổ chức nghiên cứu và phát triển những giải pháp giúp giảm thiểu các tác động từ MEV. Trong đó, Flashbot Protect là sản phẩm giúp bảo vệ người dùng khỏi những các giao dịch front-run và cả tấn công sandwich.
Triển khai các mô hình AMM với cơ chế mới lạ: Một số giao thức triển khai cơ chế AMM mới để ngăn chặn tấn công Sandwich, đảm bảo độ lệch giá giới hạn (thường trong khoảng 0.1%) và hạn chế việc thao túng giá token.
Chainlink FSS: Là giải pháp oracle để xác định thứ tự giao dịch on-chain. Chainlink FSS giúp giảm thiểu tác động của tấn công sandwich bằng cơ chế FCFS, giao dịch nào đến sớm sẽ được xử lý trước.
tấn công sandwich chainlink fss
Cơ chế FCFS của Chainlink FSS giúp phòng chống tấn công sandwich
EIP-1559: Là bản cập nhật của mạng lưới Ethereum với việc tạo mức phí cơ bản (base fee) cho mọi giao dịch trên mạng lưới, người dùng có thể nâng phí gas để giao dịch được ưu tiên. EIP-1559 sẽ giúp các giao dịch được thực hiện nhanh hơn, giảm độ trễ trong việc xác thực.
MEVBlocker: Hình thức bảo vệ người dùng khỏi MEV (như tấn công sandwich) được tạo ra nhờ sự hợp tác của Balancer,  ShapeShift, ParaSwap… MEVBlocker có thể bảo vệ người dùng trước front-run nhưng lại không thể xử lý các giao dịch back-run. 
Alchemist: mistX.io là AMM của Alchemist, hoạt động trên mạng lưới của Flashbot, giúp người dùng gửi giao dịch tương tự như Transaction bundle của Flashbot. 

Cách tự bảo vệ trước tấn công Sandwich

Có hai biện pháp đơn giản giúp người dùng tự phòng chống tấn công sandwich như sau:

Chỉnh mức trượt giá (slippage) thấp: Các bot khi đặt giao dịch cũng sẽ làm ảnh hưởng đến giá, vì vậy việc chỉnh slippage thấp (khoảng 2%) sẽ có thể ngăn chặn được những rủi ro bị tấn công sandwich. Tuy nhiên, việc điều chỉnh slippage thấp có thể khiến giao dịch thực hiện trong thời gian lâu hơn hoặc thất bại và mất phí.
chỉnh slippage chống sandwich attack
Chỉnh slippage thấp để chống sandwich attack.
Chia nhỏ giao dịch: Kẻ tấn công sandwich có xu hướng quan tâm các giao dịch có giá trị lớn nhằm đem lại lợi nhuận cao. Thay vì thực hiện nhiều giao dịch lớn cùng lúc, người dùng có thể chia thành nhiều giao dịch nhỏ hơn, điều này sẽ làm giảm sự chú ý của giao dịch với front-run bot vì giá trị chúng có thể khai thác được sẽ ít đi.