Compartir a través de


Problemas de seguridad para el registro de mensajes

En este tema se describe cómo se puede proteger la exposición de datos confidenciales en los registros de mensajes, así como los eventos generados por el registro de mensajes.

Problemas de seguridad

Registro de datos sensibles

Windows Communication Foundation (WCF) no modifica ningún dato en encabezados y cuerpo específicos de la aplicación. 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 aplicaciones es responsable de aplicar el control de acceso en los archivos de configuración y registro. Si no desea que este tipo de información sea visible, debe deshabilitar el registro o filtrar parte de los datos si desea compartir los registros.

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

  • Asegúrese de que los archivos de registro están protegidos por listas de control de acceso (ACL) tanto en escenarios de host web como de autohospedado.

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

  • Especifique una ruta de acceso absoluta para la ubicación del archivo de registro, que debe estar fuera del directorio público vroot del host web para evitar que un usuario externo acceda a él mediante un explorador web.

De forma predeterminada, las claves y la información de identificación personal (PII), como el nombre de usuario y la contraseña, no se registran en seguimientos y mensajes registrados. Sin embargo, un administrador de equipo puede usar el atributo enableLoggingKnownPII en el elemento machineSettings del archivo Machine.config para permitir que las aplicaciones que se ejecutan en la máquina registren información de identificación personal conocida (PII). La siguiente configuración muestra cómo hacerlo:

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

Después, un implementador de aplicaciones puede usar el atributo logKnownPii en el archivo App.config o Web.config para habilitar el registro de PII de la siguiente manera:

<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 interruptores permite la flexibilidad de registrar PII conocida para cada aplicación.

Importante

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

Debe tener en cuenta 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 siguiente archivo App.config, el PII no se registra para ambos orígenes, aunque el registro de PII esté específicamente 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"/> existe fuera del archivo Machine.config, el sistema inicia un ConfigurationErrorsException.

Los cambios solo son efectivos cuando la aplicación se inicia o se reinicia. Un evento se registra al iniciarse cuando ambos atributos se establecen en true. También se registra un evento si logKnownPii está establecido en true, pero enableLoggingKnownPii es false.

El administrador de la máquina y el implementador de aplicaciones deben tener extrema precaución al usar estos dos interruptores. Si el registro de PII está habilitado, se registran las claves de seguridad y la PII. Si está deshabilitado, los datos confidenciales y específicos de la aplicación todavía se registran en los encabezados y cuerpos del mensaje. Para una discusión más detallada sobre la privacidad y la protección de la Información de Identificación Personal (PII) contra su exposición, consulte Privacidad del Usuario.

Cautela

PII no se oculta en mensajes incorrectos. Este mensaje se registra as-is sin ninguna modificación. Los atributos mencionados anteriormente no tienen ningún efecto en esto.

Receptor de seguimiento 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 de forma remota, lo que conduce a la divulgación de información confidencial. Además, si configura un agente de escucha personalizado para enviar mensajes por la red, como a una base de datos remota, debe aplicar el control de acceso adecuado en los logs de mensajes de la máquina remota.

Eventos desencadenados por el registro de mensajes

A continuación se enumeran todos los eventos emitidos por el registro de mensajes.

  • Registro de mensajes: Este evento se emite 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”.

  • Cierre del registro de mensajes: este evento se genera cuando el registro de mensajes está deshabilitado 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 en truey el atributo logKnownPii del elemento source en el archivo App.config o Web.config se establece en true.

  • Registro de PII conocido no permitido: este evento se emite cuando no se permite el registro de PII conocido. Esto sucede cuando el atributo logKnownPii del elemento source en el archivo App.config o Web.config está establecido en true, pero el atributo enableLoggingKnownPii del elemento machineSettings del archivo Machine.config se establece en 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 sobre esto, consulte Registro de Eventos.

Consulte también