Một lần nữa, các cầu nối liên quan đến Arbitrum lại trở thành “mối lo” cho cộng đồng khi mới đây, một bài viết kỹ thuật đã được chia sẻ, tiết lộ về một vài lỗ hổng tồn tại ẩn trong sản phẩm này.
Trước khi phân tích sâu về những lỗ hổng tiềm ẩn, bài đăng đã liệt kê ra những khâu cơ bản của một cầu nối, cụ thể gồm:
Lỗ hổng đầu tiên: tác giả cho rằng khâu ghi nhận giá trị “đúng-sai” của hàm thực thị Execute Call để hở cơ hội cho kẻ tấn công. Theo đó, Relayer có thể chủ động thực hiện truyền dữ liệu “False (sai)” liên tục vào hàm, từ đó có thể tạo vòng lặp cho đến khi thực hiện được mục đích ban đầu của mình thì thôi. Tác giả cũng nhấn mạnh rằng việc truyền dữ liệu từ L2->L1 thực chất có thể “retryable” – có nghĩa là thử sai liên tiếp nhiều lần.
Lỗ hổng thứ hai: Bài viết cho rằng việc hàm truyền dữ liệu từ L2 -> L1 không bị giới hạn bởi một mức gas cụ thể. Theo đó, không có một mức gas giới hạn có thể khiến kẻ tấn công liên tục ưu tiên giao dịch gọi dữ liệu của mình, đồng thời hút sạch tiền của các Relayer một cách có chủ đích và nhanh chóng nếu có sự cố xảy ra.
Lỗ hổng thứ ba: tác giả cho rằng việc copy lại return_Data sẽ tạo ra áp lực về lưu trữ dữ liệu trong memory. Việc copy lại giá trị trong biến return_Data này có thể tạo ra một lỗ hổng về vòng lặp, cho phép kẻ tấn công liên tục lưu trữ lại giá trị nhiều lần, từ đó khiến phí gas bị đội lên một cách không kiểm soát.
Về lo ngại liên quan đến đơn vị Relayer có động cơ xấu và spam giá trị vào hàm Execute Call. CTO Arbitrum cho biết:
Nói về lí do không giới hạn phí gas khi truyền dữ liệu trên Layer2, CTO này giải thích rằng đây là bước đi hướng đến những người dùng cuối:
Tóm tắt lại toàn bộ câu trả lời của mình, Harry Kalodner cho biết tác giả bài viết trên đã đặt giả thuyết tấn công vào “Relayer” – một đối tượng thậm chí gần như không tồn tại trong hệ thống sản phẩm này. Đồng thời, CTO Arbitrum khẳng định nếu làm theo hướng đề xuất của tác giả, nó sẽ giống việc bảo vệ Relayer (một đơn vị không tồn tại), song lại đưa người dùng cuối vào những rắc rối không cần thiết.
Trước đó, một nhà nghiên cứu chuyên về kỹ thuật là bartek.eth cũng liên tục đăng tải những nội dung xoay quanh câu chuyện truyền dữ liệu qua lại giữa L1-L2. Bạn đọc nếu quan tâm thì có thể tìm đọc lại các chuỗi thread của tác giả này để có góc nhìn mới về khâu kết nối giữa các mạng lưới blockchain nhé!
Trở lại câu chuyện cầu nối của Arbitrum, trong tháng 09 vừa qua, Arbitrum Nitro (phiên bản nâng cấp của Arbitrum One) đã phát hiện ra một lỗ hổng trong khâu kết nối với Layer-1 Ethereum. Rất may là quá trình xử lý đã được xúc tiến nhanh và hacker mũ trắng nói trên đã được ghi nhận đóng góp.
Bài blog khơi mào
Tài khoản Twitter tincho mới đây đã đăng tải một bài blog, chỉ ra những góc nhìn cá nhân về lỗ hổng trong cầu nối giữa Arbitrum và Ethereum.Trước khi phân tích sâu về những lỗ hổng tiềm ẩn, bài đăng đã liệt kê ra những khâu cơ bản của một cầu nối, cụ thể gồm:
- Truyền dữ liệu từ L2 – L1
- Chờ đợi một “incentivized Relayer” (tạm dịch: người chung chuyển) nhận tin nhắn dữ liệu và chuyền về L1.
- Tại Layer 1 (tức mainnet Ethereum), dữ liệu trên sẽ được nạp vào hợp đồng Smart contract để thực thi, từ đó giúp người dùng rút được tiền từ đầu cầu bên kia.
Lỗ hổng đầu tiên: tác giả cho rằng khâu ghi nhận giá trị “đúng-sai” của hàm thực thị Execute Call để hở cơ hội cho kẻ tấn công. Theo đó, Relayer có thể chủ động thực hiện truyền dữ liệu “False (sai)” liên tục vào hàm, từ đó có thể tạo vòng lặp cho đến khi thực hiện được mục đích ban đầu của mình thì thôi. Tác giả cũng nhấn mạnh rằng việc truyền dữ liệu từ L2->L1 thực chất có thể “retryable” – có nghĩa là thử sai liên tiếp nhiều lần.
Lỗ hổng thứ hai: Bài viết cho rằng việc hàm truyền dữ liệu từ L2 -> L1 không bị giới hạn bởi một mức gas cụ thể. Theo đó, không có một mức gas giới hạn có thể khiến kẻ tấn công liên tục ưu tiên giao dịch gọi dữ liệu của mình, đồng thời hút sạch tiền của các Relayer một cách có chủ đích và nhanh chóng nếu có sự cố xảy ra.
Phản hồi từ đội ngũ Arbitrum – Liệu cầu nối Arbitrum<>Ethereum thực sự có bug?
Rất nhanh sau đó, nhà sáng lập và là CTO của Arbitrum – Harry Kalodner cũng đã đăng tải dòng tweet để giải đáp về những lo ngại trên.Về lo ngại liên quan đến đơn vị Relayer có động cơ xấu và spam giá trị vào hàm Execute Call. CTO Arbitrum cho biết:
“Tất cả mọi người sử dụng cầu nối Arbitrum -> Ethereum đều biết rằng chúng tôi dự kiến người sẽ rút tiền khỏi Ethereum sau 1 tuần. Sau 1 tuần, người dùng có thể tự claim lượng tiền rút về này. Không có bất cứ một bên Relayer thứ 3 nào can thiệp vào thiết kế lẫn khâu thực thi.”
Nói về lí do không giới hạn phí gas khi truyền dữ liệu trên Layer2, CTO này giải thích rằng đây là bước đi hướng đến những người dùng cuối:
“Nếu mức gas được giới hạn trên L2 vào thời gian 1 tuần trước khi giao dịch được thực hiện, sẽ xuất hiện khả năng rằng giao dịch trên không còn hiệu nghiệm, khiến lượng tiền của người dùng sẽ bị kẹt lại mãi mãi. Hiện tượng trên sẽ được hoàn toàn được phòng ngừa bởi thiết kế của chúng tôi.”
Tóm tắt lại toàn bộ câu trả lời của mình, Harry Kalodner cho biết tác giả bài viết trên đã đặt giả thuyết tấn công vào “Relayer” – một đối tượng thậm chí gần như không tồn tại trong hệ thống sản phẩm này. Đồng thời, CTO Arbitrum khẳng định nếu làm theo hướng đề xuất của tác giả, nó sẽ giống việc bảo vệ Relayer (một đơn vị không tồn tại), song lại đưa người dùng cuối vào những rắc rối không cần thiết.
Những câu chuyện bên lề
Sau những “nhộn nhịp” trong tối nay, một tài khoản hay chia sẻ về mảng kỹ thuật blockchain là Polynya cũng có những khuyến nghị với người dùng khi sử dụng các dạng cầu nối giữa L2-L1.“Vì Arbitrum One đang đứng vị trí thứ 3 về lượng tài sản được khoá vào (chỉ sau Ethereum và BSC), tôi nghĩ rằng các bạn nên cẩn thận khi sử dụng. Điểm nối yếu nhất gây ra rủi ro cực lớn chính là việc các nâng cấp thay đổi khẩn cấp sẽ chỉ cần 4/6 chữ ký multi-sig là sẽ được thông qua.”
Trước đó, một nhà nghiên cứu chuyên về kỹ thuật là bartek.eth cũng liên tục đăng tải những nội dung xoay quanh câu chuyện truyền dữ liệu qua lại giữa L1-L2. Bạn đọc nếu quan tâm thì có thể tìm đọc lại các chuỗi thread của tác giả này để có góc nhìn mới về khâu kết nối giữa các mạng lưới blockchain nhé!
Trở lại câu chuyện cầu nối của Arbitrum, trong tháng 09 vừa qua, Arbitrum Nitro (phiên bản nâng cấp của Arbitrum One) đã phát hiện ra một lỗ hổng trong khâu kết nối với Layer-1 Ethereum. Rất may là quá trình xử lý đã được xúc tiến nhanh và hacker mũ trắng nói trên đã được ghi nhận đóng góp.