Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix balance and gas overflows in CrossContractCall #889

Merged

Conversation

guidovranken
Copy link
Contributor

Description

Specific bytecode inputs to the EVM could lead to overflowing additions in gas and balance variables. This PR makes turns those additions into saturating_add so that balance/gas requirements will always exceed the capacity of the caller to incur those costs, and the call will fail.

Performance / NEAR gas cost considerations

Testing

Fuzzing.

How should this be reviewed

Additional information

Copy link
Member

@birchmd birchmd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the definitions in PromiseArgs and SimpleNearPromise should probably also be changed to saturating adds.

engine-types/src/parameters/promise.rs Outdated Show resolved Hide resolved
engine-types/src/parameters/promise.rs Outdated Show resolved Hide resolved
@aleksuss aleksuss added this pull request to the merge queue Jan 19, 2024
Merged via the queue into aurora-is-near:develop with commit 4216810 Jan 19, 2024
22 checks passed
@0xfocu5
Copy link

0xfocu5 commented Jan 24, 2024

@guidovranken hi I would also like to verify the correctness of gas consumption. Could you please provide a testing method? Thank you very much for your help.

aleksuss added a commit that referenced this pull request Feb 6, 2024
<!--
Thanks for submitting a pull request! Here are some helpful tips:

* Always create branches on and target the `develop` branch.
* Run all the tests locally and ensure that they are passing.
* Run `make format` to ensure that the code is formatted.
* Run `make check` to ensure that all checks passed successfully.
* Small commits and contributions that attempt one single goal is
preferable.
* If the idea changes or adds anything functional which will affect
users, an
AIP discussion is required first on the Aurora forum: 

https://forum.aurora.dev/discussions/AIPs%20(Aurora%20Improvement%20Proposals).
* Avoid breaking the public API (namely in engine/src/lib.rs) unless
required.
* If your PR is a WIP, ensure that you enable "draft" mode.
* Your first PRs won't use the CI automatically unless a maintainer
starts.
If this is not your first PR, please do NOT abuse the CI resources.

Checklist:
- [ ] I have performed a self-review of my code
- [ ] I have documented my code, particularly in the hard-to-understand
areas
- [ ] I have made corresponding changes to the documentation
- [ ] I have added tests to prove my fix or new feature is effective and
works
- [ ] Any dependent changes have been merged
- [ ] The PR is targeting the `develop` branch and not `master`
- [ ] I have pre-squashed my commits into a single commit and rebased.
-->

## Description

Specific bytecode inputs to the EVM could lead to overflowing additions
in gas and balance variables. This PR makes turns those additions into
`saturating_add` so that balance/gas requirements will always exceed the
capacity of the caller to incur those costs, and the call will fail.

## Performance / NEAR gas cost considerations

## Testing

Fuzzing.

## How should this be reviewed

<!--
Include any recommendations of areas to be careful of to ensure that the
reviewers use extra attention.
-->

## Additional information

<!--
Include any additional information which you think should be in this PR,
such
as prior arts, future extensions, unresolved problems, or a TODO list
which
should be followed up.
-->

---------

Co-authored-by: Michael Birch <birchmd8@gmail.com>
Co-authored-by: Michael Birch <michael.birch@aurora.dev>
Co-authored-by: Oleksandr Anyshchenko <oleksandr.anyshchenko@aurora.dev>
@aleksuss aleksuss mentioned this pull request Feb 6, 2024
aleksuss added a commit that referenced this pull request Feb 6, 2024
## 3.6.0 2024-02-06

### Fixes

- Fixed underflow in the modexp gas calculation by [@guidovranken].
([#883])
- Prevented subtraction underflow in th xcc module by [@guidovranken].
([#888])
- Fixed balance and gas overflows in the xcc module by [@guidovranken].
([#889])

### Changes

- CI was updated by changing self-hosted runner to the GitHub heavy by
[@aleksuss]. ([#881])
- Removed a logic of fee calculation in the eth-connector by
[@karim-en]. ([#882])
- Version of the rust nightly was updated to 2023-12-15 by
[@RomanHodulak]. ([#885])

[#881]: #881
[#882]: #882
[#883]: #883
[#885]: #885
[#888]: #888
[#889]: #889

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Guido Vranken <guidovranken@users.noreply.github.com>
Co-authored-by: Karim <karim@aurora.dev>
Co-authored-by: Roman Hodulák <roman.hodulak@aurora.dev>
Co-authored-by: Michael Birch <birchmd8@gmail.com>
Co-authored-by: Michael Birch <michael.birch@aurora.dev>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants