Sécurité des macros

Nous devons parler rapidement de la sécurité des macros, car c'est un problème crucial. En effet, des utilisateurs mal intentionnés, comme des concepteurs de virus, peuvent concevoir des macros néfastes pour le système. En effet, il n'est pas très compliqué d'effacer le contenu d'un dossier, ou de supprimer ou d'altérer des fichiers avec VBA.

Avant de commencer, sachez que je ne suis pas un spécialiste de la sécurité, c'est pourquoi vous pourriez avoir l'impression que cette leçon ne couvre pas l'ensemble de la notion de certificats.

Un peu de théorie sur les macro-virus
Activer ou désactiver les macros ?
Niveaux de sécurité des macros
Certificats

Résumé de la leçon
Avez-vous bien compris ?
Exercice

Vous pouvez télécharger ici la version de Cours.XLS de la leçon précédente

Un peu de théorie sur les macro-virus

Vous arrivez au bureau un lundi matin. Comme chaque jour, en arrivant, vous relevez vos e-mails. Parmi la masse, un certain "Jean Dupont", dont vous n'avez jamais entendu parler vous envoie un message disant en substance "Here's the annual report, for your comments.". A ce message est attaché un fichier Excel : Report.XLS. Vous cliquez deux dois dessus pour l'ouvrir, et à peine l'avez-vous ouvert que votre ordinateur affiche un écran bleu fatal vous obligeant à redémarrer le PC. Et la machine ne redémarre pas. Et c'est à cet instant que vous vous dites que vous auriez dû mettre votre antivirus à jour, comme on vous l'a moult fois conseillé.

Trop tard, le mal est fait, et votre PC est maintenant bien malade !

Vous venez d'être victime d'un virus de macro. Si vous désirez en savoir plus sur les virus de macro, reportez vous à cette page de Microsoft (en français). Le moteur de recherche Google renvoie beaucoup de pages lorsqu'on recherche "Virus de macro".

Certaines macros s'exécutent dès l'ouverture du fichier Excel (nous verrons ça ultérieurement), c'est ce qui est le plus dangereux. Voici un autre scénario : vous recevez un fichier Excel d'une personne que vous connaissez. Lorsque vous l'ouvrez, vous constatez que c'est simplement un calendrier de femmes dénudées, un quizz, un jeu, ou que sais-je encore ? Toujours est-il que, trouvant le fichier amusant, vous le renvoyez vous même à tout votre carnet d'adresses.

Ce que vous ignorez, c'est qu'une macro néfaste s'est exécutée à l'ouverture de ce fichier. Mais les actions de ce virus ne sont pas immédiatement visibles : ce sera seulement au prochain redémarrage de votre machine que vous constaterez que vous avez été infecté. Non seulement vous, mais également toutes les personnes à qui vous avez expédié ce fichier et qui ne sont pas regardantes sur la sécurité.

Si votre antivirus est à jour, normalement (je dis bien normalement, pas absolument), il va vous empêcher d'ouvrir le fichier infecté.

En outre, si vous travaillez dans une grande structure, il y a fort à parier que les adimistrateurs système bloquent les virus en amont, sans même que vous en soyez informé.

Activer ou désactiver les macros ?

Une sécurité incluse dans Excel va vous permettre de vous prémunir des Macro-Virus. Lors de l'ouverture d'un fichier contenant au moins une macro, vous avez normalement cette boîte de dialogue qui apparaît :

Apparition des macros en quarantaine

Si vous cliquez sur "Désactiver les Macros", vous ne pourrez pas exécuter les macros. Essayez d'ouvrir votre fichier Cours.XLS en désactivant les macros. Allez ensuite dans le menu Outils/Macros/Macros. Vos macros apparaissent alors comme ceci :

Il y a le nom du fichier juste devant les macros. Elles sont "en quarantaine". Vous pouvez les voir, mais pas les exécuter. Si vous essayez d'en exécuter une des deux, ce message d'erreur apparaîtra :

Cette fenêtre provient d'Excel 2003, et diffère quelque peu des versions précédentes. En gros, il vous informe que comme vous avez désactivé les macros à l'ouverture, vous ne pouvez donc pas les exécuter.

Lorsque vous recevez des fichiers Excel dont l'auteur n'a pas une réputation exemplaire, il reste sage de désactiver les macros. Si maintenant vous ouvrez un classeur Excel pourvu de macros que vous avez créé vous-mêmes, vous pouvez bien entendu activer les macros (sinon, quel intérêt d'en créer?)

Niveaux de sécurité des macros

Maintenant, si vous travaillez intensivement avec vos classeurs Excel bourrés de macros, vous risquez d'en avoir marre de sans arrêt devoir confirmer que vous êtes d'accord d'exécuter vos macros. Il est alors possible de zapper directement le message d'attention, et d'ouvrir instantanément vos fichiers.

Pour ce faire, rendez-vous dans le menu Outils/Macros/Sécurité.

Avec Excel 2000, il y avait seulement 3 niveaux de sécurité, qui étaient d'ailleurs beaucoup plus facile à comprendre. Le niveau de sécurité "Très élevée" est apparu avec XP ou 2003.

Par défaut, lors d'une installation Excel standard, le niveau de sécurité est défini à "Moyen", c'est à dire qu'à chaque ouverture d'un classeur contenant au moins une macro, vous devrez préciser si vous devez activer ou désactiver les macros.

Cochez le niveau de sécurité "Faible", cliquez sur OK, fermez votre classeur et rouvrez-le.

A la réouverture, vous n'avez plus aucun message, et toutes vos macros sont exécutables.

Maintenant, retournez dans le menu Outils/Macros/Sécurité, et cochez "Niveau de sécurité élevé", fermez votre classeur et rouvrez-le.

Vous n'avez pas non plus de message, MAIS si vous essayez d'exécuter une macro, vous ne pourrez simplement pas.

Si vous aviez coché "Très élevé", le résultat aurait été identique.

A vous de voir maintenant comment vous désirez travailler... Evidemment, pour la bonne marche de la suite du cours, je vous déconseille le niveau "Elevé" !

Certificats

Auto-certification

Avec l'avènement d'Office XP est apparu le concept de "Signature numérique", et d'"éditeurs approuvés".

Qu'est ce que ça veut dire ? En gros, ça se passe de la même façon que le courrier. Lorsque vous recevez une lettre, elle est signée : vous savez que la lettre provient bien de telle personne. Encore que la signature papier peut se falsifier... Lorsque vous relevez votre courrier, vous avez les lettres mélangées a la publicité. Il suffit de placer un autocollant "Pas de pub SVP", et ainsi tous les "Editeurs non-approuvés", c'est à dire les prospectus publicitaires ne vous parviennent pas.

Informatiquement parlant, si le principe ressemble un peu à celui-là, le maniement est nettement plus complexe !

Dans le menu Outils/Macros/Sécurité, regardons ce niveau de plus près : .

"Seules les macros signées pourront être exécutées". C'est à dire que vous pouvez vous certifier vous-même. Vous pourrez alors mettre ce niveau de sécurité élevé, mais seuls les classeurs dont vous êtes l'auteur accepteront d'exécuter leurs macros incluses.

Marche à suivre

  1. Allez dans l'explorateur, à l'endroit ou est installé Office et exécutez SelfCert.exe
  2. Vous arriverez dans cette boîte de dialogue :

    Ecrivez le nom de votre certificat (Inventez : moi, j'ai inventé "Certificat Michel"). Cliquez sur OK.
  3. Revenez dans Excel.
  4. Allez dans le menu Outils/Macros/Visual Basic Editor
  5. Allez dans le menu Outils/Signature Numérique

    Cliquez sur Choisir
  6. Sélectionnez votre certificat numérique et cliquez sur OK :
  7. Et encore OK :

A partir de maintenant, vous pourrez laisser le niveau de sécurité élevé, et malgré tout ouvrir votre classeur pourvu de macro sans message d'attention.

Ce certificat n'est valable que pour vous, ou plus exactement pour votre PC. Je n'ai pas testé ce qui se passe si on ouvre le même classeur depuis un autre PC avec son propre Login.

Certificats officiels

L'intérêt d'un certificat va bien au delà des frontières de votre propre PC. L'idée est de se faire certifier par un organisme externe reconnu (Une liste de fournisseurs de certificats est donnée par Microsoft à cette adresse.), et de signer numériquement vos macros avec ce certificat officiel, ce qui vous permettra d'échanger des classeurs pourvu de macros par e-mail entre deux succursales d'une banque par exemple, alors que vous et vos correspondants ont défini le niveau de sécurité élevé. Mais c'est une autre histoire, le but de cette leçon étaant juste de comprendre les bases de la sécurité. Et pout être totalement franc avec vous, je ne possède pas moi-même de certificat numérique officiel, n'en ayant jamais réellement eu le besoin.

Un article paru sur le site de Microsoft, en français, vous en dit beaucoup plus long sur ces principes de sécurité par signature numérique.
Le plus connu de tous les fournisseurs de certificat numériques est à ma connaissance Verisign.

Vous pouvez télécharger ici Cours.XLS tel qu'il devrait être à la fin de cette leçon

Les macros sont très puissantes, mais comme toute invention puissante, livrées à des mains indélicates, elles peuvent s'avérer dangereuses. En effet, il est tout à fait possible, dans une macro, d'effacer des fichiers importants, voire de déstabiliser complètement votre PC. C'est pourquoi il y a la possibilité de demander à Excel d'accepter d'exécuter les macros de ses classeurs, ou pas. Dès la version Excel XP, vient la nbotion de "Certificat numérique" qui permet d'authentifier formellement l'"auteur-fournisseur" d'une macro afin de rétablir la confiance avec son "Client-exécuteur" de la macro.

1. Je possède Excel 2000, combien de niveaux de sécurité existe-t-il ?

1
2
3
4
5

Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 227

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 227

Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 228

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 228

2. Je possède un PC non-relié à Internet sur lequel ne tournent que des macros que j'écris moi-même. De plus, je n'utilise ni disquettes ni CD-ROM. Quel niveau de sécurité vais-je sans doute utiliser ?

Très élevé
Elevé
Moyen
Faible

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 246

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 246

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 247

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 247

3. Je viens d'ouvrir un classeur alors que la sécurité est mise sur "Moyenne". J'ai désactivé les macros. Mais en fait, je désire exécuter une de ces macros, que puis-je faire ?

Aller dans le menu Outils/Macros/Sécurité, et demander le niveau de sécurité "Bas"
Aller dans le menu Outils/Macros/Activer les macros
Fermer et rouvrir le classeur en répondant "Acriver les macros" à la question posée
Appuyer sur la touche CTRL en même temps qu'on demande l'exécution de la macro

Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 276

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 276

Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 277

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/vbvba/cours/lecon002/lecon002.php on line 277

Créez votre propre certicifat avec SELFCERT.EXE, si ce n'est déjà fait.