
Trong vài tuần qua, người dùng giao thức blockchain EOS đã gặp phải sự cố định kỳ với quyền truy cập mạng. Mới đây bài báo được viết bởi nhà phát triển hợp đồng thông minh và kỹ sư bảo mật có biệt danh Dexaran đã mô tả gốc rễ rõ ràng của vấn đề: một kỹ thuật rẻ tiền cho phép tin tặc “làm tắc nghẽn” mạng – hoặc đưa nó vào chế độ hiệu quả thấp – chỉ với một vài đô la EOS.
Dường như, việc khai thác đó đã cho phép một tin tặc đánh cắp hơn 110.000 đô la tiền điện tử từ một ứng dụng cờ bạc EOS, EOSPlay, vào đầu tháng 9. Tuy nhiên, các giám đốc điều hành của công ty mẹ của EOS, Block.one, không mê mẩn, lập luận rằng mạng đang hoạt động “chính xác.”
Khái niệm cơ bản về EOS: Quản trị, đặt cược và chế độ tắc nghẽn
EOS.io là một giao thức hợp đồng thông minh được hỗ trợ bởi blockchain để phát triển và lưu trữ các ứng dụng phi tập trung (DApps). Nó sử dụng một mô hình đồng thuận được gọi là bằng chứng cổ phần được ủy quyền (DPoS) và được điều chỉnh theo Thỏa thuận người dùng EOS (EUA).
Theo thỏa thuận, các thay đổi đối với mạng có thể được thực hiện khi có sự đồng thuận giữa ít nhất 15 trong số 21 Nhà sản xuất khối – tức là các thực thể độc lập chịu trách nhiệm xử lý các khối trên blockchain EOS.
Giao thức được hỗ trợ bởi tiền điện tử gốc cùng tên của nó, hiện là tài sản lớn thứ bảy tính theo tổng vốn hóa thị trường. Những mã thông báo đó là cốt lõi của cơ chế khoanh vùng tài nguyên được tích hợp sẵn, một trong những tính năng đặc biệt của EOS. Bất cứ khi nào một giao dịch được gửi đến mạng EOS, Nhà sản xuất khối phải xử lý nó.
Khoảng thời gian (tính bằng micro giây) mà Block Producer yêu cầu để xác thực giao dịch được gọi là CPU. Nói một cách đơn giản, người dùng và nhà phát triển EOS có thể có quyền truy cập vào tài nguyên CPU và băng thông trên toàn chuỗi bằng cách đặt mã thông báo của họ. Các khối được tạo ra sau mỗi 500 mili giây. Mỗi Block Producer có 200 mili giây để xác thực khối. 300 mili giây còn lại được để lại để phân phối trên toàn mạng.
Đáng chú ý, trong giới hạn 200 mili giây, cũng có một ngưỡng phần trăm mà tại đó việc giới hạn tốc độ bắt đầu trên toàn mạng. Nói cách khác, khi một khối đạt đến giới hạn 10% trong tổng số 200 mili giây CPU cho phép trên mỗi khối, nó gây nên thuật toán phân bổ CPU chuyển sang chế độ “tắc nghẽn”.
“Trước khi đạt đến giới hạn này, tất cả người dùng có thể tự do giao dịch trên mạng vì mạng này không ở ‘chế độ tắc nghẽn’,” tác giả của bài báo giải thích. “Sau khi vượt qua giới hạn này, người dùng sẽ được điều chỉnh trở lại tỷ lệ chia sẻ theo tỷ lệ của họ trong tổng phân bổ CPU trên mỗi cổ phiếu EOS.”
Theo một bài báo khác được chấp bút bởi EOS Canada, một Nhà sản xuất khối lớn trong mạng blockchain EOS, nếu có 1.000 mã thông báo được đặt cọc cho CPU tại một thời điểm nhất định và một tài khoản duy nhất có 20 mã thông báo được đặt cọc, thì tài khoản đó sẽ được đảm bảo 2% tổng số CPU năng lực của mạng.
Tuy nhiên, nếu mạng chưa đạt đến ngưỡng mà tại đó giới hạn tốc độ được kích hoạt (không phải ở chế độ “tắc nghẽn”), nó cho phép tài khoản đó đẩy các giao dịch vượt quá số tiền được đảm bảo là 2%. Sau khi vượt qua ngưỡng đó, tài khoản không thể vượt quá mức phân bổ. Hơn nữa, trong quá trình "tắc nghẽn" giai đoạn, số lượng CPU của mỗi người dùng bắt đầu giảm cho đến khi mọi bên sử dụng hết CPU và ngừng thực hiện các hành động tiêu tốn CPU.
Daniel Larimer, đồng sáng lập EOS và giám đốc công nghệ tại Block.one, đề cập đến đối với cơ chế này như một “lợi ích miễn phí” của mạng:
“Việc sở hữu và đặt cược #eos mang lại cho người dùng một phần chia theo tầng của băng thông khả dụng. Khi mọi người không sử dụng chia sẻ của họ, nó sẽ được chuyển hướng đến những người khác trên cơ sở phân tầng. Trong quá trình sử dụng nhiều, người dùng không còn nhận được lợi ích miễn phí này nữa. ”
Vấn đề: Chế độ tắc nghẽn quá dễ kích hoạt
Dexaran lập luận, vấn đề là chế độ tắc nghẽn quá dễ kích hoạt. Sau khi phân tích, nhà phát triển hợp đồng thông minh nhận thấy mức sử dụng CPU tăng đột biến vào đầu mỗi giờ, được cho là do DApp cá cược có tên EOSBetDice gây ra. Dexaran sau đó quyết định đánh giá xem cần bao nhiêu CPU để đẩy mạng vào tình trạng tắc nghẽn.
Đối với thử nghiệm, nhà phát triển đã đặt 7.156 EOS cho CPU. Số lượng EOS đó có thể được vay từ các sàn giao dịch tài nguyên với chi phí thấp là hai EOS mỗi tháng (dưới 6 đô la), Dexaran nhấn mạnh. Để xem thử nghiệm sẽ ảnh hưởng như thế nào đến người dùng mạng EOS trung bình, kỹ sư bảo mật đã chọn trước ba tài khoản người dùng ngẫu nhiên đang trực tuyến chơi EOSKnights DApp ngay trước khi phiên bắt đầu.
Sau đó, nhà phát triển đã thực hiện một hợp đồng tạo ra rất nhiều giao dịch bị hoãn lại với độ trễ là một giây, với mỗi giao dịch tiêu tốn “25 đến 27 mili giây CPU”. Sau khi độc quyền sử dụng CPU trong cả phút, hợp đồng đã đẩy mạng EOS vào chế độ tắc nghẽn. Do đó, tất cả ba tài khoản mẫu đều không có CPU và do đó “đóng băng hoàn toàn” – về cơ bản có nghĩa là tất cả người dùng EOS bình thường không thể tương tác với bất kỳ DApps nào trên mạng vào thời điểm đó.
Hai phút sau, EOSBetDice DApp nói trên – khiến CPU thường xuyên tăng đột biến mỗi giờ, không phụ thuộc vào thử nghiệm – bắt đầu hoạt động theo lịch trình. Bằng cách tiêu thụ nhiều CPU hơn từ mạng vào thời điểm nó đã quá tải, nó đã vô tình góp phần gây ra tắc nghẽn do Dexaran khởi xướng. “Bạn càng tiêu thụ nhiều CPU liên tiếp, chế độ tắc nghẽn sẽ càng‘ sâu ’hơn và mất nhiều thời gian hơn để mạng khôi phục về chế độ bình thường”, nhà phát triển lưu ý.
Do đó, mạng EOS thậm chí còn rơi vào tình trạng tắc nghẽn “sâu hơn” và tính khả dụng của CPU được báo cáo là đã giảm 35 lần đối với tất cả người dùng EOS. “Bất kể bạn đặt cọc bao nhiêu EOS cho CPU – nếu bạn đã sử dụng hơn 3% thì bạn sẽ bị đóng băng,” Dexaran nhận xét.
Sau khi hợp đồng của Dexaran và EOSBetDice nhấn mạnh mạng trong tổng cộng năm phút, mạng có vẻ như bị tê liệt trong 10 phút tiếp theo. Sau sáu phút nữa trôi qua, nó đã phục hồi phần lớn, nhưng giá cho vay của EOS tại các sàn giao dịch tài nguyên vẫn cao hơn khoảng ba lần so với bình thường, cho thấy rằng mạng yêu cầu số lượng lớn mã thông báo được phân bổ trong CPU vào thời điểm đó do thử nghiệm căng thẳng.
Mạng hoàn toàn khôi phục chỉ 30 phút sau lần cuối cùng "độc hại" hoạt động. Điều đó mang lại cho người dùng “khoảng thời gian 25 phút cho đến phiên tắc nghẽn tiếp theo”, Dexaran lưu ý, vì cuộc tấn công có thể được thực hiện mỗi giờ, theo ước tính của nhà phát triển. “7000 EOS đủ để đẩy mạng EOS vào chế độ tắc nghẽn trong một khoảng thời gian thích hợp,” nhà nghiên cứu kết luận và nói thêm:
“Phiên tắc nghẽn được mô tả sẽ chỉ gây ra vấn đề cho (1) người dùng đã dành một phần băng thông CPU nhất định của họ, (2) người dùng có băng thông CPU rất thấp. Phiên tắc nghẽn được mô tả không ảnh hưởng đến (1) DApp có sẵn nhiều CPU, (2) người dùng không tham gia vào bất kỳ hoạt động nào và có đầy đủ CPU của họ (giả sử rằng những người dùng này có đủ CPU để tạo một tx ). ”
Ngoài ra, Dexaran nhấn mạnh rằng mặc dù một số người dùng EOS có thể gọi anh ta hoặc cô ta là "Tin tặc" do cố tình làm quá tải mạng, “Tôi đang làm hoàn toàn ngược lại: Tôi đang bảo vệ các khoản đầu tư của mình và của bạn.”
Đáng chú ý, một vài ngày trước khi mục nhập của Dexaran về tắc nghẽn EOS được xuất bản, nhà phát triển Christoph Michel đã viết một bài blog liên kết vụ hack sòng bạc EOSPlay gần đây với tình trạng tắc nghẽn mạng, do đó cho thấy sự cố mạng có thể bị lợi dụng như thế nào để thu lợi.
Theo Michel, kẻ tấn công đã thuê mã thông báo EOS từ REX, một thị trường cho thuê tài nguyên CPU và NET, sau đó xếp chồng lên nhau để tăng cả CPU của anh ta và EOSPlay để đảm bảo sòng bạc vẫn hoạt động – do đó vẫn có thể thanh toán tiền cược của mình. Sau đó, tin tặc đã gửi thư rác vào mạng với các giao dịch tương tự như Dexaran và chơi một số trò chơi xúc xắc trên EOSPlay, đặt cược vào kết quả 50/50. Cho rằng EOSPlay xem xét hàm băm khối của khối kết quả và lấy hai ký tự đầu tiên – bắt đầu từ bên phải và từ 0 đến chín – làm lần tung xúc xắc, người ta phải dự đoán hàm băm khối của khối kết quả để giành chiến thắng trong trò chơi.
“Ẩn số duy nhất trong dự đoán là các giao dịch được bao gồm trong các khối,” Michel giải thích. “Nhưng điều gì sẽ xảy ra nếu một người chỉ có thể spam và làm nghẽn mạng để không ai khác có thể gửi giao dịch?”
Theo nhà phát triển, đó chính xác là lý do tại sao kẻ tấn công mượn EOS để spam mạng: để có quyền kiểm soát mạng và do đó có thể dự đoán các băm khối và giành chiến thắng hầu hết các cược của mình. Trong trường hợp dự đoán sai, kẻ tấn công có thể gửi một giao dịch ngẫu nhiên khác đến khối và do đó có thêm một lần “lật xu”, cải thiện đáng kể tỷ lệ cược.
Cuối cùng, hacker chỉ sử dụng 300 EOS, trị giá hơn 1.000 đô la một chút, mà anh ta hoặc cô ta có thể đã thuê với giá vài đô la. Đổi lại, kho bạc chiến thắng cố định mang lại hơn 30.000 EOS, tương đương khoảng 110.000 đô la.
Các nhà phát triển EOS đảm bảo rằng mạng “hoạt động chính xác”, không phải tất cả đều đồng ý
Các thử nghiệm tắc nghẽn của Dexaran đã không được chú ý, vì một số người dùng đã báo cáo rằng có “sự cố CPU” trên Twitter và Reddit. Denis Bredikhin, Giám đốc điều hành của Graphene Lab, một nhóm các nhà phát triển hợp đồng thông minh, xác nhận với Cointelegraph rằng người dùng đặt cược EOS dựa trên poker DApp của họ cũng đã gặp sự cố trong những tuần qua, mặc dù bản thân ứng dụng không bị xâm phạm. Bredikhin nói:
“Vào thời điểm cao điểm của spam, người chơi ngay cả với 8-10 nghìn EOS được phân bổ cho CPU, cũng không thể thực hiện bất kỳ thao tác nào.”
Theo ông, bắt đầu từ ngày 1 tháng 10, người chơi phải phân bổ “tối đa 10.000 EOS” trong CPU để trò chơi không dừng lại đối với họ trong các phiên spam. Trong khi đó, Block.one’s Larimer đã lên Twitter để trấn an cộng đồng rằng EOS đang “hoạt động chính xác”. Anh ta đã viết:
“Điều này không khác gì khi những kẻ tấn công tràn ngập eth hoặc bitcoin với thư rác giao dịch phí cao. Mạng không bị đóng băng đối với chủ sở hữu mã thông báo, chỉ là không có thêm băng thông để sử dụng miễn phí. “
Tuy nhiên, một số thành viên cộng đồng cầu xin sự khác biệt. “Sự khác biệt giữa cuộc tấn công này vào EOS và spam phí cao trên BTC hoặc ETH là bạn vẫn có thể trả nhiều hơn để gửi một giao dịch trên BTC hoặc ETH,” Tranh luận Rob Finch, Giám đốc điều hành của CypherGlass, Nhà sản xuất khối EOS có trụ sở tại Hoa Kỳ. Anh ấy nói thêm:
“Nhiều người dùng EOS không có đủ CPU để thuê thêm CPU nên nó đã đóng băng đối với họ. Vận hành chính xác ‘không phải là IMO phản hồi tốt nhất. “
Một người dùng EOS khác, doanh nhân blockchain Jared Moore, đã xác nhận rằng mạng không thể sử dụng được cho DApps hoặc ví của anh ấy. Anh ấy cũng tự hỏi liệu Block.one có “giúp đỡ cộng đồng EOS và xuất bản các hướng dẫn về cách ngăn chặn các cuộc tấn công REX hay không.”
Cointelegraph đã liên hệ với Block.one để nhận xét thêm và sẽ cập nhật bài viết khi có thêm thông tin.
