Bản phát hành bảo mật Geth | Blog của Ethereum Foundation

Rate this post

Bản tóm tắt

Các phiên bản của geth được xây dựng bằng cờ vây <1,15,5 hoặc <1,14,12 rất có thể bị ảnh hưởng bởi một lỗ hổng bảo mật nghiêm trọng liên quan đến DoS. Nhóm golang đã đăng ký lỗ hổng này là ‘CVE-2020-28362’.

Chúng tôi khuyên tất cả người dùng xây dựng lại (lý tưởng là v1.9.24) với Go 1,15,5 hoặc 1.14.12để tránh sự cố nút. Ngoài ra, nếu bạn đang chạy các tệp nhị phân được phân phối qua một trong các kênh chính thức của chúng tôi, chúng tôi sẽ phát hành v1.9.24 chính chúng tôi đã xây dựng bằng cờ vây 1,15,5.

Hình ảnh Docker hầu hết có thể sẽ bị lỗi thời do thiếu hình ảnh cơ sở, nhưng bạn có thể kiểm tra ghi chú phát hành về cách tạm thời tạo một hình ảnh với Go 1,15,5. Hãy chạy phiên bản geth để xác minh phiên bản Go mà hệ nhị phân của bạn đã được tạo.

Tiểu sử

Vào đầu tháng 10, go-ethereum đã đăng ký vào Google OSS-Fuzz chương trình. Chúng tôi đã thực hiện trước các bộ làm mờ trên cơ sở đặc biệt và thử nghiệm một số nền tảng khác nhau.

Vào ngày 24 tháng 10 năm 2020, chúng tôi đã được thông báo rằng một trong những bộ phận làm chậm của chúng tôi đã tìm thấy sự cố.

Sau khi điều tra, hóa ra nguyên nhân gốc rễ của vấn đề là do lỗi trong thư viện tiêu chuẩn của Go và vấn đề đã được báo cáo ngược dòng.

Trân trọng cảm ơn Adam Korczynski của Ada Logics cho sự tích hợp ban đầu của go-ethereum vào OSS-Fuzz!

Va chạm

Vấn đề DoS có thể được sử dụng để làm hỏng tất cả các nút Geth trong quá trình xử lý khối, ảnh hưởng của việc này sẽ là một phần chính của mạng Ethereum bị gián đoạn.

Bên ngoài Go-Ethereum, vấn đề rất có thể liên quan đến tất cả các nhánh của Geth (chẳng hạn như TurboGeth hoặc core-geth của ETC). Đối với bối cảnh rộng lớn hơn nữa, chúng tôi sẽ đề cập đến phần thượng nguồn, vì Go-team đã thực hiện một cuộc điều tra về các bên có khả năng bị ảnh hưởng.

Mốc thời gian

  • 2020-10-24: Báo cáo sự cố từ OSS-fuzz
  • Ngày 10 tháng 10 năm 2020: Điều tra cho thấy đó là do lỗ hổng trong cờ vây. Thông tin chi tiết được gửi đến [email protected]
  • 2020-10-26: Thừa nhận từ thượng nguồn, đang tiến hành điều tra
  • 2020-10-26 – 2020-11-06: Các bản sửa lỗi tiềm năng được thảo luận, điều tra ngược dòng về các bên có khả năng bị ảnh hưởng
  • 2020-11-06: Bản phát hành sửa lỗi dự kiến ​​ngược dòng được lên lịch cho 2020-11-12
  • 2020-11-09: Upstream thông báo trước bản phát hành bảo mật: https://groups.google.com/g/golang-anosystem/c/kMa3eup0qhU/m/O5RSMHO_CAAJ
  • 2020-11-11: Thông báo cho người dùng về bản phát hành sắp tới qua twitter chính thức của Geth tài khoảnkênh Discord chính thức của chúng tôi và Reddit.
  • 2020-11-12: Phiên bản Go mới được phát hành và mới geth nhị phân đã được phát hành

Các vấn đề bổ sung

Lỗ hổng khai thác

Một vấn đề bảo mật khác đã được chúng tôi chú ý thông qua PR nàychứa một bản sửa lỗi cho thuật toán ethash.

Lỗ hổng khai thác có thể khiến các thợ đào tính toán sai PoW trong một kỷ nguyên sắp tới. Điều này đã xảy ra trên chuỗi ETC vào ngày 2020-11-06. Có vẻ như đây sẽ là một vấn đề đối với mạng chính ETH xung quanh khối 11550000 / epoch 385sẽ xảy ra vào đầu tháng 1 năm 2021.

Sự cố này cũng đã được khắc phục kể từ 1.9.24. Vấn đề này chỉ liên quan đến các thợ đào, các nút không khai thác sẽ không bị ảnh hưởng.

Lỗi sao chép nông Geth

Ảnh hưởng: 1.9.71.9.16

Đã sửa: 1.9.17

Loại: Lỗ hổng đồng thuận

Vào ngày 20 tháng 7 năm 2020, John Youngseok Yang (Phòng thí nghiệm Nền tảng Phần mềm) đã báo cáo một lỗ hổng đồng thuận trong Geth.

Geth’s biên dịch trước dataCopy (0x00 … 04) hợp đồng đã tạo ra một bản sao ngắn trên lệnh gọi, trong khi Parity đã thực hiện một bản sao sâu. Kẻ tấn công có thể triển khai một hợp đồng

  • viết X đến vùng bộ nhớ EVM R,
  • cuộc gọi 0x00..04 với R như một lập luận,
  • ghi đè R đến Y,
  • và cuối cùng gọi RETURNDATACOPY opcode.
  • Khi hợp đồng này được gọi, Parity sẽ đẩy X trên ngăn xếp EVM, trong khi Geth sẽ đẩy Y.

Hậu quả

Điều này đã được khai thác trên Ethereum Mainnet tại khối 11234873Giao dịch 0x57f7f9. Điểm giao đã bị xóa khỏi mạng, gây mất ~ 30 khối trên một sidechain. Nó cũng khiến Infura ngừng hoạt động, gây ra vấn đề cho rất nhiều người và dịch vụ phụ thuộc vào Infura như một nhà cung cấp phụ trợ.

Có thể tìm thấy nhiều ngữ cảnh hơn trong sau khám nghiệm GethAnh ta ăn trộm sau khi chếtnơi đây.

DoS trong .16.17

Ảnh hưởng: v1.9.16,v1.9.17

Đã sửa: v1.9.18

Loại: Lỗ hổng DoS trong quá trình xử lý khối

Một lỗ hổng DoS đã được tìm thấy và được khắc phục trong v1.9.18. Chúng tôi đã chọn không công bố chi tiết vào thời điểm này.

khuyến nghị

Trước mắt, chúng tôi khuyên tất cả người dùng nâng cấp lên geth phiên bản v1.9.24 (nên được xây dựng với Go 1,15,5) ngay lập tức. Bản phát hành chính thức có thể được tìm thấy nơi đây.

Nếu bạn đang sử dụng Geth thông qua Docker, có thể có một số vấn đề. Nếu bạn đang sử dụng ethereum / client-gocó hai điều cần lưu ý:

  1. Có thể có sự chậm trễ trước khi hình ảnh mới xuất hiện trên trung tâm docker.
  2. Trừ khi các hình ảnh cơ sở của cờ vây được tạo đủ nhanh, nếu không, chúng có khả năng được xây dựng bằng dễ bị tổn thương phiên bản của cờ vây.

Nếu bạn đang tự xây dựng hình ảnh docker, (thông qua chế tạo docker. từ gốc kho lưu trữ), thì vấn đề thứ hai cũng có thể gây ra sự cố cho bạn.

Vì vậy, hãy cẩn thận để đảm bảo rằng Go 1,15,5 được sử dụng làm hình ảnh cơ sở.

Về lâu dài, chúng tôi khuyên người dùng và thợ đào cũng nên xem xét các khách hàng thay thế. Chúng tôi cảm thấy mạnh mẽ rằng khả năng phục hồi của mạng Ethereum không nên phụ thuộc vào bất kỳ triển khai khách hàng đơn lẻ nào. Có Besut, Nethermind, OpenEthereumTurboGeth và những người khác để lựa chọn.

Vui lòng báo cáo các lỗ hổng bảo mật qua https://bounty.ethereum.orghoặc thông qua [email protected] hoặc thông qua [email protected].

Thuc Quyen

Leave a Reply

Your email address will not be published. Required fields are marked *