Macros dans Word : bonnes pratiques en matière de sécurité et de signatures numériques

  • Configurer correctement la sécurité des macros dans Word et utiliser des certificats numériques vous permet de contrôler quel code VBA est exécuté et d'où il provient.
  • La signature des projets macro avec des certificats valides, idéalement avec un horodatage, garantit l'intégrité du code même lorsque le certificat expire.
  • Les politiques relatives aux emplacements de confiance, aux mots de passe des projets et aux algorithmes de hachage appropriés renforcent la protection contre les modifications et les attaques.
  • Des audits de code périodiques et des formations utilisateurs complètent une stratégie globale permettant d'exploiter les macros sans compromettre la sécurité.

Macros Word pour la signature numérique

Les macros dans Word et le reste de la suite Office sont un outil incroyablement utile : elles automatisent les rapports, génèrent des documents instantanément et permettent de gagner des heures de travail chaque semaine. Mais cette même puissance a un revers plutôt fâcheux : elles constituent l’un des vecteurs d’attaque privilégiés pour la diffusion de logiciels malveillants , le vol de données ou l’infiltration d’un réseau d’entreprise. Par conséquent, si vous travaillez avec VBA, vous devrez tôt ou tard prendre la sécurité au sérieux. Et notamment la signature numérique des macros.

Cet article propose des conseils pratiques pour garantir la fiabilité et la facilité de maintenance de vos projets VBA. Nous expliquons également le fonctionnement de la signature numérique des macros dans Word (et le reste de la suite Office), les prérequis pour sa mise en œuvre, l'ajout d'horodatages et les politiques de sécurité à combiner (emplacements de confiance, protection par mot de passe, audits, formation des utilisateurs, etc.) afin d'élaborer une stratégie robuste et adaptée à votre organisation.

Sécurité des macros dans Word et centre de gestion de la confidentialité

Le premier niveau de protection contre les macros dans Word est le Centre de gestion de la confidentialité Office . C’est là que vous déterminez le comportement de l’application avec les documents contenant du code VBA : blocage total, autorisation uniquement du code signé ou demande de confirmation à chaque détection de macros.

Les options de configuration des macros dans le Centre de gestion de la confidentialité sont généralement les suivantes :

  • Désactiver toutes les macros sans avertissement.
  • Désactiver toutes les notifications.
  • Tout activer (cette dernière option est fortement déconseillée dans des environnements réels).
  • Désactivez tous les éléments sauf ceux qui sont signés numériquement.

Lorsque la stratégie « Désactiver toutes les macros sauf celles signées numériquement » est activée , Word et le reste de la suite Office n’exécutent que le code VBA possédant une signature valide. Si le document contient des macros non signées, le code est complètement bloqué et, selon la version et le canal de mise à jour, le message d’alerte habituel peut ne pas s’afficher — un problème que de nombreux administrateurs ont constaté, notamment dans Excel 2016 et Office 365 Click-to-Run.

Ce comportement peut contredire certains articles officiels qui stipulent qu'un avertissement de sécurité doit s'afficher pour permettre à l'utilisateur de faire confiance au document. En pratique, avec l'option « signature uniquement », le principe est beaucoup plus strict : sans signature, aucune opération n'est exécutée et le fichier n'est pas immédiatement converti en document de confiance.

certificats numériques Windows 11

Certificats numériques : définition et obtention

Pour signer numériquement des macros dans Word, vous avez besoin d'un certificat numérique conçu spécifiquement pour la signature de code ou de projets VBA. Ce certificat peut être émis par une autorité de certification (AC) commerciale, par l'infrastructure à clés publiques de l'entreprise ou, pour les environnements de test, par un certificat auto-signé créé avec les outils Microsoft.

Les autorités de certification commerciales proposent des certificats de signature de code standard et, de plus en plus, des certificats à validation étendue (EV) . Ces derniers nécessitent généralement un matériel sécurisé (HSM, jetons USB ou services comme Azure Key Vault) pour stocker la clé privée, offrant ainsi une sécurité renforcée et un meilleur contrôle des personnes autorisées à signer du code au sein de l'organisation.

Si vous recherchez un environnement de test ou de développement interne, vous pouvez créer un certificat auto-signé à l'aide de l'utilitaire SelfCert.exe inclus dans Office . Ce certificat autorise uniquement votre propre ordinateur (ou ceux sur lesquels il est importé manuellement) à faire confiance au code, mais il est suffisant pour expérimenter les signatures numériques avant d'utiliser des certificats émis par une autorité de certification reconnue.

Pour générer ce certificat auto-signé avec SelfCert, il suffit de localiser le fichier exécutable dans le dossier Office, de l'exécuter, de saisir un nom descriptif dans le champ « Nom du certificat » et de confirmer. L'assistant créera et enregistrera le certificat directement dans le référentiel de certificats personnel de l'utilisateur, le rendant ainsi prêt à être utilisé par Visual Basic pour la signature de projets.

Créer, consulter et gérer les certificats pour les macros

Une fois le certificat créé ou installé, il est important de vérifier qu'il se trouve bien dans le magasin de certificats approprié . Les certificats de signature de code VBA sont généralement stockés dans les certificats personnels de l'utilisateur et sont accessibles via les outils de gestion des certificats du système ou du navigateur.

En équipe avec Microsoft EdgePar exemple, il est possible de vérifier rapidement les certificats personnels en ouvrant le navigateur et en tapant edge://settings/privacy Dans la barre d'adresse, faites défiler vers le bas jusqu'à la section « Sécurité », où vous trouverez l'option « Gérer les certificats ». Vous pourrez alors consulter, importer ou exporter des certificats, ainsi que vérifier leurs dates d'expiration.

Il est essentiel de connaître la validité des certificats , car une signature basée sur un certificat expiré sans horodatage peut ne plus être considérée comme valide. Office affichera des avertissements s'il détecte que l'authentification utilisée pour signer le projet VBA a expiré ou a été révoquée par l'autorité de certification.

Certaines autorités de certification spécialisées dans la signature de code facilitent l'installation directe du certificat sur le module de sécurité matériel (HSM) du client ou dans des coffres-forts de clés cloud, sans qu'il soit nécessaire de manipuler la clé privée sur chaque ordinateur. Cette approche minimise le risque de vol ou de fuite de la clé de signature de macro, ce qui est crucial lorsque les modèles signés sont distribués à des milliers d'utilisateurs.

entrepôt certifié

Comment signer numériquement un projet de macro Word

La signature numérique est appliquée à l'ensemble du projet VBA contenant les macros , et non à chaque procédure individuellement. Le processus est très similaire dans Word, Excel, PowerPoint, Outlook et les autres applications Office compatibles avec VBA.

Le flux de travail typique pour la signature d'un projet de macro dans Word est le suivant :

  1. Ouvrez le document ou le modèle contenant le code.
  2. Allez dans l'onglet « Développeur ».
  3. Dans le groupe « Code », cliquez sur « Visual Basic » pour accéder à l’éditeur VBA.
  4. Dans le menu « Outils » de l'éditeur, sélectionnez l'option « Signature numérique ».

Lorsque vous ouvrez la boîte de dialogue de signature numérique, la liste des certificats disponibles sur votre ordinateur et pouvant servir à signer le projet s'affiche. Sélectionnez simplement le certificat approprié (soit le certificat de signature de code, soit le certificat auto-signé que vous avez créé précédemment) et cliquez sur OK pour appliquer la signature au projet actuel.

Après l'enregistrement du document ou du modèle , la signature est intégrée au fichier. Lorsqu'un autre utilisateur ouvre le document dans Word, le système de sécurité des macros vérifie la signature et s'assure que le certificat est valide et n'a pas été révoqué. Si tout est en ordre, l'utilisateur peut exécuter les macros sans compromettre le niveau de sécurité global.

Il est essentiel de comprendre que toute modification du code VBA invalide la signature . Si un module est modifié, supprimé ou si une nouvelle macro est ajoutée, la signature précédente devient invalide et le document est à nouveau considéré comme non signé. Toutefois, si le développeur dispose toujours sur son ordinateur du certificat utilisé pour la signature initiale, il peut signer à nouveau le projet lors de son enregistrement afin de rétablir la confiance.

Risques liés au code VBA non sécurisé et à l'utilisation de la fonction Environ

Le langage VBA est très puissant, mais sa flexibilité en fait également une surface d'attaque dangereuse . Le simple fait que du code puisse être exécuté à l'ouverture d'un document fait des macros un excellent vecteur pour les logiciels malveillants, les rançongiciels et le vol de données si des contrôles stricts ne sont pas mis en place.

Du point de vue du développeurDe nombreuses vulnérabilités surviennent car les macros sont écrites sans tenir compte de la sécurité : des données externes sont utilisées sans validation, des actions sensibles (accès aux fichiers système, connexions aux bases de données, envoi de courriels) sont automatisées sans contrôle des autorisations, ou l’exécution automatique est activée à l’ouverture du document par des événements tels que… Document_Open.

Les utilisateurs finaux font également partie du problème , car ils activent fréquemment les macros dans les documents provenant de courriels suspects ou de sources douteuses. Les campagnes d'hameçonnage exploitent précisément cette confiance : elles joignent un document Word contenant des macros qui, une fois activées, téléchargent et exécutent un code malveillant, souvent invisible pour l'utilisateur.

Dans ce scénario, Cette fonction Environ VBA est particulièrement délicatCette fonction vous permet d'interroger les variables d'environnement système (telles que USERNAME, APPDATA, USERPROFILEetc.), ce qui est très utile pour écrire des macros qui s'adaptent automatiquement aux différents ordinateurs, chemins d'accès et utilisateurs.

Le problème est que Les variables environnementales peuvent également révéler des informations sensibles. ou être utilisé à des fins malveillantes. Un attaquant peut recourir à Environ Il peut ainsi localiser des dossiers spécifiques, profiler le système de la victime ou diriger ses charges utiles vers des chemins précis. Il pourrait même tenter d'influencer le comportement de la macro en manipulant certaines variables d'environnement sur le système attaqué.

mot

Meilleures pratiques pour utiliser Environ en toute sécurité

La clé de utiliser Environ en toute sécurité dans les macros Word Il ne s'agit pas de l'interdire, mais de considérer les informations qu'il renvoie comme des données non fiables. Autrement dit, il faut valider, nettoyer et vérifier chaque valeur avant de l'utiliser dans les chemins d'accès aux fichiers, les connexions ou les décisions métier. Voici nos recommandations :

  • Validez tout itinéraire renvoyé par EnvironSi la macro attend un dossier utilisateur Windows standard, il est conseillé de vérifier que la valeur correspond à un format plausible et que le chemin existe réellement. Si la chaîne contient des caractères étranges, des chemins relatifs dangereux ou des séquences pouvant indiquer une tentative d'injection, la solution la plus sûre consiste à interrompre l'opération et à avertir l'utilisateur.
  • Évitez de trop vous fier aux variables environnementales Pour les décisions critiques en matière de code, si une route ou une valeur de clé est, en pratique, fixe pour toutes les équipes de l'organisation, il peut être plus sûr de la définir comme une constante plutôt que de la lire dynamiquement à partir de l'environnement où quelqu'un pourrait la manipuler.
  • Appliquer le principe du moindre privilège. Le compte utilisateur exécutant la macro ne doit disposer que des autorisations nécessaires. Ainsi, même si une variable d'environnement est modifiée et que la macro finit par pointer vers un chemin inattendu, les dommages potentiels seront limités par les restrictions système.
  • Mettre en œuvre une gestion des erreurs robuste autour des appels à EnvironSi une variable n'existe pas, a changé de nom ou renvoie une valeur inattendue, la macro doit réagir de manière contrôlée : afficher un message clair à l'utilisateur, consigner l'incident si nécessaire et s'arrêter proprement avant de provoquer des réactions en chaîne ou de divulguer des informations supplémentaires.

Emplacements, politiques et signatures numériques de confiance au sein de l'organisation

Outre les signatures numériques, Word et le reste de la suite Office intègrent le concept d’« emplacements de confiance ». Il s’agit de dossiers spécifiques, locaux ou réseau, dont le contenu est considéré comme sûr par conception, de sorte que les documents contenant des macros peuvent être exécutés sans avertissements supplémentaires.

Les lieux de confiance sont une arme à double tranchant :

  • D'une part, elles permettent l'exécution de macros d'entreprise sans inconvénient pour l'utilisateur.
  • En revanche, si ces chemins sont surutilisés ou si un trop grand nombre de chemins sont définis, la surface d'attaque est considérablement étendue, car tout fichier malveillant placé dans ces dossiers contournerait certains contrôles.

L'approche la plus judicieuse consiste généralement à limiter le nombre d'emplacements de confiance à quelques chemins d'accès strictement contrôlés, idéalement sur des serveurs réseau gérés par le service informatique. Les utilisateurs ne devraient pas pouvoir ajouter librement de nouveaux emplacements. Il est également conseillé de vérifier régulièrement les chemins d'accès marqués comme sûrs afin de s'assurer qu'aucun dossier inutile ou temporaire n'y a été ajouté.

Parallèlement, les politiques de sécurité de l'entreprise peuvent exiger que toute solution VBA diffusée en interne soit signée avec un certificat d'entreprise. Ainsi, même si le document est copié en dehors d'un emplacement sécurisé, la signature garantit son intégrité et son authenticité.

Audits, examens et formation des utilisateurs

Une politique de sécurité robuste pour les macros ne se résume pas à configurer des options une seule fois et à les oublier. L'écosystème des menaces évolue constamment, tout comme l'utilisation des macros par les employés. Il est donc essentiel de planifier des audits réguliers du code VBA et des modèles utilisés.

Du point de vue du développement, ces audits consistent à examiner le code afin d'identifier les fonctionnalités obsolètes, les dépendances dangereuses, la gestion inadéquate des erreurs et les accès non protégés aux ressources sensibles. Ils vérifient également la conformité aux directives internes, notamment en évitant les macros auto-exécutables inutiles et le stockage des identifiants en clair dans le code.

Parallèlement, il est utile de combiner les vérifications manuelles avec des outils d'analyse automatisés capables de détecter les comportements suspects dans les macros, tels que les appels aux API système, la manipulation de fichiers en dehors des chemins prévus ou la communication de données sur le réseau. Ces outils peuvent être intégrés au flux de développement afin d'alerter les programmeurs avant la publication de nouvelles versions.

Le contrôle de version et la gestion des modifications jouent également un rôle important . Documenter qui a modifié chaque macro, quand et pourquoi permet de retracer l'origine des problèmes de sécurité potentiels et de revenir rapidement à une version précédente si une mise à jour introduit un comportement indésirable.

Lorsque toutes ces mesures sont combinées (signatures numériques, certificats bien gérés, horodatage, suivi de localisation, protection du code, audits et sensibilisation des utilisateurs), les macros Word cessent d'être une menace incontrôlable et deviennent un outil puissant mais maîtrisé qui améliore la productivité sans compromettre la sécurité de l'organisation.

Sécurité contre les logiciels malveillants et les piratages dans Windows 11 et Windows 10 : guide complet
Article connexe:
Sécurité contre les logiciels malveillants et les piratages dans Windows 11 et Windows 10 : guide complet

Ajouter comme source préférée dans Google