Phân tích lỗ hổng lớn trong mạng zkEVM của Polygon
Table of Contents

Blockchain và tiền mã hoá đang ngày càng phát triển và phi tập trung hoá. Lĩnh vực này đã trở thành vườn ươm thúc đẩy cho những sự đổi mới. Tuy nhiên, nó cũng chứa đựng rủi ro với các lỗ hổng là mục tiêu của những vụ tấn công.
Trong bài viết này, chúng ta cùng phân tích một lỗi nghiêm trọng liên quan đến thuật toán trên mạng zkEVM của Polygon và những hệ quả của nó. Ngoài ra, chúng tôi sẽ đi sâu vào giải pháp sửa lỗi được triển khai để bảo mật hệ thống, nêu bật những yếu tố quan trọng của một validator mạnh và một bảo an tốt cho các giao dịch giá trị.
I. Tổng quan về lỗi thuật toán nghiêm trọng
A. Tổng quan về lỗ hổng
Công nghệ blockchain có tiềm năng cách mạng hóa cách chúng ta thực hiện giao dịch, nhưng nó không tránh khỏi các lỗ hổng phần mềm. Giao thức Polygon zkEVM, được thiết kế để mang lại khả năng mở rộng và bảo mật, lại dễ bị tấn công. Lỗ hổng trên mạng ZkEVM của Polygon ban đầu được Spearbit xác định trong quá trình đánh giá sơ bộ, nằm trong quá trình xác thực phần dư của phép chia của hệ thống.

B. Tầm quan trọng của các lỗi liên quan đến thuật toán
Các lỗi liên quan đến toán học không phải lúc nào dễ dàng phát hiện. Nhưng dù chỉ là một thay đổi rất nhỏ trong công thức toán học, cũng có thể gây ra một biến đổi rất lớn trong các giao thức blockchain, nơi các phép toán là đóng vai trò cốt yếu, dẫn đến hoạt động gian lận và phá vỡ niềm tin trong hệ thống giao dịch. Sự cố lần này lần nữa khẳng định tầm quan trọng của việc đảm bảo tính toàn vẹn toán học của mạng blockchain.
II. Hiểu về lỗ hổng
A. Chương trình con DivARITH
1. Mục tiêu của chương trình
Trọng tâm của lỗ hổng là chương trình con divARITH, nằm trong phần “zkevm-rom:utils.zkasm” của mã cơ sở.
divARITH là một thành phần quan trọng sử dụng máy trạng thái số học để thực hiện các phép chia, một hoạt động toán học cơ bản của giao dịch trong blockchain, góp phần tạo nên nhiều hợp đồng thông minh và giao dịch giá trị. Vì vậy, việc thực thi chính xác phép toán trong chương trình này là vô cùng quan trọng đối với việc bảo mật blockchain. Tuy nhiên, không có bộ phận kiểm tra xác nhận thích hợp cho divARITH.
B. Phép chia
1. Cổ tức, Số chia, Thương, Số dư
Trước khi đi sâu vào lỗ hổng bảo mật, cùng tìm hiểu các biến cơ bản của phép chia: số bị chia, số chia, thương và số dư.
Trong phép chia, "cổ tức" đại diện cho số bị chia (E), "số chia" là số A, "thương" là kết quả của phép chia (B), và "số dư" là phần còn lại sau phép chia (C). Các biến này, cùng với một biến phụ (D, được đặt là 0), là một phần không thể thiếu để tính toán chính xác số chia trong zkEVM.
2. Vai trò của A, B, C, D và E
Trong ngữ cảnh của chương trình divARITH, “A” đại diện cho số chia, “B” là thương, “C” là số dư và “E” là số bị chia. Việc tính toán chính xác các biến này là rất quan trọng đối với tính toàn vẹn chung của phép chia.
III. Lỗ hổng nghiêm trọng
A. Vị trí dễ bị tấn công
Trong chương trình con divARITH, một lỗ hổng nghiêm trọng gây nguy hiểm cho tính bảo mật của toàn bộ hệ thống được phát hiện, có khả năng đe doạ giao thức zkEVM.
Như đã nói ở trên, lỗ hổng này xuất phát từ việc thiếu bước xác thực để đảm bảo tính chính xác của phép chia, do thiếu bước xác minh tính toàn vẹn của biến số dư (C) được tạo ra trong quá trình chia.
B. Thiếu xác thực
Mấu chốt của vấn đề là thiếu sự xác thực của phép chia đúng, tức là số dư luôn nhỏ hơn số chia (A). Bước xác nhận này là then chốt để đảm bảo rằng hoạt động phân chia là hợp pháp và chính xác.
Tuy nhiên, trong quá trình triển khai đã xảy ra sai sót, hệ thống đã kiểm tra xem số dư (C) có nhỏ hơn số bị chia (E) chứ không phải so sánh với số chia (A). Lỗi quan trọng này đã cho phép những hacker tấn công hệ thống.
C. Hậu quả của sai sót
Hậu quả của lỗ hổng này là rất nghiêm trọng. Nó tạo điều kiện cho hacker thao túng các hoạt động theo hướng có lợi cho họ, dẫn đến kết quả giao dịch không chính xác, nhất là các giao dịch giá trị và có thể là cả niềm tin vào hệ thống.
IV. Khai thác lỗ hổng
A. Lợi ích của người dùng độc hại
1. Thao túng B và C
Lỗ hổng này cho phép người dùng độc hại thao túng B và C, thương và số dư, trong quá trình thực hiện phép chia. Hacker đã khai thác lỗ hổng này để tạo ra các phương trình thỏa mãn quy trình kiểm tra xác thực vốn bị thiếu sót. Bằng cách đặt B thành (E / A - 1) và C thành (E % A + A). Thủ đoạn lừa đảo này đã cho phép họ đạt được những kết quả có lợi cho mình.
2. Các phương trình thỏa mãn kiểm tra sai sót
Hacker đặt B thành (E / A - 1) và C thành (E % A + A), đảm bảo phương trình đáp ứng được việc kiểm tra xác thực.
B. Ví dụ thực tế
Trong thực tế, những lỗ hổng này thường bị lợi dụng để thao túng nhiều phần thưởng hơn mức bình thường, gây ra rủi ro đáng kể cho tính toàn vẹn của hệ thống. Một ví dụ điển hình là thao túng lợi nhuận trong giao thức Staking mà phần thưởng stake được tính toán dựa trên phép chia. Hacker có thể thổi phồng phần thưởng của họ, gây tổn thất tài chính cho những người tham gia và làm người dùng mất niềm tin vào hệ thống.

V. Tác động và rủi ro tiềm ẩn
A. Staking và giao dịch giá trị
Tác động của lỗ hổng này ảnh hưởng đến các giao dịch giá trị, chẳng hạn như staking. Staking là hoạt động khóa mã thông báo để tham gia vào cơ chế đồng thuận của mạng và nhận lại phần thưởng thường được xác định thông qua các phép tính toán học. Nếu kết quả tính toán không chính xác có thể dẫn đến việc phân phối phần thưởng không công bằng và tổn thất tài chính tiềm ẩn.
B. Rủi ro đối với tài sản và ảnh hưởng niềm tin
Lỗ hổng thuật toán này không chỉ gây rủi ro cho các tài sản giao dịch mà còn làm suy yếu độ tin cậy của giao thức zkEVM. Người dùng dựa vào tính chính xác và bảo mật của các giao thức blockchain để bảo vệ tài sản và lợi ích của họ. Bất kỳ sự vi phạm lòng tin nào cũng có thể gây ra hậu quả nghiêm trọng.
C. Tầm quan trọng của thương số và số dư đúng
Việc tính toán chính xác thương và số dư là một khía cạnh cơ bản của hoạt động chia trong hệ thống blockchain. Đảm bảo tính chính xác của chúng là mấu chốt để duy trì tính toàn vẹn của mạng. Như đã thấy trong trường hợp này, một sơ suất nhỏ trong việc xác thực các giá trị này có thể dẫn đến những rủi ro nghiêm trọng.
VI. Khắc phục lỗ hổng
Giải pháp đề xuất
Đề xuất khắc phục lỗ hổng này nằm ở việc điều chỉnh mã lệnh để kiểm tra phần dư C có nhỏ hơn số chia A hay không, thay vì so sánh với số bị chia E. Giải pháp này nhằm mục đích khắc phục quá trình xác nhận còn thiếu sót.

1. Điều chỉnh mã code
Code cần sửa đổi để thực hiện xác thực chính xác, đảm bảo rằng phần số dư
C tuân thủ các quy tắc toán học, nhỏ hơn số bị chia A. Sự điều chỉnh này đã giải quyết được lỗ hổng cốt lõi, củng cố tính toàn vẹn của phép chia.
2. Thực hiện và khắc phục
Các biện pháp khắc phục được thực hiện nhanh chóng và hiệu quả, phản ánh sự nhanh nhẹn và hợp tác của cộng đồng blockchain. Lỗ hổng đã được giải quyết trong phiên bản code mới nhất và các phương pháp nghiệm thu nghiêm ngặt đã được thực hiện để đảm bảo tính bảo mật của mã code mới. Cách tiếp cận chủ động này đã bảo vệ hệ thống và người dùng, khôi phục niềm tin vào giao thức zkEVM.
Phần kết luận
Lỗ hổng trong zkEVM của Polygon đóng vai trò như một lời nhắc nhở rõ ràng về vai trò quan trọng của toán học trong các hệ thống blockchain. Đảm bảo tính chính xác và bảo mật của các hoạt động toán học là điều tối quan trọng đối với độ tin cậy của các mạng phi tập trung.
Việc xác định và khắc phục nhanh chóng lỗ hổng này chứng tỏ khả năng phục hồi nhanh chóng của cộng đồng blockchain trong việc duy trì tính toàn vẹn của hệ thống.
Khi blockchain tiếp tục phát triển, việc cảnh giác trong việc xác định và giải quyết các lỗ hổng sẽ rất cần thiết cho sự thành công lâu dài của chính mạng lưới đó.
About ZKP Labs
ZKP Labs is a non-profit organization that focuses on building a vibrant and supportive community in Southeast Asia dedicated to the advancement of Zero-Knowledge Proof (ZKP) technology. Through events, workshops, and training programs, we strive to create an environment that fosters collaboration, knowledge-sharing, and growth, empowering community members to contribute to the development and adoption of ZKP.
Categories
Event Recap
5
Zero Knowledge Proofs 101
27
Top Posts
1
Announcing the ZKP Advocacy Program Powered by Mina Foundation: Your Path to Zero-Knowledge Mastery
24 October 2024
2
How to start learning ZKPs as a beginner?
02 March 2023
3
What Jobs Can You Do About ZKPs?
15 March 2023
4
A Beginner's Guide to Understanding the Different Types of Zero-Knowledge Proofs
24 February 2023
5
Phân tích lỗ hổng lớn trong mạng zkEVM của Polygon
06 December 2023
6
Phân tích hành động lái giá: Tại sao hầu hết giá của dự án đều giảm?
21 December 2023
7
Cơ chế và tác động của hành động làm giá trong thị trường tiền điện tử
21 December 2023
8
Tìm kiếm cơ hội đầu tư vào Blockchain mô-đun
21 December 2023
9
The Future of Layer 2 Roll-ups: Scaling Ethereum and Beyond
17 September 2023
10
Airdrops: Thử thách trong việc phân phối vốn hiệu quả
03 February 2024
Tag
Zero Knowledge Proofs