Headline
CVE-2022-39242: Fix post dispatch weight by notlesh · Pull Request #851 · paritytech/frontier
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. There are no known workarounds.
This fixes a bug where weight was not refunded after execution, which meant that the worst-case weight (based on gas_limit) was accounted for in all cases. This change calls Extra::post_dispatch which can invoke CheckWeight::post_dispatch, which will properly refund any extra weight.
Note that this only applies to weight accounting, the currency used for fees was already working as designed.
Thanks to @nbaztec for adding tests.
Related news
### Impact Previously, 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. This issue is fixed by properly refund unused weights after each EVM execution. 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. ### Patches The issue is fixed in https://github.com/paritytech/frontier/pull/851 ### Workarounds None. ### References _Are there any links users can visit to find out more?_ ### For more information If you have any questions or comments about this advisory: * Open an issue in [Frontier repo](https://github.com/paritytech/frontier/issues) * Email [Wei](mailto:[email protected])