

Các nhà phát triển Ethereum đã xác định được một lỗi trong ứng dụng Besu Ethereum có thể dẫn đến sự thất bại đồng thuận trong các mạng có nhiều triển khai EVM.
Gary Schulte đã báo cáo vấn đề với kho lưu trữ Hyperledger GitHub và được tìm thấy bởi Martin Holst Swende. Điều này được hiểu rằng không có mạng lưới sản xuất nào có các giao dịch có thể gây ra lỗi này.
Lỗi được xác định trong quá trình xem xét mã giữ
Swende ghi lại rằng anh ta đã tìm thấy lỗi trong khi thực hiện một số hoạt động #ethereum để chuẩn bị cho #TheMerge. Trả lời một nhà báo của WebGiaCoin, Swende nói rằng người dùng đang chạy Besu Node sẽ bị mắc kẹt và không thể theo dõi chuỗi canon. Hơn nữa, bất kỳ mạng nào do người dùng thống trị đều có thể bị chặn lại trong đường đi của nó.
They would have been stuck, not able to follow the canon chain. And/or, any besu-dominated network (non-eth-mainnet) could have been stopped in it's tracks.
— M H (((Swende))) (@mhswende) September 27, 2022
Máy khách Besu là máy khách phổ biến thứ hai trên mạng Ethereum sau Geth. Theo dữ liệu có sẵn trên etherNodes.org, ứng dụng khách Besu được sử dụng bởi 7,81% khách hàng của mạng chính Ethereum.
Phiên bản máy khách Besu dễ bị tổn thương
Phiên bản 22.7.1 của khách hàng Besu có bản sửa lỗi để đảm bảo lượng gas dư thừa sẽ không được phân bổ cho các cuộc gọi giao dịch nội bộ và khắc phục các lỗi gas dư thừa.
Các phiên bản trước 22.1.3 cũng sẽ ngăn chặn việc thực thi sai, tuy nhiên, mạng chính Ethereum yêu cầu các tính năng khác chỉ có sẵn trong các phiên bản sau. Phiên bản ứng dụng khách 22.4.0 đến 22.7.0 hiện được coi là dễ bị lỗi gas.
Do đó, người dùng máy khách Besu trên mạng chính phải nâng cấp lên phiên bản vá lỗi.
Tác động và cách giải quyết
Danno Ferrin đã tạo ra một bài viết đầy đủ về vấn đề này trong một bài báo trên Hackmd được xuất bản vào ngày 21 tháng 9. Phân tích của Ferrin nói rằng
Một lỗ hổng trong việc xử lý dữ liệu chưa ký vì dữ liệu đã ký, một hợp đồng thông minh được mã hóa đúng cách có thể tạo ra một lệnh gọi hàm sẽ trả về nhiều khí hơn đã được chuyển vào.
Thông tin kỹ thuật khác về lỗi có thể được tìm thấy trong bài đăng của Ferrin. Tuy nhiên, điểm rút ra chính là lỗi đã được giải quyết mà không có bất kỳ sự cố nào trên mạng chính Ethereum. Để một kẻ xấu khai thác lỗi một cách ác ý, họ sẽ phải hành động một cách chính xác.
Để cải thiện lỗi này thành lỗi ngắt dây chuyền, cần có một cuộc gọi được tạo thủ công có chủ ý, liên quan đến một số tương tác với EIP-150, tất cả trừ một quy tắc thứ 64 và dành một phần khí có sẵn cho hợp đồng gọi.
Nếu lỗi không được tìm thấy, bất kỳ chuỗi nào có sự tham gia cao từ khách hàng Besu đều có thể trải qua vòng lặp vô hạn của hợp đồng thông minh, theo đó hợp đồng sẽ thực sự thực thi mãi mãi.
Ferrin tuyên bố rằng fuzzing cho phép các nhà phát triển xác định và vá lỗi mà không có vấn đề gì. Fuzzing là một phương pháp được các nhà phát triển phần mềm sử dụng liên quan đến việc cung cấp dữ liệu không hợp lệ, không mong đợi hoặc ngẫu nhiên làm đầu vào cho một chương trình máy tính.
Bài học lớn nhất được chứng minh bằng cách khai thác này là việc so sánh dữ liệu theo dõi trong một quá trình thực thi fuzzing bắt được nhiều lỗi hơn là chỉ so sánh kết quả cuối cùng.
Lỗi gas dư thừa đã trở thành một sự kiện không phải do sự siêng năng của các nhà phát triển Ethereum cống hiến hết mình để bảo vệ mạng. Tuy nhiên, tác hại tiềm ẩn mà nó có thể gây ra cho thấy sự phức tạp đằng sau việc thực hiện giữ mà không có vấn đề gì.
Lỗi đã được vá trong phiên bản 22.7.1 bằng cách sử dụng một phương pháp chuyển đổi khác sẽ kẹp các giá trị tràn xuống giá trị dự kiến tối đa để tránh các sự cố dịch đã ký. Ferrin nhận xét rằng người dùng đang chạy Nodes trong phạm vi dễ bị tấn công nên cập nhật lên phiên bản mới nhất.
Bài đăng xuất hiện đầu tiên trên WebGiaCoin.
Theo Cryptoslate
|
Tags: Hack, Giữ, Công nghệ, Web3,