Hard fork Constantinople bị trì hoãn do lỗ hổng
秦晓峰
@QinXiaofeng888
2019-01-16 04:03
本文约1691字,阅读全文需要约7分钟
Về việc liệu việc nâng cấp hard fork có được thực hiện vào thứ Hai tới hay không, Hu Jingyu nói rằng thời điểm cụ thể cho việc nâng cấp hard fork vẫn chưa được quyết định, bởi vì quan chức này

dựa theoblog.ethereum Theo tin tức, do phát hiện ra các lỗ hổng bảo mật lớn trong Đề xuất cải tiến Ethereum (EIP 1283), hard fork Constantinople ban đầu dự kiến ​​thực hiện trên khối thứ 7080000 đã bị hoãn lại.

Người sáng lập tuần trong EthereumEvan Van NessNgày hard fork mới sẽ được xác định trong cuộc gọi hội nghị nhà phát triển cốt lõi tiếp theo vào thứ Sáu, công ty cho biết. Nhà phát triển lõi EthereumAfri Schoedontiêu đề phụ

Tôi nên làm gì nếu lỗ hổng xảy ra?

Về việc xử lý lỗ hổng EIP 1283, quan chức Ethereum cũng đã tuyên bố thông qua một blog rằng hard fork Constantinople sẽ bị hoãn lại, nghĩa là nó sẽ không được fork trên khối thứ 7.080.000 và đưa ra các giải pháp liên quan:

Đối với các nút, công cụ khai thác và trao đổi đã được nâng cấp và đồng bộ hóa, phiên bản cần được cập nhật kịp thời sau khi phiên bản Geth hoặc Parity mới được phát hành. Phiên bản mới dự kiến ​​​​sẽ được phát hành trong vòng 3 đến 4 giờ sau khi phát hành blog . Kế hoạch cụ thể như sau:

  • Phiên bản Geth: nâng cấp lên Geth 1.8.21; hạ cấp xuống Geth 1.8.19; nếu bạn muốn tiếp tục sử dụng Geth 1.8.20, hãy sử dụng công tắc '-override.constantinople=9999999' để hoãn fork Constantinople vô thời hạn;

  • Phiên bản chẵn lẻ: Nên nâng cấp lên Parity Ethereum 2.2.7 ổn định hoặc Parity Ethereum 2.3.0-beta; không nên hạ cấp xuống Parity Ethereum 2.2.4-beta.

Đối với các nút, ví và chủ sở hữu mã thông báo (người dùng mạng) chưa được nâng cấp đồng bộ, hiện không cần thực hiện hành động nào.

tiêu đề phụ

Lỗ hổng là gì?

Vào lúc 0:00 giờ Bắc Kinh hôm nay, công ty kiểm toán hợp đồng thông minhChainSecurityĐã xuất bản một báo cáo nói rằng có một lỗ hổng trong mã Ethereum Constantinople (EIP 1283) có thể dẫn đến một "cuộc tấn công reentrancy" - tấn công các hợp đồng liên quan, sửa đổi số dư của người dùng hoặc các biến số quan trọng khác.

Tại sao các cuộc tấn công vào lại xảy ra? ChainSecurity tin rằng trước fork, một kho lưu trữ cần ít nhất 5000 gas, nhiều hơn nhiều so với 2300 gas được gửi khi sử dụng "chuyển" hoặc "gửi" để gọi hợp đồng; sau fork, một kho lưu trữ chỉ cần 200 gas và kẻ tấn công có thể vượt qua Gọi một số chức năng công khai, thay đổi các biến cần thiết. Ví dụ: kẻ tấn công có thể gọi hợp đồng của kẻ tấn công và chỉ cần tiêu tốn 2300 gas để thay đổi thành công các biến của hợp đồng yếu, bao gồm cả số dư tài khoản.

Tất nhiên, một số điều kiện cần thiết để cuộc tấn công thành công:

  • Phải có một chức năng trong đó "chuyển/gửi" ngay sau đó là thao tác thay đổi trạng thái, điều này đôi khi không rõ ràng;

  • Kẻ tấn công phải có chức năng B mới có thể truy cập chức năng A để thay đổi trạng thái và sự thay đổi trạng thái của B sẽ xung đột với chức năng A;

  • Chức năng B cần được thực hiện với ít hơn 1600 gas (phí gas 2300 - phí cuộc gọi gas 700).

ChainSecurity nhắc nhở mọi người rằng có thể ngăn chặn các hợp đồng bị tấn công bằng cách kiểm tra các khía cạnh sau:

  • Kiểm tra nếu có bất kỳ hành động nào sau sự kiện chuyển giao.

  • Kiểm tra xem các thao tác này có làm thay đổi trạng thái lưu trữ hay không, phổ biến nhất là cấp phát một số biến lưu trữ, kiểm tra biến nào bị thay đổi, lập danh sách.

  • Kiểm tra xem bất kỳ phương thức nào khác trong hợp đồng mà những người không phải quản trị viên có thể truy cập được đều sử dụng một trong các biến này;

  • Kiểm tra xem các phương thức có tự thay đổi trạng thái lưu trữ không;

  • tiêu đề phụ

Khi nào lỗi sẽ tái diễn?

Cuộc tấn công vào lại trong EIP 1283 đã xuất hiện nhiều lần trong lịch sử phát triển của Ethereum, đây là một căn bệnh dai dẳng.

"Trên thực tế, phương thức tấn công này đã nổi tiếng trong Ethereum từ lâu. Tôi không tin rằng cộng đồng Ethereum lại không xem xét vấn đề này", Hu Jingyu, một nhà nghiên cứu Ethereum, nói với Odaily.

Tác động lớn nhất của các cuộc tấn công vào lại là sự cố lỗ hổng hợp đồng DAO. Vào thời điểm đó, tin tặc đã sử dụng các lỗ hổng trong hợp đồng The DAO để chuyển Ethereum (ETH) trị giá hơn 40 triệu đô la. Để lấy lại tiền, cộng đồng Ethereum đã quyết định thực hiện soft fork và hard fork. Kết quả là, có sự khác biệt trong cộng đồng. Một số chọn ở lại chuỗi ban đầu (nay là ETC) và một số chọn tham gia chuỗi fork mới (ETH).

Theo Hu Jingyu, để tạo điều kiện thuận lợi cho một số hoạt động logic, hợp đồng thông minh Ethereum đã để lại một phương thức gọi là "chuyển () và gửi ()", nhưng nó cũng để lại rủi ro bảo mật cho các nhà phát triển. "Nhưng miễn là các nhà phát triển biết rằng có nguy cơ bảo mật như vậy, họ có thể đảm bảo an ninh bằng cách đưa ra những phán đoán hợp lý hơn khi viết mã."

Về việc liệu việc nâng cấp hard fork có được thực hiện vào thứ Hai tới hay không, Hu Jingyu nói rằng thời điểm cụ thể cho việc nâng cấp hard fork vẫn chưa được quyết định, bởi vì quan chức này vẫn chưa đánh giá các rủi ro cụ thể và đưa ra giải pháp.

秦晓峰
@QinXiaofeng888
作者文库