Friday, April 17, 2026
The BLOCKCHAIN Page
No Result
View All Result
  • Home
  • Cryptocurrency
  • Blockchain
  • Bitcoin
  • Market & Analysis
  • Altcoins
  • DeFi
  • Ethereum
  • Dogecoin
  • XRP
  • Regulations
  • NFTs
The BLOCKCHAIN Page
No Result
View All Result
Home Ethereum

Solidity Storage Array Bugs | Ethereum Foundation Blog

by admin
September 25, 2023
in Ethereum
0
Dodging a bullet: Ethereum State Problems
0
SHARES
13
VIEWS
Share on FacebookShare on Twitter


Solidity Storage Array Bug Announcement

This weblog publish is about two bugs related to storage arrays that are in any other case unrelated. Each have been current within the compiler for a very long time and have solely been found now regardless that a contract containing them ought to very seemingly present malfunctions in checks.

Daenam Kim with assist from Nguyen Pham, each from Curvegrid found a problem the place invalid information is saved in reference to arrays of signed integers.

This bug has been current since Solidity 0.4.7 and we think about it the extra severe of the 2. If these arrays use unfavourable integers in a sure state of affairs, it should trigger information corruption and thus the bug must be simple to detect.

By the Ethereum bug bounty program, we obtained a report a few flaw inside the new experimental ABI encoder (known as ABIEncoderV2). The brand new ABI encoder continues to be marked as experimental, however we nonetheless suppose that this deserves a outstanding announcement since it’s already used on mainnet.
Credit to Ming Chuan Lin (of https://www.secondstate.io) for each discovering and fixing the bug!

The 0.5.10 release incorporates the fixes to the bugs.
In the intervening time, we don’t plan to publish a repair to the legacy 0.4.x collection of Solidity, however we would if there may be well-liked demand.

Each bugs must be simply seen in checks that contact the related code paths.

Particulars in regards to the two bugs could be discovered beneath.

Signed Integer Array Bug

Who must be involved

You probably have deployed contracts which use signed integer arrays in storage and both straight assign

  • a literal array with no less than one unfavourable worth in it (x = [-1, -2, -3];) or
  • an current array of a totally different signed integer sort

to it, this can result in information corruption within the storage array.

Contracts that solely assign particular person array parts (i.e. with x[2] = -1;) usually are not affected.

Tips on how to test if contract is weak

If you happen to use signed integer arrays in storage, attempt to run checks the place you employ unfavourable values. The impact must be that the precise worth saved is optimistic as a substitute of unfavourable.

You probably have a contract that meets these situations, and need to confirm whether or not the contract is certainly weak, you possibly can attain out to us through security@ethereum.org.

Technical particulars

Storage arrays could be assigned from arrays of various sort. Throughout this copy and project operation, a kind conversion is carried out on every of the weather. Along with the conversion, particularly if the signed integer sort is shorter than 256 bits, sure bits of the worth should be zeroed out in preparation for storing a number of values in the identical storage slot.

Which bits to zero out was incorrectly decided from the supply and never the goal sort. This results in too many bits being zeroed out. Specifically, the signal bit will likely be zero which makes the worth optimistic.

ABIEncoderV2 Array Bug

Who must be involved

You probably have deployed contracts which use the experimental ABI encoder V2, then these is perhaps affected. Which means that solely contracts which use the next directive inside the supply code could be affected:

pragma experimental ABIEncoderV2;

Moreover, there are a variety of necessities for the bug to set off. See technical particulars additional beneath for extra info.

Tips on how to test if contract is weak

The bug solely manifests itself when the entire following situations are met:

  • Storage information involving arrays or structs is shipped on to an exterior operate name, to abi.encode or to occasion information with out prior project to a neighborhood (reminiscence) variable AND
  • this information both incorporates an array of structs or an array of statically-sized arrays (i.e. no less than two-dimensional).

Along with that, within the following state of affairs, your code is NOT affected:

  • if you happen to solely return such information and don’t use it in abi.encode, exterior calls or occasion information.

Doable penalties

Naturally, any bug can have wildly various penalties relying on this system management circulation, however we count on that that is extra more likely to result in malfunction than exploitability.

The bug, when triggered, will underneath sure circumstances ship corrupt parameters on technique invocations to different contracts.

Technical particulars

In the course of the encoding course of, the experimental ABI encoder doesn’t correctly advance to the subsequent component in an array in case the weather occupy greater than a single slot in storage.

That is solely the case for parts which might be structs or statically-sized arrays. Arrays of dynamically-sized arrays or of elementary datatypes usually are not affected.

The precise impact you will notice is that information is “shifted” within the encoded array: You probably have an array of sort uint[2][] and it incorporates the info
[[1, 2], [3, 4], [5, 6]], then it will likely be encoded as [[1, 2], [2, 3], [3, 4]] as a result of the encoder solely advances by a single slot between parts as a substitute of two.

This publish was collectively composed by @axic, @chriseth, @holiman



Source link

Tags: ArrayBlogBugsEthereumFoundationSolidityStorage
admin

admin

Recommended

Solana Price (SOL) Gains Traction: Poised for Further Increase?

Solana Price (SOL) Gains Traction: Poised for Further Increase?

2 years ago
Cryptofinance: A stake in Coinbase’s future

Cryptofinance: A stake in Coinbase’s future

3 years ago

Popular News

  • Protocol-Owned Liquidity: A Sustainable Path for DeFi

    Protocol-Owned Liquidity: A Sustainable Path for DeFi

    0 shares
    Share 0 Tweet 0
  • Cryptocurrency for College: Exploring DeFi Scholarship Models

    0 shares
    Share 0 Tweet 0
  • What are rebase tokens, and how do they work?

    0 shares
    Share 0 Tweet 0
  • What is Velodrome Finance (VELO): why it’s a next-gen AMM

    0 shares
    Share 0 Tweet 0
  • $10 XRP Price Envisioned By Fund Manager As Ripple Mounts Trillion-Dollar Payment Markets ⋆ ZyCrypto

    0 shares
    Share 0 Tweet 0

Latest

T-Mobile will give you an iPad for $99 when you sign up for a new line – here’s how

T-Mobile will give you an iPad for $99 when you sign up for a new line – here’s how

April 17, 2026
Meet3D founder returns with AI-powered OpenSim grid – Hypergrid Business

Meet3D founder returns with AI-powered OpenSim grid – Hypergrid Business

April 17, 2026

Categories

  • Altcoins
  • Bitcoin
  • Blockchain
  • Cryptocurrency
  • DeFi
  • Dogecoin
  • Ethereum
  • Market & Analysis
  • NFTs & Metaverse
  • Regulations
  • XRP

Follow us

Recommended

  • T-Mobile will give you an iPad for $99 when you sign up for a new line – here’s how
  • Meet3D founder returns with AI-powered OpenSim grid – Hypergrid Business
  • I traded my Sonos Era 300 for Denon’s new home speaker – and see no reason to go back
  • OpenSim builders get new one-prim NPC manager — no scripts, no orphans – Hypergrid Business
  • I found a way to roll back buggy Google Services updates on Android – in just a few clicks
  • About us
  • Privacy Policy
  • Terms & Conditions

© 2023 TheBlockchainPage | All Rights Reserved

No Result
View All Result
  • Home
  • Cryptocurrency
  • Blockchain
  • Bitcoin
  • Market & Analysis
  • Altcoins
  • DeFi
  • Ethereum
  • Dogecoin
  • XRP
  • Regulations
  • NFTs

© 2023 TheBlockchainPage | All Rights Reserved