hats-finance / Catalyst-Exchange-0x3026c1ea29bf1280f99b41934b2cb65d053c9db4

Other
1 stars 3 forks source link

Arbitrium sequencer fail could lead to relayers' payouts being unfairly split #64

Open hats-bug-reporter[bot] opened 5 months ago

hats-bug-reporter[bot] commented 5 months ago

Github username: @PlamenTSV Twitter username: @p_tsanev Submission hash (on-chain): 0x16f1442e6dfc61f70c14d7085c019803561fc459b9b959b304efe17a796d21b8 Severity: low

Description: Description\ As the described by the arb docs: https://docs.arbitrum.io/for-devs/concepts/differences-between-arbitrum-ethereum/block-numbers-and-time#block-timestamps-arbitrum-vs-ethereum block timestamps can be varying, depending on the sequencer and if a transaction is force-included, basing it on the larger timestamp. The only sensitive calculation derived directly from block.timestamp is the distribution of source and destination relayer rewards.

Attack Scenario\ In case of a force-included block having a largely varying timestamp or if the sequencer adjusts 1 hour into the future (to prevent re-orgs), the calculation executionTime = uint64(block.timestamp) - uint64(bytes8(message[CTX1_EXECUTION_TIME_START:CTX1_EXECUTION_TIME_END])) which determines the destination and source fee distribution could be unfairly altered, unbenounced to the relayer. An unfair advantage could be created for either of the 2 relayers and a disadvantage for the other one.

Attachments

  1. Proof of Concept (PoC) File

  2. Revised Code File (Optional)

I cannot really determine a potential fix to avoid this, I guess arbitrium has to be cauciously used. The calculation could be rewritten to use block numbers, but they too can deem unexpected values due to the nature of their generation. Likelihood is low/med depending on the sequencer and the impact is low/med due to the potential unfairness generated. So LOW severity.

reednaa commented 5 months ago

Thanks for the submit. I don't know how to respond to this. We will determine severity internally. Options: no / low.

reednaa commented 5 months ago

We have decided to classify this issue as won’t fix. Our decision is based on the following arguments:

According to these arguments, the issue cannot be classified as low and is instead classified as won’t fix. We thank you for submitting the issue and will create an issue on our repo describing your findings but the issue itself is unfixable and would generally not be notisable even to explorative developers.