Tiêu đề gốc: "Vì vậy, bạn muốn sử dụng lời tiên tri về giá"
Nguồn gốc: SAMCZSUN
Bản tổng hợp ban đầu: 0x26
Vào cuối năm 2019, tôi đã xuất bản một bài viết có tiêu đề "Nhận các khoản vay không được thế chấp để giải trí và vì lợi nhuận". Trong bài đăng này, tôi mô tả một cuộc tấn công kinh tế vào các ứng dụng Ethereum dựa trên dữ liệu giá chính xác cho một hoặc nhiều mã thông báo. Thật không may, tính đến cuối năm 2020, nhiều dự án đã mắc phải những sai lầm tương tự, ví dụ gần đây nhất là cuộc tấn công chênh lệch giá của hacker Harvest Finance dẫn đến tổn thất chung 33 triệu USD cho người dùng giao thức.
Mặc dù các nhà phát triển đã quen với các lỗ hổng như reentrancy, nhưng rõ ràng là việc định giá oracle thường không bị coi là thao túng. Ngược lại, số lượng lỗ hổng được phát triển dựa trên reentrancy đã giảm trong những năm gần đây, trong khi số lượng lỗ hổng dựa trên thao túng giá đang tăng lên. Vì vậy, tôi nghĩ đã đến lúc ai đó nghĩ ra một nguồn thông tin dứt khoát về thao túng giá.
Bài viết này được chia thành ba phần. Đối với những người không quen với chủ đề này, phần giới thiệu về nguồn cấp dữ liệu giá và thao tác oracle đã được chuẩn bị trong bài viết. Những người đã được thông tin đầy đủ có thể chuyển thẳng đến phần nghiên cứu điển hình, nơi chúng tôi xem xét các lỗ hổng và hoạt động khai thác liên quan đến oracle trong quá khứ. Cuối cùng, chúng tôi tóm tắt một số phương pháp mà các nhà phát triển có thể áp dụng cho dự án của mình để bảo vệ bản thân khỏi sự thao túng giá của các nhà tiên tri.
Thứ Tư, ngày 1 tháng 12 năm 2015. Tên bạn là David Sparger và bạn đang tham dự buổi hòa nhạc Peking Duk ở Melbourne, Australia. Bạn muốn tận mắt nhìn thấy ban nhạc, nhưng có hai nhân viên bảo vệ chắn giữa bạn và lối đi ở hậu trường, và họ không thể nào cho một người bình thường vào được.
Bạn biết lực lượng an ninh sẽ phản ứng thế nào nếu bạn hành động như thể bạn thuộc về nơi này. Các thành viên trong gia đình chắc chắn sẽ được phép vào thăm hậu trường, vì vậy tất cả những gì bạn phải làm là thuyết phục an ninh rằng bạn là người thân của họ. Bạn suy nghĩ một lúc rồi nghĩ ra một kế hoạch chỉ có thể miêu tả là thiên tài hoặc điên rồ.
Sau khi nhanh chóng sắp xếp mọi việc, bạn tự tin bước về phía nhân viên bảo vệ. Bạn tự giới thiệu mình là David Spargo, thành viên của gia đình Peking Duk. Khi lính canh yêu cầu bằng chứng, bạn cho họ xem bằng chứng không thể chối cãi - Wikipedia (bạn thêm tên của mình, David Sparger, vào dòng cuối cùng của đoạn đầu tiên của mục Wikipedia).

Người bảo vệ vẫy bạn lại và yêu cầu bạn đợi ở phía sau. Một phút trôi qua, hai phút trôi qua. Năm phút sau, bạn đang tự hỏi liệu mình có nên bỏ chạy trước khi cơ quan thực thi pháp luật xuất hiện hay không. Khi bạn chuẩn bị "bùng nổ", Reuben Styles (thành viên ban nhạc) đến và giới thiệu bản thân. Bạn đi cùng anh ấy đến phòng xanh, nơi ban nhạc rất ấn tượng trước trí thông minh của bạn, và cuối cùng hai bạn cùng nhau uống vài cốc bia. Sau đó, họ chia sẻ những gì đã xảy ra trên Facebook của họ.

Máy oracle cung cấp giá nói chung là bất kỳ thông tin về giá nào mà bạn tham khảo. Khi Pam hỏi Dwight về giá trị tiền mặt của Schrute Buck, Dwight đang dự đoán giá. (Từ loạt phim truyền hình Mỹ "The Office")

Trong mạng Ethereum, mọi thứ đều là một hợp đồng thông minh và lời tiên tri về nguồn cấp dữ liệu giá cũng vậy. Do đó, sẽ hữu ích hơn khi phân biệt cách các nhà tiên tri về nguồn cấp dữ liệu giá có được thông tin về giá của họ. Đầu tiên, dữ liệu giá ngoài chuỗi hiện có có thể được lấy một cách đơn giản từ api giá hoặc nền tảng giao dịch rồi đưa vào chuỗi. Trong trường hợp khác, giá tức thời có thể được tính bằng cách truy vấn một sàn giao dịch phi tập trung trên chuỗi.

Cả hai lựa chọn đều có ưu và nhược điểm riêng. Dữ liệu ngoài chuỗi thường phản ứng chậm hơn với sự biến động và mức độ biến động tốt hay xấu phụ thuộc vào mục đích bạn đang cố gắng sử dụng nó. Nó thường yêu cầu một số lượng nhỏ người dùng có đặc quyền để đẩy dữ liệu lên chuỗi, vì vậy họ phải được tin cậy để không làm điều xấu và không bị buộc phải đẩy các cập nhật dữ liệu kỳ lạ. Dữ liệu trên chuỗi không yêu cầu bất kỳ quyền truy cập đặc quyền nào và luôn cập nhật, nhưng điều này có nghĩa là nó có thể dễ dàng bị kẻ tấn công thao túng, gây ra lỗi nghiêm trọng.
Hãy xem xét một số ví dụ trong đó các oracle về nguồn cấp dữ liệu giá được tích hợp kém đã khiến các dự án DeFi bị thiệt hại đáng kể Trong trường hợp mất tiền .
Lỗi oracle tổng hợp sKRW
Synthetix là một nền tảng phái sinh cho phép người dùng cầm cố tài sản để lấy các tài sản khác. Để tạo điều kiện thuận lợi cho việc này, Synthetix (vào thời điểm đó) đã dựa vào nguồn cấp dữ liệu giá ngoài chuỗi tùy chỉnh, một nguồn được tính toán từ một tập hợp nguồn cấp dữ liệu giá bí mật và được xuất bản trên chuỗi trong một khoảng thời gian cố định. Sau đó, người dùng được phép đảm nhận các vị thế mua hoặc bán đối với tài sản được hỗ trợ của họ ở các mức giá này.
Vào ngày 25 tháng 6 năm 2019, một nguồn cấp dữ liệu giá mà Synthetix dựa vào đã báo cáo sai giá của đồng Won Hàn Quốc cao hơn hơn giá thực tế 1000 lần. Do có thêm lỗi ở những nơi khác trong hệ thống oracle nguồn cấp dữ liệu giá, mức giá này đã được hệ thống chấp nhận và đăng trên chuỗi sKRW, nơi các bot giao dịch có thể nhanh chóng di chuyển vào và ra khỏi thị trường sKRW để kiếm lời.

Mặc dù nhóm Synthetix đã thương lượng với nhà giao dịch này để lấy lại số tiền đã mất dưới dạng tiền thưởng phát hiện lỗi. Nhưng về lý thuyết, robot có thể kiếm được hơn 1 tỷ USD lợi nhuận trong thời gian này.
Synthetix thực hiện chính xác các hợp đồng oracle và hạ giá từ nhiều nguồn để ngăn nhà giao dịch dự đoán các thay đổi về giá trước khi chúng được phát hành. Tuy nhiên, một trường hợp nguồn giá ngược dòng thất bại đã giáng một đòn nặng nề. Điều này minh họa rủi ro của các nhà tiên tri về nguồn cấp giá bằng cách sử dụng dữ liệu ngoài chuỗi: nó không biết cách tính giá, vì vậy hệ thống phải được thiết kế cẩn thận để đảm bảo rằng tất cả các chế độ lỗi tiềm ẩn đều được xử lý chính xác.
Khoản vay có bảo đảm thấp
bản gốc, nhưng bài viết này rất dài và đầy đủ các chi tiết kỹ thuật, có thể khó hiểu. Vì vậy, tôi sẽ cung cấp một lời giải thích đơn giản ở đây.
Hãy tưởng tượng bạn sử dụng nền tảng cho vay phi tập trung. Người dùng có thể gửi tài sản vào nền tảng làm tài sản thế chấp và có thể vay các tài sản khác, nhưng số tiền tối đa phụ thuộc vào giá trị tài sản họ gửi. Giả sử người dùng muốn vay USD bằng cách sử dụng ETH làm tài sản thế chấp, giá hiện tại của ETH là 400 USD và tỷ lệ tài sản thế chấp là 150%.
Nếu người dùng gửi 375 ETH, điều đó có nghĩa là gửi 150.000 USD làm tài sản thế chấp. Họ có thể vay 1 USD cho mỗi 1,5 USD tài sản thế chấp, vì vậy họ có thể vay tới 100.000 USD từ hệ thống.

Nhưng tất nhiên, trên blockchain không chỉ đơn giản là tuyên bố rằng 1 ETH trị giá 400 USD, bởi vì người dùng độc hại có thể chỉ cần tuyên bố rằng 1 ETH trị giá 1.000 USD và sau đó đi từ Lấy hết tiền ra khỏi hệ thống. Do đó, điều quan trọng là các nhà phát triển phải tìm được nguồn cấp dữ liệu giá phù hợp nhất, chẳng hạn như giá giao ngay hiện tại của Uniswap, Kyber hoặc giá của một nền tảng trao đổi phi tập trung khác.

Thoạt nhìn, đây có vẻ là điều đúng đắn nên làm. Xét cho cùng, bất cứ khi nào bạn muốn mua hoặc bán ETH, giá của Uniswap luôn gần như chính xác, vì mọi sai lệch đều nhanh chóng được các nhà kinh doanh chênh lệch giá điều chỉnh. Tuy nhiên, hóa ra giá giao ngay trên các sàn giao dịch phi tập trung có thể sai nghiêm trọng trong quá trình giao dịch, như trong ví dụ bên dưới.
Hãy suy nghĩ về cách hoạt động của hệ thống tài sản giữ lại Uniswap. Giá được tính dựa trên số lượng tài sản được dự trữ nắm giữ, nhưng tài sản được dự trữ nắm giữ sẽ thay đổi khi người dùng giao dịch giữa ETH và USD. Điều gì xảy ra nếu người dùng độc hại thực hiện giao dịch trước và sau khi vay tiền từ nền tảng của bạn?
Trước khi người dùng có thể đăng ký khoản vay, họ cần chi 2 triệu USD để mua 5.000 ETH. Sàn giao dịch Uniswap hiện tính giá là 1 ETH = 2.600 USD. Giờ đây, 375 ETH của họ có thể được sử dụng làm tài sản thế chấp cho tài sản trị giá lên tới 650.000 USD. Cuối cùng, họ đã đổi 2 triệu USD lấy 5.000 ETH ban đầu, điều này sẽ khiến giá trở lại bình thường. Kết quả là nền tảng cho vay lỗ 550.000 USD.

Nghiên cứu điển hình này minh họa lỗi phổ biến nhất mắc phải khi sử dụng sàn giao dịch phi tập trung làm nhà tiên tri về nguồn cấp dữ liệu giá - kẻ tấn công gần như có toàn quyền kiểm soát giá trong quá trình giao dịch và cố gắng thao túng giá một cách chính xác cũng giống như đọc trọng lượng trên cân trước khi cân bằng. Bằng cách này, bạn có thể nhận được số sai, trong một số trường hợp có thể gây ra tổn thất lớn.
Kiểm soát MKR tổng hợp
Vào tháng 12 năm 2019, Synthetix lại bị tấn công do thao túng giá oracle. Đáng chú ý, nó vượt qua rào cản giữa dữ liệu giá trên chuỗi và dữ liệu giá ngoài chuỗi.
Người dùng Reddit u/MusaTheRedGuard nhận thấy rằng kẻ tấn công đang thực hiện một số giao dịch rất đáng ngờ chống lại sMKR và iMKR (anti-MKR). Kẻ tấn công đầu tiên mua một vị thế mua trên MKR và sau đó mua một lượng lớn MKR từ cặp Uniswap eth/MKR. Sau một thời gian chờ đợi, những kẻ tấn công đã bán MKR của chúng với giá iMKR và bán lại cho Uniswap. Sau đó họ lặp lại quá trình này.
Đằng sau hậu trường, các giao dịch của kẻ tấn công thông qua Uniswap cho phép chúng điều chỉnh giá MKR trên Synthetix theo ý muốn. Điều này có thể là do nguồn cấp giá ngoài chuỗi mà Synthetix dựa vào thực sự dựa vào giá trên chuỗi của MKR và không có đủ thanh khoản để các nhà kinh doanh chênh lệch giá điều chỉnh lại thị trường về trạng thái tối ưu.

Sự cố này minh họa một thực tế là ngay cả khi bạn cho rằng mình đang sử dụng dữ liệu giá ngoài chuỗi, bạn thực sự có thể vẫn đang sử dụng dữ liệu giá trên chuỗi và bạn có thể Vẫn tiếp xúc với sự phức tạp liên quan đến việc sử dụng dữ liệu này.
Vụ hack bZx
Vào tháng 2 năm 2020, bZx đã bị hack hai lần trong vòng vài ngày, với số tiền của cuộc tấn công lên tới khoảng 1 triệu USD. Bạn có thể tìm thấy sự hỗ trợ của palkeo tại đây Phân tích kỹ thuật được đưa ra cho cả hai cuộc tấn công, nhưng bây giờ hãy phân tích lần tấn công thứ hai.
Trong cuộc tấn công thứ hai, kẻ tấn công lần đầu tiên sử dụng ETH để mua gần như toàn bộ sUSD trên Kyber. Sau đó, kẻ tấn công đã mua lô sUSD thứ hai từ Synthetix và gửi nó vào bZx. Kẻ tấn công đã vay số lượng ETH tối đa bằng cách sử dụng sUSD làm tài sản thế chấp. Sau đó, họ bán lại sUSD cho Kyber.
Nếu bạn để ý, bạn sẽ nhận thấy rằng về cơ bản đây là cùng một cuộc tấn công cho vay không có tài sản thế chấp, chỉ sử dụng các tài sản thế chấp khác nhau và nền tảng giao dịch phi tập trung.
Harvest Finance gặp phải sự cố chênh lệch giá
Vào ngày 26 tháng 10 năm 2020, một người dùng ẩn danh đã tấn công nhóm Harvest Finance bằng cách sử dụng một kỹ thuật mà đến giờ bạn có thể đã đoán được. Bạn có thể tìm thấy nó tại đâyĐọc kết quả khám nghiệm tử thi chính thức, nhưng hãy để tôi tóm tắt lại: Kẻ tấn công đã hạ giá USDC trong nhóm Curve bằng cách thực hiện các giao dịch, vào nhóm Harvest với mức giá bị thao túng, khôi phục giá bằng cách đảo ngược các giao dịch trước đó và khôi phục giá ở mức giá cao hơn Giá cao đã thoát khỏi nhóm Harvest. Điều này dẫn đến thiệt hại hơn 33 triệu USD. (Gây ra chênh lệch tỷ giá hối đoái một cách giả tạo và thu lợi từ chúng)
Đến bây giờ, tôi hy vọng bạn đã học cách nhận ra điểm chung: điểm chung không phải lúc nào cũng rõ ràng; Sử dụng lời tiên tri về nguồn cấp dữ liệu giá , nếu bạn không tuân theo các biện pháp phòng ngừa thích hợp, kẻ tấn công có thể giả mạo giao thức của bạn và rút toàn bộ số tiền của bạn. Mặc dù không có giải pháp nào phù hợp cho tất cả nhưng đây là một số giải pháp đã từng áp dụng cho các dự án khác trong quá khứ. Có lẽ một trong những điều này cũng áp dụng cho bạn.
Chợ nước nông, đừng lặn
  ;
Giống như lao đầu vào chỗ cạn của một bể bơi, lao đầu vào một thị trường kém thanh khoản là điều đau đớn và có thể dẫn đến những khoản chi phí khổng lồ làm thay đổi cuộc đời bạn mãi mãi. Trước khi bạn cân nhắc việc lập kế hoạch sử dụng một dự đoán giá cụ thể phức tạp, hãy xem xét liệu mã thông báo có đủ thanh khoản để đảm bảo tích hợp với nền tảng hay không.
Một con chim trong tay tốt hơn hai con trong bụi rậm
p>
Việc xem tỷ lệ mã thông báo tiềm năng trên Uniswap có thể rất thú vị, nhưng kết quả cuối cùng chỉ là khi bạn thực sự nhấp vào giao dịch và mã thông báo sẽ có trong ví của bạn sau khi giao dịch thành công. Tương tự, cách tốt nhất để xác định tỷ giá hối đoái giữa hai tài sản là thực hiện hoán đổi tài sản trực tiếp. Cách tiếp cận này rất tuyệt vời vì không có sự hối tiếc hay điều gì xảy ra. Tuy nhiên, nó có thể không áp dụng cho các giao thức yêu cầu nắm giữ tài sản gốc, chẳng hạn như nền tảng cho vay.
Gần như một nhà tiên tri phi tập trung
p>
Một cách để tóm tắt vấn đề với các mô hình oracle dựa vào dữ liệu trên chuỗi là chúng còn quá mới. Nếu đúng như vậy, tại sao không trì hoãn nó một cách giả tạo? Viết hợp đồng cập nhật giá mới nhất trên sàn giao dịch phi tập trung như Uniswap, nhưng chỉ cập nhật khi được một nhóm nhỏ người dùng đặc quyền yêu cầu. Bây giờ, ngay cả khi kẻ tấn công có thể thao túng giá, chúng cũng không thể khiến giao thức của bạn thực sự sử dụng giá đó.
Phương pháp này thực hiện rất đơn giản và nhanh chóng, nhưng nó cũng có một số nhược điểm - khi chuỗi bị tắc nghẽn , bạn có thể không cập nhật được giá nhanh như mong muốn và bạn vẫn có thể dễ bị tấn công từ bên trong và bên ngoài. Ngoài ra, giờ đây người dùng của bạn cần tin tưởng rằng bạn sẽ thực sự cập nhật giá của mình.
Tốc độ tăng vọt
Việc thao túng các lời tiên tri về giá là một hoạt động nhạy cảm với thời gian vì các nhà kinh doanh chênh lệch giá luôn đứng ngoài cuộc và muốn tối ưu hóa mọi cơ hội thị trường dưới mức tối ưu. Nếu kẻ tấn công muốn giảm thiểu rủi ro, họ sẽ muốn thực hiện tất cả các giao dịch để thao túng nhà tiên tri nguồn cấp dữ liệu giá trong một giao dịch, để các nhà kinh doanh chênh lệch giá không thể chênh lệch giá ở giữa. Với tư cách là nhà phát triển giao thức, việc triển khai độ trễ chỉ bằng 1 khối giữa người dùng vào và thoát khỏi hệ thống là đủ nếu hệ thống hỗ trợ điều đó.
Tất nhiên, điều này có thể ảnh hưởng đến khả năng kết hợp và sự hợp tác giữa thợ mỏ và nhà giao dịch ngày càng tăng. Trong tương lai, những kẻ xấu có thể thao túng giá trên nhiều giao dịch vì biết rằng những người khai thác mà chúng làm việc cùng sẽ đảm bảo rằng không ai có thể nhảy vào và lấy đi một phần lợi nhuận của chúng.
Giá trung bình tính theo thời gian (TWAP)
Uniswap V2 là một chuỗi mà các nhà phát triển đã giới thiệu Lời tiên tri TWAP. Các đảm bảo an ninh chính xác do oracle cung cấp được mô tả chi tiết hơn trong tài liệu, nhưng nói chung, đối với các nhóm giao dịch lớn trong thời gian dài, không bị tắc nghẽn khối, oracle TWAP có khả năng chống lại lực tấn công thao túng oracle rất cao. Tuy nhiên, do tính chất của việc triển khai, nó có thể không phản ứng đủ nhanh với những thời điểm thị trường biến động cao và sẽ chỉ hoạt động với các tài sản đã có tính thanh khoản trên chuỗi.
Báo giá M-of-N
Đôi khi người ta nói nếu bạn muốn làm điều gì đó đúng đắn thì tốt nhất bạn nên tự mình làm. Điều gì sẽ xảy ra nếu bạn tập hợp N người bạn đáng tin cậy và yêu cầu họ gửi mức giá mà họ cho là chính xác trên chuỗi, với M câu trả lời tốt nhất làm giá hiện tại?
Nhiều dự án lớn ngày nay áp dụng phương pháp này: Maker chạy một loạt quy trình do các đơn vị đáng tin cậy vận hành Thông tin về giá nguồn cấp dữ liệu, Hợp chất tạo ra các oracle mở và cung cấp các chức năng báo giá như Coinbase, Chainlink thu thập dữ liệu giá từ các nhà khai thác Chainlink và xuất bản nó trên chuỗi. Hãy nhớ rằng nếu bạn chọn sử dụng một trong những giải pháp này, bạn hiện đã ủy quyền tin cậy cho bên thứ ba và người dùng của bạn cũng phải làm như vậy. Yêu cầu người báo giá đăng tin tức mới nhất trực tuyến theo cách thủ công cũng có nghĩa là giá có thể không được cập nhật kịp thời trong thời gian thị trường biến động cao và tắc nghẽn trên chuỗi.
Nguồn cấp dữ liệu giá Oracles là một thành phần quan trọng nhưng thường bị bỏ qua của DeFi. Việc sử dụng oracle nguồn cấp dữ liệu giá một cách an toàn là điều khó khăn và có nhiều cách để làm hỏng cả chính bạn và người dùng của bạn. Trong bài viết này, chúng tôi thảo luận về các ví dụ trước đây về thao túng giá và xác định rằng việc đọc thông tin về giá trong quá trình giao dịch có thể không an toàn và có thể dẫn đến tổn thất tài chính thảm khốc. Chúng tôi cũng thảo luận về một số kỹ thuật mà các dự án khác đã sử dụng trước đây để chống lại việc thao túng oracle nguồn cấp dữ liệu giá. Tuy nhiên, xét cho cùng thì mọi tình huống đều là duy nhất và bạn có thể thấy mình không chắc chắn liệu mình có đang sử dụng oracle nguồn cấp dữ liệu giá một cách chính xác hay không. Nếu rơi vào trường hợp này, hãy tham khảo ý kiến!
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia