Vulnerability · Published Mar 22, 2023 · Assigned by GitHub_M
CVE-2023-28431Frontier's modexp precompile is slow for even modulus
High 7.5
In plain English
A high-severity security flaw in frontier from paritytech. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.9% (higher than 59% of all known vulnerabilities).
Official description
Frontier is an Ethereum compatibility layer for Substrate. Frontier's `modexp` precompile uses `num-bigint` crate under the hood. In the implementation prior to pull request 1017, the cases for modulus being even and modulus being odd are treated separately. Odd modulus uses the fast Montgomery multiplication, and even modulus uses the slow plain power algorithm. This gas cost discrepancy was not accounted for in the `modexp` precompile, leading to possible denial of service attacks. No fixes for `num-bigint` are currently available, and thus this issue is fixed in the short term by raising the gas costs for even modulus, and in the long term fixing it in `num-bigint` or switching to another modexp implementation. The short-term fix for Frontier is deployed at pull request 1017. There are no known workarounds aside from applying the fix.
Affected products (as reported)
| Vendor | Product | Versions |
|---|---|---|
| paritytech | frontier | <= 0.1.0 |
Weakness: CWE-682 · Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
References
- https://github.com/paritytech/frontier/security/advisories/GHSA-fcmm-54jp-7vf6 x_refsource_CONFIRM
- https://github.com/paritytech/frontier/pull/1017 x_refsource_MISC
- https://github.com/paritytech/frontier/commit/5af12e94d7dfc8a0208a290643a800f55de7b219 x_refsource_MISC
- https://github.com/rust-num/num-bigint/blob/6f2b8e0fc218dbd0f49bebb8db2d1a771fe6bafa/src/biguint/power.rs#L134 x_refsource_MISC