Polygon zkEVM là giải pháp lớp 2 được thiết kế để nâng cao khả năng mở rộng của Ethereum thông qua xử lý giao dịch Ngoài chuỗi và sử dụng bằng chứng zero-knowledge . Lỗ hổng này, nằm trong thành phần zkProver, đã tạo ra một lỗ hổng bảo mật đáng kể, khiến mạng dễ bị tấn công giả mạo bằng chứng, có thể gây ra mối đe dọa đáng kể đối với tính toàn vẹn và bảo mật của tiền trên cả Layer 1 và Layer 2 của blockchain.
Sau khi xác định được lỗ hổng, Verichains và nhóm Polygon đã hợp tác phát triển bản sửa lỗi, bản sửa lỗi này sau đó được xem xét và triển khai trên mạng chính vào tháng 12 năm 2023.
Bộ chứng minh trong zkEVM sử dụng eSTARK (phiên bản mở rộng của STARK) làm giao thức phụ trợ chính. Để giảm chi phí gas cho việc xác minh bằng chứng trên Layer 1, zkEVM sử dụng các kỹ thuật chứng minh đệ quy. Ở bước đệ quy cuối cùng, STARK được chuyển đổi thành SNARK để đạt được kích thước bằng chứng và thời gian xác minh không đổi. Tuy nhiên, có sự không tương thích giữa các lĩnh vực mà STARK và SNARK hoạt động. STARK hoạt động với các phần tử từ F p^3 , trong đó p = 2 64 – 2 32 + 1, để hỗ trợ các phép tính số học hiệu quả. Ngược lại, SNARK hoạt động với các phần tử từ F q , trong đó q được gắn với một nhóm đường cong elip thân thiện với việc ghép nối và trong trường hợp của chúng tôi là dài 254 Bits . Sự không tương thích này gây ra các vấn đề bảo mật tiềm ẩn.
Điểm yếu đầu tiên liên quan đến việc tính toán các nghiệm Merkle (các cam kết dựa trên FRI đối với đa thức). Lá của cây là Hash của nhiều phần tử F q . Cho rằng một phần tử (x, y, z) ∈ F p^3 (khoảng 192- Bit entropy) có thể được biểu diễn duy nhất bằng một phần tử của F q (khoảng 254- Bit entropy), điều hợp lý là, trước khi băm, hãy chuyển đổi mỗi phần tử của F p^3 đến một phần tử của F q thông qua ánh xạ: (x, y, z) ↦ x + 2 64 y + 2 128 z để lưu một số ràng buộc mạch. Tuy nhiên, quá trình này không đảm bảo rằng các giá trị liên quan đến x, y, z bị giới hạn ở mỗi giá trị 64 Bit , có khả năng cho phép chúng là bất kỳ phần tử nào trong F q.
Điểm yếu thứ hai phát sinh từ một cổng số học thực hiện thao tác nhân rồi cộng trên ba phần tử F p^3 a, b và c, trả về một phần tử (a*b + c) của F p^3 . Cho rằng a ∗ b dài khoảng 128- Bit trước khi thực hiện giảm modulo, kết quả là toán hạng thứ ba c , được phân bổ nhiều không gian hơn mức cần thiết.
Những lỗ hổng toán học này trong phần phụ trợ của bộ chứng minh zkEVM đủ để gây ra sự xâm phạm hệ thống.
Tác động và ý nghĩa
Lỗ hổng này gây ra những hậu quả tiềm tàng đáng kể, cho phép Bộ tổng hợp đáng tin cậy tạo ra các bằng chứng hợp lệ cho bất kỳ tính toán nào. Vi phạm này có thể dẫn đến những sửa đổi trái phép trong mạng, cuối cùng dẫn đến mất tiền từ mạng lớp 2 và cũng có khả năng ảnh hưởng đến tiền gửi lớp 1.
Bằng chứng về khái niệm (PoC) của nhóm chúng tôi đã chứng minh tính khả thi của việc tạo bằng chứng gian lận cho lần lặp Fork ID 4 của zkEVM trên mạng chính Ethereum và lần lặp Fork ID 5 trên testnet. Để tham khảo, lần lặp lại mạng chính mới nhất cho Polygon zkEVM là Fork ID 8.
Thủ tục liên quan:
Tạo bằng chứng không hợp lệ: Chúng tôi đã tạo hai bằng chứng giả mạo để xác thực ID Fork 4 zkEVM trên mạng chính Ethereum ở độ cao Block 18066976 và 18026062, và một bằng chứng để xác thực ID Fork 5 zkEVM trên mạng thử nghiệm Goerli ở Block Height 9679280.
Quy trình thực thi: Bằng cách sử dụng các tập lệnh cụ thể, chúng tôi đã biên soạn và thực thi chúng với thông tin đầu vào chính xác để tạo và xác thực các bằng chứng giả mạo. Quá trình này đã thay đổi các tham số trạng thái quan trọng của zkEVM (StateRoot và LocalExitRoot) thành các giá trị được xác định trước, do đó sửa đổi trạng thái của mạng.
Quan sát: Trước khi thực hiện, chúng tôi đã xác minh và ghi lại trạng thái gốc của mạng, vốn là hợp pháp. Sau khi thực hiện, gốc trạng thái đã bị thay đổi, cho thấy việc thao túng đã thành công.
Các bằng chứng đã vô hiệu hóa một cách hiệu quả StateRoot và LocalExitRoot của zkEVM thành 0x0 (hoặc bất kỳ giá trị nào được xác định trước), về cơ bản là xóa trạng thái của mạng, bao gồm cả số dư và tiền gửi.
Cách khắc phục
Sau tiết lộ của Verichains, nhóm Polygon zkEVM đã tiến hành đánh giá toàn diện để nắm bắt đầy đủ động lực và tác động của lỗ hổng. Phần sau đây tóm tắt các điều chỉnh được thực hiện đối với pil-stark, được nhóm Verichains xác thực:
Ràng buộc giá trị GL: Đã thêm các ràng buộc để đảm bảo rằng tất cả đầu vào của mạch xác minh đệ quyF đều dưới 2^64. Chúng được tích hợp vào mẫu StarkVerifier Bn128.
Hoạt động GL: Đã giới thiệu các mẫu mới để cộng và trừ trong trường BN128, được đặt tên là GLSub (và GLCSub) và GLAdd (vàGLCAdd). Ngoài ra, các phép tính nhân và cộng được tách biệt, loại bỏ việc sử dụng GLCMulAdd để xác minh truy vấn hoặc đánh giá.
Thẻ hoạt động GL: Các thẻ mới đã được thêm vào mạch xác minh đệ quyF để có ứng dụng ràng buộc chính xác hơn trong các hoạt động GL trong trường BN128. Thẻ, {maxNum}, biểu thị giá trị tín hiệu tối đa có thể, được đặt ở p – 1, với p = 0xFFFFFFFF00000001.
Thử nghiệm: Các điều chỉnh đã được thực hiện để phù hợp với các thẻ trong thử nghiệm. Hai thử nghiệm mới đã được phát minh để thăm dò các trường hợp đặc biệt trong VerifyEvaluations và VerifyQuery, đảm bảo các thẻ được áp dụng chính xác. Một thử nghiệm thử nghiệm mẫu với các giá trị đầu vào tối đa (p – 1), trong khi thử nghiệm còn lại sửa đổi mẫu để duy trì các giá trị thẻ mà không thực hiện phép trừ.
Các link sửa lỗi:
Chúng tôi đánh giá cao phản hồi nhanh chóng và hiệu quả của nhóm Polygon zkEVM đối với lỗ hổng được báo cáo của chúng tôi. Ngoài ra, chúng tôi xin gửi lời cảm ơn chân thành về săn lỗi nhận tiền thưởng. Sự tham gia này cho thấy sự cống hiến rõ ràng cho vấn đề bảo mật và tính chuyên nghiệp đối với cộng đồng an ninh mạng. Đó là minh chứng cho giá trị của giao tiếp cởi mở và trao đổi kiến thức mang tính xây dựng cho phép các nhà phát triển và chuyên gia bảo mật tăng cường bảo mật cho hệ sinh thái blockchain.
Về chúng tôi
Verichains là nhà cung cấp giải pháp bảo mật blockchain hàng đầu, chuyên về phân tích mật mã, kiểm tra bảo mật và giải pháp bảo mật ứng dụng. Nổi tiếng về việc điều tra và giảm thiểu một số vụ hack Web3 lớn nhất, chẳng hạn như Ronin và BNB Chuỗi Bridge, chúng tôi kết hợp nghiên cứu đột phá với các giải pháp bảo mật thực tế để mang lại sự bảo vệ toàn diện cho ngành công nghiệp blockchain.
Nhóm nghiên cứu mật mã và bảo mật đẳng cấp thế giới của Verichains đã xác định thành công các lỗ hổng nghiêm trọng ảnh hưởng đến hàng tỷ đô la trong toàn ngành, phát hiện ra các lỗ hổng trong cốt lõi của việc triển khai Tính toán đa bên (MPC) và Zero-Knowledge Proofs (ZKP) của các nhà cung cấp lớn. Là đối tác bảo mật đáng tin cậy của các công ty Web3 hàng đầu như BNB Chuỗi, Polygon Labs, WEMIX, Aptos, Klaytn, Bullish và DWF Labs, Verichains tận dụng nguồn gốc sâu xa của mình trong an ninh mạng truyền thống để cung cấp các giải pháp tiên tiến cho hệ sinh thái Web3 an toàn hơn, bảo mật hơn.