CVE-2023-28431 — Vulnerability in pallet-evm-precompile-modexp —...
HIGH
Frontier's modexp precompile is slow for even modulus
Published March 21, 2023Updated October 24, 2024Source: osv
Summary
### Impact
Frontier's `modexp` precompile uses `num-bigint` crate under the hood. [In the implementation](https://github.com/rust-num/num-bigint/blob/6f2b8e0fc218dbd0f49bebb8db2d1a771fe6bafa/src/biguint/power.rs#L134), 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.
### Patches
No fixes for `num-bigint` is currently available, and thus this advisory will be first 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 [PR 1017](https://github.com/paritytech/frontier/pull/1017).
The recommendations are as follows:
- If you anticipate malicious validators, it's recommended to issue an emergency runtime upgrade as soon as possible.
- If you do not anticipate malicious validators, it's recommended to issue a normal runtime upgrade, as Substrate has builtin timeout protection when validators are building blocks.
### Workarounds
None.
### References
A similar issue was presented in Geth's implementation and the fix can be found [here](https://go-review.googlesource.com/c/go/+/420897).
Advisory Timeline
- First published March 21, 2023 (1301 days ago).
- Last revised October 24, 2024 — 583 days after initial publication.
Affected Packages (1)
Affects 1 ecosystem: crates.io (1).
| Package | Ecosystem | Affected | Fixed In |
|---|---|---|---|
| pallet-evm-precompile-modexp | crates.io | All versions | Range-based data available |
Vulnerability Classification
Common Weakness Enumeration (CWE) identifiers for this vulnerability type.
- CWE-682
CVSS Score Breakdown
What the CVSS (Common Vulnerability Scoring System) 7.5 score means for each attack dimension.
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
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-7vf6WEB
- https://nvd.nist.gov/vuln/detail/CVE-2023-28431ADVISORY
- https://github.com/paritytech/frontier/pull/1017WEB
- https://github.com/paritytech/frontier/commit/5af12e94d7dfc8a0208a290643a800f55de7b219WEB
- https://github.com/polkadot-evm/frontierPACKAGE
- https://github.com/rust-num/num-bigint/blob/6f2b8e0fc218dbd0f49bebb8db2d1a771fe6bafa/src/biguint/power.rs#L134WEB
Frequently Asked Questions
- What is CVE-2023-28431?
- Frontier's modexp precompile is slow for even modulus This vulnerability has been assigned a severity rating of HIGH (CVSS score: 7.5/10).
- How do I check if my project is affected by CVE-2023-28431?
- CVE-2023-28431 affects pallet-evm-precompile-modexp. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2023-28431 and 200,000+ other known vulnerabilities.
Severity & Exploitability
CVSS Score
7.5
High exploitability or significant impact. Prioritize remediation within days.
Also Known As
GHSA-fcmm-54jp-7vf6
Related CVEs
- CVE-2026-93657HIGH
hickory-resolver: Resolver::lookup() and Resolver::lookup_ip() APIs obscure DNSSEC validation failures
- CVE-2026-18140HIGH
aws-smithy-json: Uncontrolled recursion in the aws-smithy-json unknown-key skip path allows unauthenticated remote denial of service in smithy-rs generated servers
Check if you're affected
Scan your dependencies to see if this vulnerability affects your projects.
Scan Your Dependencies