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

  • Chủ tịch Ủy ban Ngân hàng Thượng viện Hoa Kỳ: Các điều khoản dự thảo mới liên quan đến lợi suất stablecoin có thể được công bố ngay trong tuần này.

    Theo Cointime, Thượng nghị sĩ Tim Scott, Chủ tịch Ủy ban Ngân hàng Thượng viện, phát biểu tại Hội nghị thượng đỉnh Blockchain DC rằng các nhà lập pháp có thể xem xét dự thảo luật mới, ít nhất là các điều khoản liên quan đến stablecoin, ngay trong tuần này. Ông Scott lưu ý rằng lợi suất stablecoin là vấn đề được thảo luận công khai nhiều nhất trong dự luật, nhưng các nhà lập pháp vẫn đang tiếp tục làm việc về vấn đề này. Ông nói: “Tôi tin rằng tôi sẽ có bản đề xuất đầu tiên để xem xét trong tuần này. Nếu điều đó xảy ra vào cuối tuần, và tôi nghĩ nó sẽ xảy ra, chúng ta ít nhất sẽ biết liệu khung pháp lý có đang hình thành hay không. Nếu vậy, tôi nghĩ chúng ta sẽ ở vị thế tốt hơn.” Ông cũng cho rằng tiến triển này là nhờ nỗ lực của Thượng nghị sĩ đảng Dân chủ Angela Alsobrooks, Thượng nghị sĩ đảng Cộng hòa Thom Tillis và quan chức Nhà Trắng Patrick Witt về vấn đề lợi suất stablecoin. Ông cho biết thêm rằng các vấn đề chưa được giải quyết khác cũng đã được đề cập trong các cuộc đàm phán trong tháng qua, bao gồm mối lo ngại của các nhà lập pháp về các dự án tiền điện tử của Tổng thống Donald Trump và gia đình ông, việc thiếu đại diện lưỡng đảng trong các cơ quan quản lý quan trọng và các quy định về Xác minh danh tính khách hàng (KYC). Ông Scott cũng cho biết: “Tôi nghĩ chúng ta đang rất gần đạt được thỏa thuận về các vấn đề đạo đức và số lượng thành viên cần thiết để thông qua. Chúng ta biết đây là vấn đề quan trọng đối với phía bên kia, vì vậy chúng ta cũng đang giải quyết nó. Tôi nghĩ chúng ta cũng đang đạt được tiến triển trong một số đề cử, đó là tin tốt. Còn về DeFi, đây là lĩnh vực mà Thượng nghị sĩ Mark Warner đang tập trung vào, và Chống rửa tiền (AML) là một phần rất quan trọng trong đó. Vì vậy, tôi nghĩ chúng ta đang tiến lên phía trước về những vấn đề này.”

  • Bản tin buổi sáng vàng | Những diễn biến quan trọng trong đêm ngày 18 tháng 3

    21:00-7:00 Từ khóa: Phantom, Stripe, Autonomous, Iran 1. Iran tuyên bố có thể hợp pháp tấn công các quốc gia cho phép Mỹ và Israel sử dụng lãnh thổ của mình; 2. CFTC Hoa Kỳ: Ví điện tử Phantom không yêu cầu đăng ký làm môi giới; 3. Tổng chưởng lý Arizona đệ đơn kiện hình sự chống lại nhà tiếp thị dự đoán Kalshi; 4. Bộ Ngoại giao Hoa Kỳ đã ra lệnh cho tất cả các đại sứ quán trên toàn thế giới tiến hành đánh giá an ninh "ngay lập tức"; 5. Robinhood Venture Capital đầu tư khoảng 35 triệu đô la vào Stripe và ElevenLabs; 6. GSR đầu tư 57 triệu đô la để mua lại Autonomous và Architech nhằm tạo ra một nền tảng quản lý quỹ tiền điện tử; 7. SEC và CFTC Hoa Kỳ ban hành hướng dẫn mới về tiền điện tử, nêu rõ rằng hầu hết các tài sản kỹ thuật số không phải là chứng khoán.

  • Ủy ban Chứng khoán và Giao dịch Hoa Kỳ (SEC) và Ủy ban Giao dịch Hàng hóa Tương lai (CFTC) đã đưa ra các ý kiến ​​mới về tiền điện tử, trong đó nêu rõ rằng hầu hết các tài sản kỹ thuật số không thuộc loại chứng khoán.

    Ngày 18 tháng 3, Cointime đưa tin Ủy ban Chứng khoán và Giao dịch Hoa Kỳ (SEC) và Ủy ban Giao dịch Hàng hóa Tương lai (CFTC) đã ban hành một tài liệu hướng dẫn dài 68 trang về tiền điện tử, trong đó nêu rõ hầu hết các tài sản kỹ thuật số không phải là chứng khoán. Tài liệu giải thích mới này nêu chi tiết phân loại stablecoin, hàng hóa kỹ thuật số và token “công cụ kỹ thuật số”, tất cả đều được cơ quan này khẳng định không phải là chứng khoán. Nó cũng cố gắng giải thích cách thức các “tài sản tiền điện tử không phải chứng khoán” có thể trở thành chứng khoán và làm rõ cách luật chứng khoán liên bang áp dụng cho khai thác, đặt cược giao thức và airdrop. SEC cũng giải thích cách thức các tài sản kỹ thuật số không phải chứng khoán có thể trở thành đối tượng của các hợp đồng đầu tư. Cơ quan này nêu rõ trong phần giải thích của mình: “Các tài sản tiền điện tử không phải chứng khoán trở thành đối tượng của các hợp đồng đầu tư khi một nhà phát hành thuyết phục các nhà đầu tư đầu tư vào một doanh nghiệp chung và đưa ra cam kết hoặc tuyên bố sẽ thực hiện công việc quản lý cần thiết, và người mua có lý do để kỳ vọng thu lợi nhuận từ đó.”

  • Mastercard dự định mua lại công ty tiền điện tử ổn định BVNK với giá lên tới 1,8 tỷ đô la.

    Theo Cointime, Mastercard đang lên kế hoạch mua lại công ty khởi nghiệp về cơ sở hạ tầng stablecoin BVNK với giá lên tới 1,8 tỷ đô la, bao gồm khoản thanh toán bổ sung trị giá 300 triệu đô la nếu thương vụ thành công. Thương vụ này diễn ra chỉ bốn tháng sau khi các cuộc đàm phán sáp nhập trị giá khoảng 2 tỷ đô la giữa BVNK và Coinbase đổ vỡ. Cả hai công ty đã xác nhận thỏa thuận trong một tuyên bố chung được phát hành vào thứ Ba.

  • BTC vượt mốc 75.000 đô la

    Dữ liệu thị trường cho thấy BTC đã vượt qua mốc 75.000 đô la và hiện đang giao dịch ở mức 75.033,01 đô la, tăng 2,83% trong 24 giờ. Thị trường đang trải qua biến động mạnh, vì vậy hãy quản lý rủi ro của bạn cho phù hợp.

  • BTC vượt mốc 71.500 đô la.

    Dữ liệu thị trường cho thấy BTC đã vượt qua mốc 71.500 đô la và hiện đang giao dịch ở mức 71.510,19 đô la, tăng 1,06% trong 24 giờ. Thị trường đang trải qua biến động mạnh, vì vậy hãy quản lý rủi ro của bạn cho phù hợp.

  • ETH vượt mốc 2100 đô la.

    Dữ liệu thị trường cho thấy ETH đã vượt qua mốc 2.100 đô la và hiện đang giao dịch ở mức 2.100,58 đô la, tăng 0,44% trong 24 giờ. Thị trường đang trải qua biến động mạnh; vui lòng quản lý rủi ro của bạn cho phù hợp.

  • Quỹ ETF Ethereum giao ngay tại Mỹ đã ghi nhận dòng vốn ròng 26,7 triệu đô la vào ngày hôm qua.

    Theo dữ liệu được Farside Investors theo dõi, vào ngày 14 tháng 3, quỹ ETF Ethereum giao ngay của Mỹ đã ghi nhận dòng vốn ròng 26,7 triệu đô la.

  • Bộ Tư pháp Hoa Kỳ sẽ kháng cáo phán quyết trong vụ kiện Powell, điều này có thể làm trì hoãn việc bổ nhiệm ông Warsh.

    Ngày 14 tháng 3, sau khi một thẩm phán bác bỏ trát triệu tập gửi đến Cục Dự trữ Liên bang, Chưởng lý Hoa Kỳ Robert Piro tuyên bố sẽ tiếp tục điều tra Chủ tịch Fed Jerome Powell, có khả năng trì hoãn việc bổ nhiệm người kế nhiệm ông, Kevin Warsh, người có nhiệm kỳ kết thúc vào tháng 5. Thẩm phán Tòa án Quận Hoa Kỳ James Bosberg tuyên bố rằng chính phủ đã không cung cấp bất kỳ bằng chứng nào để biện minh cho các trát triệu tập liên quan đến việc cải tạo trụ sở Fed và những bình luận của Powell về dự án này. Piro tuyên bố: "Quá trình này đã bị gián đoạn một cách tùy tiện bởi một thẩm phán cực đoan. Quá trình này đáng lẽ phải diễn ra suôn sẻ, nhưng họ đã không làm vậy. Họ thật đáng hổ thẹn." Thượng nghị sĩ Tillis, một thành viên của Ủy ban Ngân hàng Thượng viện, cảnh báo rằng ông sẽ ngăn chặn bất kỳ đề cử nào cho chức chủ tịch Fed chừng nào cuộc điều tra của Bộ Tư pháp đối với Powell còn tiếp diễn. "Phán quyết này xác nhận cuộc điều tra hình sự đối với Chủ tịch Powell yếu kém và vô căn cứ như thế nào; nó không gì khác ngoài một cuộc tấn công thất bại vào tính độc lập của Fed," Tillis nói. "Việc kháng cáo sẽ chỉ trì hoãn việc phê chuẩn Kevin Warsh làm chủ tịch Fed tiếp theo."

  • BTC giảm xuống dưới 72.000 đô la.

    Dữ liệu thị trường cho thấy BTC đã giảm xuống dưới 72.000 đô la và hiện đang giao dịch ở mức 71.996,46 đô la. Mức tăng trong 24 giờ đã thu hẹp xuống còn 2,32%. Thị trường biến động mạnh, vui lòng quản lý rủi ro của bạn cho phù hợp.