Les erreurs d’accès refusé et les applications avec activation COM échouent après l’installation des mises à jour du correctif cumulatif de sécurité et de qualité de juillet 2018 pour .NET Framework

S’applique à
.NET

Introduction

Les applications qui s’appuient sur .NET Framework pour initialiser un composant COM et qui s’exécutent avec des autorisations restreintes peuvent ne pas démarrer ou s’exécuter correctement après l’installation des mises à jour du correctif cumulatif de sécurité et de qualité de juillet 2018 pour .NET Framework.

Le runtime Microsoft .NET Framework utilise le jeton de processus pour déterminer si le processus s’exécute dans un contexte élevé. Ces appels système peuvent échouer si les autorisations d’inspection de processus requises ne sont pas présentes. Cela provoque une erreur « accès refusé ».

Symptômes

Après l’installation d’une des mises à jour de sécurité pour .NET Framework de juillet 2018, le chargement d’un composant COM échoue en raison d’un « accès refusé », d’une « classe non enregistrée » ou d’une « erreur interne survenue pour des raisons inconnues ». La signature d’erreur la plus courante est la suivante :

Exception type: System.UnauthorizedAccessException

Message: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

SharePoint

  • Lorsque les utilisateurs accèdent à un site SharePoint, ils peuvent voir le message HTTP 403 suivant : « Le site web a refusé d’afficher cette page web » HTTP 403.
  • Les journaux ULS SharePoint contiennent des messages tels que les suivants :

w3wp.exe (0x1894)         0x0B94  SharePoint Foundation  General 0000       High                UnauthorizedAccessException for the request. 403 Forbidden will be returned. Error=An error occurred creating the configuration section handler for system.serviceModel/extensions: Could not load file or assembly <AssemblySignature>  or one of its dependencies. Access is denied. (C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config line 180)  

 w3wp.exe (0x1894)         0x0B94  SharePoint Foundation  General b6p2      VerboseEx                Sending HTTP response 403:403 FORBIDDEN.    

w3wp.exe (0x1894)         0x0B94  SharePoint Foundation  General 8nca       Verbose                Application error when access /, Error=Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))  

  • Lors de l’analyse d’une source de contenu de personnes, la demande peut échouer et enregistrer l’entrée suivante dans le journal ULS SharePoint :

mssearch.exe (0x118C) 0x203C SharePoint Server Search Crawler:Gatherer Plugin cd11 Warning The start address sps3s://<URLtoSite> cannot be crawled.  Context: Application 'Search_Service_Application', Catalog 'Portal_Content'  Details:  Class not registered   (0x80040154)

Lorsque l’erreur se produit, un message semblable à ce qui suit est enregistré dans les journaux d’analyse SharePoint :

        sps3s://<URLtoSite> 
Un composant requis pour analyser ce type de contenu n’est pas inscrit auprès de ce serveur d’applications. Pour plus d’informations, consultez les journaux des événements. (SearchID = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)

console d’administration BizTalk Server

  • BizTalk Server console d’administration ne démarre pas correctement et retourne les erreurs suivantes :

An internal failure occurred for unknown reasons. (WinMgmt)

Program Location:

   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)

   at System.Management.ManagementObject.Get()

   at Microsoft.BizTalk.SnapIn.Framework.WmiProvider.SelectInstance

IIS avec ASP classique

  • Un ASP classique hébergé appelant CreateObject pour les objets COM .NET peut générer un message d’erreur semblable à ce qui suit :

    ActiveX component can't create object

Application .NET qui utilise l’emprunt d’identité

  • Une application .NET qui crée un instance d’une application COM .NET dans un contexte d’emprunt d’identité peut générer un message d’erreur semblable au suivant :

    0x80040154 (REGDB_E_CLASSNOTREG)

Résolution

Pour résoudre ces problèmes, appliquez les correctifs cumulatifs de sécurité et de qualité d’août 2018 ou les mises à jour de sécurité uniquement applicables à votre système d’exploitation et au .NET Framework installé. Pour plus d’informations, consultez CVE-2018-8356 | Vulnérabilité de contournement des fonctionnalités de sécurité .NET Framework.

Solution de contournement

Pour contourner ce problème, essayez l’une des méthodes suivantes.

Note Selon l’application affectée et son code, les solutions de contournement suivantes peuvent ne pas être efficaces.

  • Si vous avez des connaissances avancées sur la façon dont les processus sont démarrés, exécutez le processus à l’aide de l’autorisation PROCESS_QUERY_INFORMATION .

  • Asp classique hébergé IIS appelant CreateObject pour les objets COM .NET peut recevoir une erreur « Le composant ActiveX ne peut pas créer d’objet » :

    • Si votre site web utilise l’authentification anonyme :

      • Modifiez les informations d’identification de l’authentification anonyme du site web pour utiliser l'« identité du pool d’applications ».
    • Si votre site utilise l’authentification de base ou l’authentification Windows :

      • Connectez-vous une fois à l’application en tant qu’identité du pool d’applications, puis créez un instance du composant COM .NET.
      • Après cela, les autres utilisateurs du site pourront activer le composant COM .NET sans l’échec.
    • Sinon, si vous utilisez l’authentification Windows et que vous accédez au site web à partir de la console du serveur Windows sur lequel l’application ASP s’exécute :

      • La création d’un instance du composant COM .NET résout également l’erreur pour les autres utilisateurs du site.
  • Une application .NET qui crée un instance d’application COM .NET dans un contexte d’emprunt d’identité peut générer un message d’erreur « 0x80040154 (REGDB_E_CLASSNOTREG) » :

    • Créez un instance du composant COM .NET avant l’appel de contexte d’emprunt d’identité.

      • Les appels créés ultérieurement instance créés par la suite fonctionnent comme prévu.
    • Exécutez l’application .NET dans le contexte de l’utilisateur emprunté.

    • Évitez d’utiliser l’emprunt d’identité lors de la création de l’objet COM .NET.

  • Si la UAC est désactivée pour l’ordinateur, réactivez-la.

  • Si le processus ne parvient pas à charger Diasymreader.dll, exécutez la commande suivante pour l’assembly :

    ngen install <the failing assembly>

    Pour plus d’informations sur ngen, consultez Ngen.exe (Générateur d’images natives).

Avertissement : Les solutions de contournement suivantes peuvent rendre un ordinateur ou un réseau plus vulnérable aux attaques par des utilisateurs malveillants ou par des logiciels malveillants tels que des virus. Nous ne recommandons pas ces solutions de contournement. Toutefois, nous fournissons ces informations afin que vous puissiez implémenter les solutions de contournement à votre discrétion. Utilisez ces solutions de contournement à vos propres risques.

  • Ajoutez « SERVICE RÉSEAU » au groupe Administrateurs local.

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

S’applique à

.NET Framework Security Mises à jour de juillet 2018 pour .NET Framework 3.5, 4.0, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1 et 4.7.2 sur toutes les versions applicables et prises en charge de Windows