Phát hiện và khắc phục lỗ hổng nghiêm trọng trong Polygon zkEVM

Bài viết này được dịch máy
Xem bản gốc

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.

Khám phá

Lỗ hổng này đã được Verichains phát hiện trong quá trình nghiên cứu bảo mật của chúng tôi về máy ảo zero-knowledge (zkVM). Sau khi tái tạo thành công lỗi, trong đó kẻ tấn công có thể tạo bằng chứng giả mạo và thao túng các thay đổi trạng thái trong mạng, phát hiện này đã nhanh chóng được báo cáo thông qua nền tảng săn lỗi nhận tiền thưởng Immunefi. Immunefi, nhận ra mức độ nghiêm trọng của vấn đề, đã chuyển vấn đề lên nhóm Polygon zkEVM. Các nhóm đã thảo luận về bản chất của lỗi và lỗi này được coi là nghiêm trọng. Vì việc khai thác dựa vào ác ý từ Bộ tổng hợp đáng tin cậy, một mô-đun tập trung do nhóm zkEVM vận hành nên khả năng bị khai thác là thấp.

Lý lịch

Polygon zkEVM là một giải pháp lớp 2 được gọi là zero-knowledge rollup, được thiết kế để nâng cao khả năng mở rộng của Ethereum bằng cách xử lý các giao dịch Ngoài chuỗi và xác thực chuyển đổi trạng thái bằng bằng chứng zero-knowledge . Nó tích hợp các bằng chứng zero-knowledge với một máy ảo được thiết kế để mô phỏng Máy ảo Ethereum (EVM) (Máy ảo Ethereum (EVM)), đảm bảo khả năng tương thích với các công cụ Ethereum và hợp đồng thông minh hiện có.

Tính dễ bị tổn thương

Chức năng cốt lõi của Polygon zkEVM được neo trong mô-đun zkProver, chịu trách nhiệm xác thực các giao dịch bằng bằng chứng zero-knowledge . zkProver thực hiện các phép tính toán học phức tạp để xác thực các giao dịch bằng cách tạo ra bằng chứng về tính chính xác, sau đó được xác minh bằng hợp đồng thông minh trên Layer 1. Những bằng chứng này rất quan trọng trong việc đảm bảo tính hợp lệ của giao dịch đồng thời cung cấp môi trường thực thi hiệu quả hơn và ít tốn kém hơn. Bằng chứng đã được xác minh dẫn đến thay đổi trạng thái trong mạng; do đó, khả năng giả mạo bằng chứng mang lại cho Bộ tổng hợp đáng tin cậy khả năng thay đổi trạng thái mạng một cách độc hại, nếu chúng có khuynh hướng như vậy, có khả năng dẫn đến mất tiền hoặc đóng băng tài sản trên mạng.

Lỗ hổng này xuất phát từ những điểm yếu trong quy trình tạo bằng chứng đệ quy phức tạp của zkProver, cho phép kẻ tấn công thao túng trạng thái của mạng. Chúng tôi đã chứng minh điều này thông qua một cuộc tấn công giả mạo bằng chứng quan trọng hoạt động trong mọi điều kiện. Do đặc tính zero-knowledge của hệ thống, phương pháp tạo ra bằng chứng giả mạo vẫn được che giấu.

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, bc, trả về một phần tử (a*b + c) của F p^3 . Cho rằng ab 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.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận