Skip to content

Commit 5741cc5

Browse files
authored
Merge pull request #846 from zcash/bugfix
Reject two queries with the same point and commitment, but different evaluations
2 parents 8056703 + d1208f2 commit 5741cc5

File tree

7 files changed

+220
-51
lines changed

7 files changed

+220
-51
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ jobs:
103103
- uses: ./.github/actions/prepare
104104
with:
105105
toolchain: stable
106+
- run: sudo apt-get -y install libfontconfig1-dev
106107
# Build benchmarks and all-features to prevent bitrot
107108
- name: Build benchmarks
108109
uses: actions-rs/cargo@v1

Cargo.lock

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

halo2_proofs/CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,22 @@ and this project adheres to Rust's notion of
77

88
## [Unreleased]
99

10+
## [0.3.1] - 2025-07-07
11+
### Security
12+
`halo2_proofs` uses a multiopen argument in its proofs, which takes the sequence
13+
of circuit queries and evaluations, and groups them into query sets for proof
14+
efficiency. The previous implementation had a bug where two queries within the
15+
sequence could provide the same evaluation point and commitment, but different
16+
evaluations. A vulnerable circuit with a bug resulting in such a sequence of
17+
evaluations is unsound, but a verifier for this circuit would previously not
18+
reject these proofs.
19+
20+
The multiopen logic has been updated to detect and reject this case; both provers
21+
and verifiers now return an error instead. The multiopen logic now also uses the
22+
`indexmap` crate to further reduce its complexity.
23+
24+
The bug was found by Suneal from zkSecurity.
25+
1026
## [0.3.0] - 2023-03-21
1127
### Breaking circuit changes
1228
- `halo2_proofs::circuit::floor_planner::V1` was relying internally on the Rust

halo2_proofs/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "halo2_proofs"
3-
version = "0.3.0"
3+
version = "0.3.1"
44
authors = [
55
"Sean Bowe <[email protected]>",
66
"Ying Tong Lai <[email protected]>",
@@ -47,6 +47,7 @@ harness = false
4747
backtrace = { version = "0.3", optional = true }
4848
ff = "0.13"
4949
group = "0.13"
50+
indexmap = "1"
5051
pasta_curves = "0.5"
5152
rand_core = { version = "0.6", default-features = false }
5253
tracing = "0.1"

0 commit comments

Comments
 (0)