Các khoản vay flash (flash loan) đã trở thành trung tâm gây chú ý gần đây. Hai hacker đã sử dụng các khoản vay flash để tấn công giao thức giao dịch margin bZx. Giao dịch đầu tiên xảy ra trong cuộc tấn công trị giá 350,000 đô la và bản sao tương tự với 600,000 đô la.
Dù tốt hay xấu, vẫn phải thừa nhận những cuộc tấn công này ở một khía cạnh nào đó rất ‘vi diệu’. Trong mỗi lần xảy ra, kẻ tấn công không có xu dính túi đã ngay lập tức vay hàng trăm ngàn đô la ETH, rồi đưa lên một chuỗi các giao thức on-chain dễ bị đột kích, trích xuất hàng trăm ngàn đô la tài sản bị đánh cắp và sau đó trả lại các khoản vay ETH khổng lồ. Tất cả điều này xảy ra ngay lập tức, chỉ trong một giao dịch ETH duy nhất.
Không ai biết danh tính của những kẻ tấn công này hoặc chúng đến từ đâu. Cả hai đều bắt đầu từ tay trắng và cuỗm đi hàng trăm ngàn đô la, không để lại bất kỳ dấu vết nào.
Trước những cuộc tấn công này, Haseeb Qureshi – đối tác quản lý tại quỹ đầu tư mạo hiểm xuyên biên giới Dragonfly Capital đã suy nghĩ rất nhiều về các khoản vay flash và ý nghĩa của chúng đối với sự an toàn của DeFi.
Tóm lại, anh tin rằng các khoản vay flash là một mối đe dọa an ninh lớn. Nhưng các khoản vay flash sẽ không biến mất và chúng ta cần suy nghĩ cẩn thận về tác động của chúng đối với bảo mật DeFi trong tương lai.
Khoản vay flash là gì?
Khái niệm về khoản vay flash lần đầu tiên được Marble Protocol đưa ra vào năm 2018. Marble tự quảng cáo là “ngân hàng hợp đồng thông minh” và sản phẩm của họ là cải tiến DeFi đơn giản nhưng tuyệt vời: cho vay không rủi ro thông qua hợp đồng thông minh.
Làm thế nào một khoản vay có thể không rủi ro?
Người cho vay truyền thống có 2 hình thức rủi ro. Đầu tiên là rủi ro mặc định: Nếu người đi vay hết tiền, điều đó rõ ràng là rất tệ. Nhưng rủi ro thứ hai đối với người cho vay là rủi ro thanh khoản kém: Nếu người cho vay cho vay quá nhiều tài sản không đúng lúc hoặc không nhận được các khoản hoàn trả kịp thời, người cho vay có thể bị thanh lý bất ngờ và không thể đáp ứng các nghĩa vụ của mình.
Các khoản vay flash giảm thiểu cả 2 rủi ro đó. Một khoản vay flash về cơ bản hoạt động như thế này: Tôi sẽ cho bạn vay nhiều tiền như bạn muốn cho giao dịch đơn lẻ này. Nhưng vào cuối giao dịch, bạn phải trả cho tôi ít nhất là bằng số tiền tôi cho bạn vay. Nếu bạn không thể làm điều đó, tôi sẽ tự động khôi phục giao dịch của bạn! (Đúng, hợp đồng thông minh có thể làm điều đó.)
Nói một cách đơn giản, khoản vay flash của bạn là nguyên tử. Nếu bạn không trả lại khoản vay, toàn bộ sự việc sẽ được hoàn nguyên như thể khoản vay chưa bao giờ xảy ra.
Những điều tương tự như thế này chỉ có thể tồn tại trên blockchain. Bạn không thể thực hiện các khoản vay flash trên BitMEX bởi lẽ các nền tảng hợp đồng thông minh xử lý từng giao dịch, do đó, mọi thứ xảy ra trong giao dịch đều được thực hiện theo kiểu thanh toán từng đợt. Như vậy, giao dịch của bạn có “thời gian đóng băng” trong khi đang thực hiện. Mặt khác, một sàn giao dịch tập trung có thể có các điều kiện sao cho lệnh của bạn không thể thực hiện được. Trên blockchain, bạn được đảm bảo rằng tất cả mã chạy tiếp nối dòng này sang dòng khác.
Mã khai thác cho vay flash thông qua Remco Bloemen
Về mặt kinh tế, người cho vay truyền thống được bù đắp ở 2 mặt: rủi ro họ đang gặp phải (rủi ro mặc định và rủi ro thanh khoản) và chi phí cơ hội của số vốn họ đang cho vay (ví dụ: nếu tôi có thể nhận được 2% tiền lãi ở nơi khác trên số vốn đó, người vay phải trả cho tôi nhiều hơn 2% không có rủi ro).
Khoản vay flash không như vậy. Nó không có rủi ro và không có chi phí cơ hội! Điều này là do người vay “đóng băng thời gian” trong lúc vay flash, vì vậy trong mắt bất kỳ ai khác, vốn của hệ thống không bao giờ gặp rủi ro và không bao giờ bị đóng băng, do đó nó không thể kiếm được tiền lãi ở nơi khác (không có lãi chi phí cơ hội).
Như vậy có nghĩa là không có chi phí khi trở thành người cho vay flash. Điều này là cực kỳ phản trực quan. Vì vậy, chi phí cho một khoản vay flash ở mức cân bằng là bao nhiêu (tức là khi cân bằng cung cầu)?
Về cơ bản, các khoản vay flash nên miễn phí. Hoặc, đúng hơn, nên có một khoản phí đủ nhỏ để khấu hao chi phí bao gồm 3 dòng mã bổ sung để làm cho một tài sản có thể cho vay nhanh.
Các khoản vay flash không thể tính lãi theo nghĩa truyền thống, vì khoản vay này hoạt động trong thời gian bằng 0 (mọi APR * 0 = 0). Và tất nhiên, nếu những người cho vay flash tính lãi suất cao hơn, họ sẽ nhanh chóng bị các nhóm cho vay flash khác tính lãi suất thấp hơn đánh bại.
Cho vay flash làm cho vốn trở thành một loại hàng hóa thực sự. Cuộc đua xuống đáy này chắc chắn dẫn đến phí bằng không hoặc phí rất ít, chỉ mang tính tượng trưng. Sàn giao dịch dYdX hiện thu phí bằng 0 khi cho vay flash. Mặt khác, AAVE tính phí 0,09% trên số tiền gốc cho vay flash. Tác giả nghi ngờ điều này không bền vững và thực tế là cộng đồng của họ đã kêu gọi giảm phí bằng 0 (Lưu ý rằng cả hai cuộc tấn công nêu trên đều sử dụng AAVE làm pool cho vay flash).
Các cuộc tấn công flash có ý nghĩa bảo mật lớn
Những gì các khoản vay flash thực sự mang lại cho chúng ta có lẽ chính là các cuộc tấn công flash, hay nói cách khác là tấn công thâm dụng vốn được tài trợ bởi các khoản vay flash. Tác giả đã rút ra kết luận này trong các vụ hack bZx gần đây và anh nghi ngờ rằng đó chỉ mới là màn dạo đầu.
Có 2 lý do chính tại sao các khoản vay flash đặc biệt hấp dẫn đối với những kẻ tấn công:
- Nhiều cuộc tấn công đòi hỏi phải có rất nhiều vốn trước đó (chẳng hạn như các cuộc tấn công thao túng oracle). Nếu bạn kiếm được ROI dương trên 10 triệu đô la ETH, thì đó có lẽ không phải là chênh lệch – bạn có thể sẽ gặp phải một số điều vô nghĩa.
- Cho vay flash giảm thiểu ‘vết nhơ’ cho kẻ tấn công. Nếu tôi có ý tưởng về cách thao túng oracle bằng 10 triệu đô la ETH, ngay cả khi tôi sở hữu số ETH đó, tôi có thể không muốn mạo hiểm với vốn tự có của mình. ETH của tôi sẽ bị vô hiệu, các sàn giao dịch có thể từ chối tiền gửi của tôi và thật khó để rửa tiền. Rất rủi ro! Nhưng nếu tôi sử dụng khoản vay flash với giá 10 triệu đô la thì có ai biết được không? Pool tài sản thế chấp của dYdX sẽ không bị coi là ‘ô uế’ chỉ vì đó là nơi mà tôi đã vay tiền. ‘Vết nhơ’ trên dYdX sẽ dần bị lãng quên.
Sẽ không có chuyện các sàn giao dịch bị đưa vào danh sách đen trên mô hình bảo mật blockchain ngày nay bởi vì làm như vậy thì khá tập trung. Nhưng kiểu tính toán đằng sau các cuộc tấn công này sẽ được thông báo rộng rãi.
Trong white paper Bitcoin, Satoshi nổi tiếng tuyên bố rằng Bitcoin được bảo vệ không bị tấn công vì:
“Kẻ tấn công phải tìm ra lợi nhuận cao hơn khi chơi theo luật … hơn là làm suy yếu hệ thống và tính hợp lệ của tài sản của anh ta”.
Với các khoản vay flash, kẻ tấn công không cần phải bỏ tiền ra mà vẫn thu được lợi ích. Các khoản vay flash thay đổi đáng kể rủi ro cho kẻ tấn công.
Haseeb Qureshi
Và hãy nhớ rằng, các khoản vay flash có thể chồng lên nhau! Tùy thuộc vào giới hạn gas, bạn có thể tổng hợp tất cả các nhóm có thể vay flash trong một giao dịch (lên tới 50 triệu đô la) và mang tất cả số vốn đó đổ vào một hợp đồng dễ bị đột kích. Vâng, chính xác là một hố tiền on-chain trị giá 50 triệu đô la mà bất cứ ai cũng muốn đâm đầu vào, miễn là tiền đổ vào túi của họ. Thật đáng sợ.
Tất cả những điều này có ý nghĩa gì trong dài hạn?
Haseeb Qureshi tin rằng các cuộc tấn công bZx đã thay đổi mọi thứ.
Đây sẽ không phải là cuộc tấn công flash cuối cùng. Cuộc tấn công bZx thứ hai là bản sao của lần đầu tiên và anh nghi ngờ nó sẽ tạo ra một làn sóng tấn công trong những tháng tới. Giờ đây, hàng ngàn thanh thiếu niên thông minh đến từ những nơi xa xôi nhất trên thế giới đang tọc mạch vào DeFi và cố gắng khám phá liệu có cách nào để họ có thể thực hiện một cuộc tấn công flash hay không. Chỉ cần khai thác một lỗ hổng, họ cũng có thể kiếm được vài trăm nghìn đô la – là một khoản tiền giúp đổi đời ở hầu hết các nơi trên thế giới.
Đối với các giao thức, tấn công flash có nghĩa là mô hình hiểm họa đang dần thay đổi. Bị tấn công flash sau vụ hack bZx cũng gây bối rối như bị tấn công re-entrancy sau vụ hack DAO: bạn sẽ trở thành trò cười của thế giới tiền điện tử. Lẽ ra bạn phải đề phòng điều đó trước.
Cuối cùng, những tình huống này khiến tác giả gợi nhớ về một khái niệm cũ trong lĩnh vực tiền điện tử: giá trị miner có thể kai thác được (miner-extractable value – MEV). MEV là tổng giá trị mà miner có thể nhận được từ hệ thống blockchain, bao gồm phần thưởng khối và phí. Ngoài ra, còn có các giá trị khai thác bằng những hình thức mưu mẹo như sắp xếp lại các giao dịch hoặc chèn các giao dịch giả mạo vào một khối.
Tóm lại, bạn nên nhớ rằng tất cả các cuộc tấn công flash này là giao dịch đơn lẻ trong mempool tạo ra hàng tấn tiền. Ví dụ, cuộc tấn công bZx thứ hai mang lại lợi nhuận 645.đô la ETH trong chỉ một giao dịch. Nếu bạn là miner và bạn có thể bắt đầu khai thác một khối mới, có khi nào sau khi quan sát các giao dịch khối trước đó và nói với chính bạn: “Tại sao tôi lại cố gắng khai thác một khối mới với giá ~500 đô la, trong khi khối cuối cùng đó chứa 645K đô la lợi nhuận trong đó??”
Nhiều người sẽ ước họ có thể quay ngược thời gian và cố gắng viết lại lịch sử để thay vào trở thành kẻ tấn công flash. Bởi lẽ, chỉ riêng giao dịch đó đã có giá trị hơn 4 giờ khai thác các khối ETH một cách trung thực!
Điều này tương tự với việc có một siêu khối đặc biệt chứa 1.000 lần phần thưởng khối thông thường – đúng như bạn mong đợi. Kết quả hợp lý của một siêu khối như vậy là khiến miner cạnh tranh để cô lập chuỗi và đánh cắp khối đó cho chính họ.
Ở trạng thái cân bằng, tất cả các cuộc tấn công flash nên được trích xuất bởi miner. (Lưu ý rằng cuối cùng họ sẽ đánh cắp tất cả các giao dịch chênh lệch giá on-chain và thanh lý). Trớ trêu thay, điều này sẽ đóng vai trò ngăn chặn các cuộc tấn công flash, vì nó sẽ khiến những kẻ tấn công không thể kiếm tiền từ những lỗ hổng này. Có lẽ cuối cùng miner sẽ bắt đầu thu hút mã tấn công thông qua các kênh riêng tư và trả cho kẻ tấn công phí tìm kiếm. Về mặt kỹ thuật, điều này có thể được thực hiện trên cơ sở không cần nhiều sự tin tưởng bằng cách sử dụng zero-knowledge proofs. (Thật kỳ lạ phải không?)
Nhưng bây giờ, khoa học viễn tưởng khá hay. Miner rõ ràng không làm điều này ngày hôm nay.
Tại sao họ không làm vậy?
Có vô số lý do. Chẳng hạn như trên Ethereum Virtual Machine. Rất rủi ro vì có thể xảy ra lỗi dẫn đến mất tiền hoặc khối mồ côi, gây ra một vụ náo động. Từ đó, pool khai thác lừa đảo có thể gặp khủng hoảng PR và bị coi là “kẻ thù của Ethereum”. Như vây, miner có thể sẽ mất nhiều doanh thu và các khối mồ côi hơn họ kiếm được bằng cách cố gắng làm điều này.
Điều đó đúng vào ngày hôm nay nhưng chưa chắc đúng trong tương lai.
Từ đó, càng có thêm động lực để Ethereum nhanh chóng chuyển sang Ethereum 2.0. DeFi trên Ethereum mặc dù tuyệt vời và hấp dẫn nhưng có thể bị phá vỡ hoàn toàn và không thể phục hồi. DeFi không ổn định trên chuỗi PoW, bởi lẽ tất cả các giao dịch có giá trị cao đều cần miner tái cấp kinh phí (còn được gọi là các cuộc tấn công của kẻ cướp thời gian – time bandit attack).
Để các hệ thống này hoạt động ở quy mô, cần đặt ra tính chất dứt khoát – miner không thể viết lại các khối xác nhận. Điều này sẽ bảo vệ các khối trước không cần cấp lại kinh phí. Thêm vào đó, nếu các giao thức DeFi tồn tại trên các shard Ethereum 2.0 riêng biệt, chúng sẽ không bị tấn công flash.
Theo ước tính, các cuộc tấn công flash cho chúng ta một lời nhắc nhở nhỏ nhưng hữu ích rằng nó vẫn chỉ mới ‘chớm nở’. Chúng ta vẫn còn lâu mới có kiến trúc bền vững để xây dựng hệ thống tài chính của tương lai.
Cho đến bây giờ, các khoản vay flash còn rất mới. Nhưng về lâu dài, tất cả tài sản trên Ethereum sẽ có vay flash. Tất cả các tài sản thế chấp do sàn giao dịch nắm giữ chẳng hạn như Uniswap có thể tất cả là ERC-20.
Ai mà biết được, nó chỉ có một vài dòng mã.
Dislaimer: Đây là thông tin cung cấp dưới dạng blog cá nhân, không phải thông tin tổng hợp hay lời khuyên đầu tư. Chúng tôi không chịu trách nhiệm về các quyết định đầu tư của bạn.
- Nền tảng cho vay Fulcrum dựa trên Ethereum đã mất 350.000 đô la do một lỗ hổng trong hợp đồng thông minh
- Các cuộc tấn công cho vay BZx có báo hiệu sự kết thúc của Defi không?