Cointime

Download App
iOS & Android

Sê-ri ZKP: Lỗ hổng đầu vào bút danh trong Hợp đồng xác minh của Circcom đã được sao chép

Tổng quan

Trước đó, một lỗ hổng chi tiêu gấp đôi trong hợp đồng xác minh bằng chứng không có kiến thức trên Semaphore đã được phát hiện bởi nhà phát triển người Nga, Poma. Vì tò mò, ý định ban đầu của tôi là sao chép PoC của lỗ hổng. Tuy nhiên, do mã lỗ hổng đã cũ và dự án tương đối phức tạp, tôi đã chọn tạo một PoC đơn giản để tái tạo lỗ hổng.

Giới thiệu

Nền tảng của công nghệ Zero Knowledge Proof (ZKP) nằm trong một thuật toán được gọi là “hệ thống bằng chứng”. Bằng cách thực hiện một loạt các tính toán trên tin nhắn, thuật toán tạo ra bằng chứng để chứng minh tính xác thực của tin nhắn. Người nhận có thể xác nhận tính xác thực của tin nhắn bằng cách chỉ xác minh bằng chứng mà không yêu cầu thêm thông tin.

Có nhiều sơ đồ triển khai khác nhau cho công nghệ ZKP mà chúng ta đã thảo luận trong bài viết trước “Tính năng kỹ thuật của các sơ đồ triển khai chính của ZKP”. Trong thử nghiệm này, nền tảng Circcom được sử dụng, sử dụng Groth16 và PlonK làm hệ thống bằng chứng. Trong quá trình phát triển, các nhà phát triển có thể chọn một trong hai hệ thống. Khung phát triển tự động tạo các tham số bằng chứng và hợp đồng xác minh mà không cần sửa đổi mạch.

Nói một cách đơn giản hơn, Circcom tạo dữ liệu nhân chứng và dữ liệu chứng thực ở phía khách hàng và gửi chúng vào hợp đồng. Hợp đồng verifier.sol xác minh dữ liệu đã gửi để xác nhận xem bằng chứng có tuân thủ các quy tắc đã chỉ định hay không. Cách tiếp cận này cho phép xác minh nhanh chóng, hiệu quả và an toàn đồng thời bảo vệ nội dung và quyền riêng tư của thư.

Phân tích lỗ hổng

1. Không có nhiều điều để thảo luận, vì vậy hãy chuyển thẳng sang phần mã có vấn đề. Vui lòng tham khảo chức năng “verifyHash” trong hình bên dưới. Mã được đặt trong hộp màu đỏ cho biết liệu dữ liệu nhân chứng cụ thể đã được sử dụng hay chưa. Phương pháp này thường được sử dụng để ngăn chặn chi tiêu gấp đôi. Tuy nhiên, lỗ hổng đã phát sinh trong dữ liệu nhân chứng “hash1”. Thông thường, một bộ dữ liệu bằng chứng cụ thể chỉ nên tương ứng với một bộ giá trị “hash1” cho mục đích xác minh.

2. Hàm “xác minh” trong hợp đồng “verifier.sol” thực hiện xác minh tính toán đường cong elip trên giá trị đầu vào thông qua hàm “scalar_mul()”. Hàm này tiến hành tính toán trên các đường cong elip sử dụng các tham số đầu vào và so khớp giá trị kết quả với giá trị được chỉ định trong bằng chứng được cung cấp. Do đó, chức năng xác nhận xem giá trị đầu vào có hợp lệ hay không.

3. Trong hợp đồng thông minh Solidity, việc mã hóa Fq bắt buộc phải sử dụng loại uint256. Tuy nhiên, vì giá trị tối đa của uint256 lớn hơn giá trị q, nên một số số nguyên riêng biệt có thể tương ứng với cùng một giá trị Fq sau phép toán modulo. Ví dụ: “s” và “s+q” chỉ cùng một điểm, cụ thể là điểm “sth”. Tương tự, “s+2q”, v.v. cũng là bí danh của điểm “s”. Hiện tượng này được gọi là "Bí danh đầu vào", theo đó các số nguyên này đóng vai trò là bút danh của nhau.

Giá trị “q” được đề cập ở đây liên quan đến thứ tự của nhóm tuần hoàn, biểu thị số lượng giá trị trong cùng một Fq có thể được nhập với nhiều số nguyên lớn. Về bản chất, ngay cả khi giá trị q được thêm vào hàm băm, nó vẫn có thể đáp ứng tiêu chí xác minh. Trong phạm vi của loại uint256, tối đa uint256_max/q số nguyên riêng biệt có thể biểu thị cùng một điểm. Điều này có nghĩa là một bộ bằng chứng có thể có tối đa 5 giá trị hash1 khớp và có thể vượt qua quá trình xác minh của hợp đồng.

Lỗ hổng tái phát

1. Phát triển một mạch cơ bản để nhập hai bộ dữ liệu và tạo dữ liệu nhân chứng, tức là "hash1", được sử dụng trong hợp đồng.

2. Biên dịch mạch để tạo “circuit_final.zkey”, “circuit.wasm” và “verifier.sol”. Sau đó, tạo một tập hợp các bằng chứng, hàm băm tiêu chuẩn và hàm băm bị hỏng.

3. Sau đó, triển khai hợp đồng và sử dụng “checkHash” được tạo trước đó để tiến hành quy trình xác minh. Quá trình xác minh thành công.

4. Tiếp theo, áp dụng dữ liệu nhân chứng giống hệt nhau và “attackHash” đã tạo trước đó. Phát hiện ra thì xác minh cũng thành công. Điều này chứng tỏ rằng một bộ bằng chứng có thể có một số giá trị băm phù hợp đáp ứng các tiêu chí xác minh của hợp đồng. Do đó, lỗ hổng bút danh đầu vào của hợp đồng xác minh Circo đã được sao chép một cách hiệu quả.

Giải pháp cho các lỗ hổng

Lỗ hổng phát sinh từ một bộ bằng chứng có thể có tối đa 5 giá trị băm phù hợp và đáp ứng các yêu cầu xác minh của hợp đồng. Do đó, cách sửa lỗi rất đơn giản: hạn chế tất cả các giá trị băm đầu vào ở một giá trị nhỏ hơn “q”.

Bản tóm tắt

Lỗ hổng bút danh đầu vào là một lỗ hổng thường xuyên gặp phải trong quá trình triển khai mật mã và bằng chứng không kiến thức. Nguyên nhân cơ bản của nó nằm ở chỗ giá trị tương đương với phần dư trong trường hữu hạn. Do đó, các nhà phát triển phải tập trung vào thứ tự của nhóm xác minh khi tạo mật mã.

Nhận tin tức mới nhất tại đây: Kênh Cointime — https://t.me/cointime_en

Các bình luận

Tất cả bình luận

Recommended for you

  • Matrixport: Tỷ lệ tài trợ của Solana hiện cao tới 70% hàng năm và có thể xảy ra điều chỉnh giá

    Matrixport đăng biểu đồ ngày hôm nay cho biết Grayscale đã đệ đơn chuyển đổi Solana Trust thành ETF giao ngay. Mặc dù sản phẩm hiện có AUM là 134 triệu USD, một con số tương đối nhỏ nhưng nếu được phê duyệt, nó sẽ tạo tiền lệ thị trường quan trọng cho các tổ chức phát hành ETF khác. Điều cần đặc biệt chú ý là tỷ lệ tài trợ của Solana hiện cao tới 70% hàng năm, điều này gây áp lực rất lớn lên các vị thế mua có đòn bẩy. Kinh nghiệm lịch sử cho thấy tỷ lệ tài trợ cao tương tự thường liên quan đến việc điều chỉnh giá, như vào tháng 3 năm nay, khi giá SOL-USDT giảm trở lại trong bối cảnh lãi suất tài trợ tương tự. Trong báo cáo hàng tuần “Ma trận về mục tiêu”, có đề cập rằng sau khi Trump đắc cử tổng thống, ông dự kiến ​​sẽ đề cử cố vấn pháp lý thân thiện với tiền điện tử Paul Atkins làm chủ tịch tiếp theo của Ủy ban Chứng khoán và Giao dịch Hoa Kỳ (SEC). Nếu đề cử này trở thành sự thật, nó được kỳ vọng sẽ có tác động tích cực đến ngành công nghiệp tiền điện tử.

  • Hãng thông tấn Yonhap: Sáu đảng đối lập của Hàn Quốc sẽ đệ trình dự luật luận tội Yoon Seok-yue vào lúc 13:40 giờ Bắc Kinh hôm nay

    Theo Hãng thông tấn Yonhap: Sáu đảng đối lập của Hàn Quốc sẽ đệ trình dự luật luận tội Yin Xiyue vào lúc 13h40 giờ Bắc Kinh hôm nay. Quốc hội có thể bỏ phiếu về dự luật vào ngày 6 hoặc 7/12.

  • Cadenza, một tổ chức đầu tư tập trung vào blockchain và AI, đã hoàn thành quỹ đầu tư mạo hiểm AI giai đoạn đầu huy động được 50 triệu USD.

    Cadenza, một công ty đầu tư mạo hiểm chuyên về blockchain và trí tuệ nhân tạo, đã thông báo rằng quỹ đầu tư mạo hiểm AI giai đoạn đầu của họ đã huy động được 50 triệu USD. Quỹ mới sẽ tập trung vào các khoản đầu tư trước hạt giống và giai đoạn hạt giống, tập trung vào cơ sở hạ tầng và. ứng dụng doanh nghiệp. Danh mục đầu tư hiện tại của Cadenza trong lĩnh vực Web3 bao gồm: Đám mây xác thực cơ sở hạ tầng Web3, sàn giao dịch tài sản kỹ thuật số Malaysia Hata, nền tảng API Web3 Uniblock, chuỗi khối L1 Linera, ứng dụng ví mã hóa Zulu, v.v.

  • Lớp kinh tế điện toán AI GAIB đã hoàn thành vòng tài trợ ban đầu trị giá 5 triệu USD, dẫn đầu bởi Hack VC, Faction VC và Hashed

    Lớp kinh tế điện toán AI GAIB đã công bố hoàn thành vòng tài trợ hạt giống trị giá 5 triệu đô la Mỹ, dẫn đầu bởi Hack VC, Faction VC và Hashed. Các nhà đầu tư tham gia khác bao gồm Spartan, Animoca Brands, MH Ventures, Aethir, Near Foundation, Chris Yin và Renzo của. Plume Network Lucas Kozinski của Protocol.

  • Union đã hoàn thành khoản tài trợ Series A trị giá 12 triệu USD, dẫn đầu bởi Gumi Cryptos Capital và những người khác

    Liên minh lớp thanh toán xuyên chuỗi đã công bố hoàn thành vòng tài trợ Series A trị giá 12 triệu đô la, dẫn đầu bởi Gumi Cryptos Capital và Longhash Ventures, với sự tham gia của Borderless Capital và Blockchange, cũng như các nhà sáng lập blockchain từ Polygon, Movement và Berachain. Quỹ tài trợ sẽ được sử dụng để mở rộng nhóm cốt lõi, tích hợp đối tác và phát triển hệ sinh thái.

  • Nga tuyên án chung thân người sáng lập chợ Hydra

    Stanislav Moiseev, người sáng lập thị trường chợ đen trực tuyến và dịch vụ trộn tiền điện tử Hydra, đã bị tòa án Nga kết án tù chung thân. Theo tuyên bố ngày 2/12 từ văn phòng công tố Moscow, Tòa án quận Moscow đã kết luận Moiseev và 15 cộng sự của ông ta phạm tội tổ chức một băng nhóm tội phạm và sản xuất, bán trái phép các chất và ma túy hướng thần. Mười lăm cộng sự của Moiseev đã bị kết án tù từ 8 đến 23 năm. Moiseev cũng bị phạt 38.100 USD (4 triệu rúp), trong khi 15 cộng sự của ông bị buộc phải trả tổng cộng 152.400 USD (16 triệu rúp).

  • Portal Ventures huy động quỹ tiền điện tử trị giá 75 triệu đô la được đăng ký vượt mức

    Quỹ đầu tư mạo hiểm tiền điện tử Portal Ventures huy động được quỹ tiền điện tử trị giá 75 triệu đô la được đăng ký vượt mức được hỗ trợ bởi Chris Dixon và Marc Andreessen. Đồng thời, Portal Ventures sẽ tổ chức các cuộc hội thảo nhằm giúp các nhà đầu tư tổ chức hiểu được vai trò của sBTC trong việc cải thiện hiệu quả sử dụng vốn của Bitcoin và biến nó thành một tài sản sinh lời, và Portal Ventures đã dẫn đầu nhiều vòng cấp vốn trước hạt giống liên quan đến Stacks .

  • PolyMarket: Có 72% khả năng chính phủ của cựu Tổng thống Hàn Quốc Yoon Seok-yue sẽ bị lật đổ vào năm 2025

    Các nhà giao dịch trên nền tảng thị trường dự đoán PolyMarket hiện dự đoán có 72% khả năng chính phủ của cựu Tổng thống Hàn Quốc Yun Seok-yue sẽ bị lật đổ vào năm 2025.

  • Đảng cầm quyền Hàn Quốc có thể yêu cầu Yoon Seok-yue từ chức khỏi đảng, đề xuất toàn bộ nội các từ chức và cách chức Bộ trưởng quốc phòng

    Theo nhiều phương tiện truyền thông đưa tin vào ngày 4 tháng 12, Đảng Quyền lực Quốc gia cầm quyền của Hàn Quốc đã tổ chức một cuộc họp khẩn cấp vào ngày 4 để thảo luận về các biện pháp ứng phó sau khi Tổng thống Yoon Seok-yue tuyên bố dỡ bỏ thiết quân luật. Nhiều người tham gia cho biết họ đã "đạt được sự đồng thuận nhất định" về các vấn đề như yêu cầu Yin Xiyue từ chức khỏi đảng, toàn bộ nội các từ chức và Bộ trưởng Quốc phòng bị cách chức. Trước đó, sau khi Yin Xiyue ban bố "tình trạng thiết quân luật", Han Dongxun, đại diện đảng cầm quyền Hàn Quốc, cho rằng quyết định của tổng thống là sai lầm.

  • Người dùng sử dụng @solana/web3.js, phiên bản 1.95.6 và 1.95.7 có thể dễ bị kẻ tấn công làm rò rỉ khóa riêng tư

    Giám đốc An ninh Thông tin SlowMist 23pds đã đưa ra một thông báo nói rằng hãy chú ý đến các cuộc tấn công đầu độc. Người dùng sử dụng @solana/web3.js, phiên bản 1.95.6 và 1.95.7 có thể bị tấn công bởi những tên trộm làm rò rỉ khóa riêng. Nếu sản phẩm của bạn đang sử dụng các phiên bản này, vui lòng nâng cấp lên 1.95.8 (1.95.5 không bị ảnh hưởng).