Partager via


Conseils de sécurité Microsoft 3181759

Les vulnérabilités dans les composants d’affichage principal ASP.NET pourraient autoriser l’élévation de privilèges

Publication : 13 septembre 2016

Version : 1.0

Résumé

Microsoft publie cet avis de sécurité pour fournir des informations sur une vulnérabilité dans les versions publiques de ASP.NET Core MVC 1.0.0. Cet avis fournit également des conseils sur ce que les développeurs peuvent faire pour s’assurer que leurs applications sont correctement mises à jour.

Microsoft est conscient d’une vulnérabilité de sécurité dans la version publique de ASP.NET Core MVC 1.0.0, où afficher les composants peut recevoir des informations incorrectes, y compris les détails de l’utilisateur authentifié actuel. Si un composant d’affichage dépend du code vulnérable et prend des décisions basées sur l’utilisateur actuel, le composant d’affichage peut prendre des décisions incorrectes qui entraînent l’élévation de privilèges.

Facteurs d’atténuation

Un composant View doit utiliser la propriété User exposée par la classe ViewComponent pour prendre des décisions ou modifier la sortie en fonction du contenu de la propriété User. Le code tiers peut également inclure des composants d’affichage qui agissent de telle manière. Microsoft encourage tous les développeurs à mettre à jour leurs packages, qu’ils utilisent des composants d’affichage ou la propriété Utilisateur à leur intérieur, pour se protéger contre l’utilisation future des composants par eux-mêmes ou par des logiciels tiers.

Logiciel affecté

Un projet Microsoft ASP.NET Core est affecté par la vulnérabilité s’il utilise l’une des versions de package concernées dans le tableau suivant.

Packages et versions affectés
Nom du package Version du package
Microsoft.AspNetCore.Mvc 1.0.0
Microsoft.AspNetCore.Mvc.Abstractions 1.0.0
Microsoft.AspNetCore.Mvc.ApiExplorer 1.0.0
Microsoft.AspNetCore.Mvc.Core 1.0.0
Microsoft.AspNetCore.Mvc.Cors 1.0.0
Microsoft.AspNetCore.Mvc.DataAnnotations 1.0.0
Microsoft.AspNetCore.Mvc.Formatters.Json 1.0.0
Microsoft.AspNetCore.Mvc.Formatters.Xml 1.0.0
Microsoft.AspNetCore.Mvc.Localization 1.0.0
Microsoft.AspNetCore.Mvc.Razor 1.0.0
Microsoft.AspNetCore.Mvc.Razor.Host 1.0.0
Microsoft.AspNetCore.Mvc.TagHelpers 1.0.0
Microsoft.AspNetCore.Mvc.ViewFeatures 1.0.0
Microsoft.AspNetCore.Mvc.WebApiCompatShim 1.0.0

Faq sur les conseils

Comment faire savoir si je suis affecté ?
ASP.NET Core a deux types de dépendances différents : direct et transitif. Si votre projet a une dépendance directe ou transitive sur l’un des packages affectés répertoriés dans la section « Logiciel affecté », il peut être affecté.

Dépendances directes

Les dépendances directes se produisent lorsque vous ajoutez spécifiquement un package à votre projet. Par exemple, si vous ajoutez le package Microsoft.AspNetCore.Mvc à votre projet, vous avez pris une dépendance directe sur Microsoft.AspNetCore.Mvc.

Les dépendances directes sont détectables en examinant votre fichier project.json.

Dépendances transitives

Les dépendances transitives se produisent lorsque vous ajoutez un package à votre projet qui s’appuie à son tour sur un autre package. Par exemple, si vous ajoutez le package Microsoft.AspNetCore.Authentication à votre projet, il dépend du package Microsoft.AspNetCore.Http (entre autres). Cela entraîne une dépendance directe sur Microsoft.AspNetCore.Authentication et une dépendance transitive sur le package Microsoft.AspNetCore.Http.

Les dépendances transitives sont modifiables dans la fenêtre microsoft Visual Studio Explorateur de solutions, qui prend également en charge la recherche, ou en examinant le fichier project.lock.json contenu dans le répertoire racine de votre projet. Ce fichier contient la liste faisant autorité des packages pour votre projet.

Comment faire corriger mon application affectée ?

Vous devez corriger les dépendances directes et passer en revue et corriger toutes les dépendances transitives. La version 1.0.1 de chacun des packages vulnérables contient les correctifs nécessaires pour sécuriser votre application.

Correction des dépendances directes

Pour corriger les dépendances directes :

  1. Ouvrez votre fichier project.json dans votre éditeur. Recherchez la section dépendances. Voici un exemple de section :

        "dependencies": {
          "Microsoft.NETCore.App": {
            "version": "1.0.0",
            "type": "platform"
          },
          "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
          "Microsoft.AspNetCore.Mvc": "1.0.0",
        }
    

    Dans cet exemple, il existe trois dépendances directes : Microsoft.NetCore.App, Microsoft.AspNetCore.Server.Kestrel et Microsoft.AspNetCore.Mvc.

    Microsoft.NetCore.App est la plateforme sur laquelle l’application est ciblée et peut être ignorée. Les autres packages exposent leur version à droite du nom du package. Dans cet exemple, les packages non-plateforme sont la version 1.0.0.

  2. Passez en revue vos dépendances directes par rapport à la liste des packages vulnérables dans la section Logiciels affectés de cet avis.

    Pour chaque package vulnérable où il existe une dépendance directe, remplacez le numéro de version dans votre éditeur par la valeur 1.0.1. Après avoir mis à jour toutes les versions de package vulnérables, enregistrez votre fichier project.json.

    La section dépendances de notre exemple de fichier project.json apparaît désormais comme suit :

       "dependencies": {
         "Microsoft.NETCore.App": {
           "version": "1.0.0",
           "type": "platform"
         },
         "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
         "Microsoft.AspNetCore.Mvc": "1.0.1",
       }
    

    Si vous utilisez Visual Studio et enregistrez votre fichier project.json mis à jour, la nouvelle version sera restaurée par Visual Studio. Vous pouvez voir les résultats de la restauration en ouvrant la fenêtre Sortie (Ctrl+Alt+O), puis en modifiant la sortie Afficher la sortie de la liste déroulante en Gestionnaire de package.

    Si vous n’utilisez pas Visual Studio, ouvrez une ligne de commande et passez au répertoire de votre projet. Exécutez la commande dotnet restore pour restaurer vos nouvelles dépendances.

  3. Une fois que vous avez résolu toutes vos dépendances directes, vous êtes prêt à passer en revue vos dépendances transitives.

Examen des dépendances transitives

Il existe deux façons d’afficher les dépendances transitives : utilisez Visual Studio Explorateur de solutions ou passez en revue votre fichier project.lock.json.

Utilisation de Visual Studio Explorateur de solutions

Si vous souhaitez utiliser Explorateur de solutions, ouvrez votre projet dans Visual Studio, puis appuyez sur Ctrl+ ; pour activer la recherche dans Explorateur de solutions. Recherchez chacun des noms de packages répertoriés dans la section Logiciels affectés dans cet avis et notez les packages vulnérables que vous trouvez.

Par exemple, la recherche de Microsoft.AspNetCore.Mvc dans un exemple de projet qui contient un package qui prend une dépendance sur Microsoft.AspNetCore.Mvc affiche les résultats suivants dans la figure suivante.

Figure 1 : Recherche dans Visual Studio

Les résultats de la recherche apparaissent sous forme d’arborescence. Dans les résultats, vous pouvez voir les références identifiées. La première entrée sous le titre Références fait référence au framework cible que votre application utilise. Ce sera . NETCoreApp, . NETStandard ou . NET-Framework-vX.Y.Z (où X.Y.Z est un numéro de version réel) selon la façon dont vous avez configuré votre application. Sous votre framework cible, la liste des packages s’affiche sur laquelle vous avez directement pris une dépendance. Dans cet exemple, l’application prend une dépendance sur VulnerablePackage. VulnérablePackage a à son tour des nœuds feuilles qui répertorient ses dépendances et leurs versions. Dans ce cas, le package prend une dépendance sur une version vulnérable de Microsoft.AspNetCore.Mvc et d’autres.

Révision manuelle des project.lock.json

Ouvrez le fichier project.lock.json dans votre éditeur. Nous vous suggérons d’utiliser un éditeur qui comprend json et qui vous permet de réduire et développer des nœuds pour passer en revue ce fichier. Visual Studio et Visual Studio Code fournissent cette fonctionnalité.

Si vous utilisez Visual Studio, le fichier project.lock.json est « sous » le fichier project.json. Cliquez sur le triangle pointant vers le droite, <, à gauche du fichier project.json pour développer l’arborescence de solutions pour exposer le fichier project.lock.json. La figure suivante affiche un projet avec le fichier project.json développé pour afficher le fichier project.lock.json.

Figure 2 : emplacement du fichier project.lock.json

Recherchez les fichiers project.lock.json pour les packages vulnérables répertoriés dans la section Logiciels affectés de cet avis. Pour chaque package, prenez le nom du package, ajoutez un / puis ajoutez le numéro de version. Par exemple, Microsoft.AspNetCore.Mvc version 1.0.0 est représenté dans le fichier project.lock.json sous la forme « Microsoft.AspNetCore.Mvc/1.0.0 ». Notez le nom de chaque package que vous trouvez qui correspond à une entrée dans le tableau de la section Logiciels affectés de cet avis.

Correction des dépendances transitives

Vous pouvez maintenant avoir une liste de packages affectés. Si vous n’avez trouvé aucun package temporaire, aucune de vos dépendances ne dépend à son tour d’un package vulnérable, ou vous avez déjà résolu le problème en mettant à jour les dépendances directes.

Si votre révision de dépendance transitive a généré une liste de packages vulnérables, vous devez ajouter une dépendance directe à une version mise à jour de chaque package vulnérable à votre fichier project.json pour remplacer la dépendance transitive. Ouvrez votre fichier project.json et recherchez la section dépendances. Par exemple :


   "dependencies": {
     "Microsoft.NETCore.App": {
       "version": "1.0.0",
       "type": "platform"
     },
     "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
     "VulnerablePackage": "1.0.0-*"
   }

Les résultats de la recherche de package transitif montrent que VulnerablePackage dépend de Microsoft.AspNet.Mvc version 1.0.0. Pour corriger cet exemple, vous devez ajouter une dépendance directe en l’ajoutant au fichier project.json. Pour ce faire, ajoutez une nouvelle ligne à la section dépendances qui fait référence à la version fixe. Par exemple, pour extraire la version fixe de Microsoft.AspNet.Mvc, version 1.0.1, modifiez le fichier project.json comme suit :


    "dependencies": {
      "Microsoft.NETCore.App": {
        "version": "1.0.0",
        "type": "platform"
      },
      "Microsoft.AspNetCore.Mvc": "1.0.1",
      "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
      "VulnerablePackage": "1.0.0-*"
    }

Après avoir ajouté des dépendances directes aux packages fixes, enregistrez votre projet. fichier json.

Si vous utilisez Visual Studio, l’enregistrement du fichier mis à jour project.json stocke les nouvelles versions dans Visual Studio. Pour afficher les résultats de la restauration, ouvrez la fenêtre Sortie (Ctrl+Alt+O) et remplacez la sortie Afficher la sortie de la liste déroulante par Gestionnaire de package.

Si vous n’utilisez pas Visual Studio, ouvrez une ligne de commande et passez au répertoire de votre projet. Exécutez la commande dotnet restore pour restaurer vos nouvelles dépendances.

Vous pouvez case activée pour les dépendances transitives de nouveau pour vous assurer que vous avez résolu tous ces dépendances.

Reconstruction de votre application

Enfin, régénérez votre application, testez-la comme vous le feriez normalement, puis redéployez-la à l’aide de votre mécanisme de déploiement privilégié.

Actions suggérées

  • Mettre à jour les modèles ASP.NET Core
    « Microsoft .NET Core 1.0.1 - VS 2015 Tooling Preview 2 » met à jour les modèles ASP.NET Core pour utiliser les packages fixes.

    Pour télécharger cette préversion, consultez la section « Outils » de la page Téléchargements .NET.

Autres informations

Programme Microsoft Active Protections (MAPP)

Pour améliorer les protections de sécurité pour les clients, Microsoft fournit des informations sur les vulnérabilités aux principaux fournisseurs de logiciels de sécurité avant chaque version mensuelle de la mise à jour de sécurité. Les fournisseurs de logiciels de sécurité peuvent ensuite utiliser ces informations de vulnérabilité pour fournir des protections mises à jour aux clients via leurs logiciels ou appareils de sécurité, tels que les systèmes antivirus, les systèmes de détection d’intrusion basés sur le réseau ou les systèmes de prévention des intrusions basés sur l’hôte. Pour déterminer si les protections actives sont disponibles auprès des fournisseurs de logiciels de sécurité, visitez les sites web de protection actifs fournis par les partenaires du programme, répertoriés dans microsoft Active Protections Program (MAPP) Partners.

Commentaires

  • Vous pouvez fournir des commentaires en remplissant le formulaire Aide et support Microsoft, contactez-nous.

Support

  • Vous pouvez poser des questions sur cet avis sur GitHub dans la section ASP.NET Référentiel MVC Core.
  • Les clients du États-Unis et du Canada peuvent recevoir un soutien technique du support technique. Pour plus d’informations, consultez Aide et support Microsoft.
  • Les clients internationaux peuvent recevoir du support de leurs filiales Microsoft locales. Pour plus d’informations, consultez Support international.
  • Microsoft TechNet Security fournit des informations supplémentaires sur la sécurité dans les produits Microsoft.

Exclusion de responsabilité

Les informations fournies dans cet avis sont fournies « tel quel » sans garantie quelconque. Microsoft exclut toutes les garanties, expresses ou implicites, y compris les garanties de marchandabilité et d’adéquation à un usage particulier. En aucun cas, Microsoft Corporation ou ses fournisseurs ne sont responsables de dommages-intérêts, y compris les dommages directs, indirects, accessoires, accessoires, les pertes de bénéfices commerciaux ou les dommages spéciaux, même si Microsoft Corporation ou ses fournisseurs ont été informés de la possibilité de tels dommages- intérêts. Certains États n’autorisent pas l’exclusion ou la limitation de responsabilité pour des dommages indirects ou accessoires afin que la limitation ci-dessus ne s’applique pas.

Révisions

  • V1.0 (13 septembre 2016) : avis publié.

Page générée 2016-09-09 14 :58-07 :00.