Temas en tendencia
#
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.
así que descubrí que es aún más elegante. Observé que el tx de ejecución frontal (por parte de los atacantes) llama a 'initialize' y los protocolos también llaman _successful_ 'initialize' después (por lo tanto, piensan que todo es normal). Pero espera, ¿cómo es esto posible? Tuve que mirar muy a fondo los cambios en las ranuras de almacenamiento y adivinar lo que encontré: _restablecieron_ el valor de la ranura de almacenamiento '_initialized' al final de la tx de ejecución frontal (después de que cambiaron al contrato de implementación malicioso). Esto significa que el almacenamiento proxy se ve ahora como si nunca se inicializara.
La ranura de almacenamiento relevante a mirar es 'keccak256(abi.encode(uint256(keccak256(" - 1)) & ~bytes32(uint256(0xff))' = '0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00'
Este es el mal del siguiente nivel.



10 jul, 22:13
Se vuelve aún más elegante: la forma en que Etherscan fue engañado mostrando el contrato de implementación incorrecto se basa en la configuración de 2 ranuras de proxy diferentes en la misma tx de frontrunning. Por lo tanto, Etherscan utiliza una cierta heurística que incorpora diferentes ranuras de almacenamiento para recuperar el contrato de implementación.
Hay un proxy antiguo de OpenZeppelin que usaba la siguiente ranura: 'keccak256("org.zeppelinos.proxy.implementation")' = '0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3'
Ahora también tenemos la ranura estándar EIP-1967 'bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)' = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc'
Entonces, lo que sucedió es que la antigua ranura de proxy OpenZeppelin se escribió con la dirección de implementación benigna _y_ la ranura estándar EIP-1967 también se escribió con la dirección de implementación maliciosa. Dado que Etherscan consulta primero la ranura de proxy anterior, primero recuperó la de aspecto benigno y, por lo tanto, la mostró.

21.48K
Populares
Ranking
Favoritas