Analyse des vulnérabilités du compilateur Solidity et stratégies d'atténuation
Le compilateur est l'un des composants fondamentaux des systèmes informatiques modernes, dont la fonction est de traduire le code source des langages de programmation de haut niveau en instructions exécutables par l'ordinateur. Tout comme le code des applications, le compilateur lui-même peut également présenter des vulnérabilités de sécurité, ce qui peut, dans certains cas, entraîner des risques de sécurité graves.
Le rôle du compilateur Solidity est de convertir le code des contrats intelligents en code d'instructions (EVM) pour la machine virtuelle Ethereum. Contrairement aux vulnérabilités de l'EVM elle-même, les vulnérabilités du compilateur Solidity n'affectent pas directement le réseau Ethereum, mais peuvent entraîner une incohérence entre le code EVM généré et les attentes des développeurs, ce qui peut provoquer des problèmes de sécurité des contrats intelligents.
Voici quelques exemples réels de vulnérabilités du compilateur Solidity :
SOL-2016-9 HighOrderByteCleanStorage
Cette vulnérabilité existe dans les versions antérieures du compilateur Solidity ( >=0.1.6 <0.4.4). Dans certains cas, le compilateur ne nettoyait pas correctement les octets de poids fort, entraînant une modification accidentelle de la valeur des variables de stockage.
SOL-2022-4 Effets secondaires de mémoire InlineAssembly
La vulnérabilité existe dans les versions 0.8.13 à 0.8.15 du compilateur. En raison d'un traitement incorrect des blocs assembly lors de l'optimisation de la compilation, il se peut que des opérations d'écriture en mémoire soient supprimées par erreur.
SOL-2022-6 Débordement de tête d'AbiReencoding avec nettoyage de tableau statique
Cette vulnérabilité affecte les compilateurs des versions 0.5.8 à 0.8.16. Lors de l'opération abi.encode sur un tableau de type calldata, certaines données pourraient être erronément nettoyées, entraînant la modification de données adjacentes.
Concernant les vulnérabilités du compilateur Solidity, l'équipe de sécurité blockchain de Cobo propose les recommandations suivantes :
Pour les développeurs:
Utilisez une version plus récente du compilateur Solidity
Améliorer les cas de test unitaire
Évitez d'utiliser des caractéristiques de langage complexes, telles que l'assemblage en ligne, le décodage/encodage ABI des tableaux multidimensionnels, etc.
Pour le personnel de sécurité:
Prendre en compte les risques de sécurité que le compilateur pourrait introduire lors de l'audit.
Pousser à mettre à jour la version du compilateur dans le processus de développement
Évaluer l'impact réel de la vulnérabilité du compilateur en fonction des circonstances spécifiques.
Quelques ressources utiles :
Blog d'alerte sécurité officiel de Solidity
Liste des bugs dans le dépôt GitHub de Solidity
Liste des bugs des compilateurs de chaque version
Alerte de vulnérabilité du compilateur sur la page de code de contrat d'Etherscan
En comprenant les caractéristiques et les impacts des vulnérabilités du compilateur Solidity, les développeurs et les responsables de la sécurité peuvent évaluer de manière plus globale les risques de sécurité des contrats intelligents et prendre des mesures préventives appropriées.
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
20 J'aime
Récompense
20
5
Partager
Commentaire
0/400
blocksnark
· 07-10 15:09
L'argent pour déboguer est le plus délicieux.
Voir l'originalRépondre0
BlockchainDecoder
· 07-08 10:18
Selon le document classique "Analyse du compilateur Solidity (2022)", le coefficient de risque de ce type de vulnérabilités atteint 78,3 %. Il est conseillé d'utiliser avec prudence les versions 0.8.0 et supérieures pour éviter cela.
Voir l'originalRépondre0
DaisyUnicorn
· 07-08 10:14
Ying Ying, le compilateur a aussi un petit bug, il est temps de mettre à jour vers une nouvelle version.
Voir l'originalRépondre0
FlashLoanLarry
· 07-08 10:13
juste un autre jour dans le defi... les exploits de compilateur = opportunités mev infinies pour être honnête
Voir l'originalRépondre0
AlphaLeaker
· 07-08 10:04
Même avec une mise à niveau, on ne peut pas résister aux Hackers.
Analyse des vulnérabilités du compilateur Solidity et stratégies de prévention
Analyse des vulnérabilités du compilateur Solidity et stratégies d'atténuation
Le compilateur est l'un des composants fondamentaux des systèmes informatiques modernes, dont la fonction est de traduire le code source des langages de programmation de haut niveau en instructions exécutables par l'ordinateur. Tout comme le code des applications, le compilateur lui-même peut également présenter des vulnérabilités de sécurité, ce qui peut, dans certains cas, entraîner des risques de sécurité graves.
Le rôle du compilateur Solidity est de convertir le code des contrats intelligents en code d'instructions (EVM) pour la machine virtuelle Ethereum. Contrairement aux vulnérabilités de l'EVM elle-même, les vulnérabilités du compilateur Solidity n'affectent pas directement le réseau Ethereum, mais peuvent entraîner une incohérence entre le code EVM généré et les attentes des développeurs, ce qui peut provoquer des problèmes de sécurité des contrats intelligents.
Voici quelques exemples réels de vulnérabilités du compilateur Solidity :
Cette vulnérabilité existe dans les versions antérieures du compilateur Solidity ( >=0.1.6 <0.4.4). Dans certains cas, le compilateur ne nettoyait pas correctement les octets de poids fort, entraînant une modification accidentelle de la valeur des variables de stockage.
La vulnérabilité existe dans les versions 0.8.13 à 0.8.15 du compilateur. En raison d'un traitement incorrect des blocs assembly lors de l'optimisation de la compilation, il se peut que des opérations d'écriture en mémoire soient supprimées par erreur.
Cette vulnérabilité affecte les compilateurs des versions 0.5.8 à 0.8.16. Lors de l'opération abi.encode sur un tableau de type calldata, certaines données pourraient être erronément nettoyées, entraînant la modification de données adjacentes.
Concernant les vulnérabilités du compilateur Solidity, l'équipe de sécurité blockchain de Cobo propose les recommandations suivantes :
Pour les développeurs:
Pour le personnel de sécurité:
Quelques ressources utiles :
En comprenant les caractéristiques et les impacts des vulnérabilités du compilateur Solidity, les développeurs et les responsables de la sécurité peuvent évaluer de manière plus globale les risques de sécurité des contrats intelligents et prendre des mesures préventives appropriées.