Analyse des vulnérabilités du compilateur Solidity et stratégies de réponse
Un compilateur est l'un des composants de base des systèmes informatiques modernes, sa fonction étant de convertir le code source des langages de programmation de haut niveau en code d'instructions exécutable par l'ordinateur. Par rapport à la sécurité du code applicatif, la sécurité du compilateur lui-même est souvent négligée. Cependant, en tant que programme informatique, un compilateur peut également présenter des vulnérabilités de sécurité, ce qui peut entraîner des risques de sécurité graves dans des circonstances spécifiques.
Le rôle du compilateur Solidity est de convertir le code des contrats intelligents en code d'instructions pour la machine virtuelle Ethereum (EVM). Contrairement aux vulnérabilités de l'EVM elle-même, les vulnérabilités du compilateur Solidity se manifestent principalement lors de la conversion de Solidity en code EVM. Cela peut entraîner un code EVM généré qui ne correspond pas aux attentes du développeur, ce qui peut provoquer des anomalies dans l'exécution des contrats intelligents et mettre en péril la sécurité des actifs des utilisateurs.
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 certaines situations, les variables de stockage peuvent être modifiées accidentellement, ce qui ne correspond pas au comportement attendu. Cette incohérence peut entraîner de graves conséquences, en particulier lorsque les variables sont utilisées pour la validation des autorisations ou la comptabilité des actifs.
SOL-2022-4 Effets secondaires de la mémoire d'InlineAssembly
Cette vulnérabilité existe dans les compilateurs des versions 0.8.13 à 0.8.15. En raison d'une erreur dans le processus d'optimisation de la compilation, cela peut entraîner la suppression incorrecte d'opérations d'écriture en mémoire, ce qui peut provoquer un comportement du programme inattendu.
SOL-2022-6 Débordement de tête AbiReencoding avec nettoyage de tableau statique
Cette vulnérabilité affecte les versions de compilateur de 0.5.8 à 0.8.16. Lors de l'opération abi.encode sur un tableau de type calldata, il est possible que certaines données soient nettoyées par erreur, entraînant la modification de données adjacentes et provoquant une incohérence des données après l'encodage et le décodage.
Pour les vulnérabilités du compilateur Solidity, l'équipe de sécurité de la blockchain Cobo propose les recommandations suivantes :
Pour les développeurs :
Utilisez une version plus récente du compilateur Solidity
Améliorer les cas de test unitaires
Évitez d'utiliser des opérations telles que l'assemblage en ligne, le décodage et l'encodage abi complexes.
Pour le personnel de sécurité :
Tenir compte des risques de sécurité que le compilateur peut introduire lors de l'audit.
Encourager la mise à niveau de la version du compilateur dans le processus SDL
Évaluer l'impact réel sur la sécurité des vulnérabilités des compilateurs en fonction des circonstances spécifiques
Ressources pratiques:
Blog officiel d'avertissement de sécurité Solidity
Liste des bugs du dépôt GitHub de Solidity
Avertissement de sécurité sur la page de code des contrats d'Etherscan
En résumé, bien qu'il ne soit pas nécessaire de paniquer excessivement, les développeurs et les responsables de la sécurité doivent prendre pleinement conscience des risques potentiels liés aux vulnérabilités des compilateurs Solidity et prendre des mesures appropriées pour réduire les dangers de sécurité qu'ils pourraient engendrer.
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.
14 J'aime
Récompense
14
6
Partager
Commentaire
0/400
ZkProofPudding
· Il y a 21h
Un autre compilateur frais
Voir l'originalRépondre0
TheMemefather
· Il y a 21h
Le compilateur a aussi des failles ? C'est fou.
Voir l'originalRépondre0
HodlOrRegret
· Il y a 21h
Encore une fois, une mise à jour a causé des bugs, et ce sont toujours les investisseurs détaillants qui en pâtissent.
Voir l'originalRépondre0
wrekt_but_learning
· Il y a 21h
Ce bug de code est vraiment problématique, ça me donne des frissons.
Voir l'originalRépondre0
GweiTooHigh
· Il y a 21h
Le compilateur a encore un bug, c'est vraiment frustrant.
Voir l'originalRépondre0
BakedCatFanboy
· Il y a 21h
Encore une vulnérabilité EVM, oh mon Dieu, je n'en peux plus.
Les vulnérabilités du compilateur Solidity menacent la sécurité des smart contracts. Les développeurs doivent rester vigilants.
Analyse des vulnérabilités du compilateur Solidity et stratégies de réponse
Un compilateur est l'un des composants de base des systèmes informatiques modernes, sa fonction étant de convertir le code source des langages de programmation de haut niveau en code d'instructions exécutable par l'ordinateur. Par rapport à la sécurité du code applicatif, la sécurité du compilateur lui-même est souvent négligée. Cependant, en tant que programme informatique, un compilateur peut également présenter des vulnérabilités de sécurité, ce qui peut entraîner des risques de sécurité graves dans des circonstances spécifiques.
Le rôle du compilateur Solidity est de convertir le code des contrats intelligents en code d'instructions pour la machine virtuelle Ethereum (EVM). Contrairement aux vulnérabilités de l'EVM elle-même, les vulnérabilités du compilateur Solidity se manifestent principalement lors de la conversion de Solidity en code EVM. Cela peut entraîner un code EVM généré qui ne correspond pas aux attentes du développeur, ce qui peut provoquer des anomalies dans l'exécution des contrats intelligents et mettre en péril la sécurité des actifs des utilisateurs.
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 certaines situations, les variables de stockage peuvent être modifiées accidentellement, ce qui ne correspond pas au comportement attendu. Cette incohérence peut entraîner de graves conséquences, en particulier lorsque les variables sont utilisées pour la validation des autorisations ou la comptabilité des actifs.
Cette vulnérabilité existe dans les compilateurs des versions 0.8.13 à 0.8.15. En raison d'une erreur dans le processus d'optimisation de la compilation, cela peut entraîner la suppression incorrecte d'opérations d'écriture en mémoire, ce qui peut provoquer un comportement du programme inattendu.
Cette vulnérabilité affecte les versions de compilateur de 0.5.8 à 0.8.16. Lors de l'opération abi.encode sur un tableau de type calldata, il est possible que certaines données soient nettoyées par erreur, entraînant la modification de données adjacentes et provoquant une incohérence des données après l'encodage et le décodage.
Pour les vulnérabilités du compilateur Solidity, l'équipe de sécurité de la blockchain Cobo propose les recommandations suivantes :
Pour les développeurs :
Pour le personnel de sécurité :
Ressources pratiques:
En résumé, bien qu'il ne soit pas nécessaire de paniquer excessivement, les développeurs et les responsables de la sécurité doivent prendre pleinement conscience des risques potentiels liés aux vulnérabilités des compilateurs Solidity et prendre des mesures appropriées pour réduire les dangers de sécurité qu'ils pourraient engendrer.