Compartir a través de


Riesgos de seguridad relativos al registro de mensajes

En este tema se describe cómo puede proteger los datos confidenciales para que no se expongan en registros de mensajes, así como los eventos generados por el registro de mensajes.

Cuestiones de seguridad

Registrar información confidencial

El marco Windows Communication Foundation (WCF) no modifica los datos de los encabezados y los cuerpos específicos de las aplicaciones. El marco WCF tampoco realiza el seguimiento de datos personales que aparezcan en los encabezados o los cuerpos específicos de las aplicaciones.

Cuando el registro de mensajes está habilitado, la información personal en encabezados específicos de la aplicación, como una cadena de consulta; e información del cuerpo, como un número de tarjeta de crédito, se puede volver visible en los registros. El implementador de la aplicación es el responsable de exigir el control de acceso en los archivos de registro y configuración. Si no desea que este tipo de información sea visible, debería deshabilitar el registro o filtrar parte de los datos si desea compartir los registros.

Las sugerencias siguientes pueden ayudarle a evitar que se exponga el contenido de un archivo de registro involuntariamente:

  • Asegúrese de que los archivos de registro estén protegidos mediante listas de control de acceso (ACL) tanto en host de web y como en escenarios de host propio.

  • Elija una extensión de archivo que no se pueda servir fácilmente utilizando una solicitud web. Por ejemplo, la extensión de archivo .xml no es una opción segura. Puede comprobar la guía de administración de Internet Information Services (IIS) para ver una lista de extensiones que se pueden servir.

  • Especifique una ruta de acceso absoluta para la ubicación del archivo de registro, que debería estar fuera del directorio público raíz de Web host para evitar que una parte externa obtenga acceso utilizando un explorador web.

De forma predeterminada, las claves e información personal identificable (PII) como nombre de usuario y contraseña no están registradas en trazas y los mensajes registrados. Sin embargo, un administrador del equipo puede utilizar el atributo enableLoggingKnownPII en el elemento machineSettings del archivo Machine.config para permitir que las aplicaciones que se ejecutan en el equipo registren información personal identificable (PII) conocida. La siguiente configuración muestra cómo realizar esto:

<configuration>  
   <system.serviceModel>  
      <machineSettings enableLoggingKnownPii="true"/>  
   </system.serviceModel>  
</configuration>

Un implementador de aplicación puede utilizar el atributo logKnownPii en el archivo App.config o Web.config para permitir que PII se registre como sigue:

<system.diagnostics>  
  <sources>  
      <source name="System.ServiceModel.MessageLogging"  
        logKnownPii="true">  
        <listeners>  
                 <add name="messages"  
                 type="System.Diagnostics.XmlWriterTraceListener"  
                 initializeData="c:\logs\messages.svclog" />  
          </listeners>  
      </source>  
    </sources>  
</system.diagnostics>  

Solo cuando ambos valores son true está habilitado el registro de PII. La combinación de dos modificadores permite la flexibilidad de registrar la PII conocida para cada aplicación.

Importante

En .NET Framework 4.6.1, las marcas logEntireMessage y logKnownPii también deben establecerse con el valor true en el archivo Web.config o en el archivo App.config para que se habilite el registro de DCP, tal y como se muestra en el siguiente ejemplo: <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" ….

Debe ser consciente de que si especifica dos o más orígenes personalizados en un archivo de configuración, solo se leen los atributos del primer origen. Los otros se ignoran. Esto significa que, para el archivo App.config siguiente, PII no se registra para ambos orígenes incluso aunque el registro de PII esté explícitamente habilitado para el segundo origen.

<system.diagnostics>  
   <sources>  
      <source name="System.ServiceModel.MessageLogging"  
              logKnownPii="false">  
              <listeners>  
                 <add name="messages"  
                      type="System.Diagnostics.XmlWriterTraceListener"  
                      initializeData="c:\logs\messages.svclog" />  
              </listeners>  
            </source>  
      <source name="System.ServiceModel"
              logKnownPii="true">  
              <listeners>  
                 <add name="traces"  
                      type="System.Diagnostics.XmlWriterTraceListener"  
                      initializeData="c:\logs\traces.svclog" />  
              </listeners>  
      </source>  
   </sources>  
</system.diagnostics>  

Si el elemento <machineSettings enableLoggingKnownPii="Boolean"/>ConfigurationErrorsException existe fuera del archivo Machine.config, el sistema inicia.

Los cambios solo son efectivos cuando la aplicación se inicia o reinicia. Un evento está registrado en el inicio cuando ambos atributos están establecidos en true. Un evento también está registrado si logKnownPii está establecido en true pero enableLoggingKnownPii es false.

El administrador del equipo e implementador de la aplicación debería ejercer una precaución extrema al utilizar estos dos modificadores. Si el registro de PII está habilitado, las claves de seguridad y PII están registradas. Si está deshabilitado, los datos sensibles y específicos de la aplicación todavía están registrados en encabezados del mensaje y cuerpos. Para obtener un análisis más detallado sobre la privacidad y cómo evitar la exposición de DCP, consulte Privacidad de los usuarios.

Precaución

PII no se oculta en mensajes incorrectos. Tales mensajes se registran tal cual sin ninguna modificación. Los atributos mencionados previamente no tienen ningún efecto sobre esto.

Agente de escucha de traza personalizado

Agregar un agente de escucha de traza personalizado en el origen de traza del registro de mensajes es un privilegio que debe estar restringido al administrador. Esto se debe a que los agentes de escucha personalizados malintencionados se pueden configurar para enviar mensajes remotamente, lo que conduce a la divulgación de información confidencial. Además, si configura un agente de escucha personalizado para enviar mensajes en la conexión, como, por ejemplo, a una base de datos remota, debería exigir un control de acceso apropiado en los registros de mensajes en el equipo remoto.

Eventos activados mediante el registro de mensajes

La siguiente es una lista de todos los eventos emitidos por el registro de mensajes.

  • Registro de mensajes activado: se emite este evento cuando el registro de mensajes está habilitado en la configuración o a través de WMI. El contenido del evento es “Se ha activado el registro de mensajes. Puede que se registre información confidencial en texto no cifrado, incluso aunque estuviesen cifrados en la conexión, por ejemplo, los cuerpos de mensajes”.

  • Registro de mensajes desactivado: se emite este evento cuando el registro de mensajes se deshabilita a través de WMI. El contenido del evento es “Se ha desactivado el registro de mensajes”.

  • Registro PII conocido activado: se emite este evento cuando el registro de PII conocido está habilitado. Esto sucede cuando el atributo enableLoggingKnownPii del elemento machineSettings del archivo Machine.config se establece con el valor true y el atributo logKnownPii del elemento source del archivo App.config o Web.config se establece con el valor true.

  • Registro de PII conocido no permitido: se emite este evento cuando no se permite el registro de PII conocido. Esto sucede cuando el atributo logKnownPii del elemento source del archivo App.config o Web.config se establece con el valor true pero el atributo enableLoggingKnownPii del elemento machineSettings del archivo Machine.config se establece con el valor false. No se inicia ninguna excepción.

Estos eventos se pueden ver en la herramienta Visor de eventos que viene con Windows. Para obtener más información al respecto, consulte Registro de eventos.

Consulte también