Norma: Normas de Seguridad de Datos (DSS) Requisito: 6.6 Fecha: febrero de 2008 Suplemento informativo: aclaración del requisito 6.6 sobre revisiones de códigos y firewalls de aplicaciones Fecha de publicación: 2008-04-15 Suplemento informativo: requisito 6.6 sobre revisiones de códigos y firewalls de aplicaciones de las Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS) Descripción general El requisito 6.6 de PCI DSS brinda dos opciones que tienen como objetivo abordar las amenazas comunes para los datos de los titulares de tarjetas de crédito y garantizar que la entrada que reciben las aplicaciones web de entornos que no son seguros sea inspeccionada “de arriba abajo”. Los detalles de cómo cumplir este requisito variarán según la implementación específica de una aplicación en particular. Los análisis forenses sobre los riesgos de los datos de titulares de tarjetas de crédito han demostrado que las aplicaciones web son, con frecuencia, el punto inicial de ataque contra los datos de titulares de tarjetas de crédito, principalmente mediante la inyección SQL. El objetivo del requisito 6.6 es garantizar que las aplicaciones web expuestas a la Internet pública estén protegidas contra los tipos más comunes de entrada maliciosa. Existe una gran cantidad de información pública disponible sobre las vulnerabilidades de las aplicaciones web. Las mínimas vulnerabilidades que deben considerarse están descritas en el requisito 6.5. (Consulte la sección Referencias para obtener otras fuentes de información sobre las pruebas de aplicaciones web). La correcta implementación de ambas opciones proporcionaría la mejor defensa de múltiples capas. Las normas PCI SSC reconocen que el costo y la complejidad operativa que implica la implementación de las dos opciones quizá no sean factibles. Además, tanto una opción como la otra tal vez no sean posibles en algunas situaciones (por ejemplo, si no se puede acceder al código fuente). Sin embargo, debe ser posible aplicar, por lo menos, una de las alternativas descritas en este documento, y la correcta implementación puede satisfacer el objetivo del requisito. Este documento brinda orientación para ayudarlo a determinar cuál es la mejor opción, que puede variar según los productos que se utilicen, cómo una organización adquiere o desarrolla sus aplicaciones web y otros factores en el entorno. Opción 1 del requisito 6.6: revisiones de códigos de aplicaciones La opción de revisión del código de aplicaciones no requiere necesariamente una revisión manual del código fuente. Si se tiene en cuenta que el objetivo del requisito 6.6 es evitar la explotación de vulnerabilidades comunes (como aquellas mencionadas en el requisito 6.5), se podrán considerar varias soluciones posibles. Estas son dinámicas y anticipadas, lo que requiere el inicio específico de un proceso manual o automático. Si se implementan correctamente, una o más de estas cuatro alternativas pueden cumplir el objetivo de la opción 1 y proporcionar el mínimo nivel de protección contra las amenazas típicas para las aplicaciones web: 1. Revisión manual del código fuente de las aplicaciones. 2. Uso correcto de herramientas automatizadas de análisis del código fuente de las aplicaciones (herramientas de escaneo). 3. Evaluación manual de vulnerabilidades de la seguridad de las aplicaciones web. El objetivo de este documento es proporcionar información complementaria. La información aquí provista no reemplaza ni sustituye el requisito 6,6 de las Normas de Seguridad de Datos (DSS) de la Industria de Tarjetas de Pago. 2 Suplemento informativo: requisito 6.6 sobre revisiones de códigos y firewalls de aplicaciones de las Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS) 4. Uso correcto de herramientas automatizadas de evaluación de vulnerabilidades de la seguridad de las aplicaciones web (herramientas de escaneo). Todo esto debe estar diseñado para probar la presencia de vulnerabilidades en aplicaciones web, como se indicó anteriormente en “Descripción general”. Tenga en cuenta que una evaluación de vulnerabilidades simplemente identifica y notifica las vulnerabilidades, mientras que una prueba de penetración intenta explotar las vulnerabilidades para determinar la posibilidad de que ocurra un acceso no autorizado u otra actividad maliciosa. Las evaluaciones o revisiones manuales deben ser llevadas a cabo por un recurso interno calificado o por un tercero calificado. En cualquier caso, el/los individuo/s debe/n contar con las habilidades y la experiencia adecuadas para comprender el código fuente y/o la aplicación web, saber cómo evaluar las vulnerabilidades de cada uno y entender las conclusiones. De igual modo, los individuos que utilicen herramientas automatizadas deben contar con las habilidades y el conocimiento necesarios para configurar correctamente la herramienta y el entorno de prueba, utilizar la herramienta y evaluar los resultados. Si se utilizan recursos internos, deben estar separados, desde el punto de vista organizativo, de la administración de la aplicación que se está evaluando. Por ejemplo, el equipo que escribe el software no debe realizar la revisión o la evaluación finales ni verificar si el código es seguro. Existen varias formas de realizar la revisión de un código o la evaluación de una aplicación que proporcionarían el mismo nivel de protección (o uno mejor) que el proporcionado por el firewall de una aplicación (discutido abajo, en la opción 2). Dos ejemplos que pueden cumplir el objetivo de la primera opción son los siguientes: 1. Una organización que cuente, como parte del ciclo de vida de desarrollo del software (SDLC), con un proceso por medio del cual se le realice una revisión de seguridad independiente al código fuente de una aplicación web. La revisión de seguridad debe consistir en examinar aplicaciones para detectar si cuentan con controles que se ocupen de las típicas vulnerabilidades de las aplicaciones web. Estas revisiones de códigos pueden implementarse como procesos manuales o automáticos. 2. Uso de un proceso manual o de herramientas especializadas para probar la presencia de vulnerabilidades y defectos expuestos en una aplicación web que se está ejecutando. Este enfoque implica la creación de entrada maliciosa o no estándar y el envío de esta a la aplicación para simular un ataque. Las respuestas a esas entradas se examinan para determinar si la aplicación puede ser vulnerable ante ciertos ataques. Las revisiones o evaluaciones deben incorporarse en el SDLC y deben realizarse antes de que la aplicación sea implementada en el entorno de producción. El SDLC debe proteger constantemente la información, de acuerdo con el requisito 6.3. Los procesos de control de cambios deben garantizar que los desarrolladores de software no puedan omitir el paso de evaluación de aplicaciones o revisión de códigos ni implementar nuevo software directamente en el entorno de producción. Los procesos de control de cambios El objetivo de este documento es proporcionar información complementaria. La información aquí provista no reemplaza ni sustituye el requisito 6,6 de las Normas de Seguridad de Datos (DSS) de la Industria de Tarjetas de Pago. 3 Suplemento informativo: requisito 6.6 sobre revisiones de códigos y firewalls de aplicaciones de las Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS) también deben exigir la corrección y la reevaluación de las vulnerabilidades antes de la implementación. Si bien la aprobación final de los resultados del análisis o de la revisión debe ser realizada por una organización independiente, se recomienda que las revisiones y los análisis también sean realizados lo antes posible en el proceso de desarrollo. Las herramientas deben ponerse a disposición de los desarrolladores de software y deben integrarse en su paquete de desarrollo de la forma más práctica posible. Los proveedores pueden reunir las capacidades de evaluación de vulnerabilidades o análisis de códigos en productos que tienen otros objetivos, como la validación del cumplimiento de las mejores prácticas de arquitectura relacionadas con un idioma específico. Al evaluar estas herramientas, es importante confirmar la capacidad que tienen para probar las vulnerabilidades habituales de las aplicaciones web antes de suponer que se pueden utilizar para cumplir el objetivo del requisito 6.6. Además, para hacer frente a amenazas nuevas y emergentes, las herramientas deben tener la capacidad de incorporar nuevas normas de análisis. Las personas que llevan a cabo las revisiones o evaluaciones manuales deben estar al tanto de las tendencias del sector, con el fin de garantizar que sus habilidades de prueba o evaluación sigan siendo efectivas para hacer frente a nuevas vulnerabilidades. Opción 2 del requisito 6.6: firewalls de aplicaciones En el contexto del requisito 6.6, un “firewall de aplicaciones” es un Firewall de Aplicaciones Web (WAF), que es un punto de aplicación de políticas de seguridad colocado entre una aplicación web y el punto final del cliente. Esta funcionalidad se puede implementar en un software o un hardware que se ejecuta en un dispositivo o en un servidor típico que ejecuta un sistema operativo habitual. Puede ser un dispositivo independiente o un dispositivo integrado en otros componentes de la red. Los firewalls de red habituales se implementan en el perímetro de la red o entre segmentos de la red (zonas) y constituyen la primera línea de defensa contra muchos tipos de ataques. Sin embargo, estos deben permitir que los mensajes lleguen a las aplicaciones web que una organización escoge para exponer a la Internet pública. Los firewalls de red, por lo general, no están diseñados para inspeccionar ni evaluar las partes de un mensaje del Protocolo de Internet (IP) (paquete) utilizado por aplicaciones web ni para reaccionar ante ellas; por lo tanto, las aplicaciones públicas reciben con frecuencia entrada que no ha sido inspeccionada. Como resultado, se crea un nuevo perímetro de seguridad lógico, la misma aplicación web, y las mejores prácticas de seguridad exigen que los mensajes sean inspeccionados cuando pasan de un entorno no seguro a un entorno seguro. Existen muchos ataques conocidos contra aplicaciones web y, como todos sabemos, las aplicaciones web no siempre están diseñadas ni escritas para defenderse contra estos ataques. Además, el hecho de que estas aplicaciones estén disponibles para prácticamente cualquier persona que tenga una conexión a Internet intensifica el riesgo. El objetivo de este documento es proporcionar información complementaria. La información aquí provista no reemplaza ni sustituye el requisito 6,6 de las Normas de Seguridad de Datos (DSS) de la Industria de Tarjetas de Pago. 4 Suplemento informativo: requisito 6.6 sobre revisiones de códigos y firewalls de aplicaciones de las Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS) Los WAF están diseñados para inspeccionar el contenido de la capa de aplicación de un paquete IP y el contenido de cualquier otra capa que pueda ser utilizada para atacar a una aplicación web. No obstante, debe observarse que el requisito 6.6 no tiene como finalidad implementar controles redundantes. El contenido del paquete IP inspeccionado adecuadamente (es decir, proporcionando protección equivalente) por firewalls de red, servidores proxy u otros componentes no tiene que volver a ser inspeccionado por un WAF. La estructura de un paquete IP sigue un modelo en capas, donde cada capa contiene información definida que es puesta en práctica por componentes o nodos de red específicos (físicos o basados en software) que permiten el flujo de información a través de Internet o intranet. La capa que contiene el contenido procesado por la aplicación se denomina capa de aplicación. La tecnología WAF se integra cada vez con más frecuencia en soluciones que incluyen otras funciones, como filtrado de paquetes, uso de proxy, terminación SSL, balanceo de carga, captura de objetos, etc. Estos dispositivos se comercializan de diversas maneras como “firewalls”, “puertas de enlace de aplicaciones”, “sistema de entrega de aplicaciones”, “proxy de seguridad” o con alguna otra descripción. Es importante comprender plenamente las capacidades de inspección de datos de dicho producto a fin de determinar si puede satisfacer el objetivo del requisito 6.6. Tenga en cuenta que el cumplimiento no está garantizado con solo implementar un producto con las capacidades descritas en este documento. La ubicación, la configuración, la administración y la monitorización adecuadas también son aspectos clave de una solución que cumple los requisitos. La implementación de un WAF es una opción para cumplir el requisito 6.6, pero no elimina la necesidad de realizar un proceso seguro de desarrollo de software (requisito 6.3). El objetivo de este documento es proporcionar información complementaria. La información aquí provista no reemplaza ni sustituye el requisito 6,6 de las Normas de Seguridad de Datos (DSS) de la Industria de Tarjetas de Pago. 5 Suplemento informativo: requisito 6.6 sobre revisiones de códigos y firewalls de aplicaciones de las Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS) Capacidades recomendadas Un firewall de aplicaciones web debe: • Cumplir todos los requisitos aplicables de PCI DSS relacionados con los componentes del sistema en el entorno de datos de titulares de tarjetas de crédito. • Reaccionar de forma adecuada (según normas o políticas activas) ante amenazas contra las vulnerabilidades pertinentes identificadas, como mínimo, en el OWASP Top Ten y/o el requisito 6.5 de PCI DSS. • Inspeccionar la entrada de aplicaciones web y responder (permitir, bloquear y/o alertar) según normas o políticas activas, y registrar medidas adoptadas. • Evitar la fuga de datos, lo que implica tener la capacidad de inspeccionar la salida de aplicaciones web y responder (permitir, bloquear, ocultar y/o alertar) según normas o políticas activas, y registrar medidas adoptadas. • Aplicar modelos de seguridad, tanto positivos como negativos. El modelo positivo (“lista blanca”) define comportamientos, entradas, rangos de datos, etc. aceptables y permitidos, y rechaza todo lo demás. El modelo negativo (“lista negra”) define aquello que NO está permitido; los mensajes que coincidan con esas firmas serán bloqueados y el tráfico que no coincida con las firmas (no incluidas en la “lista negra”) será permitido. • Inspeccionar el contenido de páginas web, como el Lenguaje de Marcado de Hipertexto (HTML), el HTML Dinámico (DHTML) y las Hojas de Estilo en Cascada (CSS), y los protocolos subyacentes que entregan contenido, como el Protocolo de Transferencia de Hipertexto (HTTP) y el Protocolo de Transferencia de Hipertexto sobre SSL (HTTPS). (Además del SSL, el HTTPS incluye el Protocolo de Transferencia de Hipertexto sobre TLS). • Inspeccionar los mensajes de servicios web, si estos servicios web están expuestos a la Internet pública. Generalmente, esto incluirá el Protocolo Simple de Acceso a Objetos (SOAP) y el Lenguaje Extensible de Marcas (XML), tanto los modelos orientados a RPC como los orientados a documentos, además del HTTP. • Inspeccionar cualquier protocolo (propietario o estándar) o construcción de datos (propietaria o estándar) que se utilice para transferir datos hacia una aplicación web, o desde ella, cuando dichos protocolos o datos no son inspeccionados en otro punto en el flujo del mensaje. Nota: Los protocolos propietarios presentan desafíos para los productos actuales de firewall de aplicaciones, de modo que pueden requerirse cambios personalizados. Si los mensajes de una aplicación no siguen los protocolos ni las construcciones de datos estándares, quizá no sea razonable solicitar que el firewall de una aplicación inspeccione ese flujo específico del mensaje. En estos casos, la implementación de la opción de evaluación de vulnerabilidades y revisión de códigos del requisito 6.6 probablemente sea la mejor alternativa. • Brindar protección contra amenazas para el mismo WAF. El objetivo de este documento es proporcionar información complementaria. La información aquí provista no reemplaza ni sustituye el requisito 6,6 de las Normas de Seguridad de Datos (DSS) de la Industria de Tarjetas de Pago. 6 Suplemento informativo: requisito 6.6 sobre revisiones de códigos y firewalls de aplicaciones de las Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS) • Admitir la terminación SSL y/o TLS, o ubicarse de tal modo que las transmisiones cifradas sean descifradas antes de que el WAF las inspeccione. Los flujos de datos cifrados no pueden inspeccionarse, salvo que el SSL sea terminado antes que el motor de inspección. Capacidades adicionales recomendadas para determinados entornos • Evitar y/o detectar la alteración de los tokens de sesiones, por ejemplo, al cifrar cookies de sesiones, campos ocultos de formularios u otros elementos de datos utilizados para el mantenimiento del estado de sesiones. • Recibir y aplicar automáticamente actualizaciones dinámicas de firmas de un proveedor u otra fuente. Ante la ausencia de esta capacidad, se debe contar con procedimientos para garantizar la actualización frecuente de las firmas u otros parámetros de configuración del WAF. • Apertura en caso de error (un dispositivo que ha fallado permite el ingreso de tráfico sin inspección) o Cierre en caso de error (un dispositivo que ha fallado bloquea todo el tráfico), según la política activa. Nota: La decisión de permitir que un WAF quede abierto en caso de error debe evaluarse cuidadosamente en cuanto al riesgo que implica la exposición de aplicaciones web sin protección a la Internet pública. El modo Omisión, en el cual no se realiza ningún tipo de modificación al tráfico que lo atraviesa, puede ser aplicable en algunas circunstancias. (Incluso en el modo Apertura en caso de error, algunos WAF agregan encabezados de seguimiento, limpian los HTML de los cuales consideran que no cumplen las normas o realizan otras acciones. Esto puede tener una consecuencia negativa cuando se intente solucionar problemas). • En determinados entornos, el WAF debe admitir los certificados SSL del cliente y realizar la autenticación del cliente mediante certificados utilizando un proxy. Muchas aplicaciones web modernas utilizan certificados SSL de clientes para identificar usuarios finales. Sin esta capacidad, estas aplicaciones no pueden alojarse detrás del firewall de una aplicación. Muchos firewalls modernos de aplicaciones se integrarán con el Protocolo Ligero de Acceso a Directorios (LDAP) o con directorios de otros usuarios, e incluso podrán realizar la autenticación inicial en nombre de la aplicación subyacente. • Algunas aplicaciones de comercio electrónico pueden requerir el uso de un depósito de claves de hardware FIPS. Si esto se aplica a su entorno, asegúrese de que el proveedor del WAF cuente con este requisito en uno de sus sistemas, y tenga en cuenta que esta característica puede aumentar significativamente el costo de la solución. Consideraciones adicionales Si bien los WAF pueden brindar protección contra muchas amenazas de seguridad, también pueden exponer problemas técnicos dentro de una infraestructura. Asegúrese El objetivo de este documento es proporcionar información complementaria. La información aquí provista no reemplaza ni sustituye el requisito 6,6 de las Normas de Seguridad de Datos (DSS) de la Industria de Tarjetas de Pago. 7 Suplemento informativo: requisito 6.6 sobre revisiones de códigos y firewalls de aplicaciones de las Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS) de tener cuidado con los siguientes problemas que pueden dificultar la implementación satisfactoria: • Los sitios que dependen de encabezados, URL o cookies atípicos pueden requerir un ajuste especial. Los WAF, con frecuencia, aplican ajustes máximos para estos componentes. Además, las firmas que buscan pueden filtrar cadenas específicas consideradas como “puntos vulnerables” que, en realidad, pueden ser perfectamente válidas para una aplicación específica. • El contenido que no cumple los RFC del HTML/HTTP o es “atípico” también puede ser bloqueado si no se ajustan los filtros predeterminados. Esto puede incluir cualquier cosa, desde cargas de archivos demasiado grandes hasta contenido enviado en lenguajes o conjuntos de caracteres externos. • DHTML, JavaScript Asíncrono y XML (AJAX), y otras tecnologías dinámicas pueden requerir consideración, pruebas y ajustes especiales. Algunas veces, estas aplicaciones suponen que tienen acceso a un sitio web que es percibido como malicioso por un WAF. • Las aplicaciones que requieren información sobre la sesión de red subyacente, como la dirección IP del cliente, pueden requerir modificación si el WAF actúa como un proxy inverso. Generalmente, estos WAF colocarán la información del cliente en un encabezado HTTP tal vez no esperado por las aplicaciones existentes. Consideraciones importantes • Las revisiones de códigos y las evaluaciones de vulnerabilidades de las aplicaciones descritas en este documento deben realizarse antes de que la aplicación sea implementada en el entorno de producción. • Si se considera el uso de un WAF en modo Apertura en caso de error o modo Omisión, se deben establecer procedimientos y criterios específicos que definan el uso de estos modos de mayor riesgo antes de la implementación. Las aplicaciones web no están protegidas mientras estos modos están activos, por lo que no se recomienda su uso por períodos largos. • Se debe evaluar el impacto de los cambios en el firewall de aplicaciones web para determinar el posible impacto en aplicaciones web relevantes, y viceversa. • Se deben comunicar el tiempo y el alcance de los cambios de producción en el firewall de las aplicaciones web a todas las partes afectadas de la organización. • Es necesario adherirse a todas las políticas y todos los procedimientos, incluidos el control de cambios, la continuidad de la actividad empresarial y la recuperación después de un desastre. • Los cambios en el entorno de producción deben realizarse durante el período de mantenimiento monitorizado. Fuentes adicionales de información Esta lista se proporciona como punto de partida para obtener más información sobre la seguridad de las aplicaciones web. El objetivo de este documento es proporcionar información complementaria. La información aquí provista no reemplaza ni sustituye el requisito 6,6 de las Normas de Seguridad de Datos (DSS) de la Industria de Tarjetas de Pago. 8 Suplemento informativo: requisito 6.6 sobre revisiones de códigos y firewalls de aplicaciones de las Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS) • OWASP Top Ten • Referencia de medidas preventivas de OWASP • Preguntas más frecuentes sobre la seguridad de aplicaciones de OWASP • Build Security In (Departamento de Seguridad Nacional, División Nacional de Seguridad Cibernética [NCSD]) • Analizadores de vulnerabilidades de aplicaciones web (Instituto Nacional de Estándares y Tecnología [NIST]) • Criterios de evaluación de firewalls de aplicaciones web (Consorcio de Seguridad de Aplicaciones Web [WASC]) Acerca del PCI Security Standards Council (Consejo sobre Normas de Seguridad de la Industria de Tarjetas de Pago) El objetivo del PCI Security Standards Council es mejorar la seguridad de las cuentas de pago impulsando la educación y la concienciación sobre las Normas de Seguridad de Datos de la Industria de Tarjetas de Pago y otras normas que aumentan la seguridad de los datos de pago. El PCI Security Standards Council fue creado por las principales marcas de tarjetas de pago, American Express, Discover Financial Services, JCB International, MasterCard Worldwide y Visa Inc., con el fin de proporcionar un foro transparente en el cual todas las partes interesadas pudieran proporcionar información sobre el desarrollo, la mejora y la difusión continuos de las Normas de Seguridad de Datos de la Industria de las Tarjetas de Pago (PCI DSS), los requisitos de seguridad para los Dispositivos de Entrada de PIN (PED) y las Normas de Seguridad de Datos para las Aplicaciones de Pago (PA-DSS). Los comerciantes, los bancos, los procesadores y los proveedores de puntos de venta son alentados a asociarse como organizaciones participantes. El objetivo de este documento es proporcionar información complementaria. La información aquí provista no reemplaza ni sustituye el requisito 6,6 de las Normas de Seguridad de Datos (DSS) de la Industria de Tarjetas de Pago. 9