Bị các hacker tấn công giao thức DeFi là một điều mà không có bất kỳ người dùng hay developer nào mong muốn gặp phải, tuy nhiên thì rủi ro này luôn luôn hiện hữu ở bất cứ đâu. Vậy chúng ta cần phải làm gì khi giao thức DeFi mình từng sử dụng bị hack? Hay cùng Hak Research đi tìm hiểu trong bài viết này.
Những Hình Thức Tấn Công Thường Được Hacker Sử Dụng
Tấn công smartcontract
Có thể nói những smartcontract chính xương sống của các giao thức DeFi khi nó nắm giữ các quy tắc hoạt động của một hành động bất kỳ. Tuy nhiên việc các lập trình viên bỏ sót các lỗi trong lúc viết smartcontract của mình là điều không thể tránh khỏi.
Các hacker sẽ lợi dụng các lỗ hỏng này để thực hiện một vụ tấn công smartcontract và đánh cắp tài sản chứa trong đó. Thậm chí hacker có thể đánh cắp tài sản trong ví người dùng nếu như họ từ trước đó họ approve cho smartcontact sử dụng một số lượng lớn token.
Do thị trường DeFi không thể hoạt động nếu thiếu các smartcontract, vì vậy nên tầng suất các vụ tấn công smartcontract cũng là rất nhiều với tổng thiệt hại tính đến thời điểm hiện tại đã đạt đến con số hàng tỉ đô chỉ trong một vài năm.
Wormhole Exploited có lẽ là một trong những vụ tấn công liên quan đến smartcontract lớn nhất trong thị trường DeFi khi có tổng cộng hơn 120K WETH bị đánh cắp trong sự kiện này, ở thời điểm xảy ra vụ việc thì nó có giá trị hơn $360M. Toàn bộ số tiền bị đánh cắp đã được thu hồi và đền bù cho người dùng tuy nhiên đây lại là một báo động đỏ cho việc bảo mật và kiểm toán các smartcontract trong DeFi.
Wormhole Hack Thread 🧵 Additional Details + Prevention
— wireless (@wireless_anon) February 3, 2022
Others have already described how it happened, going to talk about how it could have been prevented and note additional details that haven't been covered.
Tấn công Oracle
Nếu nói smartcontract là xương sống của thị trường thì các Oracle sẽ là hệ thống thần kinh được ra đời với mục đích dẫn truyền thông tin về giá giữa thế giới thực và DeFi. Toàn bộ các Oracle hiện tại đang dẫn truyền thông tin của khoảng $35B tài sản, chiếm 67% tổng TVL của thị trường DeFi.
Để thực hiện quá trình truyền thông tin chính xác và nhanh thì các Oracle sẽ xây dựng một mạng lưới bao gồm rất nhiều Node khác nhau. Những người vận hành Node thường là những bên có tiếng sẽ được chọn lọc kỹ và phải trải qua một quá trình KYC nghiêm ngặt để đảm bảo không có bất kỳ gian lận nào trong quá trình này.
Tuy nhiên thì các Oracle vẫn thường có các trục trặc nhất định mỗi khi thị trường biến động khiến cho giá của nhiều token cũng thay đổi liên tục. Điều này làm cho mức giá ghi nhận và mức giá được chuyển đến các giao thức DeFi khác nhau, bot chênh lệch giá lúc này sẽ tận dụng lỗ hỏng này để mua ở nơi có giá thấp và bán ở nơi có giá cao nhằm mục đích kiếm lợi tuy nhiên nó sẽ gây ra thiệt hại cho người dùng giao thức.
Một trong những vụ tấn công có liên quan đến Oracle nổi tiếng nhất xảy ra lên trên BonqDAO với khoảng $120 tài sản bị hacker cuỗm đi. Những kẻ tấn công đã lợi dụng một lỗ hỏng trong chức năng updatePrice của Oracle để thao túng giá sau đó rút wABLT và BEUR rồi bán chúng để thu lại USDC cùng với ETH.
The @BonqDAO is exploited and its price oracle is manipulated to increase the #WALBT price. Here is the example hack tx: https://t.co/YPxXMr2nkf pic.twitter.com/XrzExHY6m1
— PeckShield Inc. (@peckshield) February 1, 2023
Tấn công Front running
Front-running là một hình thức tấn công dựa trên khả năng biết trước một giao dịch nào đó sẽ khiến cho giá cả biến động. Thuật ngữ này đã có từ lâu trong thị trường truyền thống khi những ai có trước tin tức về việc một người khác sẽ mua số lượng lớn các mã chứng khoán khiến cho giá tăng mạnh, việc của người có tin tức chỉ là mua trước khi giao dịch đó xảy ra và bán ngay sau đó để kiếm lời từ phần chênh lệch.
Hầu hết các Blockchain đặc biệt là Ethereum đều sử dụng một mô hình có tên là Mempool, đó là nơi mà các giao dịch sẽ được chứa trước khi được các Validator đưa vào Block và gắn nó trên Blockchain. Nhược điểm của mô hình này đó chính là việc các Validator sẽ ưu tiên sắp xếp các giao dịch được trả nhiều phí hơn vào Block trước, khiến cho các giao dịch Front-run diễn ra một cách dễ dàng hơn bằng bot.
Một trong những ví dụ điển hình nhất cho Front-running đó chính là vụ việc một người dùng trên KyberSwap tiến hành swap $2M nhưng chỉ thu lại được 0.05 USDT cho giao dịch đó. Cụ thể ở thời điểm đó là ngày 11/03/2023 thì stablecoin USDC đã bị những ảnh hưởng nhất định sau khi ngân hàng SVB bị sụp đổ, khiến cho giá mất peg hơn 10%.
Người dùng trên có thể là do hoảng loạn hay vì một lý do nào đó đã bán hơn $2M token 3CRV để đổi lấy stablecoin USDT. 3CRV là token đại diện cho thanh khoản DAI-USDC-USDT của người dùng ở Curve Finance, do giá USDC giảm nên giá trị của 2 stablecoin còn lại cũng bị ảnh hưởng chung nên họ bắt buộc phải rút nó khỏi pool.
Thông thường thì mọi người cần phải truy cập vào Curve Finance để rút tiền của mình thay vì swap ở đâu đó nhưng người dùng trên lại không làm thế mà lại mang token 3CRV của mình đi bán thông qua KyberSwap. Router của KyberSwap đã tìm ra được một pool thanh khoản chết trên trên Uniswap với chỉ khoảng 2 USDC thanh khoản có sẵn sau đó bán $2M 3CRV để đổi lấy 0.054 USDC rồi tiếp tục swap sang 0.05 USDT để trả lại cho người dùng.
Một MEV bot đã phát hiện ra sự bất thường của giao dịch trên và cung cấp thanh khoản 1.4 USDC vào pool trên Uniswap sau đó rút về $2M 3CRV. Phí mà MEV bot đã trả cho mạng lưới là 23.7 ETH, tương đương $39K ở thời điểm đó để chắc chắn giao dịch được xảy ra.
Tấn công Flash Loan
Thuật ngữ Flash Loan được ra đời vào năm 2020 bởi AAVE là một tính năng cho phép người dùng có thể vay tiền không cần thế chấp nhưng phải trả khoản tiền đã vay trong cùng một Block giao dịch. Tính năng này cho phép người đi vay có thể kiếm lợi nhuận nhanh bằng các giao dịch chênh lệch giá hoặc Yield Farming trong tích tắc và người cho vay cũng có thể kiếm được một khoản phí lớn hơn.
Các nền tảng Lending & Borrowing khác cũng nhận thấy được tiềm năng của tính năng này nên đã học hỏi và phát triển để tích hợp vào sản phẩm của mình. Tuy nhiên những vấn đề bảo mật cũng bắt đầu phát sinh từ đây khi họ không có một sự audit kỹ càng cho sản phẩm Flash Loan của mình.
Các vụ tấn công Flash Loan thường xảy ra dựa trên những lỗi thường thấy trong giao thức là:
- Flash Loan Slippage Attack
- Flash Loan Price Oracle Attack
- Flash Loan Swap Logic Exploit
- Flash Loan Reentrancy Attack
Tấn công Front-ends
Tấn công Front-ends là một hình thức mà các hacker lợi dụng các lỗ hỏng trong giao diện người dùng trên website của các dự án để cài cắm vào đó các mã độc. Người dùng khi nhấn vào các mã độc này sẽ bị chuyển hướng đến một trang web lừa đảo hoặc phải ký các giao dịch độc hại trên ví Metamask.
Hình thức tấn công này xả ra khá thường xuyên trong thị trường DeFi khi trung bình mỗi tháng lại có một vụ tấn công xảy ra:
- Balancer Front-ends: Vụ tấn công xảy ra vào ngày 19/9/2023 và hacker đã đánh cắp tổng cộng $238K từ người dùng.
- Galxe Front-ends: Vụ tấn công này xảy ra vào 6/10/2023 và tổng cộng hơn $100K thiệt hại đã xảy ra, kẻ tấn công Galxe sử dụng cùng một địa chỉ ví với vụ của Balancer.
- Velo Front-ends: 2 dự án cùng một đội ngũ phát triển là Veldrome và Aerodrome đã cùng bị tấn công Front-ends vào ngày 29/11/2023 sau đó lại cùng bị tấn công một lần nữa vào 2/12/2023 với số tiền thiệt hại chưa được thống kê.
Làm Gì Khi Giao Thức DeFi Mình Từng Sử Dụng Bị Hack?
Xác định giao thức bị tấn công dưới hình thức nào
Như đã đề cập ở trên thì có rất nhiều phương thức khác nhau để tấn công một giao thức DeFi, vì vậy để đưa ra được phương án giải quyết tốt nhất thì việc đầu tiên mà mọi người cần làm đó chính là xác định phương thức bị mà dự án bị tấn công.
Ngoài việc xác định giao thức bị tấn công dưới hình thức nào thì mọi người cũng cần phải xác định là liquidity pool của mình cung cấp thanh khoản có phải là một trong những pool bị tấn công hay không.
Những hành động cần thiết
Nếu mọi người thường xuyên tham gia cung cấp thanh khoản trong DeFi thông qua Yield Farming hoặc gửi tiền vào trong các giao thức Lending & Borrowing thì những vụ tấn công Front-ends hay Front running sẽ không gây ra bất kỳ thiệt hại nào. Việc mọi người cần làm ở thời điểm này là giữ nguyên tài sản và không tương tác với giao thức cho đến khi có thông tin là việc sử dụng đã an toàn trở lại.
Đối với các hình thức tấn công còn lại thì mọi người cần phải ngay lập tức rút tài sản của mình khỏi giao thức nếu như liquidity pool của tài sản đang gửi không bị ảnh hưởng. Để có thể rút tiền một cách trơn tru thì mọi người cần phải điều chỉnh phí gas của mình lên gấp nhiều lần so với thời điểm đó.
Còn nếu tài sản của mọi người nằm trong các liquidity pool bị ảnh hưởng thì mọi người cần phải thử rút tài sản nếu có thể thông qua giao dịch chính của nền tảng hoặc thông qua smartcontract (rút qua smartcontract sẽ cần phải quy đổi dưới nhiều đơn vị tính khác nhau nên mọi người thể nhờ đến sự hỗ trợ của các AI như ChatGPT để quy đổi). Nếu đã thử mọi cách nhưng không thể rút được tiền thì mọi người cần liên hệ ngay với team dự án thông qua Discord để có thể nhận được sự hỗ trợ.
Phòng bệnh hơn chữa bệnh
Câu nói phòng bệnh hơn chữa bệnh không chỉ đúng trong y học mà nó còn đúng trong cả lúc mọi người tham gia skin in the game trong thị trường DeFi. Việc phòng bị sẽ giúp mọi người có thể tránh khỏi việc bị các hacker nhòm ngó tài sản của mình với một số phương pháp như sau:
- Không approve quá số tiền sử dụng: Thông thường thì trước khi nạp tài sản vào một giao thức bất kỳ thì mọi người sẽ phải trải qua một thao tác trao quyền sử dụng tài sản. Ở mặc định thì thường mọi người trao quyền sử dụng không giới hạn token đó trong ví của mình, chính vì vậy nên nếu các smartcontract bị tấn công thì hacker có thể dễ dàng rút tiền trong ví của nạn nhân.
- Chia nhỏ khối lượng giao dịch: Nếu mọi người giao dịch một số tiền vài trăm tới vài nghìn đô trong một pool thanh khoản hàng trăm tới hàng triệu đô thì không có vấn đề gì xảy ra, tuy nhiên nếu mọi người giao dịch số tiền từ vài trăm ngàn đến cả triệu đô thì thì trượt giá sẽ rất cao và MEV bot sẽ lợi dụng nó để tấn công một cách dễ dàng. Do đó việc chia nhỏ một giao dịch ban đầu ra thành nhiều giao dịch sẽ giúp mọi người tránh được Front running.
- Cẩn thận khi ký một giao dịch: Metamask cũng có những cảnh báo đặc biệt cho các giao dịch đáng ngờ, vì vậy trước khi ký một giao dịch bất kỳ thì mọi người nên đọc qua nội dung của giao dịch đó.
- Chia nhỏ tài sản: Chia nhỏ tài sản sẽ nằm ở 2 cấp độ khác nhau là ví và giao thức. Đầu tiên mọi người cần phân chia tài sản lớn nhỏ theo từng ví tuỳ theo cấp độ rủi ro, sau đó là phân bổ tài sản ra nhiều giao thức khác nhau với cùng một mục đích sử dụng.
Tổng Kết
Trên đây là những hình thức tấn công phổ biến nhất hiện nay trong thị trường DeFi, Hak Research hy vọng rằng thông qua bài viết này mọi người đã biết rằng là mình nên làm gì khi giao thức DeFi mình từng sử dụng bị hack.
💁 Disclaimer: Tất cả bài viết của Hak Research được cung cấp với mục tiêu là chia sẻ kiến thức và không được xem là lời khuyên đầu tư.
- Hướng Dẫn Chạy Node Spheron - October 8, 2024
- Hướng Dẫn Chạy Node 0G Labs (ZeroGravity) - September 2, 2024
- Hướng Dẫn Chạy Node Nillion - August 30, 2024