Hiểu biết sâu sắc về logic cơ bản của các cuộc tấn công Khoản vay nhanh

Bài viết này được dịch máy
Xem bản gốc
Đi sâu vào mã nguồn của Khoản vay nhanh để hiểu Khoản vay nhanh là gì và tấn công Khoản vay nhanh.

Khách mời chia sẻ: Frog, Nhà nghiên cứu bảo mật chuỗi khối Numen

Sắp xếp: Xiaohu

Chỉnh sửa: Chen Yi

Trong bài viết trước của chúng tôi, chúng tôi chủ yếu giới thiệu cuộc tấn công Khoản vay nhanh vào Euler Finance, một thỏa thuận cho vay DeFi hàng đầu. Trong bài viết này, chúng ta sẽ tiến thêm một bước nữa và đi sâu vào mã nguồn của Khoản vay nhanh để hiểu thế nào là Khoản vay nhanh và các cuộc tấn công Khoản vay nhanh.

01 TL;DR

Như trong bài viết trước của chúng tôi ( “Ngày tận thế của giông bão: Tài chính Euler tái xuất hiện trước và sau khi bị tấn công ”), Khoản vay nhanh có các từ khóa sau:

1. Cho vay không cần tài sản đảm bảo

2. Cho vay, sử dụng vốn và trả nợ “đồng loạt”

Vì vậy, với số tiền lớn không được thế chấp, tin tặc có thể:

1. Thao túng giá, phá lệnh, giật lệnh

2. Nhân rộng các lỗ hổng hiện có

02 Khoản vay nhanh là gì

Khoản vay nhanh nhanh là một sản phẩm sáng tạo của tài chính phi tập trung (DeFi), cho phép người dùng vay bất kỳ lượng tài sản nào trong nhóm giao thức mà không cần cung cấp bất kỳ tài sản thế chấp nào, miễn là chúng nằm trong cùng một khối giao dịch (một khu vực) để trả lại tiền gốc và tiền lãi. Ưu điểm của Khoản vay nhanh là nó cho phép người dùng tận dụng các cơ hội kinh doanh chênh lệch giá trên thị trường để đạt được các hoạt động có chi phí thấp, năng suất cao. Rủi ro của Khoản vay nhanh là nếu người dùng không hoàn trả khoản vay trong thời gian quy định, giao dịch sẽ bị thu hồi và người dùng sẽ mất phí giao dịch và tiền lãi.

1 Các nền tảng Khoản vay nhanh phổ biến

Khi nói đến Khoản vay nhanh, bạn có thể nghĩ ngay đến AAVE, công ty đã phát minh và lãnh đạo Khoản vay nhanh. Do đặc điểm rủi ro thấp của quỹ Khoản vay nhanh, một số lượng lớn các nền tảng Khoản vay nhanh đã xuất hiện ngay lập tức do nhu cầu cao. Các nền tảng hàng đầu cung cấp dịch vụ Khoản vay nhanh bao gồm:

- Uniswap: Một nền tảng giao dịch phi tập trung cung cấp dịch vụ Khoản vay nhanh. Người dùng có thể mượn bất kỳ mã thông báo được hỗ trợ nào thông qua Uniswap và thực hiện các hoạt động như trao đổi, tạo thị trường và chênh lệch giá trong cùng một giao dịch.

- Hợp chất: Một giao thức cho vay mã nguồn mở hỗ trợ cho vay và mượn nhiều tài sản kỹ thuật số, đồng thời cung cấp dịch vụ Khoản vay nhanh. Người dùng có thể mượn bất kỳ tài sản có sẵn nào thông qua Compound và thực hiện các hoạt động như trả nợ, thế chấp và vay trong cùng một giao dịch.

- MakerDAO: Nền tảng Stablecoin định phi tập trung hỗ trợ phát hành và giao dịch Stablecoin DAI và cung cấp dịch vụ Khoản vay nhanh. Người dùng có thể vay DAI thông qua MakerDAO và thực hiện các hoạt động như hoàn trả, trao đổi và hoàn trả các khoản phạt thanh lý trong cùng một giao dịch.

- dYdX: Sàn giao dịch phi tập trung cung cấp dịch vụ Khoản vay nhanh và thị trường cho vay mở. Người dùng có thể mượn bất kỳ tài sản có sẵn nào thông qua dYdX và thực hiện trả nợ, giao dịch, đòn bẩy, v.v. trong cùng một giao dịch.

Ngoài ra, những cái phổ biến là Nuo, Fulcrum, bZx, DeFi Money Market, ETHLend, v.v.

Tất cả các nền tảng Khoản vay nhanh này đều cung cấp các dịch vụ cho vay ngay lập tức và không có bảo đảm về mặt chức năng, và sự khác biệt về chi tiết được phản ánh nhiều hơn trong tính bảo mật, trải nghiệm người dùng và phí xử lý của các nền tảng.

2 Khoản vay nhanh Uniswap

Uniswap là một trong những sàn giao dịch phi tập trung phổ biến nhất trong DeFi. Cách để người dùng phổ thông truy cập Uniswap là giao diện web. Ví dụ: hình bên dưới hiển thị trao đổi ETH-DAI. Chúng tôi gọi một trao đổi giữa hai mã thông báo là một cặp giao dịch.

Nhưng ngoài việc sử dụng website để tương tác, chúng ta còn có thể gọi trực tiếp hợp đồng thông minh để tương tác. Khi bạn muốn mua mã thông báo trên nền tảng của họ:

  • Trước tiên cần gửi mã thông báo để thanh toán
  • Sau đó gọi hàm swap() , hàm này sẽ gửi mã thông báo bạn vừa mua.

Uniswap V2 có một tính năng mới gọi là Flashswap, là tên của Uniswap cho Khoản vay nhanh. Chức năng này được tích hợp trong hàm swap() thông thường.

Logic hoạt động Khoản vay nhanh phổ biến có bốn bước, phải được hoàn thành trong cùng một khối:

1. Gửi yêu cầu giao dịch và tải hợp đồng thông minh lên

2. Gửi mã thông báo đến giao thức

3. Hợp đồng thông minh được tải lên tương tác với các token

4. Trả lại mã thông báo cho giao thức

Vì chế độ chức năng hoán đổi () của Uniswap là chuyển tài khoản trước rồi mới xác minh tài khoản, nên trong bước thứ hai, trước tiên bạn có thể cho mượn các mã thông báo cần thiết, sau đó ở bước thứ ba, hãy gọi hàm uniswapV2Call() trong hợp đồng của riêng bạn để thực hiện các thao tác khác. Bốn bước rồi trả lại mã thông báo đã mượn để hoàn tất dịch vụ Khoản vay nhanh.

Trong mã, phần trong hộp màu đỏ là hợp đồng được triển khai trước bởi người dùng. Để hoàn thành tất cả các thao tác trên trong cùng một khối, người dùng phải xác định trước cách sử dụng số tiền đã vay kèm theo hợp đồng, xét cho cùng, tốc độ của thao tác thủ công không nhanh bằng tốc độ thực thi mã.

Và ở 2 dòng phía trên ô đỏ ta thấy có 2 hàm truyền. Như nhận xét đã nói, đây là một "chuyển khoản lạc quan" - tức là chuyển khoản mà không cần kiểm tra xem nó có được thanh toán hay không. Ở phần cuối, sau khi gọi hợp đồng người dùng, hàm swap() sẽ từ từ yêu cầu số tiền thanh toán.

Bất kể dịch vụ Khoản vay nhanh có được sử dụng hay không, Uniswap sẽ tính phí xử lý lên tới 0,3% cho mỗi giao dịch.

Khoản vay nhanh 3 AAVE

Nhìn chung, chức năng Flashloan trong hợp đồng LendingPool của AAVE cung cấp chức năng Khoản vay nhanh tương tự. Bằng cách gọi hàm Flashloan, các tham số như số tiền cho vay và địa chỉ cho vay loại mã thông báo sẽ được chuyển vào. Sau khi mã thông báo được chuyển đến địa chỉ nhận đến trong quá trình thực thi, chức năng execOperation của địa chỉ đến sẽ được gọi, tại thời điểm này, các hoạt động khác có thể được hoàn thành trong hàm execOperation.

AAVE và Uniswap có một chút khác biệt trong quy trình hoàn trả. Việc hoàn trả Khoản vay nhanh AAVE yêu cầu người vay ủy quyền cho hợp đồng LendingPool. Sau khi quá trình Khoản vay nhanh hoàn tất, hợp đồng AAVE sẽ chuyển lại số tiền đã vay và phí xử lý từ địa chỉ vay. Trong Uniswap, người dùng gọi safeTransfer để thực hiện chuyển thủ công.

Điều này có thể đảm bảo tỷ lệ thành công cao hơn, nhưng có thể có rủi ro nhất định về sơ hở hợp đồng.

03 Tấn công Khoản vay nhanh

Các cuộc thảo luận về các cuộc tấn công Khoản vay nhanh là không ngừng. Một số người nói rằng cuộc tấn công Khoản vay nhanh hoàn toàn là một cách gọi sai, bởi vì nó không sử dụng các sơ hở của Khoản vay nhanh mà sử dụng một lượng lớn tiền để khám phá trước các sơ hở hiện có. Ví dụ: sử dụng Khoản vay nhanh với số tiền lớn với chi phí thấp, bạn có thể:

1. Thao túng giá bằng cách sử dụng số tiền lớn Khoản vay nhanh Có vấn đề trong logic mua lại giá ở một số dự án.

2. Một số dự án sẽ tạo ra phần thưởng ngay lập tức trong quá trình thế chấp hoặc các quy trình khác và sử dụng Khoản vay nhanh để nhận phần thưởng lớn.

3. Có những sơ hở logic khác trong dự án và số tiền lớn Khoản vay nhanh được sử dụng để mở rộng không gian chênh lệch giá.

Trước tiên, hãy phân tích trường hợp, sau đó thảo luận về lỗ hổng nào dễ bị tấn công cho Khoản vay nhanh.

1 sự kiện tấn công DFX

Nói một cách đơn giản, cuộc tấn công vào DFX được chia thành ba bước:

1. Hoàn thành Khoản vay nhanh USDC và XIDR từ UniswapV3.

2. Gọi chức năng flash từ hợp đồng DFX để cho UCDC và XIDR vay, sau đó gọi chức năng gửi tiền để thế chấp, khi thế chấp, bạn có thể thấy rằng tiền do hacker cho vay được thế chấp trở lại hợp đồng DFX.

3. Do người dùng đã chuyển mã thông báo trở lại hợp đồng DFX khi thế chấp, xác minh số dư trước và sau khi khoản vay được thông qua và không cần phải trả lại Khoản vay nhanh đã cho vay. Tuy nhiên, hacker có hoạt động thế chấp và khai thác chức năng có thể được gọi vào thời điểm này.Sau khi thế chấp được rút lại.

2 Phân tích các lỗ hổng phổ biến

Hãy xem xét các lỗ hổng trong đoạn mã dưới đây.

1. Nhận giá theo số lượng mã thông báo:

Mã này đọc trực tiếp số lượng mã thông báo trong hợp đồng cặp của sàn giao dịch phi tập trung và sử dụng thương số của hai mã thông báo làm giá của mã thông báo. Đối với những người thiếu kinh nghiệm trong việc kiểm tra mã, thoạt nhìn có vẻ như không có gì sai khi viết theo cách này. Nhưng khi bạn xem xét thực tế rằng Uniswap hỗ trợ Khoản vay nhanh, mọi thứ trở nên thú vị.

Nếu không có Khoản vay nhanh, số lượng của hai mã thông báo phải giảm đi một và tăng lên bằng mã kia. Nhưng với Khoản vay nhanh, rất có thể một mã thông báo sẽ giảm và mã thông báo kia sẽ không tăng. Nếu số tiền của Khoản vay nhanh không lớn, sự khác biệt trong hai trường hợp là không lớn. Nhưng nếu một Khoản vay nhanh khổng lồ được cho vay, chênh lệch giá sẽ được mở rộng ngay lập tức, tạo thành một không gian chênh lệch giá khổng lồ.

Những người không có kinh nghiệm kiểm tra mã rất khó tìm ra những sơ hở như vậy, phải mất một thời gian dài trau dồi và tích lũy trong lĩnh vực bảo mật để hình thành một hệ thống kiểm tra mã trưởng thành.

2. Phân bổ phần thưởng:

Trong mã này, hợp đồng sẽ ngay lập tức trả lại phần thưởng cho địa chỉ của người dùng theo số tiền thế chấp. Chúng tôi đã đề cập đến vấn đề này ở đây, và nó tương đối dễ dàng để suy nghĩ. Nếu không có sự chậm trễ trong việc phân phối phần thưởng, tiền Khoản vay nhanh chỉ có thể được thưởng trong chốc lát sau khi được cam kết trong hợp đồng, đây chắc chắn là một lỗ hổng chênh lệch giá lớn.

3 biện pháp phòng ngừa

Trong khoảng thời gian DeFi chưa trưởng thành, các cuộc tấn công Khoản vay nhanh sẽ tiếp tục diễn ra, trở thành thanh kiếm Damocles treo lơ lửng trên đầu mọi người. Các cuộc tấn công Khoản vay nhanh khác nhau có phạm vi tác động khác nhau, một số có thể khiến giao thức DeFi dường như không liên quan bị ảnh hưởng và một số có thể ảnh hưởng đến nhiều người dùng. Điều chúng ta có thể làm tốt là thực hiện các biện pháp phòng ngừa và chờ DeFi tiếp tục trưởng thành:

1. Chức năng khai thác cam kết được tách ra khỏi hợp đồng cho vay, không chuyển các mã thông báo được thế chấp bởi người dùng sang hợp đồng cho vay hoặc ghi lại các biến để tính toán.

2. Thêm một khóa tái nhập đặc biệt khi vay và không được thế chấp khi vay.

3. Dự án áp dụng hình thức đa nguồn dữ liệu khi lấy giá, sai số về giá giảm sau khi so sánh dữ liệu.

4. Khi loại bỏ Thanh khoản, LP phải được hủy trước khi thực hiện các cuộc gọi khác.

5. Việc tạo phần thưởng phải ở dạng khoảng thời gian chặn hoặc chênh lệch thời gian, điều này có thể tránh được các cuộc tấn công Khoản vay nhanh một cách hiệu quả.

6. Vấn đề logic của dự án là tình huống phổ biến nhất khiến tin tặc sử dụng Khoản vay nhanh để phóng đại chênh lệch giá. Do đó, trước khi dự án trực tuyến, các cuộc kiểm tra và kiểm tra bảo mật phải được thực hiện để đảm bảo tính bảo mật của dự án.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận