ark_r1cs_std::mul_by_inverse generated unsound constraints in versions below 0.3.1 (#961)

* `ark_r1cs_std::mul_by_inverse` was unsound in versions below `0.3.1`

* Fix category

* Add link to PR
This commit is contained in:
Pratyush Mishra
2021-07-08 21:06:05 -07:00
committed by GitHub
parent 730c1e815a
commit 674daf6fae

View File

@@ -0,0 +1,22 @@
```toml
[advisory]
id = "RUSTSEC-0000-0000"
package = "ark-r1cs-std"
date = "2021-07-08"
categories = ["crypto-failure"]
keywords = ["r1cs", "zksnark", "arkworks"]
url = "https://github.com/arkworks-rs/r1cs-std/pull/70"
[versions]
patched = [">= 0.3.1"]
[affected]
functions = { "ark_r1cs_std::FieldVar::mul_by_inverse" = ["< 0.3.0"] }
```
# Flaw in `FieldVar::mul_by_inverse` allows unsound R1CS constraint systems
Versions `0.2.0` to `0.3.0` of ark-r1cs-std did not enforce any constraints in the `FieldVar::mul_by_inverse` method, allowing a malicious prover to produce an unsound proof that passes all verifier checks.
This method was used primarily in scalar multiplication for [`short_weierstrass::ProjectiveVar`](https://docs.rs/ark-r1cs-std/0.3.0/ark_r1cs_std/groups/curves/short_weierstrass/struct.ProjectiveVar.html).
This bug was fixed in commit `47ddbaa`, and was released as part of version `0.3.1` on `crates.io`.