Analyse des vulnérabilités du compilateur Solidity : risques de sécurité et moyens d'y faire face

robot
Création du résumé en cours

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

Le compilateur est l'un des composants fondamentaux des systèmes informatiques modernes, sa principale fonction étant de convertir le code source des langages de programmation de haut niveau en code d'instructions exécutable par l'ordinateur.

Bien que la plupart des développeurs et des professionnels de la sécurité se concentrent davantage sur la sécurité du code des applications, la sécurité du compilateur lui-même ne doit pas être négligée. En tant que programme informatique, le compilateur 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. Par exemple, lorsque le navigateur compile et exécute du code JavaScript côté client, des vulnérabilités dans le moteur de parsing JavaScript peuvent permettre à un utilisateur de subir des attaques d'exécution de code à distance en visitant des pages Web malveillantes, 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.

Le compilateur Solidity ne fait pas exception, plusieurs versions du compilateur Solidity présentent des vulnérabilités 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 instructions seront finalement exécutées dans l'EVM.

Il est important de noter que les vulnérabilités du compilateur Solidity diffèrent des vulnérabilités de l'EVM elle-même. Les vulnérabilités de l'EVM font référence à des problèmes de sécurité survenant lors de l'exécution des instructions par la machine virtuelle, ce qui peut affecter l'ensemble du réseau Ethereum. En revanche, les vulnérabilités du compilateur Solidity se produisent lors de la conversion du code Solidity en code EVM, sans affecter directement le réseau Ethereum, mais pouvant entraîner une divergence entre le code EVM généré et les attentes du développeur.

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

Une des dangers des vulnérabilités du compilateur Solidity est qu'elles peuvent conduire à une incohérence entre le code EVM généré et les attentes des développeurs de contrats intelligents. É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 souvent davantage sur la mise en œuvre logique du code du contrat et les problèmes de sécurité au niveau de Solidity, en négligeant les vulnérabilités du compilateur. Il est difficile de découvrir les vulnérabilités du compilateur uniquement par l'audit du code source du contrat, une analyse doit être effectuée en tenant compte des versions spécifiques du compilateur et des modèles de code spécifiques.

Voici quelques exemples réels de vulnérabilités des compilateurs Solidity :

  1. SOL-2016-9 HighOrderByteCleanStorage

Cette vulnérabilité existe dans les versions précoces du compilateur Solidity (>=0.1.6 <0.4.4). Dans certains cas, le compilateur ne nettoie pas correctement les octets de poids fort, ce qui entraîne l'écriture d'un bit de poids fort à 1 dans le stockage après un débordement d'entier, écrasant ainsi la valeur des variables adjacentes. Ce comportement inattendu peut avoir de graves conséquences lorsqu'il s'agit de vérification des autorisations ou de comptabilisation des actifs.

  1. SOL-2022-4 Effets secondaires de mémoire InlineAssembly

Cette vulnérabilité existe dans les versions 0.8.13 à 0.8.15 du compilateur. En raison d'un problème lié à la stratégie d'optimisation du compilateur, dans certains cas, les instructions d'écriture en mémoire peuvent être supprimées incorrectement, entraînant un retour de valeur de fonction qui ne correspond pas aux attentes. Ce bug lié à l'optimisation est difficile à détecter par une simple révision de code.

  1. 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, le compilateur nettoie incorrectement certaines données, entraînant la modification de données adjacentes et provoquant une incohérence des données après encodage et décodage. Ce problème peut également survenir lors d'appels externes et d'événements émis, car ces opérations exécutent implicitement abi.encode.

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

Sur la base de l'analyse des vulnérabilités du compilateur Solidity, voici les recommandations de sécurité suivantes :

Pour les développeurs:

  • Utilisez une version plus récente du compilateur Solidity, les problèmes de sécurité connus sont généralement moins fréquents.
  • Améliorer les cas de test unitaire, augmenter la couverture du code, aide à détecter les problèmes causés par le compilateur.
  • Évitez d'utiliser des assemblages en ligne, des opérations complexes de codage et de décodage ABI, et utilisez prudemment les nouvelles fonctionnalités et les fonctionnalités expérimentales.

Pour le personnel de sécurité :

  • Considérer les risques de sécurité que le compilateur pourrait introduire lors de l'audit.
  • Pousser à la mise à niveau de la version du compilateur dans le processus SDL, envisager d'introduire une vérification automatique de la version dans le CI/CD.
  • Évaluer l'impact réel des vulnérabilités du compilateur en fonction des spécificités du projet, afin d'éviter une inquiétude excessive.

Quelques ressources utiles :

  • Avertissement de sécurité publié par les officiels de Solidity
  • Liste des bugs mise à jour régulièrement dans le dépôt Solidity
  • Liste des bugs des compilateurs de chaque version, pouvant être utilisée pour un contrôle automatique
  • Avertissement de vulnérabilité du compilateur sur la page de code de contrat Etherscan

En résumé, bien que les vulnérabilités des compilateurs Solidity soient rares, elles peuvent avoir des conséquences graves. Les développeurs et les experts en sécurité doivent rester vigilants et prendre des mesures appropriées pour réduire les risques.

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

ETH0.96%
SOL9.91%
Voir l'original
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.
  • Récompense
  • 5
  • Partager
Commentaire
0/400
AltcoinAnalystvip
· Il y a 14h
Soyez prudent, c'est un vieux problème de la version 0.8.x.
Voir l'originalRépondre0
MemecoinResearchervip
· Il y a 14h
rekt en attente de se produire fr basé sur mon analyse (p\u003c0.01)
Voir l'originalRépondre0
just_another_walletvip
· Il y a 14h
Jeunes développeurs, regardez vite !
Voir l'originalRépondre0
FarmHoppervip
· Il y a 14h
Wow, cette faille a l'air effrayante.
Voir l'originalRépondre0
YieldWhisperervip
· Il y a 14h
j'ai vu ce même modèle d'exploitation de compilateur depuis 2021... les développeurs n'apprennent jamais smh
Voir l'originalRépondre0
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)