hash

Para la cuarta entrega de la serie “Controles técnicos de PCI DSS” se introducirá el concepto de File Integrity Monitoring (FIM) y su papel dentro de la monitorización de archivos críticos dentro del entorno de cumplimiento de PCI DSS.

¿Qué es File Integrity Monitoring (FIM)?

El concepto de seguridad de la información se basa en tres pilares principales: Confidencialidad, Disponibilidad e Integridad. En este artículo nos focalizaremos en éste último: Integridad, que busca mantener y garantizar la exactitud y coherencia de los datos durante todo su ciclo de vida, permitiendo detectar si dichos datos han sido alterados intencional o accidentalmente (por cambios en la sintaxis, modificaciones de contenido no autorizadas, daños físicos del medio de almacenamiento, errores de programación, sobrescritura de datos, detección de errores en la transmisión, etc.)

El núcleo de la validación de integridad es la comparación. Se requiere un elemento base B1 (que se supone confiable) y un elemento a comparar C1. Durante el proceso, C1 se compara con B1. Si el resultado es igual, la integridad es correcta. De lo contrario, los datos han sufrido modificaciones o son corruptos, lo cual debe generar una acción correctiva (retransmisión, restauración de una copia anterior, descarte, etc.).

En 1961 el doctor W. Wesley Peterson desarrolló el método de comprobación de redundancia cíclica que permitía la detección de errores tanto en transmisión como en almacenamiento de datos (“checksum”). Este método agrega un elemento de control adicional a los datos denominado “paridad” que en términos generales se puede describir de la siguiente manera:

Verificación de paridad

Verificación de paridad

En este modelo se tienen 7 bits base (“palabra código”) a los cuales se les agrega un bit adicional (“bit de paridad”) para conformar un byte (8 bits).  El bit de paridad tendrá el valor de 0 cuando la cantidad de bits en 0 en la palabra código es par y 1 cuando es impar, permitiendo una detección bastante trivial de errores con un 50% de efectividad. Tomando como base este modelo se desarrollaron algoritmos mucho más complejos (por lo general basados en matemática polinomial) y con tasas de detección de errores más altas y confiables. Como dato curioso, una funcionalidad similar es empleada en el PAN (Primary Account Number), en donde se incluye un Check Digit, que es el último dígito de la tarjeta y es calculado usando el algoritmo de Luhn.

Siguiendo por esta misma línea, a partir de 1950 se desarrollaron algoritmos de validación de integridad empleando funciones matemáticas derivadas de la criptografía.  A diferencia de la criptografía simétrica (cifrado empleando una única clave pre-compartida) y la criptografía asimétrica (cifrado empleando claves públicas y privadas) que están diseñadas para proveer confidencialidad a los datos,  estas funciones se orientaron hacia la validación de integridad y se denominan “Message Integrity Controls” (MIC) basadas en funciones de “hash”.  Una función de hash es una función matemática que puede recibir como entrada un conjunto infinito de datos y da como resultado un “resumen” (“message digest”) o conjunto finito que caracteres que identifican de forma inequívoca su entrada, de forma similar a una secuencia de ADN o una huella digital. Una característica de este tipo de funciones matemáticas es que es imposible derivar u obtener la entrada original partiendo de su hash, razón por la cual también se denominan “funciones de una sola vía” o “One-way functions”.

Función de hash

Función de hash

Aparte de la detección de errores en el almacenamiento y transmisión de datos, otros usos de este tipo de funciones de hash son los siguientes:

Una de las implementaciones de funciones de hash más interesante es la de monitorización de integridad de archivos (“File Integrity Monitoring” – FIM).  Empleando uno o varios algoritmos de hash se extraen los “message digest” de un archivo o archivos críticos del sistema y se almacenan en una base de datos o archivo maestro (“línea base”). De forma regular, se ejecutan extracciones de “message digest” y se comparan contra la “línea base” con el fin de detectar posibles modificaciones, generando alertas a los administradores si esto ocurre. Esta es una forma fácil y confiable de garantizar la integridad de la configuración y los datos en sistemas informáticos y complementar los controles asociados a la gestión de cambios (“Change Management”) y trazabilidad.

Los sistemas FIM funcionan bajo dos escenarios:

  • Empleando agentes (FIM agent): Bajo este escenario se requiere la instalación de un componente de software (agente) en el sistema a ser verificado. Depende de la portabilidad y disponibilidad de agentes para las plataformas operativas existentes.
  • Sin necesidad de agentes (FIM agentless):  En este modelo no se requiere de la instalación de un agente, sino que se realiza una conexión autenticada a la plataforma a analizar y se ejecutan las extracciones/comparaciones de hash en tiempo real.

A pesar de la gran cantidad de beneficios que las funciones de hash proveen a las tareas de validación de integridad, se enfrentan a un gran problema que define su fortaleza: las colisiones. Una colisión se produce cuando se usa una misma función de hash en dos mensajes diferentes (entradas) obteniendo un hash idéntico (salida), lo cual entra en contradicción con el concepto de integridad. Algunos ejemplos y análisis de algoritmos de hashing y sus vulnerabilidades se pueden encontrar aquí. Un programa para conocer la probabilidad de colisión de un hash en función del algoritmo utilizado se puede encontrar aquí: I Have The Power.

Colisión de hash

Colisión de hashes

Algunos de los algoritmos de hashing más conocidos son MD2, MD4, MD5, SHA-1, SHA-2 (256, 384, 512), RIPEMD-160, PANAMA, TIGER, etc. Más información acerca de algoritmos y funcionalidades de hash se puede encontrar en el documento FIPS PUB 180-4 “Secure Hash Standard (SHS)” del NIST. Como soporte a esta explicación, para comparar los diferentes hash extraídos de una entrada especifica empleando estos algoritmos se puede utilizar la utilidad HashCalc.

Listado de hash usando diferentes algoritmos (aplicación HashCalc)

Listado de hash usando diferentes algoritmos (aplicación HashCalc)

¿Qué requerimientos de PCI DSS están relacionados con File Integrity Monitoring (FIM)?

Dentro del estándar PCI DSS v3.0 se encuentran dos requerimientos asociados con File Integrity Monitoring (FIM):

  • Requerimiento 10.5.5: Utilice el software de monitorización de integridad de archivos o de detección de cambios en registros para asegurarse de que los datos de los registros existentes no se puedan cambiar sin que se generen alertas (aunque el hecho de agregar nuevos datos no deba generar una alerta)
  • Requerimiento 11.5: Implemente un mecanismo de detección de cambios (por ejemplo, herramientas de monitorización de integridad de archivos) para alertar al personal sobre modificaciones no autorizadas de archivos críticos del sistema, de archivos de configuración o de contenido, y configure el software para realizar comparaciones de archivos críticos, al menos, una vez por semana.

De acuerdo con ello, es imprescindible que en un entorno de cumplimiento de PCI DSS se despliegue una herramienta de monitorización de integridad de archivos y se configure para generar alertas en el caso que se detecten cambios en archivos de registro de eventos (logs) y archivos críticos del sistema (ejecutables del sistema, ejecutables de aplicaciones, archivos de configuración y parámetros, archivos de almacenamiento central, históricos o archivados, de registro y auditoría y archivos críticos adicionales que determine la entidad). Dichas validaciones deben ser realizadas por lo menos una (1) vez por semana y las alertas deben ser incluidas dentro del Plan de Respuesta a Incidentes:

  • Requerimiento 12.10.5: Incluya alertas de los sistemas de monitorización de seguridad, que incluye, entre otros, sistemas de intrusión-detección y de intrusión-prevención, firewalls y sistemas de monitorización de integridad de archivos.

Criterios para la elección de una solución FIM para PCI DSS

A continuación se enumeran algunos criterios a tener en cuenta en el momento de la elección de una solución de monitorización de integridad de archivos (FIM) a ser instalada en un entorno de cumplimiento de PCI DSS:

  • Debe emplear un algoritmo de hash basado en criptografía robusta y con baja probabilidad de colisión (ver NIST SP 800-57 Part 1 “Recommendation for Key Management“).  Algunos algoritmos robustos de referencia se enumeran en FIPS 180-4 “Secure Hash Standard (SHS)”:  SHA-1, SHA-224, SHA-512/224, SHA-256, SHA-512/256, SHA-384, SHA-512 y las nuevas implementaciones basadas en SHA-3
  • Debe validar y notificar los siguientes cambios (como mínimo):
    • Tamaño del archivo
    • Versión
    • Fechas de creación y modificación
    • Identificación del proceso o usuario que hizo el cambio
    • Acceso no autorizado a archivos
    • Cambios en permisos y privilegios
    • Cambios en directorios
    • Cambios en el registro (en el caso de plataformas Microsoft Windows)
    • Cambios en binarios del sistema y archivos de configuración
  • Debe proteger de modificaciones la línea base de hash y sus propios programas y componentes
  • Debe poder ser configurable para identificar cambios en archivos cuando se anexa contenido (como en el caso de los archivos de registro de eventos (logs)). Ver el artículo “Atributos extendidos “Append-only” + “Immutability” en Unix como soporte en la protección en el almacenamiento de logs / archivos críticos en PCI DSS
  • Debe poder ser configurable para ejecutar revisiones de forma periódica
  • Debe contar con características agentless que le permitan monitorizar plataformas en donde los agentes no están disponibles

Así mismo, se recomienda:

  • Validar que sus reportes sean integrables con las herramientas de registro de eventos (logs) y con el sistema centralizado de logs
  • Preferiblemente, debe generar alertas empleando diferentes medios (correo electrónico, registros locales de eventos, etc.)
  • De forma recomendable, debe identificar las partes del archivo que han sido modificadas y los contenidos previos y actuales para permitir una comparación efectiva

Como siempre, es imprescindible consultar con un QSA en el momento de la elección de una plataforma de FIM para PCI DSS.

Soluciones comerciales de File Integrity Monitoring (FIM)

Por lo general, muchas de las soluciones comerciales de FIM se encuentran integradas en software de detección/prevención de intrusiones a nivel de host (HIDS/HIPS), en software de control de seguridad en endpoint o en soluciones de Security Event Management (SEM) / Security Information and Event Management (SIEM), por lo que es importante que si se va a adquirir alguna de estas soluciones se valide si la funcionalidad de FIM se encuentra incluida y qué características tiene.  Así mismo, no olvidar contar con el criterio y soporte de un QSA.

Algunas de las soluciones comerciales (licenciadas) que proporcionan monitorización de integridad son las siguientes:

Soluciones Open Source de File Integrity Monitoring (FIM)

A continuación se enumeran algunas de las implementaciones más destacadas:

Adicionalmente, muchos sistemas operativos Unix cuentan con implementaciones nativas de programas para hashing, como md5sum o sha1sum o software de hashing para investigaciones forenses como md5deep que pueden ser automatizadas para labores de monitorización de archivos.

Un estudio comparativo de diversas herramientas de FIM Open Source (Diciembre 2009) se puede encontrar en “A comparison of several host/file integrity monitoring programs“.

¿Conoce alguna otra solución de FIM? ¿Ha tenido alguna experiencia con este tipo de software? Tiene a su disposición los comentarios y el foro. Así mismo, los invitamos a visitar de forma continua el portal, seguirnos en Twitter, LinkedIn, Facebook, Google+ y vía RSS.