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.
{
"url": "https://pkg.go.dev/vuln/GO-2023-2119",
"review_status": "REVIEWED"
}{
"imports": [
{
"symbols": [
"Prove",
"Verify"
],
"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"
}
]
}