Détournement de DLL

Détournement de DLL

Le détournement de DLL, également appelé "plantation binaire", est une technique d'attaque cybernétique qui exploite le processus de recherche et de chargement des bibliothèques de liens dynamiques (DLL) de Windows. Dans cette attaque, un acteur malveillant place stratégiquement un faux fichier DLL, souvent déguisé en fichier légitime, dans un emplacement où le système d'exploitation le priorisera par rapport à la DLL authentique. En conséquence, lorsque le système tente de charger la DLL, il exécute par inadvertance le code non autorisé implanté par l'attaquant.

Comment fonctionne le détournement de DLL

Le processus de détournement de DLL implique généralement les étapes suivantes :

  1. Identification des applications vulnérables : Les attaquants effectuent une reconnaissance pour identifier les applications qui ne spécifient pas le chemin complet vers les DLL dont elles ont besoin. Ces applications dépendent de l'ordre de recherche du système pour localiser et charger les DLL nécessaires.

  2. Placement des DLL malveillantes : Une fois une application vulnérable identifiée, l'attaquant place une DLL malveillante portant le même nom que la DLL légitime dans un emplacement favorisé par l'ordre de recherche du système. Les emplacements courants incluent le répertoire de l'application, les répertoires système de Windows ou le répertoire de travail actuel.

  3. Déclenchement de l'exécution : Lors du lancement de l'application vulnérable, le système d'exploitation initie la recherche et le chargement des DLL en suivant l'ordre de recherche. Malheureusement, en raison du placement de la DLL malveillante, le système charge et exécute par inadvertance le code de l'attaquant au lieu de la DLL légitime prévue.

Cette méthode d'attaque peut être exploitée par les acteurs malveillants pour exécuter du code arbitraire dans le contexte de l'application ciblée, contournant ainsi les mesures de sécurité et compromettant potentiellement l'intégrité et la confidentialité du système.

Conseils de prévention

Pour atténuer le risque d'attaques par détournement de DLL, envisagez les mesures de prévention suivantes :

  • Spécification complète du chemin : Les développeurs doivent explicitement spécifier le chemin complet de la DLL à charger plutôt que de compter sur l'ordre de recherche du système. En fournissant le chemin complet, les développeurs garantissent que la DLL prévue est chargée, éliminant ainsi la possibilité pour un attaquant de rediriger le système vers une DLL malveillante.

  • Signature de code : La mise en œuvre de pratiques de signature de code renforce l'intégrité et l'authenticité des DLL chargées par les applications. La signature de code consiste à signer numériquement les DLL avec une autorité de certification (CA) de confiance, permettant au système de vérifier l'intégrité et l'origine de la DLL avant de la charger. Cette pratique aide à prévenir l'exécution de DLL altérées ou malveillantes.

  • Permissions des utilisateurs : Limiter les permissions des utilisateurs joue un rôle crucial dans la prévention de la manipulation non autorisée des DLL ou de leur placement dans des emplacements susceptibles d'être détournés. En appliquant des contrôles d'accès appropriés, les organisations peuvent réduire le risque d'attaques par détournement de DLL.

  • Désactiver le chargement automatique : Désactiver la fonctionnalité de recherche et de chargement automatique des DLL peut être une défense efficace contre le détournement de DLL. Cela peut être réalisé en supprimant le répertoire de travail actuel du chemin de recherche du système. Ce faisant, le système ne chargera que les DLL spécifiées explicitement avec un chemin complet, minimisant ainsi le risque d'exécution de DLL non intentionnelles.

Il est important pour les organisations de donner la priorité à la sécurisation de leurs applications et systèmes contre le détournement de DLL et de mettre en œuvre ces mesures préventives pour réduire les risques potentiels.

Termes connexes

  • Injection de DLL : L'injection de DLL est l'acte de forcer un processus à charger une bibliothèque de liens dynamiques (DLL). Cette technique peut être utilisée à des fins légitimes, telles que l'extension des fonctionnalités, mais elle peut également servir de méthode pour des attaques cybernétiques.

  • Rootkit : Un rootkit est un type de logiciel malveillant conçu pour obtenir un accès non autorisé et un contrôle sur un système informatique tout en échappant à la détection. Les rootkits fonctionnent avec des privilèges élevés, leur permettant de dissimuler leur présence et de fournir une plateforme secrète pour les attaquants afin de compromettre les systèmes ou de collecter des informations sensibles.

Sources :

  • Microsoft Security Advisory 2269637 : Chargement de bibliothèque non sécurisé pouvant permettre l'exécution de code à distance
  • OWASP : Détournement de DLL

Get VPN Unlimited now!