Serpent, một trong những ngôn ngữ smart contract trước đây của Ethereum đã không còn an toàn để sử dùng.
Đó có thể là sự tổn thất lớn nhất trong việc kiểm tra ngôn ngữ lập trình Serpent của Ethereum, được công bố tuần trước bởi hãng bảo mật Blockchain Zeppelin Solutions. Các phát hiện chỉ ra hàng chục vấn đề với bộ ngôn ngữ lập trình, bao gồm 8 lỗ hổng nghiêm trọng.
- Ethereum vượt ngưỡng 200 USD sau khi Bitcoin chia tách
- Ethereum còn trong giai đoạn điều chỉnh về giá?
Augur tuyển dụng Zeppelin vào việc kiểm tra ngôn ngữ Serpent được tiến hành cách đây 2 tháng. Với trị giá gần 2 triệu USD cho những token (REP) trong một hợp đồng được viết bằng Serpent, Augur có lý do chính đáng để quan tâm đến tính bảo mật của ngôn ngữ cũ.
Augur là một trong những dự án dự đoán thị trường trên nền tảng Ethereum, và vào thời điểm hợp đồng Augur được viết, thì Augur dự định dùng Serpent làm ngôn ngữ chính cho smart contract. Nhưng ngay sau đó, Solidity đã được giới thiệu và tiếp nhận như là ngôn ngữ lập trình smart contract mới của Ethereum, và họ quyết định không dùng Serpent nữa.
Mặc dù vậy, CEO của Augur Joey Krug nói có rất ít cảnh báo công khai về những vấn đề có thể ngăn cản Serpent thực thi code như mong đợi.
Ông nói với CoinDesk:
“Chưa hề có ai nói Serpent không an toàn. Chỉ là nó không phổ biến như Solidity”.
Trong khi Augur có kế hoạch chuyển sang một ngôn ngữ smart contract khác tại một số điểm, đó là kết quả của đợt kiểm tra trình biên dịch thúc đẩy dự án một cách thiết thực. Ngay khi Zeppelin thông báo cho Augur về các vấn đề bảo mật, Augur đã nhanh chóng di chuyển các token REP của mình tới hợp đồng token ERC-20 bảo mật hơn được viết bằng Solidity.
Nội dung bài viết
“Chất lượng thấp” và “thiếu sót”
Dành cho những ai đang tự hỏi liệu có nên làm theo không, Zeppelin Solutions đã nêu ra đầy đủ kết quả của cuộc kiểm toán trong một bản báo cáo dài 36 trang.
Trong một bài đăng trên blog, Zeppelin gọi dự án Serpent có “chất lượng thấp” và “thiếu sót”, đồng thời cảnh báo các nhà phát triển ngưng sử dụng ngôn ngữ Serpent cho đến khi khác phục các vấn đề nghiêm trọng đó.
Tin tức này khiến nhà sáng lập Ethereum – Vitalik Buterin gửi đi thông báo trên tweet, gọi ngôn ngữ lập trình Serpent là “công nghệ lạc hậu” và cảnh báo thiếu “tính bảo mật”.
Đối với Augur, lỗ hổng lớn nhất của Serpent là cho phép hacker đổi ngày, trong đó hợp đồng token REP đã được tạo ra, chủ yếu là đóng băng nguồn cung cấp token.
Krug nói:
“Bạn có thể làm cho hợp đồng nghĩ rằng nó đã không thực sự được chính thức tạo ra, do đó về cơ bản không có ai tham gia vào sự chuyển đổi ”.
Nếu ngôn ngữ Serpent tồn tại một vấn đề, Krug sẽ vui vẻ chỉnh sửa code và tiếp tục sử dụng ngôn ngữ Serpent trong thời gian này. Nhưng đáng tiêc số lượng các vấn đề được tiết lộ bởi cuộc kiểm tra là quá nhiều.
Thay vào đó, theo đường dẫn cập nhật được Zeppelin đưa ra, Augur đã chuyển sang viết lại token REP trên ngôn ngữ Solidity và triển khai contract ERC-20 mới về Ethereum. Sau đó sẽ tiến hành hack smart contract của Serpent, đóng băng code thông báo REP, trước khi di chuyển số dư REP bị đóng băng sang contract mới.
Trong một bài đăng trên blog riêng, Zeppelin đã yêu cầu bất kỳ dự án Etherum nào vẫn sử dụng Serpent phải chuyển các token sang hợp đồng Solidity để an toàn hơn.
Cần để mắt nhiều hơn
Ngôn ngữ lập trình Serpent và trình biên dịch đều được viết bởi Buterin. Nhưng thực tế chỉ cần có một người viết code này cũng đủ làm nền tảng phát sinh một số vấn đề trên Serpent.
Theo Zeppelin trong báo cáo của mình:
“Để mắt tới code ít hơn nghĩa là sẽ có nhiều lỗi hơn”.
Zeppelin cũng chỉ ra Serpent đã có 2 năm tuổi, với một số cam kết từ tháng 10.2015. Thêm vào đó, hầu như không có ai sử dụng Serpent, rất ít khả năng có người phát hiện ra vấn đề trong code hoặc những vấn đề đã được khắc phục.
Trái lại, Solidity đã được viết bởi một nhóm do Gavin Wood đi đầu, một trong những người sáng lập ra Ethereum. Và bởi vì Solidity được sử dụng rộng rãi hơn và có nhiều hoạt động hơn – 30 lần cho các pull requeste, 20 lần cam kết, gấp 8 lần so với những người đóng góp, theo Zeppelin – so với Serpent, chương trình mới sẽ có ít khả năng gặp vấn đề hơn.
Vậy các nhà phát triển nên sử dụng ngôn ngữ nào thay cho Serpent, theo báo cáo của Zeppelin cho thấy Solidity là câu trả lời tốt nhất hiện nay. Tuy nhiên, một gợi ý nhỏ cho các nhà phát triển là nên xem xét thêm Viper, ngôn ngữ lập trình có thể gọi là “nối ngôi” cho Serpent, và họ cũng cho rằng Viper “trông cao cấp hơn” Serpent. Nhưng trong một tweet, Buterin khuyến cáo các nhà phát triển nên chờ lại cho đến khi Viper trãi một cuộc kiểm tra đầu tiên.
Kiểm tra ngôn ngữ Solidity?
Tuy nhiên, có lẽ một trong những vấn đề đáng báo động được đưa ra bởi kiểm tra trình biên dịch Serpent của Zeppelin là bản thân Solidity cũng chưa được kiểm tra. Và vì các token đáng giá hàng triệu USD hiện đang được quản lý bởi các smart contract được viết bằng Solidity, một số người, bao gồm cả Krug, thấy rằng tin tức này rất đáng lo.
Thêm mối bận tâm về Solidity, kiểm tra trình biên dịch Zeppelin cho biết về vụ hack thiệt hại 30 triệu USD của chiếc ví Parity, trong đó một lỗi ở code Parity là cho phép hacker chuyển ba ví đa chữ ký thành ví không có chữ ký, và bòn rút quỹ.
Trong một bài đăng trên blog sau cuộc tấn công đó, Parity đã chỉ thẳng vào Solidity, nói “một số người đổ lỗi cho ngôn ngữ Solidity, và trong hiện tại, những khó khăn nằm ở quyền thực hiện các chức năng”.
Một vụ trộm Ethereum lớn hơn nữa đã xảy ra cách đây hơn một năm, khi một hacker lợi dụng lỗ hổng trong code Solidity để siết 50 triệu USD từ dự án DAO. Thiệt hại được cho là quá lớn, các nhà phát triển đứng sau Ethereum thực hiện Hardfork trong giao thức để xem lại các lịch sử giao dịch đó.
Các phần mềm kiểm tra code là một yêu cầu trong nhiều ngành công nghiệp quan trọng, và Demian Brener, CEO của Zeppelin, cho rằng cần phải thực hiện một trường hợp tương tự cho code smart contract.
Demian Brener viết trong một email gửi tới CoinDesk “Với số lượng lỗ hổng được phát hiện ở Serpent, chúng tôi tin rằng kiểm tra trình biên dịch, cùng với kiểm tra code, nên trở thành phương pháp tốt nhất”,. Ông nói thêm Zeppelin hiện đang nói chuyện với Ethereum Foundation để thực hiện điều đó.
Trong khi đó, Krug tóm lược những suy nghĩ của mình về vấn đề này bằng cách nói:
“Tóm lại, có rất nhiều thứ cần được kiểm tra”.
Video đề xuất:
Xem thêm:
- Sàn Bittrex dẫn đầu về khối lượng giao dịch Bitcoin Cash
- Hơn 20 dự án ICO đã phát hành dù có cảnh báo của SEC
- TransferWise: Nhà cung cấp dịch vụ chuyển tiền liên kết với Apple Pay
- Block 478558 – Block Bitcoin Cash đầu tiên đã được mining
HeoQ – tiendientu.org
coindesk – 3.8.2017