Tổng hợp “Sự kiện” hack Parity Wallet khiến cho hơn 500.000 ETH bị “đóng băng”

0

Như chúng ta đã biết, vừa qua vào ngày 6/11 ví Parity multisig đã bị tấn công, dẫn đến việc hơn 150 triệu USD (khoảng 500.000 ETH, tương ứng 0.5% tổng cung của đồng tiền này ) bị đóng băng. Vậy “sự kiện” này đã diễn ra như thế nào?

Đây là lỗi bảo mật của ví Parity, không phải lỗi của Ethereum

Đầu tiên chúng ta cần khẳng định đây không phải là lỗi của Ethereum, mà là lỗi bảo mật của ví Parity. Trong thông báo của mình vào ngày 7/11, Parity đã thừa nhận điều này.

Trong thông báo trên, Parity đã xác định đây là một lỗi bảo mật nghiêm trọng, và sẽ ảnh hưởng tới tất cả mọi user có assets trong ví multi-sig của Parity được triển khai sau ngày 20/7/2017 (Trong đó bao gồm ví của Iconomi, Polkadot và nhiều users khác với tổng lượng tiền lên tới hơn 500.000 ETH (0.5% tổng cung của đồng tiền này), tương ứng hơn 150 triệu USD)

Vậy cuộc “tấn công” này đã diễn ra như thế nào?

Vào ngày 6/11, một developer với tên devops199 đã chỉ ra một lỗ hổng (flaw) trên ví multi-sig của Parity khi anh ta đã “lỡ tay” xóa toàn bộ code của thư viện chịu trách nhiệm cho các hoạt động của ví Parity multi-sig, kêt quả là toàn bộ số tiền trong các ví Parity multi-sig triển khai sau 20/7/2017 đã bị đóng băng.

Lý do mà devops199 có thể làm được điều đó là vì, WalletLibrary hoạt động như một thư viện nhưng lại được định nghĩa là một Contract: contract WalletLibrary

Khi được định nghĩa là Contract thì WalletLibrary sẽ phải có các biến được lưu, ví dụ như biến lưu thông tin owner, còn nếu là một library “thực sự” thì sẽ không cần các biến đó (vd biến owner).

Bởi vì WalletLibrary được định nghĩa là 1 contract, nên biến owner của nó không được khởi tại (uninitialized). Vì thế, devops199 đã có thể khởi tạo biến đó và trở thành chủ (owner) của contract WalletLibrary và qua đó có thể “kill” contract này (và anh ta đã làm thế thật, dù là chỉ “lỡ tay”). Việc WalletLibrary bị “kill” dẫn đến việc toàn bộ function của ví Parity multisig không hoạt động được, nên số tiền trong các ví này sẽ bị đóng băng.

Điều thú vị là trong bài phỏng vấn với trustnodes , hacker này nói rằng mình chỉ là một newbie, vì khi thực hiện lệnh “kill”, anh ta nghĩ là lệnh đó sẽ không thể thành công vì Parity là một công ty rất lớn, nên lẽ ra đã phải có sự đề phòng. Devops199 nói rằng anh chỉ là một nhân viên tư vấn làm việc với giao diện người dùng, và thậm chí còn “không biết code”.

Liệu Hard Fork có xảy ra?

Tính đến thời điểm này, vẫn chưa có một hướng giải quyết nào cho sự kiện này từ phía Parity hay Ethereum. Trong cộng đồng Ethereum đã chia ra làm 2 hướng rõ rệt:

  • Thực hiện Hard fork để “giải băng” 500.000 ETH đó. Những người ủng hộ giải pháp này cho rằng, việc hard fork để giải phóng 500.000 ETH này sẽ không gây hại cho ai, và đằng nào thì sắp tới Ethereum cũng sẽ hard fork Constantinople.
  • Không hard fork và chấp nhận rằng 500.000 ETH đó sẽ mất đi vĩnh viễn. Lý do được đưa ra là Ethereum đã 1 lần hard fork để giải quyết vấn đề hack, nếu tiếp tục thực hiện lần nữa sẽ tạo ra một tiền lệ nguy hiểm về việc smart contract có thể bị thay đổi, qua đó mất đi tính phân tán (decentralized) và bất biến (immutability) của blockchain.
Content Protection by DMCA.com

Comment của bạn

Hãy là người Comment đầu tiên!

avatar