Analyse des vulnérabilités du compilateur Solidity : risques cachés affectant la sécurité des smart contracts

robot
Création du résumé en cours

Analyse en profondeur des vulnérabilités du compilateur Solidity

Le compilateur est l'un des composants de base des systèmes informatiques modernes, sa fonction principale étant de convertir le code source des langages de programmation de haut niveau en instructions exécutables par le bas niveau de l'ordinateur. Bien que la plupart des développeurs et des professionnels de la sécurité se concentrent généralement sur la sécurité du code des applications, la sécurité du compilateur lui-même est souvent négligée. En fait, le compilateur, en tant que programme informatique, peut également présenter des vulnérabilités de sécurité, qui dans certains cas peuvent entraîner des risques de sécurité graves.

Par exemple, lors de l'exécution de code JavaScript dans le navigateur, une vulnérabilité du moteur d'analyse JavaScript peut permettre à un utilisateur d'être victime d'une attaque par exécution de code à distance en accédant à une page Web malveillante, ce qui peut finalement conduire à ce que l'attaquant prenne le contrôle du navigateur de la victime, voire de son système d'exploitation. De plus, des recherches montrent que des bugs dans le compilateur Clang C++ peuvent également entraîner des conséquences graves, telles que l'exécution de code à distance.

Le compilateur Solidity présente également des vulnérabilités de sécurité. Selon l'alerte de sécurité publiée par l'équipe de développement de Solidity, plusieurs versions du compilateur Solidity présentent des risques de sécurité. Le rôle du compilateur Solidity est de convertir le code des contrats intelligents en code d'instructions (EVM) pour la machine virtuelle Ethereum, ces codes d'instructions étant finalement téléchargés sur Ethereum via des transactions et exécutés par l'EVM.

Analyse des vulnérabilités du compilateur Solidity et mesures de réponse

Il est important de noter que les vulnérabilités du compilateur Solidity sont différentes des vulnérabilités de l'EVM elle-même. Les vulnérabilités de l'EVM font référence aux problèmes de sécurité qui surviennent lorsque la machine virtuelle exécute des instructions, ce qui peut affecter l'ensemble du réseau Ethereum. En revanche, les vulnérabilités du compilateur Solidity concernent les problèmes rencontrés par le compilateur lors de la conversion du code Solidity en code EVM, et n'affectent pas directement le réseau Ethereum lui-même.

Les vulnérabilités du compilateur Solidity peuvent entraîner une incohérence entre le code EVM généré et les attentes des développeurs. Étant donné que les contrats intelligents sur Ethereum impliquent généralement des actifs cryptographiques des utilisateurs, tout bug causé par le compilateur peut entraîner des pertes d'actifs pour les utilisateurs, avec des conséquences graves. Les développeurs et les auditeurs de contrats se concentrent généralement sur la mise en œuvre logique des contrats et les problèmes de sécurité courants, tandis que les vulnérabilités du compilateur sont difficiles à détecter uniquement par l'audit du code source, nécessitant une analyse conjointe des versions spécifiques du compilateur et des modèles de code.

Voici quelques exemples réels de vulnérabilités du compilateur Solidity :

  1. SOL-2016-9 HighOrderByteCleanStorage

Cette vulnérabilité existe dans les versions antérieures du compilateur Solidity (\u003e=0.1.6 \u003c0.4.4). Dans certains cas, la valeur des variables de stockage peut être modifiée accidentellement, entraînant des valeurs de retour de fonction qui ne correspondent pas aux attentes. Cette incohérence peut avoir des conséquences graves dans des scénarios tels que la vérification des autorisations ou la comptabilisation des actifs.

  1. SOL-2022-4 InlineAssemblyMemorySideEffects

Cette vulnérabilité existe dans les compilateurs des versions 0.8.13 à 0.8.15. En raison d'un problème de stratégie d'optimisation du compilateur, certaines modifications de la mémoire dans le code d'assemblage en ligne peuvent être incorrectement supprimées, entraînant une erreur dans la valeur de retour de la fonction.

  1. SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup

Cette vulnérabilité affecte les versions du compilateur de 0.5.8 à 0.8.16. Lors de l'opération abi.encode sur un tableau de type calldata, il se peut que certaines données soient incorrectement nettoyées, entraînant la modification de données adjacentes et provoquant une incohérence des données après encodage et décodage.

Concernant les vulnérabilités du compilateur Solidity, l'équipe de sécurité blockchain de Cobo propose les recommandations suivantes :

Analyse des vulnérabilités du compilateur Solidity et mesures d'atténuation

Pour les développeurs:

  • Utiliser une version plus récente du compilateur Solidity
  • Améliorer les cas de test unitaire pour augmenter la couverture du code
  • Évitez d'utiliser des assemblages en ligne, des opérations de codage et de décodage abi complexes, et utilisez avec prudence les nouvelles fonctionnalités et les fonctionnalités expérimentales.

Pour le personnel de sécurité :

  • Considérer les risques de sécurité potentiels introduits par le compilateur lors de l'audit.
  • Il est recommandé que l'équipe de développement mette à jour la version du compilateur en temps utile.
  • Introduire une vérification automatique de la version du compilateur dans le processus CI/CD
  • Évaluer l'impact réel de la vulnérabilité du compilateur en fonction du projet spécifique

Quelques ressources pratiques:

  • Avertissement de sécurité du blog officiel de Solidity
  • Liste des bugs du dépôt GitHub de Solidity
  • Liste des bugs des compilateurs de chaque version
  • Alerte de vulnérabilité 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 adéquates pour réduire les menaces potentielles.

Analyse des vulnérabilités du compilateur Solidity et mesures de réponse

Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Récompense
  • 6
  • Partager
Commentaire
0/400
0xSoullessvip
· Il y a 4h
Encore un outil pour prendre les gens pour des idiots
Voir l'originalRépondre0
RumbleValidatorvip
· 07-12 19:34
Cette vulnérabilité peut-elle provoquer des erreurs dans la couche de consensus ? Les risques pour les nœuds de validation sont élevés.
Voir l'originalRépondre0
SocialFiQueenvip
· 07-12 19:29
Il semble que les smart contracts vont échouer~ Haha, c'est trop excitant.
Voir l'originalRépondre0
CryptoTherapistvip
· 07-12 19:27
juste un autre cas du syndrome d'anxiété des développeurs... respirez à travers le processus de débogage fam
Voir l'originalRépondre0
StablecoinAnxietyvip
· 07-12 19:14
Les compilateurs ne sont pas sûrs, qui oserait coder ?
Voir l'originalRépondre0
Blockwatcher9000vip
· 07-12 19:06
Les développeurs c'est vraiment difficile, je serre mon btc et je fais un Rug Pull.
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)