Tấn công thao túng giá trong DeFi - đơn giản, hay gặp nhưng khó nhận diện

Trong thị trường DEFI, Mọi người hay nghe đến các vụ tấn công liên quan đến flashloan, nhưng thực chất thì flashloan không phải một lỗ hổng, cũng không phải phương thức tấn công, nó chỉ là một công cụ để thực hiện những cuộc tấn công phức tạp, trong đó phương thức tấn công thao túng giá.

Tấn công thao túng giá là phương thức tấn công phổ biến nhất, nguyên nhân và cách thức tấn công (chi tiết) cũng đa dạng. Bài viết này nói đến mindset chung của phương thức tấn công, một số case cụ thể và cách phòng tránh.

Trong bất kỳ thị trường nào, khi biết chắc chắn giá sẽ tăng hoặc giảm, thì bạn chắc chắn có thể kiếm được lợi nhuận.
Vậy, hãy đặt câu hỏi, nếu bạn có thể chủ động khiến giá tăng hoặc giảm thì sao. Trong thị trường chứng khoán và cả crypto, thì có rất nhiều đội lái, nhiều cá mập, cá voi làm việc đó với một nguồn lực lớn và một kế hoạch bài bản, dài hạn, họ cũng có thể thao túng giá và kiếm được lợi nhuận.
Nhưng đối với những con sói(tôi hay gọi những hacker, những kẻ tấn công, là những con sói đi săn mồi) thì việc thao túng giá cũng có thể làm được, thậm chí là thực hiện trong tích tắc với một nguồn lực không đáng kể.

Tấn công thao túng giá trong Defi có 2 kiểu, trực tiếp và gián tiếp. Nhưng về cơ bản, đều là làm cho giá biến động mạnh và thu lợi từ việc biến động đó, tất cả diễn ra trong 1 giao dịch.

Hãy nhìn vào 1 ví dụ rất phổ biến, 1 token ERC20 thu phí mỗi giao dịch mua bán là 10%. Thu phí trực tiếp mỗi giao dịch bằng token. Số lượng token phí giao dịch thu được cứ tích dần lại và được sở hữu bởi contract đó. Contract đó có 1 function để swap token đó sang ETH(hoặc BNB), và chuyển số ETH (BNB) thu được sang ví của dev. Vì tính năng này chỉ có lợi cho dev, ai call function này thì cũng đều chuyển số tiền thu được về ví của dev, vì thế, dev đã để function này public, nghĩa là ai call cũng được. Thoạt nhìn thì đây không phải là lỗ hổng đúng không, vì hacker mà swap thì tiền sẽ vẫn về ví của dev mà. Nhưng thực chất không phải như vậy. Hacker hoàn toàn có thể chiếm đoạn 99% số eth này. Vậy nguyên nhân và cách thức diễn ra như thế nào?
Trong tính năng đó, các dev thường để slippage khi swap là 100% (nghĩa là chấp nhận mọi số lượng eth nhận được, AmountOutMin=0). Hacker sẽ viết 1 smartcontract mới, trong đó có 1 đoạn code. Đoạn code ấy sẽ có các bước như sau: 1. Bán 1 lượng lớn token (có thể bằng token có sẵn hoặc thông qua flashloan). Lúc này, giá token đã giảm cực nhiều 2. Gọi function swap kia, vì giá đã giảm cực nhiều do hành động bán trước đó, nên tiền về ví dev sẽ cực ít. Lúc này giá lại tiếp tục giảm vì lệnh bán chuyển tiền về ví dev này. 3. Hacker tiếp tục mua vào để bù đắp cho lượng token đã bán lúc đầu(có thể là vay(flashloan) nên cần mua lại token với giá rẻ hơn để trả lại pool) Sau bước 3, hầu như toàn bộ số tiền đáng lẽ dev nhận được đã về ví của hacker.
Thông qua các bước trên, hacker đã thông qua 1 tính năng rất phổ biến, tưởng chừng như vô hại, để thu lợi nhuận, số tiền mà đáng lẽ đev được hưởng.

Chúng ta cùng đến 1 ví dụ khác, để hiểu thêm về phương thức tấn công này. Mình đã thấy nhiều smartcontract token có 1 function burn(đốt) token, nhưng chẳng may, token này bị lỗi kiểm tra quyền, ai cũng có thể đốt token của 1 ví bất kỳ. Thoạt nhìn, lỗ hổng này chỉ có thể sử dụng để phá hoại chứ không thể thu lợi nhuận đúng không? Thực chất thì hacker có thể thu lợi nhuận lớn thông qua tấn công thao túng giá từ lỗ hổng này. Hắn sẽ làm như sau (Tất cả trong 1 giao dịch, thực hiện bằng cách viết 1 smartcontract khác để gọi đến các contract token và LP): 1. Mua 1 lượng nhỏ token 2. Đốt phần lớn token của Liquidity Pool. Sau đó cập nhật lại. Lúc này gía token trong pool đã tăng lên hàng ngàn lần (do số lượng token có trong pool còn rất nhỏ, và theo công thức X*Y=K thì giá token sẽ tăng lên) 3. Bán token và thu được lợi nhuận. Hacker có thể chiếm đoạt 99.9% số tiền đang cho trong Liquidity Pool thông qua phương pháp này. Nhiều token bị lỗi trong hàm transferFrom, cũng bị vấn đề tương tự, mình đã gặp rất nhiều.

Có rất nhiều các trường hợp khác bị khai thác thông qua phương thức này. Và nó rất khó để nhận ra thông qua audit. Nếu bạn là dev, đọc đến đây, nếu bạn không giật mình, thì chúc mừng bạn.

Nhận xét

Bài đăng phổ biến từ blog này

Ai bảo bitcoin là hữu hạn

Cafe sáng blockchain - tập 1. PHI TẬP TRUNG (decentralized)

Tổng số lượt xem trang