Thị trường DeFi hiện nay cung cấp nhiều cơ hội hấp dẫn cho nhà đầu tư, nhưng đồng thời cũng không thiếu các mối nguy tiềm ẩn đến từ các hình thức tấn công, trong đó tấn công sandwich là một trong những cách tấn công đáng chú ý. Để hiểu rõ hơn về tấn công sandwich, chúng ta cần tìm hiểu về cách nó hoạt động cũng như biện pháp phòng ngừa.
Tấn công Sandwich là gì?
Tấn công sandwich được biết đến như một hình thức tấn công chạy trước, đã trở thành một vấn đề đáng chú ý trong ngành tiền điện tử, đặc biệt là trong thị trường crypto và các sàn giao dịch tài sản điện tử như Uniswap và Sushiswap. Tấn công này nhằm tận dụng tính minh bạch của công nghệ blockchain và sự đơn giản của giao thức giao dịch tự động (AMM) để tác động đến giá tài sản và thu về lợi nhuận từ việc chênh lệch giá.
Trong tấn công sandwich, kẻ tấn công sẽ thực hiện việc theo dõi và giám sát các giao dịch trên mạng blockchain, đặc biệt là các giao dịch đang chờ xử lý. Bằng cách này, họ có thể nắm bắt thông tin về các giao dịch đang chờ một cách nhanh chóng và chính xác. Dựa trên thông tin này, kẻ tấn công sẽ thực hiện các giao dịch mua bán trước và sau các giao dịch đang chờ của người dùng, tạo ra một sự tác động đến giá tài sản và thu lợi từ sự chênh lệch giá.
Tấn công sandwich được gọi là “sandwich” xuất phát từ hình ảnh khi một người dùng đặt một giao dịch nhất định, nhưng trước khi giao dịch này được xử lý hoàn toàn, kẻ tấn công đã thực hiện các giao dịch khác để tác động đến giá tài sản. Điều này tạo ra một tình huống tương đương như giao dịch của người dùng bị ghi đè bởi các giao dịch khác từ kẻ tấn công, tạo thành một chiếc sandwich với giao dịch đang chờ của người dùng nằm ở giữa.
Có thể thấy rằng hầu hết các cuộc tấn công sandwich xảy ra trên các giao thức giao dịch tự động (AMM) như Uniswap, Sushiswap,… Điều này xuất phát từ cấu trúc của những giao thức này, khi chúng xây dựng các quy tắc giao dịch dựa trên tỷ lệ cung cầu. Nhược điểm này tạo ra một cơ hội cho kẻ tấn công để tác động đến giá tài sản và kiếm lợi từ sự chênh lệch giá một cách dễ dàng, khi giá tài sản được xác định bằng cách tính toán tỷ lệ giữa số lượng tài sản được giao dịch và tỷ lệ cung cầu trên thị trường.
Tác động của tấn công Sandwich
Tấn công sandwich là một loại tấn công mà không phổ biến như những hình thức tấn công khác như exploit hay exit scam. Tuy nhiên, mặc dù ít phổ biến, nó có thể gây ra những hậu quả đáng kể đối với người dùng. Tấn công sandwich là khi kẻ tấn công chèn một giao dịch hợp lệ giữa hai giao dịch khác nhau, gây ra sự tăng giá của token trong pool và làm tăng chi phí giao dịch của người dùng.
Theo một bài báo trên trang EigenPhi, trong tháng 7/2023, đã có tổng cộng 140,598 giao dịch bị tấn công sandwich trên Ethereum, với hơn 73 nghìn người dùng trở thành nạn nhân và tổng thiệt hại lên đến hơn 2 triệu USD. Điều này làm hiển nhiên rằng, dù ít phổ biến, tấn công sandwich vẫn có thể gây ra những vấn đề nghiêm trọng.
Một trong những giao thức AMM bị tấn công sandwich nhiều nhất là Uniswap, một giao thức phổ biến trên Ethereum. Tấn công sandwich ảnh hưởng lớn đến AMM này và làm giảm quyền lợi của người dùng. Khi giá token trong pool tăng cao do tấn công, người dùng phải trả nhiều hơn cho các giao dịch của mình và giá trị tài sản của họ cũng giảm do giá token đã tăng trước khi giao dịch được thực hiện.
Cách hoạt động của tấn công Sandwich
Khi một kẻ tấn công muốn lợi dụng MEV, họ sẽ khai thác thông tin chi tiết về các giao dịch đang chờ xử lý trong mempool. Bằng việc làm điều này, kẻ tấn công có thể chọn lọc và tùy chỉnh các giao dịch mà họ muốn sử dụng để tiến hành cuộc tấn công.
Thuật ngữ liên quan đến MEV.
MEV (Maximal Extractable Value) ám chỉ lợi nhuận tối đa mà thợ đào có thể đạt được bằng cách tận dụng quyền lực của mình. Thay vì xử lý các giao dịch theo thời gian xuất hiện trong mempool, các thợ đào có thể ưu tiên xử lý những giao dịch với mức phí cao hơn. Điều này cho phép các thợ đào “tối đa hóa giá trị khai thác” từ người dùng và tăng cường thu nhập của mình thông qua việc sắp xếp thứ tự xử lý giao dịch. Tuy nhiên, tác động của MEV không chỉ làm tăng phí giao dịch trong mạng lưới và làm tăng độ trượt giá, mà còn có thể tạo ra các tình huống không công bằng, ảnh hưởng đến tính minh bạch và đáng tin cậy của hệ thống.
Mempool, từ viết tắt của “memory pool”, là một không gian lưu trữ tạm thời các giao dịch đang chờ xử lý trên mạng lưới blockchain. Khi một người dùng thực hiện giao dịch, nó sẽ trở thành một phần của mempool và chờ đợi cho đến khi một thợ đào chọn nó để xác minh và ghi vào blockchain. Mempool có vai trò như một bộ nhớ tạm, nơi mà thông tin về giao dịch được tạm thời lưu giữ cho đến khi chúng được xử lý một cách tuần tự và công bằng.
Quy trình tấn công Sandwich
Quy trình tấn công Sandwich là một kỹ thuật phức tạp mà kẻ tấn công sử dụng để tận dụng các lỗ hổng trong hệ sinh thái DeFi và áp dụng chúng vào việc thực hiện giao dịch trên các hợp đồng thông minh tự động (AMM). Các bước chi tiết của quy trình này 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. Những giao dịch chưa được xác thực sẽ được đưa vào hàng đợi (mempool) và chờ xác thực. Điều này tạo ra một cơ hội cho kẻ tấn công tìm kiếm các giao dịch có giá trị lớn để tiếp tục ở các bước sau.
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 và tìm kiếm các giao dịch trong mempool. Thông thường, các giao dịch có giá trị lớn và tạo ra sự ảnh hưởng lớn đến thị trường sẽ được chú ý. Khi tìm thấy mục tiêu, kẻ tấn công chuyển sang bước tiếp theo.
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 giao dịch mục tiêu, kẻ tấn công sẽ sử dụng bot để thực hiện một giao dịch tương tự với giao dịch của người dùng. Tuy nhiên, để đảm bảo giao dịch của mình được xác thực trước giao dịch của người dùng, kẻ tấn công sẽ đặt mức phí gas cao hơn, thể hiện sự chuẩn bị sẵn sàng chi tiêu nhiều hơn để đạt được lợi ích về thời gian và ưu tiên trong việc xác thực giao dịch.
Khi kẻ tấn công thành công được đặt giá token lên, giao dịch của người dùng sẽ được xác thực với mức giá đã bị “đẩy” lên và người dùng sẽ nhận được một lượng token ít hơn và chi phí cao hơn so với dự đoán ban đầu.
Bước 4: Kẻ tấn công thực hiện lệnh bán và thu lợi nhuận
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 để có lợi nhuận từ sự chênh lệch giữa mức giá mua và mức giá bán token.
Các hình thức tấn công sandwich
Tấn công sandwich có thể thực hiện theo hai hình thức:
- Tấn công front-run và back-run bằng cách sử dụng các giao dịch đang chờ xác nhận.
- Rút thanh khoản để kiếm lợi nhuận.
Tấn công front-run
Trong một cuộc tấn công sandwich, kẻ tấn công sẽ tìm kiếm một giao dịch đang chờ xử lý trên mạng Ethereum hoặc bất kỳ hệ thống nào khác. Sau đó, họ sẽ nhanh chóng đặt một giao dịch trước giao dịch của người dùng và cùng lúc đặt một giao dịch sau giao dịch của người dùng. Kết quả là giao dịch của kẻ tấn công sẽ nằm ở giữa hai giao dịch của người dùng.
Mục đích của việc này là để kẻ tấn công can thiệp vào giá cả của tài sản. Bằng cách làm như vậy, kẻ tấn công có thể tận dụng sự biến động của giá trị tỷ lệ trao đổi giữa các cặp giao dịch trong hệ thống và thu lợi từ sự chênh lệch đó.
Rút thanh khoản
Trong việc rút thanh khoản và tấn công front-run, có một điểm tương đồng quan trọng. Đó là việc quét các giao dịch đang chờ xác nhận. Tuy nhiên, tấn công front-run còn có một số bước khác.
Bước 1: Rút thanh khoản
Người dùng thực hiện lệnh swap từ token X sang token Y trên AMM.
Kẻ tấn công sẽ quét các giao dịch đang chờ xác nhận và tìm ra mục tiêu của mình. Sau đó, họ sẽ rút thanh khoản của cặp giao dịch X-Y trước khi lệnh của người dùng được xác nhận. Điều này dẫn đến mức trượt giá tăng cao, khiến cho người dùng nhận được ít token có giá trị hơn so với dự tính.
Bước 2: Bổ sung thanh khoản
Sau khi rút thanh khoản thành công, kẻ tấn công sẽ thêm lại thanh khoản để mức trượt giá trong pool giảm xuống.
Bước 3: Bán tài sản và kiếm lợi nhuận
Cuối cùng, kẻ tấn công sẽ thực hiện một giao dịch bán sau giao dịch của người dùng và thu lợi nhuận từ việc giảm giá token.
Trên đây là quy trình của tấn công front-run. Việc này gây thiệt hại cho người dùng bằng cách làm giảm giá trị của token mà họ nhận được.
Cách phát hiện tấn công Sandwich
Tấn công sandwich là một loại tấn công khá khó nhận biết đối với người dùng, vì nó có thể bị hiểu nhầm là do mạng lưới kẹt, gây ra các khoản phí cao. Để nhận biết được tấn công sandwich, người dùng cần phải có kiến thức về cách 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á hoán đổi…
Tuy nhiên, hiểu rõ cách tránh tấn công này lại là biện pháp tốt hơn.
Cách phòng tránh tấn công Sandwich
Vitalik Buterin đã cảnh báo về sự nguy hiểm của tấn công sandwich trong thị trường DeFi từ năm 2018, và điều đó đã trở thành sự thật. Tấn công sandwich phụ thuộc chủ yếu vào cấu trúc của các giao thức AMM, và vì vậy rất khó để ngăn chặn hoàn toàn những 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ụ và mô hình giúp người dùng tránh được tấn công sandwich.
Những sản phẩm, dịch vụ phòng tránh tấn công Sandwich
Có một số công nghệ và giao thức mới đang được phát triển nhằm tăng cường khả năng chống tấn công sandwich trong các sản phẩm công nghệ.
- Flashbots là một tổ chức nghiên cứu và phát triển giải pháp nhằm giảm thiểu tác động của MEV. Flashbot Protect là một sản phẩm giúp bảo vệ người dùng khỏi các tấn công front-run và sandwich.
- Các mô hình AMM mới với cơ chế đặc biệt cũng được triển khai để ngăn chặn tấn công Sandwich, giữ cho độ lệch giá ở mức hạn chế (thường dưới 0.1%) và giới hạn sự can thiệp vào giá trị token.
- Chainlink FSS là một giải pháp oracle sử dụng để xác định thứ tự thực hiện giao dịch on-chain. Chainlink FSS giảm thiểu tác động của tấn công sandwich bằng cách sắp xếp giao dịch theo thứ tự trước-sau (FCFS), giao dịch đến sớm nhất sẽ được xử lý trước.
- EIP-1559 là một bản cập nhật trên mạng Ethereum với mục tiêu tạo ra mức phí cơ bản (base fee) cho mọi giao dịch trên mạng. Người dùng có thể tăng mức phí gas để ưu tiên giao dịch. EIP-1559 giúp tăng tốc thực hiện giao dịch và giảm độ trễ trong xác thực.
- MEVBlocker là một hình thức bảo vệ người dùng khỏi MEV (như tấn công sandwich), được phát triển thông qua sự hợp tác giữa Balancer, ShapeShift, ParaSwap… MEVBlocker giúp bảo vệ người dùng trước tấn công front-run nhưng không thể ngăn chặn các tấn công back-run.
- Alchemist là mistX.io, là một AMM của Alchemist hoạt động trên mạng Flashbot. Nó cho phép người dùng gửi các 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 cách đơn giản mà bạn có thể tự bảo vệ mình khỏi tấn công sandwich:
- Giữ mức trượt giá (slippage) thấp: Các bot thường ảnh hưởng đến giá trong quá trình giao dịch, vì vậy bạn nên cố gắng giảm mức trượt giá (khoảng 2%) để giảm khả năng bị tấn công sandwich. Tuy nhiên, việc giảm slippage có thể làm cho quá trình giao dịch mất thời gian hơn hoặc gặp sự cố và mất phí.
- Thực hiện giao dịch nhỏ: Kẻ tấn công sandwich thường quan tâm đến các giao dịch có giá trị lớn để đạt được lợi nhuận cao. Thay vì thực hiện một giao dịch lớn, bạn có thể chia nhỏ thành nhiều giao dịch nhỏ hơn. Điều này sẽ làm giảm sự chú ý của bot front-run vì giá trị mà chúng có thể khai thác sẽ ít hơn.
Tin Tức Bitcoin tổng hợp