CVE-2023-45130 – Frontier opcode SUICIDE touches too many storage values on large contracts
https://notcve.org/view.php?id=CVE-2023-45130
Frontier is Substrate's Ethereum compatibility layer. Prior to commit aea528198b3b226e0d20cce878551fd4c0e3d5d0, at the end of a contract execution, when opcode SUICIDE marks a contract to be deleted, the software uses `storage::remove_prefix` (now renamed to `storage::clear_prefix`) to remove all storages associated with it. This is a single IO primitive call passing the WebAssembly boundary. For large contracts, the call (without providing a `limit` parameter) can be slow. In addition, for parachains, all storages to be deleted will be part of the PoV, which easily exceed relay chain PoV size limit. • https://github.com/paritytech/frontier/commit/aea528198b3b226e0d20cce878551fd4c0e3d5d0 https://github.com/paritytech/frontier/pull/1212 https://github.com/paritytech/frontier/security/advisories/GHSA-gc88-2gvv-gp3v • CWE-770: Allocation of Resources Without Limits or Throttling •
CVE-2023-28431 – Frontier's modexp precompile is slow for even modulus
https://notcve.org/view.php?id=CVE-2023-28431
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. • https://github.com/paritytech/frontier/commit/5af12e94d7dfc8a0208a290643a800f55de7b219 https://github.com/paritytech/frontier/pull/1017 https://github.com/paritytech/frontier/security/advisories/GHSA-fcmm-54jp-7vf6 https://github.com/rust-num/num-bigint/blob/6f2b8e0fc218dbd0f49bebb8db2d1a771fe6bafa/src/biguint/power.rs#L134 • CWE-682: Incorrect Calculation •
CVE-2022-39242 – Incorrect Calculation in Frontier leads to inflated Ethereum chain gas prices
https://notcve.org/view.php?id=CVE-2022-39242
Frontier is an Ethereum compatibility layer for Substrate. Prior to commit d3beddc6911a559a3ecc9b3f08e153dbe37a8658, the worst case weight was always accounted as the block weight for all cases. In case of large EVM gas refunds, this can lead to block spamming attacks -- the adversary can construct blocks with transactions that have large amount of refunds or unused gases with reverts, and as a result inflate up the chain gas prices. The impact of this issue is limited in that the spamming attack would still be costly for any adversary, and it has no ability to alter any chain state. This issue has been patched in commit d3beddc6911a559a3ecc9b3f08e153dbe37a8658. • https://github.com/paritytech/frontier/pull/851 https://github.com/paritytech/frontier/security/advisories/GHSA-v57h-6hmh-g2p4 • CWE-682: Incorrect Calculation •
CVE-2022-21685 – Integer underflow in Frontier
https://notcve.org/view.php?id=CVE-2022-21685
Frontier is Substrate's Ethereum compatibility layer. Prior to commit number `8a93fdc6c9f4eb1d2f2a11b7ff1d12d70bf5a664`, a bug in Frontier's MODEXP precompile implementation can cause an integer underflow in certain conditions. This will cause a node crash for debug builds. For release builds (and production WebAssembly binaries), the impact is limited as it can only cause a normal EVM out-of-gas. Users who do not use MODEXP precompile in their runtime are not impacted. • https://github.com/paritytech/frontier/commit/8a93fdc6c9f4eb1d2f2a11b7ff1d12d70bf5a664 https://github.com/paritytech/frontier/pull/549 https://github.com/paritytech/frontier/security/advisories/GHSA-cjg2-2fjg-fph4 • CWE-191: Integer Underflow (Wrap or Wraparound) •
CVE-2021-39193 – Transaction validity oversight in pallet-ethereum
https://notcve.org/view.php?id=CVE-2021-39193
Frontier is Substrate's Ethereum compatibility layer. Prior to commit number 0b962f218f0cdd796dadfe26c3f09e68f7861b26, a bug in `pallet-ethereum` can cause invalid transactions to be included in the Ethereum block state in `pallet-ethereum` due to not validating the input data size. Any invalid transactions included this way have no possibility to alter the internal Ethereum or Substrate state. The transaction will appear to have be included, but is of no effect as it is rejected by the EVM engine. The impact is further limited by Substrate extrinsic size constraints. • https://github.com/paritytech/frontier/commit/0b962f218f0cdd796dadfe26c3f09e68f7861b26 https://github.com/paritytech/frontier/pull/465 https://github.com/paritytech/frontier/pull/465/commits/8a2b890a2fb477d5fedd0e4335b00623832849ae https://github.com/paritytech/frontier/security/advisories/GHSA-hw4v-5x4h-c3xm • CWE-20: Improper Input Validation CWE-1284: Improper Validation of Specified Quantity in Input •