Từ sự trỗi dậy của DeFi vào năm 2019 đến khi trưởng thành dần dần vào năm 2024, các vấn đề về dữ liệu luôn là mối quan tâm cốt lõi của các nhà phát triển. Điều này là do hoạt động của DeFi phụ thuộc vào dữ liệu on-chain chính xác, theo thời gian thực và chất lượng dữ liệu ảnh hưởng trực tiếp đến tính bảo mật, hiệu quả và trải nghiệm người dùng của các giao thức. Dữ liệu là trung tâm để trao đổi giá trị và là nền tảng của các cơ chế tin cậy giao thức. Đối với các hợp đồng thông minh, dữ liệu hoạt động như các sự kiện đầu vào, nhưng bản thân các hợp đồng thông minh không thể chủ động xác minh tính xác thực của dữ liệu. Thay vào đó, chúng hoàn toàn phụ thuộc vào dữ liệu được cung cấp bởi các nguồn bên ngoài. Đặc điểm này có nghĩa là nếu dữ liệu đầu vào bị giả mạo hoặc không chính xác, hợp đồng thông minh sẽ thụ động chấp nhận nó, có khả năng dẫn đến rủi ro hệ thống. Do đó, việc đảm bảo tính phi tập trung, độ tin cậy và khả năng sử dụng của dữ liệu vẫn là một thách thức đang diễn ra. Những thách thức xuất phát từ hai vấn đề chính: thứ nhất, hầu hết dữ liệu được kiểm soát bởi các tổ chức hoặc nền tảng tập trung; Thứ hai, việc truy cập dữ liệu rất khó khăn vì việc duy trì độ tin cậy trên toàn bộ đường ống — từ nguồn đến kênh truyền đến đích cuối cùng — đặt ra những thách thức đáng kể.
Là cầu nối giữa tương tác dữ liệu trên chuỗi và ngoài chuỗi, các oracles thường trở thành mục tiêu chính của các cuộc tấn công. Một khi một oracle bị thao túng, kẻ tấn công có thể khai thác thông tin giá hoặc thị trường sai lệch để thực hiện các cuộc tấn công kinh tế quy mô lớn, như các cuộc tấn công thao tác oracle và flash loan xảy ra thường xuyên trong năm 2021 và 2022. Ngay cả vào năm 2024, mối đe dọa này vẫn tồn tại, như đã được nhấn mạnh bởi các sự cố gần đây liên quan đến UwU Lend và Banana Gun. Những sự kiện này tiếp tục nhắc chúng ta rằng chất lượng và bảo mật dữ liệu oracle quyết định thành công hay thất bại của các giao thức cá nhân và ảnh hưởng trực tiếp đến sự ổn định của toàn bộ hệ sinh thái DeFi.
Bài viết này sẽ tập trung vào việc áp dụng oracles trong Blockchain, các loại tấn công và phương pháp để ngăn chặn các thao tác gian lận thông thường của oracle. Mục tiêu là giáo dục độc giả về các khái niệm cơ bản và tầm quan trọng của oracles, nâng cao nhận thức về bảo mật và cung cấp các khuyến nghị thực tế cho các nhà phát triển về việc tích hợp oracles vào các hợp đồng thông minh một cách an toàn.
Một nguồn lực là một giao diện quan trọng giữa blockchain và thế giới bên ngoài. Nó chịu trách nhiệm nhập dữ liệu ngoại chuỗi vào blockchain, chẳng hạn như giá thị trường, thông tin thời tiết, hoặc kết quả sự kiện, cho phép hợp đồng thông minh truy cập thông tin bên ngoài. Với bản chất đóng cửa của blockchain, nguồn lực chơi một vai trò quan trọng trong các lĩnh vực như DeFi, thị trường dự đoán, bảo hiểm, và trò chơi. Ngoài việc giải quyết các hạn chế của blockchain, nguồn lực còn tạo điều kiện cho sự tương tác giữa hợp đồng thông minh và dữ liệu thế giới thực, mở rộng phạm vi ứng dụng của công nghệ blockchain. Tuy nhiên, nguồn lực cũng đối mặt với một số thách thức và điểm đau:
Sau khi hiểu định nghĩa cơ bản và vai trò của các nguồn thông tin, chúng ta sẽ tìm hiểu sơ lược về các loại nguồn thông tin, các trường hợp sử dụng của chúng, và các rủi ro về bảo mật mà chúng đối mặt.
Oracles có thể được phân loại chung thành hai mô hình triển khai: trung tâm và phi trung tâm. Oracles trung tâm như Oraclize thường dựa vào một nguồn dữ liệu duy nhất để cung cấp thông tin ngoại chuỗi. Chúng kết hợp các giải pháp phần cứng và phần mềm, tận dụng các công nghệ như TLSNotary và Android Proof để đảm bảo tính chính xác của dữ liệu. Những oracles này vượt trội về hiệu suất và hiệu năng ổn định. Tuy nhiên, sự phụ thuộc vào một nguồn tin cậy duy nhất làm suy yếu tính phi trung tâm của blockchain, gây ra điểm truy cập duy nhất và giới hạn khả năng mở rộng, đặt ra những thách thức về cả an ninh và khả năng mở rộng.
Ngược lại, các oracles phi tập trung như Chainlink ưu tiên an ninh hệ thống và tính minh bạch. Trong kiến trúc của Chainlink, việc thu thập dữ liệu và xác thực được thực hiện bởi nhiều nút độc lập, phân tán trên các bên tham gia khác nhau, giảm thiểu nguy cơ điểm hỏng đơn lẻ. Bằng việc phối hợp các hoạt động trên chuỗi và ngoài chuỗi, Chainlink đảm bảo tính đa dạng và đáng tin cậy của dữ liệu. Thiết kế phi tập trung này đặc biệt hiệu quả trong các ứng dụng tài chính, nâng cao khả năng chống lại các cuộc tấn công của oracles. Tuy nhiên, cách tiếp cận này liên quan đến sự đánh đổi về hiệu suất và chi phí, làm cho nó ít phù hợp hơn cho các trường hợp sử dụng tần suất thấp.
Tầm quan trọng của các oracles phi tập trung nằm ở việc giảm thiểu rủi ro của việc chi phối nguồn dữ liệu và ngăn chặn các lạm dụng tiềm năng từ một bên đáng tin cậy duy nhất. Phi tập trung đảm bảo rằng oracles không còn phụ thuộc vào một số ít nguồn dữ liệu mà thông qua nhiều nút phân tán để tăng cường an ninh và đáng tin cậy của dữ liệu. Tuy nhiên, oracles phi tập trung cũng đối mặt với những thách thức, như duy trì cơ chế động viên hiệu quả dài hạn và đảm bảo sự ổn định tổng thể của mạng oracle. Tiếp theo, chúng ta sẽ khám phá những rủi ro an ninh liên quan đến oracles phi tập trung và các giải pháp tiềm năng của chúng.
Trong các hoạt động Oracle, nguồn và phương pháp truyền dữ liệu trực tiếp ảnh hưởng đến tính bảo mật và đáng tin cậy của nó. Oracle thu thập dữ liệu từ hai loại nguồn: ngoài chuỗi và trên chuỗi. Nguồn gốc và phương pháp thu thập dữ liệu khác nhau giữa hai phương pháp này:
Oracles trên chuỗi và ngoài chuỗi
Lựa chọn giữa nguồn dữ liệu off-chain và on-chain phụ thuộc vào yêu cầu cụ thể của dự án và những ưu điểm và nhược điểm tự nhiên của mỗi phương pháp. Nhà phát triển phải đánh giá cẩn thận và giải quyết các rủi ro liên quan. Nhu cầu cân bằng này đã dẫn đến nghiên cứu liên tục về phương pháp xử lý dữ liệu an toàn và đáng tin cậy hơn. Các phần sau sẽ xem xét nguyên tắc hoạt động của các oracles và những lỗ hổng tiềm năng của chúng.
Phần này giới thiệu một kịch bản phát triển đơn giản nhằm giúp độc giả hiểu về các trường hợp sử dụng của oracles trong blockchain. Trong việc phát triển hợp đồng thông minh blockchain thực tế, có nhiều cách cho một hợp đồng thông minh để truy cập dữ liệu giá từ oracles. Các phương pháp phổ biến bao gồm việc gọi trực tiếp hợp đồng oracle hoặc sử dụng các công nghệ như Chainlink CCIP (Cross-Chain Interoperability Protocol). Những khác biệt chính giữa những phương pháp này là:
Ở đây, chúng tôi trình bày bằng cách sử dụng một cuộc gọi trực tiếp đến một hợp đồng oracle. Hãy tưởng tượng bạn là một nhà phát triển hợp đồng thông minh trong hệ sinh thái Ethereum và bạn cần lấy dữ liệu giá ETH / USD bằng cách sử dụng một oracle trong hợp đồng của mình. Đầu tiên, bạn sẽ định nghĩa một giao diện để kết nối với hợp đồng oracle và viết một hàm để lấy dữ liệu giá.
Ví dụ hợp đồng đơn giản này cho thấy cách PriceConsumer
hợp đồng truy xuất dữ liệu giá thời gian thực và sử dụng nó để ra quyết định. Điều này cung cấp một hiểu biết cơ bản về cách hợp đồng thông minh tương tác với các oracles để truy cập dữ liệu giá. Tiếp theo, chúng tôi sẽ phân tích các rủi ro liên quan từ hai quan điểm:
Từ quan điểm hợp đồng nội bộ sử dụng oracles, kẻ tấn công có thể lợi dụng thị trường thanh khoản thấp hoặc các sàn giao dịch nhỏ để thao túng giá ETH/USD thông qua các giao dịch lớn, gây ra biến động giá bất thường. Khi một số oracles phụ thuộc vào việc tổng hợp dữ liệu từ nhiều nền tảng giao dịch, những biến động bất thường này có thể nhanh chóng lan truyền đến phương thức fetchPrice() của PriceConsumer, dẫn đến biến dạng giá. Tình huống này thường phát sinh khi nguồn dữ liệu của oracle quá tập trung và rủi ro không đủ đa dạng, làm cho hệ thống dễ bị thao túng giá hơn.
Từ góc nhìn hợp đồng bên ngoài, phân tích cần xem xét các kịch bản ứng dụng khác nhau. Giả sử hợp đồng PriceConsumer được sử dụng trong một nền tảng cho vay, người dùng có thể gửi ETH làm tài sản thế chấp để vay các tài sản khác. Kẻ tấn công trước tiên sử dụng flash loan để vay số tiền lớn và tạm thời gửi số tiền này vào Automatic Market Makers (AMM) hoặc các hồ tiền lưu thông khác. Nếu AMM có độ sâu giao dịch thấp, lượng lớn tài sản đơn lẻ nhập vào hồ nhanh chóng sẽ gây trượt giá trực tiếp.
Trong trường hợp này, các giao dịch lớn của kẻ tấn công làm thay đổi giá được báo cáo bởi AMM, sau đó được phản ánh trong giá thao túng của nhà tiên tri. Sau khi thao túng giá, kẻ tấn công có thể kiếm lợi nhuận theo nhiều cách khác nhau, chẳng hạn như:
Sau khi kẻ tấn công hoàn thành hoạt động của họ, họ có thể rút ngay lập tức khoản tiền, khôi phục giá AMM và trả lại khoản vay flash với lãi suất, kết thúc quá trình gian lận.
Tiếp theo, chúng tôi sẽ đàm phán sâu hơn, phân tích các trường hợp cụ thể của các cuộc tấn công oracle, phương pháp của họ, và kiểm tra tác động phá hủy của họ đối với giao thức DeFi và hệ sinh thái on-chain, trong khi phân tích logic cơ bản và chi tiết kỹ thuật chính.
Mặc dù thao tác thị trường và tấn công oracle có thể có hậu quả tương tự, như biến dạng giá và mất mát tài sản, nhưng phương pháp và điểm yếu khác nhau. Hầu hết các mất mát trong không gian blockchain đều xuất phát từ thao tác thị trường thay vì các lỗi thiết kế bẩm sinh trong các hệ thống oracle. Các điểm khác biệt chính là như sau:
Hãy phân tích trường hợp này:
Thực chất, thao tác thị trường được thực hiện bằng cách thay đổi giá thị trường thực tế, với các oracles đáng tin cậy phản ánh các giá được thao tác này, trong khi các cuộc tấn công oracle liên quan đến báo cáo giá không chính xác trong khi giá thị trường vẫn bình thường. Sau khi hiểu được sự khác biệt giữa các oracles và sự thao tác giá, bước tiếp theo của chúng ta sẽ là khám phá sự khác biệt giữa việc thu thập dữ liệu trên chuỗi và ngoài chuỗi, để hiểu rõ hơn về cách thức oracles truyền tải dữ liệu.
Trong số nhiều vụ tấn công oracle, các loại phổ biến bao gồm thao tác giá, vay nhanh kết hợp với bóp méo oracle, lỗi dữ liệu ngoại chuỗi và khai thác lỗ hổng thiết kế giao thức. Dưới đây, chúng tôi sẽ thảo luận về hai trường hợp điển hình: vụ tấn công thao tác giá UwU Lend, đã tiết lộ lỗ hổng của oracle trên chuỗi đối với sự can thiệp độc hại, và sự cố lỗi oracle ngoại chuỗi của Synthetix, đã chứng minh tác động sâu rộng của lỗi dữ liệu ngoại chuỗi đối với hợp đồng trên chuỗi.
Vào ngày 10 tháng 6 năm 2024, UwU Lend, một nền tảng cho vay tài sản kỹ thuật số dựa trên chuỗi EVM, đã bị tấn công dẫn đến khoản thất thoát khoảng 19,3 triệu đô la. Sự cố này đã tiết lộ các yếu điểm tiềm ẩn trong các cơ chế trọng tâm trong các giao thức DeFi.
UwU Lend sử dụng một loại tiền điện tử được gọi là sUSDE, giá của nó được xác định bởi một bảng giá oracle. Là một thành phần quan trọng của giao thức cho vay, trách nhiệm chính của oracle là thu thập và cung cấp dữ liệu giá chính xác để đảm bảo các hoạt động quan trọng như cho vay và thanh lý được dựa trên giá cả công bằng và ổn định. Tuy nhiên, cơ chế quan trọng này đã trở thành điểm tiếp cận cho cuộc tấn công.
Kẻ tấn công đã thao túng giá thị trường của sUSDE bằng cách thực hiện các hoạt động giao dịch quy mô lớn trong hồ chứa thanh khoản của Curve Finance. Hành động này đã làm méo dạng dữ liệu giá được tạo ra bởi bộ chỉ số mà UwU Lend tin cậy. Bằng cách khai thác giá trị được đẩy lên của sUSDE, kẻ tấn công đã sử dụng nó làm tài sản thế chấp để rút ra các tài sản khác từ UwU Lend, cuối cùng gây ra sự suy giảm đáng kể về tài sản cho nền tảng.
Nguyên nhân gốc rễ của sự cố này nằm ở thiếu sót trong thiết kế chống manipulatie của UwU Lend cho oracles. Lỗ hổng này cho phép kẻ tấn công can thiệp vào giá thị trường, biến t distort dữ liệu được báo cáo từ oracle và thực hiện một cuộc tấn công nhắm mục tiêu. Vụ việc này làm nổi bật một vấn đề chung trong các nền tảng DeFi - các cơ chế chống manipulatie yếu kém trong các oracles, đặc biệt là trong môi trường thị trường thanh khoản thấp, nơi những rủi ro như vậy được nhấn mạnh hơn.
Cần lưu ý sự tương đồng giữa sự cố này và các cuộc tấn công vay nhanh. Các cuộc tấn công vay nhanh thường liên quan đến tạo ra các bất thường giá thông qua luồng vốn ngắn hạn đáng kể, qua đó làm gián đoạn các cơ chế phản hồi giá của bộ lọc để đạt được giá trị lợi nhuận từ tài sản hoặc mục đích độc hại khác. Sự tương đồng này càng làm nổi bật tính quan trọng của các thiết kế chống manipulatino mạnh mẽ trong các bộ lọc, các thành phần quan trọng của bảo mật hệ thống DeFi.
Trong tương lai, các nền tảng DeFi nên tập trung vào các chiến lược như tổng hợp dữ liệu giá từ nhiều nguồn, tối ưu hóa tần suất cập nhật giá và giám sát giá bất thường khi xây dựng cơ chế truy vấn. Nâng cao khả năng chống manipulatión có thể giảm thiểu các rủi ro hệ thống do sự cố tại một điểm hoặc biến động thị trường.
Vào ngày 25 tháng 6 năm 2019, Synthetix, một giao thức thanh khoản tương lai trên Ethereum, đã gặp sự cố nghiêm trọng trong hệ thống Oracle giá ngoại tuyến tùy chỉnh của mình, dẫn đến một giao dịch duy nhất tạo ra lợi nhuận khổng lồ không mong đợi. Synthetix phụ thuộc vào các nguồn tin bảo mật cho nguồn cấp giá của mình, tổng hợp và xuất bản giá trị trên chuỗi tại các khoảng thời gian cố định để cung cấp cho người dùng giá trị giao dịch cho tài sản tổng hợp dài hạn hoặc ngắn hạn.
Tuy nhiên, một trong các kênh giá đã thông báo sai tỷ giá trao đổi Won Hàn Quốc (KRW) lên đến 1.000 lần giá trị thực tế. Hệ thống không lọc được dữ liệu bất thường này, dẫn đến việc chấp nhận và công bố giá trị không chính xác trên chuỗi. Một con bot giao dịch phát hiện lỗi này và nhanh chóng thực hiện các hoạt động mua bán trên thị trường sKRW, thu lợi lớn thông qua giao dịch chênh lệch giá. Việc phát hiện vấn đề kịp thời của đội ngũ cho phép họ đàm phán với người giao dịch, người đã trả lại lợi nhuận để đổi lấy tiền thưởng bug bounty, tránh mất mát tiềm năng vượt quá 1 tỷ đô la.
Mặc dù đội ngũ Synthetix đã triển khai các biện pháp để tổng hợp dữ liệu giá từ nhiều nguồn để phòng chống sai sót từ một nguồn duy nhất, sự cố này đã làm nổi bật những rủi ro bẩm sinh của các oracles dữ liệu off-chain. Khi nguồn dữ liệu nguồn gốc phát sinh lỗi, các hợp đồng on-chain không có cái nhìn sâu sắc vào quy trình tính toán giá và do đó không thể tự động phát hiện các bất thường.
Các trường hợp trên nhấn mạnh rằng những thách thức mà các trực tiếp phải đối mặt vượt xa sự chính xác của nguồn dữ liệu, bao gồm sự chống lại sự thao túng và an ninh của việc tích hợp dữ liệu ngoại chuỗi. Do đó, việc ngăn chặn các cuộc tấn công trực tiếp trở nên vô cùng quan trọng. Nâng cao tính bảo mật, đáng tin cậy và khả năng chống thao túng của các trực tiếp trở thành yếu tố quan trọng khi thiết kế và sử dụng chúng. Trong phần này, chúng tôi khám phá các biện pháp hiệu quả để chống lại các loại tấn công khác nhau và tăng cường tổng thể bảo mật của hệ thống trực tiếp.
Phân tích vụ việc: Trong vụ việc gian lận giá UwU Lend, các kẻ tấn công đã thành công trong việc điều khiển bộ chỉ số giá UwU Lend bằng cách ảnh hưởng đến giá của sUSDE trong hồ bơi Curve Finance. Bằng cách lợi dụng lỗ hổng gian lận giá, các kẻ tấn công đã rút ra tài sản mà hệ thống đã không đánh giá đúng cách. Nếu UwU Lend đã sử dụng nhiều nguồn dữ liệu để xác định giá của sUSDE, hệ thống có thể đã xác minh giá qua các nguồn khác, giảm thiểu rủi ro của cuộc tấn công.
Phân tích mở rộng: Sự cố này liên quan đến việc thao túng giá và tiết lộ các vấn đề liên quan đến tính thanh khoản không đủ. Khi một token thiếu thanh khoản thị trường đủ, độ sâu giao dịch hạn chế làm giá của nó dễ bị ảnh hưởng bởi một số lượng giao dịch nhỏ, từ đó tăng khả năng xâm nhập của bộ truy vấn. Do đó, khi ra mắt token mới, các nhóm dự án phải đánh giá cẩn thận tính thanh khoản thị trường để ngăn chặn biến dạng giá và các rủi ro an ninh liên quan. Ví dụ, các giao thức cho vay như Aave, Kamino và Scallop áp đặt các hạn chế nghiêm ngặt đối với các token thanh khoản thấp trong thiết kế của họ để đảm bảo sự ổn định và an ninh thị trường.
Phương pháp tối ưu hóa: Để đảm bảo tính chính xác của dữ liệu, các giao thức nên áp dụng chiến lược đa nguồn dữ liệu bằng cách sử dụng nhiều oracles phi tập trung như Chainlink hoặc Band Protocol để tổng hợp dữ liệu từ các sàn giao dịch hoặc hồ bơi thanh khoản khác nhau. Phương pháp này giảm thiểu ảnh hưởng đến bảo mật toàn hệ thống nếu bất kỳ nguồn dữ liệu nào bị thao túng.
Phân tích vụ việc: Sự cố mất cân đối của bộ công cụ Synthetix đã tiết lộ rủi ro từ sai sót trong nguồn dữ liệu ngoại tuyến. Trong vụ việc này, một giá trị Korean Won (KRW) không chính xác đã được báo cáo, cho phép một con bot giao dịch khai thác lỗi này để thực hiện cơ hội lợi nhuận chênh lệch giá. Nếu Synthetix đã sử dụng một bộ thu thập dữ liệu phi tập trung, các nguồn dữ liệu phi tập trung khác có thể đã sửa chữa vấn đề một cách nhanh chóng, ngay cả khi một nguồn dữ liệu ngoại tuyến bị lỗi.
Phương pháp tối ưu: Tương tự như những cải tiến trong Uniswap V3, việc sử dụng các bộ tổng hợp dữ liệu phi tập trung có thể nâng cao tính an toàn của việc truyền dữ liệu. Bằng cách tận dụng các giao thức mật mã (như TLS) và xác minh chữ ký, kết hợp với các nút trung gian phi tập trung, hệ thống có thể ngăn chặn các cuộc tấn công giả mạo và gian lận dữ liệu. Ví dụ, trong trường hợp của trạm oracles của Chainlink, mọi nguồn dữ liệu được xác thực bởi nhiều nút độc lập và được bảo vệ bằng các kỹ thuật mã hóa để đảm bảo tính toàn vẹn và không thể thay đổi của dữ liệu được truyền.
Phân tích trường hợp: Nhiều vụ tấn công đã cho thấy sự thiếu sót trong thiết kế mô-đun của các giao thức DeFi, thường thiếu các cơ chế phòng thủ đủ mạnh. Bằng cách thiết kế và xây dựng các mô-đun độc lập một cách cẩn thận, có thể ngăn chặn kẻ tấn công khai thác một lỗ hổng duy nhất để gây thiệt hại thảm khốc cho toàn bộ hệ thống. Ví dụ, trong vụ lỗi bên ngoài Synthetix, nếu đội ngũ phát triển đã thiết kế một hệ thống cảnh báo mô-đun trước, có thể đã xác định và khắc phục dữ liệu không bình thường nhanh hơn.
Phương pháp tối ưu hóa: Để tăng cường sự kháng cự trước các cuộc tấn công, các nhà phát triển có thể áp dụng các kiến trúc theo tầng trong quá trình phát triển và đảm bảo rằng mỗi module (nguồn dữ liệu, logic xác nhận, module truyền) hoạt động độc lập. Ví dụ, như trong Uniswap V3, việc lưu trữ thông tin giá từ các hồ bơi thanh khoản khác nhau trong các hồ bơi quan sát riêng biệt cho phép giao thức so sánh giá trên nhiều hồ bơi, giảm thiểu nguy cơ thao tác ở bất kỳ hồ bơi nào. Trong quá trình phát triển thực tế, các kỹ thuật như đóng gói giao diện và tiêm phụ thuộc có thể tách module xác nhận dữ liệu ra khỏi logic khác, đảm bảo tính linh hoạt và khả năng bảo trì của hệ thống.
Trong khi hầu hết các nguồn tin cậy trên các biện pháp phòng vệ tĩnh, các hợp đồng thông minh có thể áp dụng các chiến lược phòng vệ linh hoạt để đối phó với các phương pháp tấn công cực kỳ động. Ví dụ, bằng cách theo dõi tần suất biến đổi giá bất thường, hệ thống có thể xác định xem có xảy ra cuộc tấn công và kích hoạt các cơ chế xác nhận hoặc hoàn trả bổ sung để đáp ứng những hiện tượng bất thường đó. Phương pháp linh hoạt này có thể tự động bảo vệ hệ thống khỏi các rủi ro tiềm năng trong quá trình thao tác giá đột ngột.
Ứng dụng thực tế: Một số giao thức DeFi triển khai cơ chế 'cảnh báo ngưỡng' để phát hiện các biến động giá đáng kể trong thời gian thực. Nếu biến động giá vượt quá ngưỡng được đặt trước, hệ thống sẽ tự động khởi động các quy trình xác minh bổ sung hoặc kích hoạt các quá trình phục hồi để ngăn chặn việc thao túng leo thang. Ví dụ, giao thức Balancer sử dụng ngưỡng sai lệch giá; nếu giá được phát hiện là quá cao hoặc thấp, nó tạm dừng một số giao dịch cho đến khi xác nhận thêm về tính hợp lệ của giá.
Xây dựng trên các cuộc thảo luận về thiết kế và ứng dụng của Oracle, chúng ta có thể khám phá các giải pháp cụ thể trong các ứng dụng DeFi. Tiếp theo, chúng tôi sẽ giới thiệu cơ chế giá trung bình theo thời gian trong Uniswap V2 và các cải tiến trong V3.
Bảo mật của các trung gian là một vấn đề cốt lõi đối với các giao thức DeFi. Nhiều giao thức DeFi đã giới thiệu các đổi mới giá trị để ngăn chặn hiệu quả các cuộc tấn công trung gian. Ví dụ, Uniswap đã cung cấp các ý tưởng mới cho thiết kế trung gian thông qua các tối ưu hóa trong việc tạo giá trên chuỗi và cơ chế phòng thủ. Một so sánh giữa Uniswap V2 và V3 cho thấy những cải tiến kỹ thuật có thể cải thiện khả năng chống thao túng của các trung gian, cung cấp một con đường rõ ràng cho thiết kế an toàn của các hợp đồng thông minh.
Uniswap V2 đã giới thiệu trình quản lý TWAP (Time-Weighted Average Price) lần đầu tiên, cho phép các nhà phát triển trên chuỗi có thể truy cập dữ liệu giá từ các sàn giao dịch phi tập trung (DEX). TWAP là một trình quản lý trên chuỗi nguồn dữ liệu từ dữ liệu giao dịch trên chuỗi của Uniswap mà không phụ thuộc vào bất kỳ dữ liệu ngoại chuỗi nào.
Trong UniswapV2Pair
hợp đồng, cái_update()
function là chức năng riêng tư cốt lõi có trách nhiệm cập nhật các nguồn dự trữ và bộ tích lũy giá cho các cặp giao dịch. Mục đích chính của nó là sử dụng bộ tích lũy giá theo thời gian để ngăn chặn các cuộc tấn công của máy trò chơi.
Ý tưởng cốt lõi của chức năng này là giới hạn khả năng tấn công của kẻ tấn công để thao túng giá tại một thời điểm duy nhất bằng cách ghi lại các thay đổi giá theo thời gian cho mỗi khối. Cụ thể, chức năng tính khoảng thời gian khác nhau ( Thời gian đã trôi qua
) giữa thời gian hiện tại và cập nhật cuối cùng, nhân đôi sự khác biệt này với giá hiện tại của cặp giao dịch, sau đó cộng kết quả vào bộ tích lũy giá (price0CumulativeLast
vàprice1CumulativeLast
Khoản tích lũy này ghi chép giá trị trung bình theo thời gian để làm mịn các biến động giá tiềm năng. Bởi vì giá được tích lũy trong một khoảng thời gian, kẻ tấn công sẽ cần hoạt động liên tục qua nhiều khối để thay đổi đáng kể giá, từ đó tăng chi phí can thiệp.
Hơn nữa, hàm cập nhật bộ tích lũy giá chỉ khi timeElapsed
lớn hơn 0, có nghĩa là giá chỉ được cập nhật một lần mỗi khối. Thiết kế này giới hạn tần suất các hoạt động của kẻ tấn công trong một khoảng thời gian ngắn. Để thao túng giá hiệu quả, các kẻ tấn công sẽ cần can thiệp liên tục trong nhiều khối thay vì một khối duy nhất, từ đó giảm thiểu khả năng bị thao túng.
Từ quan điểm bảo mật, cơ chế này rất mạnh mẽ. Chức năng này bao gồm kiểm tra tràn để đảm bảo rằng các giá trị tối đa của dự trữ không vượt quá giới hạn hệ thống, và tính toán giá tích lũy cũng được bảo vệ khỏi tràn. Những yếu tố thiết kế này làm cho việc tác động bên ngoài trở nên khó khăn hơn đáng kể.
Tuy nhiên, phiên bản V2 của oracle có một số giới hạn thực tế. Ví dụ, hợp đồng chính thức chỉ cung cấp các giá trị giá tích lũy mới nhất, yêu cầu các nhà phát triển ghi và lấy dữ liệu giá lịch sử, tạo ra rào cản kỹ thuật cao hơn. Ngoài ra, oracle V2 không ghi trực tiếp sâu của cặp giao dịch. Sâu của cặp giao dịch là rất quan trọng đối với sự ổn định của oracle khi đối mặt với các cuộc tấn công - độ sâu thấp làm cho việc thao túng giá trở nên dễ dàng hơn.
Để giải quyết các hạn chế của phiên bản trước đó, Uniswap đã cải thiện chức năng của oracles trong phiên bản V3. Các hợp đồng V3 giữ lại các giá trị giá tích lũy theo thời gian và thêm khả năng lưu trữ thông tin giá cả lịch sử, hỗ trợ lên đến 65.535 bản ghi. Điều này loại bỏ nhu cầu cho các nhà phát triển lưu trữ dữ liệu lịch sử một cách thủ công.
Ngoài ra, bản V3 ghi lại các giá trị thanh khoản được tính theo thời gian cho các tầng mức phí khác nhau. Điều này cho phép các nhà phát triển lựa chọn các hồ bơi thanh khoản với khối lượng lớn hơn làm nguồn tham chiếu giá, đảm bảo độ chính xác giá cao hơn. Tất cả các logic liên quan đến oracle được đóng gói trong thư viện Oracle, cho phép hợp đồng tự động ghi lại thông tin giá tích lũy và thanh khoản cho mỗi giao dịch mà không cần bảo trì bởi người dùng bên ngoài.
Một cải tiến đáng chú ý khác là việc điều chỉnh phương pháp tính giá. Trong Uniswap V2, các tính toán TWAP dựa trên trung bình số học, trong khi V3 áp dụng trung bình hình học. So với trung bình số học, trung bình hình học cung cấp sự ổn định lớn hơn trong thực hiện và phù hợp hơn với môi trường có biến động giá cao, giúp giảm thiểu rủi ro thao túng.
Các kẻ tấn công Oracle bao gồm các nhóm tổ chức, các hacker độc lập và những người bên ngoài có thể làm việc cùng với bên thứ ba. Các cuộc tấn công như vậy thường có độ phức tạp kỹ thuật trung bình, yêu cầu kẻ tấn công có kiến thức nền tảng về blockchain và hợp đồng thông minh và kỹ năng cụ thể để khai thác các lỗ hổng. Khi rào cản kỹ thuật giảm xuống, độ phức tạp của các cuộc tấn công Oracle cũng giảm đi, cho phép những hacker với ít kỹ năng kỹ thuật tham gia.
Các cuộc tấn công Oracle phụ thuộc nhiều vào tự động hóa. Hầu hết các kẻ tấn công sử dụng các công cụ tự động hóa để quét và phân tích dữ liệu trên chuỗi, nhanh chóng xác định và khai thác các lỗ hổng bảo mật như biến động giá hoặc sự chậm trễ dữ liệu trong các oracle. Ví dụ, robot cơ hội và các kịch bản tự động hóa có thể phản ứng với sự thay đổi giá trong vòng vài mili giây, đảm bảo kẻ tấn công có lợi nhuận trước khi thị trường điều chỉnh. Khi các mạng blockchain tiếp tục phân cấp, các phương pháp tự động hóa này trở nên ngày càng hiệu quả, làm cho các cuộc tấn công oracle trở nên chính xác hơn và khó phát hiện hơn.
Nhìn vào tương lai, độ tin cậy và khả năng chống lại sự tác động của dữ liệu oracle có thể sẽ được cải thiện thông qua việc áp dụng rộng rãi các cơ chế định giá tiêu chuẩn như giá trung bình theo thời gian (TWAP) và xác minh dữ liệu từ nhiều nguồn bằng mật mã. Mặc dù điều này có thể làm giảm khả năng tấn công vào oracle, nhưng có thể xuất hiện những mối đe dọa mới - đặc biệt là các phương pháp tinh vi kết hợp nhiều kỹ thuật cơ hội thương mại để vượt qua kiểm tra bảo mật. Các nhà phát triển DeFi phải luôn cảnh giác, vì tương lai an ninh oracle phụ thuộc vào việc nâng cao liên tục các biện pháp bảo vệ dữ liệu phi tập trung và phòng vệ chủ động chống lại các vectơ tấn công mới nổi lên.
Bài viết này đã khám phá vai trò quan trọng của oracles trong hệ thống DeFi và những lỗ hổng về bảo mật của chúng, điều tra các loại oracles, ví dụ về phát triển, các nghiên cứu thực tế và biện pháp phòng ngừa. Phân tích tập trung vào hai lĩnh vực chính: tấn công oracle dựa trên flash loan và tấn công ngẫu nhiên xuất phát từ sự cố của oracle. Qua cuộc kiểm tra này, chúng tôi đã chứng minh sự quan trọng cơ bản của oracles trong kiến trúc bảo mật DeFi và nhu cầu của chúng để chống lại sự can thiệp trong khi cung cấp các phương pháp thực tế để ngăn chặn các cuộc tấn công vào oracle.
Tuyên bố từ chối trách nhiệm: Nội dung của bài viết này chỉ mang tính tham khảo và dành cho mục đích học tập và trao đổi kiến thức về các cuộc tấn công trên Oracle. Nó không đại diện cho hướng dẫn cho các hoạt động thực tế hoặc các trường hợp hướng dẫn.
Từ sự trỗi dậy của DeFi vào năm 2019 đến khi trưởng thành dần dần vào năm 2024, các vấn đề về dữ liệu luôn là mối quan tâm cốt lõi của các nhà phát triển. Điều này là do hoạt động của DeFi phụ thuộc vào dữ liệu on-chain chính xác, theo thời gian thực và chất lượng dữ liệu ảnh hưởng trực tiếp đến tính bảo mật, hiệu quả và trải nghiệm người dùng của các giao thức. Dữ liệu là trung tâm để trao đổi giá trị và là nền tảng của các cơ chế tin cậy giao thức. Đối với các hợp đồng thông minh, dữ liệu hoạt động như các sự kiện đầu vào, nhưng bản thân các hợp đồng thông minh không thể chủ động xác minh tính xác thực của dữ liệu. Thay vào đó, chúng hoàn toàn phụ thuộc vào dữ liệu được cung cấp bởi các nguồn bên ngoài. Đặc điểm này có nghĩa là nếu dữ liệu đầu vào bị giả mạo hoặc không chính xác, hợp đồng thông minh sẽ thụ động chấp nhận nó, có khả năng dẫn đến rủi ro hệ thống. Do đó, việc đảm bảo tính phi tập trung, độ tin cậy và khả năng sử dụng của dữ liệu vẫn là một thách thức đang diễn ra. Những thách thức xuất phát từ hai vấn đề chính: thứ nhất, hầu hết dữ liệu được kiểm soát bởi các tổ chức hoặc nền tảng tập trung; Thứ hai, việc truy cập dữ liệu rất khó khăn vì việc duy trì độ tin cậy trên toàn bộ đường ống — từ nguồn đến kênh truyền đến đích cuối cùng — đặt ra những thách thức đáng kể.
Là cầu nối giữa tương tác dữ liệu trên chuỗi và ngoài chuỗi, các oracles thường trở thành mục tiêu chính của các cuộc tấn công. Một khi một oracle bị thao túng, kẻ tấn công có thể khai thác thông tin giá hoặc thị trường sai lệch để thực hiện các cuộc tấn công kinh tế quy mô lớn, như các cuộc tấn công thao tác oracle và flash loan xảy ra thường xuyên trong năm 2021 và 2022. Ngay cả vào năm 2024, mối đe dọa này vẫn tồn tại, như đã được nhấn mạnh bởi các sự cố gần đây liên quan đến UwU Lend và Banana Gun. Những sự kiện này tiếp tục nhắc chúng ta rằng chất lượng và bảo mật dữ liệu oracle quyết định thành công hay thất bại của các giao thức cá nhân và ảnh hưởng trực tiếp đến sự ổn định của toàn bộ hệ sinh thái DeFi.
Bài viết này sẽ tập trung vào việc áp dụng oracles trong Blockchain, các loại tấn công và phương pháp để ngăn chặn các thao tác gian lận thông thường của oracle. Mục tiêu là giáo dục độc giả về các khái niệm cơ bản và tầm quan trọng của oracles, nâng cao nhận thức về bảo mật và cung cấp các khuyến nghị thực tế cho các nhà phát triển về việc tích hợp oracles vào các hợp đồng thông minh một cách an toàn.
Một nguồn lực là một giao diện quan trọng giữa blockchain và thế giới bên ngoài. Nó chịu trách nhiệm nhập dữ liệu ngoại chuỗi vào blockchain, chẳng hạn như giá thị trường, thông tin thời tiết, hoặc kết quả sự kiện, cho phép hợp đồng thông minh truy cập thông tin bên ngoài. Với bản chất đóng cửa của blockchain, nguồn lực chơi một vai trò quan trọng trong các lĩnh vực như DeFi, thị trường dự đoán, bảo hiểm, và trò chơi. Ngoài việc giải quyết các hạn chế của blockchain, nguồn lực còn tạo điều kiện cho sự tương tác giữa hợp đồng thông minh và dữ liệu thế giới thực, mở rộng phạm vi ứng dụng của công nghệ blockchain. Tuy nhiên, nguồn lực cũng đối mặt với một số thách thức và điểm đau:
Sau khi hiểu định nghĩa cơ bản và vai trò của các nguồn thông tin, chúng ta sẽ tìm hiểu sơ lược về các loại nguồn thông tin, các trường hợp sử dụng của chúng, và các rủi ro về bảo mật mà chúng đối mặt.
Oracles có thể được phân loại chung thành hai mô hình triển khai: trung tâm và phi trung tâm. Oracles trung tâm như Oraclize thường dựa vào một nguồn dữ liệu duy nhất để cung cấp thông tin ngoại chuỗi. Chúng kết hợp các giải pháp phần cứng và phần mềm, tận dụng các công nghệ như TLSNotary và Android Proof để đảm bảo tính chính xác của dữ liệu. Những oracles này vượt trội về hiệu suất và hiệu năng ổn định. Tuy nhiên, sự phụ thuộc vào một nguồn tin cậy duy nhất làm suy yếu tính phi trung tâm của blockchain, gây ra điểm truy cập duy nhất và giới hạn khả năng mở rộng, đặt ra những thách thức về cả an ninh và khả năng mở rộng.
Ngược lại, các oracles phi tập trung như Chainlink ưu tiên an ninh hệ thống và tính minh bạch. Trong kiến trúc của Chainlink, việc thu thập dữ liệu và xác thực được thực hiện bởi nhiều nút độc lập, phân tán trên các bên tham gia khác nhau, giảm thiểu nguy cơ điểm hỏng đơn lẻ. Bằng việc phối hợp các hoạt động trên chuỗi và ngoài chuỗi, Chainlink đảm bảo tính đa dạng và đáng tin cậy của dữ liệu. Thiết kế phi tập trung này đặc biệt hiệu quả trong các ứng dụng tài chính, nâng cao khả năng chống lại các cuộc tấn công của oracles. Tuy nhiên, cách tiếp cận này liên quan đến sự đánh đổi về hiệu suất và chi phí, làm cho nó ít phù hợp hơn cho các trường hợp sử dụng tần suất thấp.
Tầm quan trọng của các oracles phi tập trung nằm ở việc giảm thiểu rủi ro của việc chi phối nguồn dữ liệu và ngăn chặn các lạm dụng tiềm năng từ một bên đáng tin cậy duy nhất. Phi tập trung đảm bảo rằng oracles không còn phụ thuộc vào một số ít nguồn dữ liệu mà thông qua nhiều nút phân tán để tăng cường an ninh và đáng tin cậy của dữ liệu. Tuy nhiên, oracles phi tập trung cũng đối mặt với những thách thức, như duy trì cơ chế động viên hiệu quả dài hạn và đảm bảo sự ổn định tổng thể của mạng oracle. Tiếp theo, chúng ta sẽ khám phá những rủi ro an ninh liên quan đến oracles phi tập trung và các giải pháp tiềm năng của chúng.
Trong các hoạt động Oracle, nguồn và phương pháp truyền dữ liệu trực tiếp ảnh hưởng đến tính bảo mật và đáng tin cậy của nó. Oracle thu thập dữ liệu từ hai loại nguồn: ngoài chuỗi và trên chuỗi. Nguồn gốc và phương pháp thu thập dữ liệu khác nhau giữa hai phương pháp này:
Oracles trên chuỗi và ngoài chuỗi
Lựa chọn giữa nguồn dữ liệu off-chain và on-chain phụ thuộc vào yêu cầu cụ thể của dự án và những ưu điểm và nhược điểm tự nhiên của mỗi phương pháp. Nhà phát triển phải đánh giá cẩn thận và giải quyết các rủi ro liên quan. Nhu cầu cân bằng này đã dẫn đến nghiên cứu liên tục về phương pháp xử lý dữ liệu an toàn và đáng tin cậy hơn. Các phần sau sẽ xem xét nguyên tắc hoạt động của các oracles và những lỗ hổng tiềm năng của chúng.
Phần này giới thiệu một kịch bản phát triển đơn giản nhằm giúp độc giả hiểu về các trường hợp sử dụng của oracles trong blockchain. Trong việc phát triển hợp đồng thông minh blockchain thực tế, có nhiều cách cho một hợp đồng thông minh để truy cập dữ liệu giá từ oracles. Các phương pháp phổ biến bao gồm việc gọi trực tiếp hợp đồng oracle hoặc sử dụng các công nghệ như Chainlink CCIP (Cross-Chain Interoperability Protocol). Những khác biệt chính giữa những phương pháp này là:
Ở đây, chúng tôi trình bày bằng cách sử dụng một cuộc gọi trực tiếp đến một hợp đồng oracle. Hãy tưởng tượng bạn là một nhà phát triển hợp đồng thông minh trong hệ sinh thái Ethereum và bạn cần lấy dữ liệu giá ETH / USD bằng cách sử dụng một oracle trong hợp đồng của mình. Đầu tiên, bạn sẽ định nghĩa một giao diện để kết nối với hợp đồng oracle và viết một hàm để lấy dữ liệu giá.
Ví dụ hợp đồng đơn giản này cho thấy cách PriceConsumer
hợp đồng truy xuất dữ liệu giá thời gian thực và sử dụng nó để ra quyết định. Điều này cung cấp một hiểu biết cơ bản về cách hợp đồng thông minh tương tác với các oracles để truy cập dữ liệu giá. Tiếp theo, chúng tôi sẽ phân tích các rủi ro liên quan từ hai quan điểm:
Từ quan điểm hợp đồng nội bộ sử dụng oracles, kẻ tấn công có thể lợi dụng thị trường thanh khoản thấp hoặc các sàn giao dịch nhỏ để thao túng giá ETH/USD thông qua các giao dịch lớn, gây ra biến động giá bất thường. Khi một số oracles phụ thuộc vào việc tổng hợp dữ liệu từ nhiều nền tảng giao dịch, những biến động bất thường này có thể nhanh chóng lan truyền đến phương thức fetchPrice() của PriceConsumer, dẫn đến biến dạng giá. Tình huống này thường phát sinh khi nguồn dữ liệu của oracle quá tập trung và rủi ro không đủ đa dạng, làm cho hệ thống dễ bị thao túng giá hơn.
Từ góc nhìn hợp đồng bên ngoài, phân tích cần xem xét các kịch bản ứng dụng khác nhau. Giả sử hợp đồng PriceConsumer được sử dụng trong một nền tảng cho vay, người dùng có thể gửi ETH làm tài sản thế chấp để vay các tài sản khác. Kẻ tấn công trước tiên sử dụng flash loan để vay số tiền lớn và tạm thời gửi số tiền này vào Automatic Market Makers (AMM) hoặc các hồ tiền lưu thông khác. Nếu AMM có độ sâu giao dịch thấp, lượng lớn tài sản đơn lẻ nhập vào hồ nhanh chóng sẽ gây trượt giá trực tiếp.
Trong trường hợp này, các giao dịch lớn của kẻ tấn công làm thay đổi giá được báo cáo bởi AMM, sau đó được phản ánh trong giá thao túng của nhà tiên tri. Sau khi thao túng giá, kẻ tấn công có thể kiếm lợi nhuận theo nhiều cách khác nhau, chẳng hạn như:
Sau khi kẻ tấn công hoàn thành hoạt động của họ, họ có thể rút ngay lập tức khoản tiền, khôi phục giá AMM và trả lại khoản vay flash với lãi suất, kết thúc quá trình gian lận.
Tiếp theo, chúng tôi sẽ đàm phán sâu hơn, phân tích các trường hợp cụ thể của các cuộc tấn công oracle, phương pháp của họ, và kiểm tra tác động phá hủy của họ đối với giao thức DeFi và hệ sinh thái on-chain, trong khi phân tích logic cơ bản và chi tiết kỹ thuật chính.
Mặc dù thao tác thị trường và tấn công oracle có thể có hậu quả tương tự, như biến dạng giá và mất mát tài sản, nhưng phương pháp và điểm yếu khác nhau. Hầu hết các mất mát trong không gian blockchain đều xuất phát từ thao tác thị trường thay vì các lỗi thiết kế bẩm sinh trong các hệ thống oracle. Các điểm khác biệt chính là như sau:
Hãy phân tích trường hợp này:
Thực chất, thao tác thị trường được thực hiện bằng cách thay đổi giá thị trường thực tế, với các oracles đáng tin cậy phản ánh các giá được thao tác này, trong khi các cuộc tấn công oracle liên quan đến báo cáo giá không chính xác trong khi giá thị trường vẫn bình thường. Sau khi hiểu được sự khác biệt giữa các oracles và sự thao tác giá, bước tiếp theo của chúng ta sẽ là khám phá sự khác biệt giữa việc thu thập dữ liệu trên chuỗi và ngoài chuỗi, để hiểu rõ hơn về cách thức oracles truyền tải dữ liệu.
Trong số nhiều vụ tấn công oracle, các loại phổ biến bao gồm thao tác giá, vay nhanh kết hợp với bóp méo oracle, lỗi dữ liệu ngoại chuỗi và khai thác lỗ hổng thiết kế giao thức. Dưới đây, chúng tôi sẽ thảo luận về hai trường hợp điển hình: vụ tấn công thao tác giá UwU Lend, đã tiết lộ lỗ hổng của oracle trên chuỗi đối với sự can thiệp độc hại, và sự cố lỗi oracle ngoại chuỗi của Synthetix, đã chứng minh tác động sâu rộng của lỗi dữ liệu ngoại chuỗi đối với hợp đồng trên chuỗi.
Vào ngày 10 tháng 6 năm 2024, UwU Lend, một nền tảng cho vay tài sản kỹ thuật số dựa trên chuỗi EVM, đã bị tấn công dẫn đến khoản thất thoát khoảng 19,3 triệu đô la. Sự cố này đã tiết lộ các yếu điểm tiềm ẩn trong các cơ chế trọng tâm trong các giao thức DeFi.
UwU Lend sử dụng một loại tiền điện tử được gọi là sUSDE, giá của nó được xác định bởi một bảng giá oracle. Là một thành phần quan trọng của giao thức cho vay, trách nhiệm chính của oracle là thu thập và cung cấp dữ liệu giá chính xác để đảm bảo các hoạt động quan trọng như cho vay và thanh lý được dựa trên giá cả công bằng và ổn định. Tuy nhiên, cơ chế quan trọng này đã trở thành điểm tiếp cận cho cuộc tấn công.
Kẻ tấn công đã thao túng giá thị trường của sUSDE bằng cách thực hiện các hoạt động giao dịch quy mô lớn trong hồ chứa thanh khoản của Curve Finance. Hành động này đã làm méo dạng dữ liệu giá được tạo ra bởi bộ chỉ số mà UwU Lend tin cậy. Bằng cách khai thác giá trị được đẩy lên của sUSDE, kẻ tấn công đã sử dụng nó làm tài sản thế chấp để rút ra các tài sản khác từ UwU Lend, cuối cùng gây ra sự suy giảm đáng kể về tài sản cho nền tảng.
Nguyên nhân gốc rễ của sự cố này nằm ở thiếu sót trong thiết kế chống manipulatie của UwU Lend cho oracles. Lỗ hổng này cho phép kẻ tấn công can thiệp vào giá thị trường, biến t distort dữ liệu được báo cáo từ oracle và thực hiện một cuộc tấn công nhắm mục tiêu. Vụ việc này làm nổi bật một vấn đề chung trong các nền tảng DeFi - các cơ chế chống manipulatie yếu kém trong các oracles, đặc biệt là trong môi trường thị trường thanh khoản thấp, nơi những rủi ro như vậy được nhấn mạnh hơn.
Cần lưu ý sự tương đồng giữa sự cố này và các cuộc tấn công vay nhanh. Các cuộc tấn công vay nhanh thường liên quan đến tạo ra các bất thường giá thông qua luồng vốn ngắn hạn đáng kể, qua đó làm gián đoạn các cơ chế phản hồi giá của bộ lọc để đạt được giá trị lợi nhuận từ tài sản hoặc mục đích độc hại khác. Sự tương đồng này càng làm nổi bật tính quan trọng của các thiết kế chống manipulatino mạnh mẽ trong các bộ lọc, các thành phần quan trọng của bảo mật hệ thống DeFi.
Trong tương lai, các nền tảng DeFi nên tập trung vào các chiến lược như tổng hợp dữ liệu giá từ nhiều nguồn, tối ưu hóa tần suất cập nhật giá và giám sát giá bất thường khi xây dựng cơ chế truy vấn. Nâng cao khả năng chống manipulatión có thể giảm thiểu các rủi ro hệ thống do sự cố tại một điểm hoặc biến động thị trường.
Vào ngày 25 tháng 6 năm 2019, Synthetix, một giao thức thanh khoản tương lai trên Ethereum, đã gặp sự cố nghiêm trọng trong hệ thống Oracle giá ngoại tuyến tùy chỉnh của mình, dẫn đến một giao dịch duy nhất tạo ra lợi nhuận khổng lồ không mong đợi. Synthetix phụ thuộc vào các nguồn tin bảo mật cho nguồn cấp giá của mình, tổng hợp và xuất bản giá trị trên chuỗi tại các khoảng thời gian cố định để cung cấp cho người dùng giá trị giao dịch cho tài sản tổng hợp dài hạn hoặc ngắn hạn.
Tuy nhiên, một trong các kênh giá đã thông báo sai tỷ giá trao đổi Won Hàn Quốc (KRW) lên đến 1.000 lần giá trị thực tế. Hệ thống không lọc được dữ liệu bất thường này, dẫn đến việc chấp nhận và công bố giá trị không chính xác trên chuỗi. Một con bot giao dịch phát hiện lỗi này và nhanh chóng thực hiện các hoạt động mua bán trên thị trường sKRW, thu lợi lớn thông qua giao dịch chênh lệch giá. Việc phát hiện vấn đề kịp thời của đội ngũ cho phép họ đàm phán với người giao dịch, người đã trả lại lợi nhuận để đổi lấy tiền thưởng bug bounty, tránh mất mát tiềm năng vượt quá 1 tỷ đô la.
Mặc dù đội ngũ Synthetix đã triển khai các biện pháp để tổng hợp dữ liệu giá từ nhiều nguồn để phòng chống sai sót từ một nguồn duy nhất, sự cố này đã làm nổi bật những rủi ro bẩm sinh của các oracles dữ liệu off-chain. Khi nguồn dữ liệu nguồn gốc phát sinh lỗi, các hợp đồng on-chain không có cái nhìn sâu sắc vào quy trình tính toán giá và do đó không thể tự động phát hiện các bất thường.
Các trường hợp trên nhấn mạnh rằng những thách thức mà các trực tiếp phải đối mặt vượt xa sự chính xác của nguồn dữ liệu, bao gồm sự chống lại sự thao túng và an ninh của việc tích hợp dữ liệu ngoại chuỗi. Do đó, việc ngăn chặn các cuộc tấn công trực tiếp trở nên vô cùng quan trọng. Nâng cao tính bảo mật, đáng tin cậy và khả năng chống thao túng của các trực tiếp trở thành yếu tố quan trọng khi thiết kế và sử dụng chúng. Trong phần này, chúng tôi khám phá các biện pháp hiệu quả để chống lại các loại tấn công khác nhau và tăng cường tổng thể bảo mật của hệ thống trực tiếp.
Phân tích vụ việc: Trong vụ việc gian lận giá UwU Lend, các kẻ tấn công đã thành công trong việc điều khiển bộ chỉ số giá UwU Lend bằng cách ảnh hưởng đến giá của sUSDE trong hồ bơi Curve Finance. Bằng cách lợi dụng lỗ hổng gian lận giá, các kẻ tấn công đã rút ra tài sản mà hệ thống đã không đánh giá đúng cách. Nếu UwU Lend đã sử dụng nhiều nguồn dữ liệu để xác định giá của sUSDE, hệ thống có thể đã xác minh giá qua các nguồn khác, giảm thiểu rủi ro của cuộc tấn công.
Phân tích mở rộng: Sự cố này liên quan đến việc thao túng giá và tiết lộ các vấn đề liên quan đến tính thanh khoản không đủ. Khi một token thiếu thanh khoản thị trường đủ, độ sâu giao dịch hạn chế làm giá của nó dễ bị ảnh hưởng bởi một số lượng giao dịch nhỏ, từ đó tăng khả năng xâm nhập của bộ truy vấn. Do đó, khi ra mắt token mới, các nhóm dự án phải đánh giá cẩn thận tính thanh khoản thị trường để ngăn chặn biến dạng giá và các rủi ro an ninh liên quan. Ví dụ, các giao thức cho vay như Aave, Kamino và Scallop áp đặt các hạn chế nghiêm ngặt đối với các token thanh khoản thấp trong thiết kế của họ để đảm bảo sự ổn định và an ninh thị trường.
Phương pháp tối ưu hóa: Để đảm bảo tính chính xác của dữ liệu, các giao thức nên áp dụng chiến lược đa nguồn dữ liệu bằng cách sử dụng nhiều oracles phi tập trung như Chainlink hoặc Band Protocol để tổng hợp dữ liệu từ các sàn giao dịch hoặc hồ bơi thanh khoản khác nhau. Phương pháp này giảm thiểu ảnh hưởng đến bảo mật toàn hệ thống nếu bất kỳ nguồn dữ liệu nào bị thao túng.
Phân tích vụ việc: Sự cố mất cân đối của bộ công cụ Synthetix đã tiết lộ rủi ro từ sai sót trong nguồn dữ liệu ngoại tuyến. Trong vụ việc này, một giá trị Korean Won (KRW) không chính xác đã được báo cáo, cho phép một con bot giao dịch khai thác lỗi này để thực hiện cơ hội lợi nhuận chênh lệch giá. Nếu Synthetix đã sử dụng một bộ thu thập dữ liệu phi tập trung, các nguồn dữ liệu phi tập trung khác có thể đã sửa chữa vấn đề một cách nhanh chóng, ngay cả khi một nguồn dữ liệu ngoại tuyến bị lỗi.
Phương pháp tối ưu: Tương tự như những cải tiến trong Uniswap V3, việc sử dụng các bộ tổng hợp dữ liệu phi tập trung có thể nâng cao tính an toàn của việc truyền dữ liệu. Bằng cách tận dụng các giao thức mật mã (như TLS) và xác minh chữ ký, kết hợp với các nút trung gian phi tập trung, hệ thống có thể ngăn chặn các cuộc tấn công giả mạo và gian lận dữ liệu. Ví dụ, trong trường hợp của trạm oracles của Chainlink, mọi nguồn dữ liệu được xác thực bởi nhiều nút độc lập và được bảo vệ bằng các kỹ thuật mã hóa để đảm bảo tính toàn vẹn và không thể thay đổi của dữ liệu được truyền.
Phân tích trường hợp: Nhiều vụ tấn công đã cho thấy sự thiếu sót trong thiết kế mô-đun của các giao thức DeFi, thường thiếu các cơ chế phòng thủ đủ mạnh. Bằng cách thiết kế và xây dựng các mô-đun độc lập một cách cẩn thận, có thể ngăn chặn kẻ tấn công khai thác một lỗ hổng duy nhất để gây thiệt hại thảm khốc cho toàn bộ hệ thống. Ví dụ, trong vụ lỗi bên ngoài Synthetix, nếu đội ngũ phát triển đã thiết kế một hệ thống cảnh báo mô-đun trước, có thể đã xác định và khắc phục dữ liệu không bình thường nhanh hơn.
Phương pháp tối ưu hóa: Để tăng cường sự kháng cự trước các cuộc tấn công, các nhà phát triển có thể áp dụng các kiến trúc theo tầng trong quá trình phát triển và đảm bảo rằng mỗi module (nguồn dữ liệu, logic xác nhận, module truyền) hoạt động độc lập. Ví dụ, như trong Uniswap V3, việc lưu trữ thông tin giá từ các hồ bơi thanh khoản khác nhau trong các hồ bơi quan sát riêng biệt cho phép giao thức so sánh giá trên nhiều hồ bơi, giảm thiểu nguy cơ thao tác ở bất kỳ hồ bơi nào. Trong quá trình phát triển thực tế, các kỹ thuật như đóng gói giao diện và tiêm phụ thuộc có thể tách module xác nhận dữ liệu ra khỏi logic khác, đảm bảo tính linh hoạt và khả năng bảo trì của hệ thống.
Trong khi hầu hết các nguồn tin cậy trên các biện pháp phòng vệ tĩnh, các hợp đồng thông minh có thể áp dụng các chiến lược phòng vệ linh hoạt để đối phó với các phương pháp tấn công cực kỳ động. Ví dụ, bằng cách theo dõi tần suất biến đổi giá bất thường, hệ thống có thể xác định xem có xảy ra cuộc tấn công và kích hoạt các cơ chế xác nhận hoặc hoàn trả bổ sung để đáp ứng những hiện tượng bất thường đó. Phương pháp linh hoạt này có thể tự động bảo vệ hệ thống khỏi các rủi ro tiềm năng trong quá trình thao tác giá đột ngột.
Ứng dụng thực tế: Một số giao thức DeFi triển khai cơ chế 'cảnh báo ngưỡng' để phát hiện các biến động giá đáng kể trong thời gian thực. Nếu biến động giá vượt quá ngưỡng được đặt trước, hệ thống sẽ tự động khởi động các quy trình xác minh bổ sung hoặc kích hoạt các quá trình phục hồi để ngăn chặn việc thao túng leo thang. Ví dụ, giao thức Balancer sử dụng ngưỡng sai lệch giá; nếu giá được phát hiện là quá cao hoặc thấp, nó tạm dừng một số giao dịch cho đến khi xác nhận thêm về tính hợp lệ của giá.
Xây dựng trên các cuộc thảo luận về thiết kế và ứng dụng của Oracle, chúng ta có thể khám phá các giải pháp cụ thể trong các ứng dụng DeFi. Tiếp theo, chúng tôi sẽ giới thiệu cơ chế giá trung bình theo thời gian trong Uniswap V2 và các cải tiến trong V3.
Bảo mật của các trung gian là một vấn đề cốt lõi đối với các giao thức DeFi. Nhiều giao thức DeFi đã giới thiệu các đổi mới giá trị để ngăn chặn hiệu quả các cuộc tấn công trung gian. Ví dụ, Uniswap đã cung cấp các ý tưởng mới cho thiết kế trung gian thông qua các tối ưu hóa trong việc tạo giá trên chuỗi và cơ chế phòng thủ. Một so sánh giữa Uniswap V2 và V3 cho thấy những cải tiến kỹ thuật có thể cải thiện khả năng chống thao túng của các trung gian, cung cấp một con đường rõ ràng cho thiết kế an toàn của các hợp đồng thông minh.
Uniswap V2 đã giới thiệu trình quản lý TWAP (Time-Weighted Average Price) lần đầu tiên, cho phép các nhà phát triển trên chuỗi có thể truy cập dữ liệu giá từ các sàn giao dịch phi tập trung (DEX). TWAP là một trình quản lý trên chuỗi nguồn dữ liệu từ dữ liệu giao dịch trên chuỗi của Uniswap mà không phụ thuộc vào bất kỳ dữ liệu ngoại chuỗi nào.
Trong UniswapV2Pair
hợp đồng, cái_update()
function là chức năng riêng tư cốt lõi có trách nhiệm cập nhật các nguồn dự trữ và bộ tích lũy giá cho các cặp giao dịch. Mục đích chính của nó là sử dụng bộ tích lũy giá theo thời gian để ngăn chặn các cuộc tấn công của máy trò chơi.
Ý tưởng cốt lõi của chức năng này là giới hạn khả năng tấn công của kẻ tấn công để thao túng giá tại một thời điểm duy nhất bằng cách ghi lại các thay đổi giá theo thời gian cho mỗi khối. Cụ thể, chức năng tính khoảng thời gian khác nhau ( Thời gian đã trôi qua
) giữa thời gian hiện tại và cập nhật cuối cùng, nhân đôi sự khác biệt này với giá hiện tại của cặp giao dịch, sau đó cộng kết quả vào bộ tích lũy giá (price0CumulativeLast
vàprice1CumulativeLast
Khoản tích lũy này ghi chép giá trị trung bình theo thời gian để làm mịn các biến động giá tiềm năng. Bởi vì giá được tích lũy trong một khoảng thời gian, kẻ tấn công sẽ cần hoạt động liên tục qua nhiều khối để thay đổi đáng kể giá, từ đó tăng chi phí can thiệp.
Hơn nữa, hàm cập nhật bộ tích lũy giá chỉ khi timeElapsed
lớn hơn 0, có nghĩa là giá chỉ được cập nhật một lần mỗi khối. Thiết kế này giới hạn tần suất các hoạt động của kẻ tấn công trong một khoảng thời gian ngắn. Để thao túng giá hiệu quả, các kẻ tấn công sẽ cần can thiệp liên tục trong nhiều khối thay vì một khối duy nhất, từ đó giảm thiểu khả năng bị thao túng.
Từ quan điểm bảo mật, cơ chế này rất mạnh mẽ. Chức năng này bao gồm kiểm tra tràn để đảm bảo rằng các giá trị tối đa của dự trữ không vượt quá giới hạn hệ thống, và tính toán giá tích lũy cũng được bảo vệ khỏi tràn. Những yếu tố thiết kế này làm cho việc tác động bên ngoài trở nên khó khăn hơn đáng kể.
Tuy nhiên, phiên bản V2 của oracle có một số giới hạn thực tế. Ví dụ, hợp đồng chính thức chỉ cung cấp các giá trị giá tích lũy mới nhất, yêu cầu các nhà phát triển ghi và lấy dữ liệu giá lịch sử, tạo ra rào cản kỹ thuật cao hơn. Ngoài ra, oracle V2 không ghi trực tiếp sâu của cặp giao dịch. Sâu của cặp giao dịch là rất quan trọng đối với sự ổn định của oracle khi đối mặt với các cuộc tấn công - độ sâu thấp làm cho việc thao túng giá trở nên dễ dàng hơn.
Để giải quyết các hạn chế của phiên bản trước đó, Uniswap đã cải thiện chức năng của oracles trong phiên bản V3. Các hợp đồng V3 giữ lại các giá trị giá tích lũy theo thời gian và thêm khả năng lưu trữ thông tin giá cả lịch sử, hỗ trợ lên đến 65.535 bản ghi. Điều này loại bỏ nhu cầu cho các nhà phát triển lưu trữ dữ liệu lịch sử một cách thủ công.
Ngoài ra, bản V3 ghi lại các giá trị thanh khoản được tính theo thời gian cho các tầng mức phí khác nhau. Điều này cho phép các nhà phát triển lựa chọn các hồ bơi thanh khoản với khối lượng lớn hơn làm nguồn tham chiếu giá, đảm bảo độ chính xác giá cao hơn. Tất cả các logic liên quan đến oracle được đóng gói trong thư viện Oracle, cho phép hợp đồng tự động ghi lại thông tin giá tích lũy và thanh khoản cho mỗi giao dịch mà không cần bảo trì bởi người dùng bên ngoài.
Một cải tiến đáng chú ý khác là việc điều chỉnh phương pháp tính giá. Trong Uniswap V2, các tính toán TWAP dựa trên trung bình số học, trong khi V3 áp dụng trung bình hình học. So với trung bình số học, trung bình hình học cung cấp sự ổn định lớn hơn trong thực hiện và phù hợp hơn với môi trường có biến động giá cao, giúp giảm thiểu rủi ro thao túng.
Các kẻ tấn công Oracle bao gồm các nhóm tổ chức, các hacker độc lập và những người bên ngoài có thể làm việc cùng với bên thứ ba. Các cuộc tấn công như vậy thường có độ phức tạp kỹ thuật trung bình, yêu cầu kẻ tấn công có kiến thức nền tảng về blockchain và hợp đồng thông minh và kỹ năng cụ thể để khai thác các lỗ hổng. Khi rào cản kỹ thuật giảm xuống, độ phức tạp của các cuộc tấn công Oracle cũng giảm đi, cho phép những hacker với ít kỹ năng kỹ thuật tham gia.
Các cuộc tấn công Oracle phụ thuộc nhiều vào tự động hóa. Hầu hết các kẻ tấn công sử dụng các công cụ tự động hóa để quét và phân tích dữ liệu trên chuỗi, nhanh chóng xác định và khai thác các lỗ hổng bảo mật như biến động giá hoặc sự chậm trễ dữ liệu trong các oracle. Ví dụ, robot cơ hội và các kịch bản tự động hóa có thể phản ứng với sự thay đổi giá trong vòng vài mili giây, đảm bảo kẻ tấn công có lợi nhuận trước khi thị trường điều chỉnh. Khi các mạng blockchain tiếp tục phân cấp, các phương pháp tự động hóa này trở nên ngày càng hiệu quả, làm cho các cuộc tấn công oracle trở nên chính xác hơn và khó phát hiện hơn.
Nhìn vào tương lai, độ tin cậy và khả năng chống lại sự tác động của dữ liệu oracle có thể sẽ được cải thiện thông qua việc áp dụng rộng rãi các cơ chế định giá tiêu chuẩn như giá trung bình theo thời gian (TWAP) và xác minh dữ liệu từ nhiều nguồn bằng mật mã. Mặc dù điều này có thể làm giảm khả năng tấn công vào oracle, nhưng có thể xuất hiện những mối đe dọa mới - đặc biệt là các phương pháp tinh vi kết hợp nhiều kỹ thuật cơ hội thương mại để vượt qua kiểm tra bảo mật. Các nhà phát triển DeFi phải luôn cảnh giác, vì tương lai an ninh oracle phụ thuộc vào việc nâng cao liên tục các biện pháp bảo vệ dữ liệu phi tập trung và phòng vệ chủ động chống lại các vectơ tấn công mới nổi lên.
Bài viết này đã khám phá vai trò quan trọng của oracles trong hệ thống DeFi và những lỗ hổng về bảo mật của chúng, điều tra các loại oracles, ví dụ về phát triển, các nghiên cứu thực tế và biện pháp phòng ngừa. Phân tích tập trung vào hai lĩnh vực chính: tấn công oracle dựa trên flash loan và tấn công ngẫu nhiên xuất phát từ sự cố của oracle. Qua cuộc kiểm tra này, chúng tôi đã chứng minh sự quan trọng cơ bản của oracles trong kiến trúc bảo mật DeFi và nhu cầu của chúng để chống lại sự can thiệp trong khi cung cấp các phương pháp thực tế để ngăn chặn các cuộc tấn công vào oracle.
Tuyên bố từ chối trách nhiệm: Nội dung của bài viết này chỉ mang tính tham khảo và dành cho mục đích học tập và trao đổi kiến thức về các cuộc tấn công trên Oracle. Nó không đại diện cho hướng dẫn cho các hoạt động thực tế hoặc các trường hợp hướng dẫn.