Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
El compilador es uno de los componentes básicos de los sistemas informáticos modernos, y su función es convertir el código fuente de lenguajes de programación de alto nivel en instrucciones ejecutables por la computadora. En comparación con la seguridad del código de aplicación, la seguridad del propio compilador a menudo se pasa por alto. Sin embargo, el compilador, como programa informático, también puede tener vulnerabilidades de seguridad que, en ciertas circunstancias, pueden representar serios riesgos de seguridad.
El papel del compilador de Solidity es convertir el código de contrato inteligente en código de instrucciones (EVM) para la máquina virtual de Ethereum. A diferencia de las vulnerabilidades de la propia EVM, las vulnerabilidades del compilador de Solidity se manifiestan principalmente en problemas que surgen al convertir Solidity en código EVM. Esto puede dar lugar a que el código EVM generado no coincida con las expectativas del desarrollador, lo que a su vez puede provocar un funcionamiento anómalo del contrato inteligente, poniendo en peligro la seguridad de los activos de los usuarios.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores de Solidity:
SOL-2016-9 AlmacenamientoLimpioDeByteDeOrdenAlto
Esta vulnerabilidad existe en versiones anteriores del compilador de Solidity (>=0.1.6 <0.4.4). En ciertas circunstancias, las variables de almacenamiento pueden ser modificadas accidentalmente, lo que no coincide con el comportamiento esperado. Esta inconsistencia puede tener graves consecuencias, especialmente cuando las variables se utilizan para la verificación de permisos o la contabilidad de activos.
La vulnerabilidad existe en los compiladores de las versiones 0.8.13 a 0.8.15. Debido a un error en el proceso de optimización de compilación, puede provocar que las operaciones de escritura en la memoria se eliminen incorrectamente, lo que resulta en un comportamiento del programa que no coincide con lo esperado.
Esta vulnerabilidad afecta a las versiones del compilador desde la 0.5.8 hasta la 0.8.16. Al realizar operaciones de abi.encode en arreglos de tipo calldata, puede que se eliminen incorrectamente algunos datos, lo que provoca que los datos adyacentes sean modificados, causando inconsistencias en los datos después de la codificación y decodificación.
Ante las vulnerabilidades del compilador Solidity, el equipo de seguridad blockchain de Cobo propone las siguientes recomendaciones:
Para los desarrolladores:
Utiliza una versión más reciente del compilador de Solidity
Mejorar los casos de prueba unitarios
Evitar el uso de ensamblaje en línea, operaciones complejas de codificación y decodificación de ABI, etc.
Para el personal de seguridad:
Considerar los riesgos de seguridad que el compilador puede introducir durante la auditoría.
Instar a actualizar la versión del compilador en el proceso SDL
Evaluar el impacto real en la seguridad de las vulnerabilidades del compilador según las circunstancias específicas
Recursos prácticos:
Blog oficial de advertencias de seguridad de Solidity
Lista de errores del repositorio de Solidity en GitHub
Aviso de seguridad en la página del código del contrato de Etherscan
En resumen, aunque no es necesario entrar en pánico excesivo, los desarrolladores y el personal de seguridad deben ser plenamente conscientes de los riesgos potenciales de las vulnerabilidades del compilador de Solidity y tomar las medidas adecuadas para reducir los posibles problemas de seguridad.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
14 me gusta
Recompensa
14
6
Compartir
Comentar
0/400
ZkProofPudding
· 08-01 20:20
Otro compilador fresco
Ver originalesResponder0
TheMemefather
· 08-01 20:19
¿También hay vulnerabilidades en el compilador? Estoy frustrado.
Ver originalesResponder0
HodlOrRegret
· 08-01 20:18
Una vez más, la actualización ha salido con errores, y siempre son los inversores minoristas quienes sufren las grandes pérdidas.
Ver originalesResponder0
wrekt_but_learning
· 08-01 20:16
Este agujero en el código es realmente un problema, me da escalofríos.
Ver originalesResponder0
GweiTooHigh
· 08-01 20:13
El compilador ha vuelto a tener un error, es demasiado molesto.
Ver originalesResponder0
BakedCatFanboy
· 08-01 20:11
Otra vez vulnerabilidades en EVM. Dios mío, no puedo manejarlo.
La amenaza de vulnerabilidades del compilador Solidity para la seguridad de los contratos inteligentes. Los desarrolladores deben estar atentos.
Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
El compilador es uno de los componentes básicos de los sistemas informáticos modernos, y su función es convertir el código fuente de lenguajes de programación de alto nivel en instrucciones ejecutables por la computadora. En comparación con la seguridad del código de aplicación, la seguridad del propio compilador a menudo se pasa por alto. Sin embargo, el compilador, como programa informático, también puede tener vulnerabilidades de seguridad que, en ciertas circunstancias, pueden representar serios riesgos de seguridad.
El papel del compilador de Solidity es convertir el código de contrato inteligente en código de instrucciones (EVM) para la máquina virtual de Ethereum. A diferencia de las vulnerabilidades de la propia EVM, las vulnerabilidades del compilador de Solidity se manifiestan principalmente en problemas que surgen al convertir Solidity en código EVM. Esto puede dar lugar a que el código EVM generado no coincida con las expectativas del desarrollador, lo que a su vez puede provocar un funcionamiento anómalo del contrato inteligente, poniendo en peligro la seguridad de los activos de los usuarios.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores de Solidity:
Esta vulnerabilidad existe en versiones anteriores del compilador de Solidity (>=0.1.6 <0.4.4). En ciertas circunstancias, las variables de almacenamiento pueden ser modificadas accidentalmente, lo que no coincide con el comportamiento esperado. Esta inconsistencia puede tener graves consecuencias, especialmente cuando las variables se utilizan para la verificación de permisos o la contabilidad de activos.
La vulnerabilidad existe en los compiladores de las versiones 0.8.13 a 0.8.15. Debido a un error en el proceso de optimización de compilación, puede provocar que las operaciones de escritura en la memoria se eliminen incorrectamente, lo que resulta en un comportamiento del programa que no coincide con lo esperado.
Esta vulnerabilidad afecta a las versiones del compilador desde la 0.5.8 hasta la 0.8.16. Al realizar operaciones de abi.encode en arreglos de tipo calldata, puede que se eliminen incorrectamente algunos datos, lo que provoca que los datos adyacentes sean modificados, causando inconsistencias en los datos después de la codificación y decodificación.
Ante las vulnerabilidades del compilador Solidity, el equipo de seguridad blockchain de Cobo propone las siguientes recomendaciones:
Para los desarrolladores:
Para el personal de seguridad:
Recursos prácticos:
En resumen, aunque no es necesario entrar en pánico excesivo, los desarrolladores y el personal de seguridad deben ser plenamente conscientes de los riesgos potenciales de las vulnerabilidades del compilador de Solidity y tomar las medidas adecuadas para reducir los posibles problemas de seguridad.