¿Cómo instalo correctamente objetos COM de 32 bits en ASP clásico después de instalar Windows Update KB4340558?

En Windows Server 2012 R2, después de instalar la actualización KB4340558 (historial de actualizaciones) / KB4338424 (actualizaciones instaladas), ya no podemos instanciar .DLL .NET (interoperabilidad) en ASP clásico en el modo de 32 bits utilizando server.createobject . Recibimos el error 0x800A01AD “El componente ActiveX no puede crear el objeto”

Cuando desinstalamos la actualización, el error desaparece. A pesar de mis mejores esfuerzos, no pude encontrar una solución alternativa para desinstalar. Preferiríamos reinstalar la actualización y hacer los cambios necesarios para Windows Server y / o las DLL para permitir que los objetos COM sean instanciados correctamente. No hay pistas en los registros del sistema, no hay pistas en la base de datos CVE, y no hay pistas en los errores que está generando ASP. ¡Por favor ayuda!

También nos afectaron varios clientes.

Descarté la firma inválida de nuestras asambleas, ya que los ensamblados de .NET del Framework también se vieron afectados por ese error de acceso denegado también.

Finalmente logré resolver el problema por configuración. Aparentemente, la identidad de autenticación del sitio web ahora debe coincidir con la identidad del grupo de aplicaciones. O IUSR ya no tiene suficientes permisos.

enter image description here

EDITAR: 19.07.2018

¡Advertencia! Este cambio también tiene un efecto secundario:

El evento asp-classic “Session_OnEnd” ya no se llamaba y, por lo tanto, los recursos ya no se podían liberar. ¡Pero también hay una solución para eso!

La propiedad de configuración de ASP “system.webServer / asp / runOnEndAnonymously” tiene que ser “falsa”, luego el evento se dispara nuevamente.

enter image description here

EDIT 2: 23.07.2018

Como señaló Dijkgraaf , Microsoft ahora considera que este “nuevo comportamiento” es un error. Así que supongo que mi “solución” debería considerarse una solución hasta que llegue un nuevo parche para rescatar.

Ejecutamos nuestro grupo de aplicaciones bajo una identidad específica, para habilitar un recurso compartido de red y acceso a la base de datos. Yo también pensé que estábamos atrapados después de leer la respuesta de @ keydon arriba.

Sin embargo, hay tres lugares en los que debemos configurar la identidad:

  • El grupo de aplicaciones: debe usar la identidad específica
  • El sitio web “Connect As” – debe usar la “identidad del grupo de aplicaciones”
  • La opción Autenticación anónima, en la función Autenticación, debe usar “Identidad del grupo de aplicaciones”

Ese último fue lo que nos faltaba, años de considerar que solo los dos primeros significaron que leímos mal el gran consejo anterior.

Microsoft es consciente del problema y la KB relevante es “Acceso denegado”, los errores y las aplicaciones con error de activación COM después de la instalación de julio de 2018 Actualizaciones de seguridad y acumulación de calidad para .NET Framework

Esto ha afectado a BizTalk, SharePoint, IIS con ASP clásica y la aplicación .NET que usa suplantación.

Las soluciones para Classic ASP son las siguientes

Llamada ASP clásica alojada en IIS CreateObject para objetos COM de .NET puede recibir un error de “componente ActiveX no puede crear objeto”:

  • Si su sitio web usa Autenticación anónima: cambie las credenciales de Autenticación anónima del sitio web para usar la “Identidad del grupo de aplicaciones”.
  • Si su sitio usa Autenticación básica o Autenticación de Windows: inicie sesión en la aplicación una vez como la identidad del grupo de aplicaciones, luego cree una instancia del componente COM de .NET. Posteriormente, otros usuarios del sitio podrán activar el componente COM de .NET sin la falla.
  • Alternativamente, si usa la Autenticación de Windows y accede al sitio web desde la consola del Servidor Windows donde se ejecuta la aplicación ASP: Crear una instancia del componente COM de .NET también resuelve el error para otros usuarios del sitio.

Admitimos un sitio ASP clásico que se ejecuta en Autenticación anónima de IIS. La aplicación crea una instancia de un objeto DLL .NET expuesto como COM visible.

Después de aplicar recientes actualizaciones de seguridad de Windows y reiniciar el sistema operativo, nuestra aplicación se bloqueó con el siguiente error:

 Microsoft VBScript runtime error '800a01ad' ActiveX component can't create object: 'NameOfObjectInDLL' 

En nuestro caso, este último consejo solucionó nuestros problemas.

IIS> Autenticación> Autenticación anónima – Editar> “Identidad del grupo de aplicaciones”

captura de pantalla1

Esto es solo para confirmar la solución proporcionada por keydon, combinada con la proporcionada por TimP. Y dales gracias !!

En nuestro caso, hemos cambiado las siguientes 3 partes (y una cuarta adicional para nuevos permisos):

  1. Propiedades de autenticación del servidor web: establezca Autenticación anónima con “Identidad del grupo de aplicaciones” en lugar de “Usuario específico”.

  2. Propiedad de “Identidad” del conjunto de aplicaciones: establecido en “ApplicationPoolIdentity” en lugar de “LocalSystem”.

  3. Sitio web “Conectar como” para la ruta física: establecido en “Usuario de la aplicación (autenticación de paso a través)” en lugar de “Usuario específico”.

  4. Agregue permisos para ” Nombre de usuario de Identidad del grupo de aplicaciones ” en la carpeta compartida donde se encuentran los archivos de la aplicación web. Eche un vistazo a https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities#securing-resources

¡¡Gracias!! (Lo siento, no puedo votar sus soluciones porque soy principiante y no tengo ninguna reputación)