Subiecte populare
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
așa că am aflat că este și mai elegant. Am observat că tx (de către atacatori) numește 'initialize' și protocoalele apelează și _successfully_ 'initialize' after (astfel ei cred că totul este normal). Dar stai, cum este posibil acest lucru? A trebuit să mă uit foarte adânc în modificările slotului de stocare și să ghicesc ce am găsit: au resetat valoarea slotului de stocare "_initialized" la sfârșitul tx-ului de rulare frontală (după ce au trecut la contractul de implementare rău intenționat). Aceasta înseamnă că stocarea proxy arată acum ca și cum nu a fost niciodată inițializată.
Slotul de stocare relevant de analizat este 'keccak256(abi.encode(uint256(keccak256(" - 1)) & ~bytes32(uint256(0xff))' = '0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00'
Acesta este răul de nivel următor.



10 iul., 22:13
Devine și mai fantezist: modul în care Etherscan a fost păcălit arătând contractul de implementare greșit se bazează pe setarea a 2 sloturi proxy diferite în același top tx. Deci, Etherscan folosește o anumită euristică care încorporează diferite sloturi de stocare pentru a prelua contractul de implementare.
Există un proxy vechi de la OpenZeppelin care folosea următorul slot: 'keccak256("org.zeppelinos.proxy.implementation")' = '0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3'
Acum avem și slotul standard EIP-1967 'bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)' = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc'
Deci ceea ce s-a întâmplat este că vechiul slot proxy OpenZeppelin a fost scris cu adresa de implementare benignă _și_ slotul standard EIP-1967 a fost scris și el cu adresa de implementare rău intenționată. Deoarece Etherscan interoghează mai întâi vechiul slot proxy, l-a recuperat mai întâi pe cel cu aspect benign și astfel l-a afișat.

21,56K
Limită superioară
Clasament
Favorite