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"
]
}
]
}