A a third party may derive a valid proof from a valid initial tuple {proof, public_inputs}, corresponding to the same public inputs as the initial proof. This vulnerability is due to randomness being generated using a small part of the scratch memory describing the state, allowing for degrees of freedom in the transcript. Note that the impact is limited to the PlonK verifier smart contract.
{ "review_status": "REVIEWED", "url": "https://pkg.go.dev/vuln/GO-2023-2119" }
{ "imports": [ { "path": "github.com/consensys/gnark/backend/plonk/bls12-377", "symbols": [ "Prove", "Verify" ] }, { "path": "github.com/consensys/gnark/backend/plonk/bls12-381", "symbols": [ "Prove", "Verify" ] }, { "path": "github.com/consensys/gnark/backend/plonk/bls24-315", "symbols": [ "Prove", "Verify" ] }, { "path": "github.com/consensys/gnark/backend/plonk/bls24-317", "symbols": [ "Prove", "Verify" ] }, { "path": "github.com/consensys/gnark/backend/plonk/bn254", "symbols": [ "Prove", "Verify" ] }, { "path": "github.com/consensys/gnark/backend/plonk/bw6-633", "symbols": [ "Prove", "Verify" ] }, { "path": "github.com/consensys/gnark/backend/plonk/bw6-761", "symbols": [ "Prove", "Verify" ] } ] }