Considérations de sécurité spécifiques pour les solutions OfficeSpecific security considerations for Office solutions

Les fonctionnalités de sécurité fournies par Microsoft .NET Framework et Microsoft Office peuvent renforcer la protection contre diverses menaces possibles dans les solutions Office.The security features provided by the Microsoft .NET Framework and Microsoft Office can help to protect your Office solutions against possible security threats. Cette rubrique décrit certaines de ces menaces et fournit des recommandations pour vous protéger contre elles.This topic explains some of those threats and provides recommendations to help protect against them. Elle inclut également des informations sur l’impact des paramètres de sécurité Microsoft Office sur les solutions Office.It also includes information about how Microsoft Office security settings affect Office solutions.

S’applique à : les informations contenues dans cette rubrique s’applique au document-projets et ajouter de VSTO de niveau-dans les projets.Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects. Consultez fonctionnalités disponibles par type d’application et de projet Office.See Features available by Office application and project type.

Code de confiance est réaffecté dans un nouveau documentTrusted code is repurposed in a new, malicious document

Une personne malveillante peut prendre du code de confiance destiné à un usage particulier, par exemple, au téléchargement d’informations personnelles pour une candidature à un emploi et le réutiliser dans un autre document, comme une feuille de calcul.An attacker could take trusted code that is meant for one particular purpose, for example, downloading personal information for an employment application, and reuse it in another document, such as a worksheet. Le code ne sait pas que le document d’origine n’est pas en cours d’exécution et peut entraîner d’autres menaces, comme la divulgation des informations personnelles ou l’exécution de code avec des privilèges accrus, quand un autre utilisateur l’ouvre.The code does not know that the original document is not running, and may open up other threats, such as revealing personal information or executing code with increased privileges, when opened by a different user. Par ailleurs, cette personne malveillante peut simplement modifier les données dans la feuille de calcul de sorte que, une fois envoyée à la victime, elle fonctionne de manière inattendue.Alternatively, the attacker can simply modify the data in the worksheet such that, when sent to the victim, it behaves unexpectedly. En modifiant les valeurs, les formules ou les caractéristiques de présentation d’une feuille de calcul liée à du code, un utilisateur malveillant peut attaquer un autre utilisateur en envoyant un fichier modifié.By changing the values, formulas, or presentation characteristics of a worksheet linked to code, it is possible for a malicious user to attack another user by sending a modified file. D’autres utilisateurs peuvent également accéder à des informations qu’ils ne sont pas supposés consulter en modifiant des valeurs dans la feuille de calcul.It may also be possible for users to access information they are not supposed to see by modifying values in the worksheet.

Étant donné que l’emplacement de l’assembly et l’emplacement du document doivent avoir suffisamment de preuves pour s’exécuter, cette attaque n’est pas facile à monter.Since both the assembly location and the document location must have sufficient evidence to execute, this attack is not easy to mount. Par exemple, les documents dans les pièces jointes à des messages électroniques ou sur des serveurs intranet non fiables n’ont pas les autorisations suffisantes pour s’exécuter.For example, documents in e-mail attachments or on untrusted intranet servers do not have enough permissions to run.

Pour qu’une telle attaque soit possible, le code lui-même doit être écrit de façon à prendre des décisions en fonction de données potentiellement non fiables.To make this attack possible, the code itself must be written in such a way that it makes decisions based on potentially untrustworthy data. Un exemple consiste à créer une feuille de calcul qui comporte une cellule masquée qui contient le nom d’un serveur de base de données.An example is creating a worksheet that has a hidden cell that contains the name of a database server. L’utilisateur soumet la feuille de calcul à une page ASPX qui essaie de se connecter à ce serveur à l’aide de l’authentification SQL et d’un mot de passe SA codé en dur.The user submits the worksheet to an ASPX page, which attempts to connect to that server using SQL authentication and a hard-coded SA password. Une personne malveillante peut remplacer le contenu de la cellule masquée par un autre nom d’ordinateur et obtenir le mot de passe SA.An attacker could replace the contents of the hidden cell with a different computer name and get the SA password. Pour éviter ce problème, ne codez jamais en dur les mots de passe et vérifiez toujours les ID de serveur par rapport à la liste interne des serveurs reconnus comme fiables avant d’accéder au serveur.To avoid this problem, never hard-code passwords, and always check server IDs against an internal list of servers that are known to be good before accessing the server.

RecommandationsRecommendations

  • Validez toujours l’entrée et les données, qu’elles proviennent de l’utilisateur, du document, d’une base de données, d’un service web ou de toute autre source.Always validate input and data, whether it comes from the user, the document, a database, a web service, or any other source.

  • Exposez prudemment les types particuliers de fonctionnalités, comme l’obtention de données privilégiées au nom de l’utilisateur et leur placement dans une feuille de calcul non protégée.Be careful about exposing particular types of functionality, such as getting privileged data on behalf of the user and putting it into an unprotected worksheet.

  • Selon le type d’application, il convient de vérifier que le document d’origine est en cours d’exécution avant d’exécuter du code, quel qu’il soit.Depending on the type of application, it might make sense to verify that the original document is running before executing any code. Par exemple, vérifiez qu’il s’exécute à partir d’un document stocké dans un emplacement connu et sécurisé.For example, verify that it is running from a document stored at a known, secure location.

  • Il peut s’avérer judicieux d’afficher un avertissement à l’ouverture du document si votre application effectue des actions privilégiées.It might be a good idea to display a warning when the document opens if your application performs any privileged actions. Par exemple, vous pouvez créer un écran de démarrage ou une boîte de dialogue de démarrage indiquant que l’application accède à des informations personnelles et demander à l’utilisateur de choisir de continuer ou d’annuler.For example, you might create a splash screen or a startup dialog box saying that the application will access personal information, and have the user choose to continue or cancel. Si un utilisateur final obtient un tel avertissement d’un document apparemment innocent, il est en mesure de quitter l’application avant de compromettre quoi que ce soit.If an end user gets such a warning from a seemingly innocent document, he or she will be able to quit the application before anything is compromised.

Code bloqué par le modèle objet OutlookCode is blocked by the Outlook object model guard

Microsoft Office peut empêcher le code d’utiliser des propriétés, méthodes et objets particuliers dans le modèle objet.Microsoft Office can restrict code from using certain properties, methods, and objects in the object model. En limitant l’accès à ces objets, Outlook permet d’empêcher les virus et les vers de messagerie à partir de l’utilisation du modèle objet à des fins malveillantes.By restricting access to these objects, Outlook helps to prevent email worms and viruses from using the object model for malicious purposes. Cette fonctionnalité de sécurité porte le nom de module de protection du modèle objet Outlook.This security feature is known as the Outlook object model guard. Si un complément VSTO essaie d’utiliser une propriété ou méthode restreinte alors que le module de protection du modèle objet est activé, Outlook affiche un avertissement de sécurité qui permet à l’utilisateur d’arrêter l’opération ou permet à l’utilisateur d’octroyer l’accès à la propriété ou méthode pendant une durée limitée.If an VSTO Add-in attempts to use a restricted property or method while the object model guard is enabled, Outlook displays a security warning that enables the user to stop the operation, or enables the user to grant access to the property or method for a limited period of time. Si l’utilisateur arrête l’opération, les compléments VSTO Outlook créés à l’aide de solutions Office dans Visual Studio lèvent une COMException.If the user stops the operation, Outlook VSTO Add-ins created by using Office solutions in Visual Studio will throw a COMException.

Le module de protection du modèle objet peut influer sur les compléments VSTO de différentes façons, selon qu’Outlook est utilisé avec Microsoft Exchange Server ou non :The object model guard can affect VSTO Add-ins in different ways, depending on whether Outlook is used with Microsoft Exchange Server:

  • Si Outlook n’est pas utilisé avec Exchange, un administrateur peut activer ou désactiver le module de protection du modèle objet pour tous les compléments VSTO existant sur l’ordinateur.If Outlook is not used with Exchange, an administrator can enable or disable the object model guard for all VSTO Add-ins on the computer.

  • Si Outlook est utilisé avec Exchange, un administrateur peut activer ou désactiver le module de protection du modèle objet pour tous les compléments VSTO de l’ordinateur ou l’administrateur peut spécifier que certains compléments VSTO peuvent s’exécuter sans rencontrer le module de protection du modèle objet.If Outlook is used with Exchange, an administrator can enable or disable the object model guard for all VSTO Add-ins on the computer, or the administrator can specify that certain VSTO Add-ins can run without encountering the object model guard. Les administrateurs peuvent également modifier le comportement du module de protection du modèle objet dans certaines zones du modèle objet.Administrators can also modify the behavior of the object model guard for certain areas of the object model. Par exemple, les administrateurs peuvent permettre automatiquement aux compléments VSTO envoyer un courrier électronique par programmation, même si la protection du modèle objet est activée.For example, administrators can automatically allow VSTO Add-ins to send email programmatically, even if the object model guard is enabled.

    À partir d’Outlook 2007, le comportement du module de protection du modèle objet a été modifié pour améliorer l’expérience du développeur et de l’utilisateur tout en sécurisant Outlook.Starting in Outlook 2007, the behavior of the object model guard has been changed to improve the developer and user experience while helping to keep Outlook secure. Pour plus d’informations, consultez Code les modifications de sécurité dans Outlook 2007.For more information, see Code security changes in Outlook 2007.

Réduire les avertissements de protection du modèle objetMinimize object model guard warnings

Pour éviter les avertissements de sécurité quand vous utilisez des propriétés et méthodes restreintes, assurez-vous que votre complément VSTO obtient des objets Outlook à partir du champ Application de la classe ThisAddIn dans votre projet.To help avoid security warnings when you use restricted properties and methods, make sure that your VSTO Add-in obtains Outlook objects from the Application field of the ThisAddIn class in your project. Pour plus d’informations, consultez des Compléments VSTO de programme.For more information about this field, see Program VSTO Add-ins.

Seuls les objets Outlook obtenus à partir de cet objet peuvent être approuvés par le module de protection du modèle objet.Only Outlook objects obtained from this object can be trusted by the object model guard. En revanche, les objets obtenus à partir d’un nouveau Microsoft.Office.Interop.Outlook.Application objet ne sont pas approuvés et les propriétés et méthodes restreintes déclenchent des avertissements de sécurité si protection du modèle objet est activée.In contrast, objects that are obtained from a new Microsoft.Office.Interop.Outlook.Application object are not trusted, and the restricted properties and methods will raise security warnings if the object model guard is enabled.

L’exemple de code suivant affiche un avertissement de sécurité si le module de protection du modèle objet est activé.The following code example displays a security warning if the object model guard is enabled. Le To propriété de la Microsoft.Office.Interop.Outlook.MailItem classe est restreinte par la protection du modèle objet.The To property of the Microsoft.Office.Interop.Outlook.MailItem class is restricted by the object model guard. Le Microsoft.Office.Interop.Outlook.MailItem objet n’est pas fiable, car le code l’obtient à partir d’un Microsoft.Office.Interop.Outlook.Application qui est créé à l’aide de la nouveau (opérateur), au lieu de l’obtenir à partir la Application champ.The Microsoft.Office.Interop.Outlook.MailItem object is untrusted because the code gets it from a Microsoft.Office.Interop.Outlook.Application that is created using the new operator, instead of obtaining it from the Application field.

private void UntrustedCode()
{
    Microsoft.Office.Interop.Outlook.Application application =
        new Microsoft.Office.Interop.Outlook.Application();
    Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
        application.CreateItem(
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
        Microsoft.Office.Interop.Outlook.MailItem;
    mailItem1.To = "someone@example.com";
    MessageBox.Show(mailItem1.To);
}
Private Sub UntrustedCode()
    Dim application As New Microsoft.Office.Interop.Outlook.Application
    Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
        TryCast(application.CreateItem( _
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem),  _
        Microsoft.Office.Interop.Outlook.MailItem)
    mailItem1.To = "someone@example.com"
    MessageBox.Show(mailItem1.To)
End Sub

L’exemple de code suivant montre comment utiliser restreint à la propriété d’un Microsoft.Office.Interop.Outlook.MailItem objet qui est approuvé par le module de protection du modèle objet.The following code example demonstrates how to use the restricted To property of a Microsoft.Office.Interop.Outlook.MailItem object that is trusted by the object model guard. Le code utilise la confiance Application champ à obtenir le Microsoft.Office.Interop.Outlook.MailItem.The code uses the trusted Application field to get the Microsoft.Office.Interop.Outlook.MailItem.

private void TrustedCode()
{
    Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
        this.Application.CreateItem(
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
        Microsoft.Office.Interop.Outlook.MailItem;
    mailItem1.To = "someone@example.com";
    MessageBox.Show(mailItem1.To);
}
Private Sub TrustedCode()
    Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
        TryCast(Me.Application.CreateItem( _
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem),  _
        Microsoft.Office.Interop.Outlook.MailItem)
    mailItem1.To = "someone@example.com"
    MessageBox.Show(mailItem1.To)
End Sub

Note

Si Outlook est utilisé avec Exchange, alors l’obtention de tous les objets Outlook à partir de ThisAddIn.Application ne garantit pas que votre complément VSTO est en mesure d’accéder à l’ensemble du modèle objet Outlook.If Outlook is used with Exchange, then obtaining all Outlook objects from ThisAddIn.Application does not guarantee that your VSTO Add-in will be able to access the entire Outlook object model. Par exemple, si un administrateur Exchange configure Outlook automatiquement refuser toutes les tentatives d’accès aux adresses à l’aide du modèle objet Outlook, puis Outlook n’autorise pas l’exemple de code précédent accéder à la propriété, même si l’exemple de code utilise la confiance ThisAddIn.Application champ.For example, if an Exchange administrator sets Outlook to automatically deny all attempts to access address information using the Outlook object model, then Outlook will not allow the previous code example to access the To property, even though the code example uses the trusted ThisAddIn.Application field.

Spécifiez les compléments à approuver lors de l’utilisation d’ExchangeSpecify which Add-ins to trust when using Exchange

Quand Outlook est utilisé avec Exchange, les administrateurs peuvent spécifier que certains compléments VSTO peuvent s’exécuter sans rencontrer le module de protection du modèle objet.When Outlook is used with Exchange, administrators can specify that certain VSTO Add-ins can run without encountering the object model guard. Les compléments VSTO Outlook créés à l’aide de solutions Office dans Visual Studio ne peuvent pas être approuvés individuellement. Ils peuvent uniquement l’être en tant que groupe.Outlook VSTO Add-ins created by using Office solutions in Visual Studio cannot be trusted individually; they can only be trusted as a group.

Outlook approuve un complément VSTO selon un code de hachage de la DLL de point d’entrée du complément VSTO.Outlook trusts an VSTO Add-in based on a hash code of the entry point DLL of the VSTO Add-in. Tous les Outlook des Compléments VSTO qui ciblent le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime utilisent la même DLL de point d’entrée (VSTOLoader.dll).All Outlook VSTO Add-ins that target the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime use the same entry point DLL (VSTOLoader.dll). Cela signifie que si un administrateur approuve un complément VSTO qui cible le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime pour s’exécuter sans rencontrer le module de protection du modèle objet, alors tous les autres compléments VSTO qui ciblent le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime sont également approuvés.This means that if an administrator trusts any VSTO Add-in that targets the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime to run without encountering the object model guard, then all other VSTO Add-ins that targets the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime are also trusted. Pour plus d’informations sur l’approbation de compléments VSTO spécifiques pour une exécution sans rencontrer le module de protection du modèle objet, consultez Spécifier la méthode utilisée par Outlook pour gérer les fonctionnalités de prévention antivirus.For more information about trusting specific VSTO Add-ins to run without encountering the object model guard, see Specify the method Outlook uses to manage virus prevention features.

Modifications d’autorisations ne prennent pas effet immédiatementPermission changes do not take effect immediately

Si l’administrateur ajuste les autorisations d’un document ou d’un assembly, les utilisateurs doivent quitter, puis redémarrer toutes les applications Office pour que ces modifications soient appliquées.If the administrator adjusts permissions for a document or assembly, users must quit and then restart all Office applications for those changes to be enforced.

D’autres applications qui hébergent des applications Microsoft Office peuvent également empêcher l’application des nouvelles autorisations.Other applications that host Microsoft Office applications can also prevent the new permissions from being enforced. Les utilisateurs doivent quitter toutes les applications qui utilisent Office, hébergées ou autonomes, quand des stratégies de sécurité sont modifiées.Users should quit all applications that use Office, hosted or stand-alone, when security policies are changed.

Paramètres du centre de confiance dans le système Microsoft Office n’affectent pas les compléments ou personnalisations au niveau du documentTrust center settings in the Microsoft Office system do not affect Add-ins or document-level customizations

Les utilisateurs peuvent empêcher le chargement de compléments VSTO en définissant une option dans le Centre de gestion de la confidentialité.Users can prevent VSTO Add-ins from loading by setting an option in the Trust Center. Toutefois, les compléments VSTO et les personnalisations au niveau du document créés à l’aide de solutions Office dans Visual Studio ne sont pas concernés par ces paramètres d’approbation.However, VSTO Add-ins and document-level customizations created by using Office solutions in Visual Studio are not affected by these trust settings.

Si l’utilisateur empêche le chargement de compléments VSTO à l’aide du Centre de gestion de la confidentialité, les types suivants de compléments VSTO ne se chargent pas :If the user prevents VSTO Add-ins from loading by using the Trust Center, the following types of VSTO Add-ins will not load:

  • Compléments VSTO COM gérés et non gérés.Managed and unmanaged COM VSTO Add-ins.

  • Documents dynamiques gérés et non gérés.Managed and unmanaged smart documents.

  • Compléments VSTO Automation gérés et non gérés.Managed and unmanaged Automation VSTO Add-ins.

  • Composants de données en temps réel gérés et non gérés.Managed and unmanaged real-time data components.

    Les procédures suivantes décrivent la manière dont les utilisateurs peuvent utiliser le Centre de gestion de la confidentialité pour limiter le chargement de compléments VSTO dans Microsoft Office 2013Office 2013 et Microsoft Office 2010.The following procedures describe how users can use the Trust Center to restrict VSTO Add-ins from loading in Microsoft Office 2013Office 2013 and Microsoft Office 2010. Ces procédures n’affectent pas les compléments VSTO ni les personnalisations créés à l’aide des outils de développement Office dans Visual Studio.These procedures do not affect VSTO Add-ins or customizations created by using Office development tools in Visual Studio.

Pour désactiver les compléments VSTO dans les applications Microsoft Office 2010 et Microsoft Office 2013Office 2013To disable VSTO Add-ins in Microsoft Office 2010 and Microsoft Office 2013Office 2013 applications

  1. Choisissez l’onglet Fichier .Choose the File tab.

  2. Choisissez le bouton Options de nom_application .Choose the ApplicationName Options button.

  3. Dans le volet des catégories, choisissez Centre de gestion de la confidentialité.In the categories pane, choose Trust Center.

  4. Dans le volet d’informations, choisissez Paramètres du Centre de gestion de la confidentialité.In the details pane, choose Trust Center Settings.

  5. Dans le volet des catégories, choisissez Compléments.In the categories pane, choose Add-ins.

  6. Dans le volet d’informations, sélectionnez Exiger la signature des compléments d’applications par un éditeur approuvé ou Désactiver tous les compléments d’applications.In the details pane, select Require Application Add-ins to be Signed by Trusted Publisher or Disable all Application Add-ins.

Voir aussiSee also

Sécurisez les solutions OfficeSecure Office solutions