Skip to main content

Mejora la seguridad del cumplimiento de PCI con SAST y SCA

Escrito por
Headshot of DeveloperSteve Coochin

DeveloperSteve Coochin

blog feature snyk open source blue

8 de febrero de 2022

0 minutos de lectura

El Estándar de Seguridad de Datos de la Industria de Tarjetas de Pago, también conocido como PCI DSS, es un proceso exhaustivo que revisa los sistemas y las políticas de una empresa para manejar y almacenar datos confidenciales de titulares de tarjetas.

PCI DSS es una parte muy importante de la industria de pagos. Ayuda a garantizar que los datos de los usuarios finales se mantengan protegidos y seguros. Además, lo mantiene y administra el PCI Security Standards Council, que también establece aspectos como los requisitos que deben cumplir los proveedores acreditadores para obtener la certificación PCI DSS. Actualmente, MasterCard y Visa exigen que los comercios y proveedores de servicios cumplan con PCI DSS, salvo algunas excepciones. Si se produce una filtración y la entidad afectada no cumplía con PCI DSS en el momento del incidente, deberá pagar sanciones adicionales, como multas.

Estas verificaciones son fundamentales no solo para la industria de pagos en general, sino también para generar confianza entre los usuarios, que saben que sus datos están protegidos. El proceso de cumplimiento de PCI consiste en una serie de verificaciones, que suele realizar un tercero acreditado, para garantizar que existan procesos seguros de manejo de datos.

En esta publicación, analizaremos en más detalle los requisitos de PCI DSS y cómo el uso de herramientas de pruebas de seguridad de aplicaciones estáticas (SAST) y análisis de composición de software (SCA) puede ayudarte a cumplirlos con mayor facilidad. También veremos cómo usar Snyk para cubrir tus necesidades de SAST y SCA para PCI DSS. ¡Comencemos!

Requisitos de cumplimiento de PCI

PCI DSS tiene 12 requisitos para crear y mantener una red y sistemas seguros. Estos requisitos abarcan aspectos como el acceso a datos confidenciales de titulares de tarjetas, sistemas internos e infraestructura de aplicaciones, así como el desarrollo y mantenimiento de sistemas y aplicaciones seguros.

Esta es la lista completa de requisitos, a grandes rasgos:

  1. Instalar y mantener una configuración de firewall para proteger los datos de titulares de tarjetas. El propósito de un firewall es analizar todo el tráfico de red y bloquear el acceso de redes que no sean de confianza al sistema.

  2. Cambiar las contraseñas predeterminadas de los sistemas y otros parámetros de seguridad proporcionados por los proveedores. Las contraseñas predeterminadas se pueden descubrir fácilmente mediante información pública y personas malintencionadas pueden usarlas para obtener acceso no autorizado a los sistemas.

  3. Proteger los datos almacenados de titulares de tarjetas. El cifrado, el hashing, el enmascaramiento y el truncamiento son métodos que se usan para proteger estos datos.

  4. Cifrar la transmisión de datos de titulares de tarjetas a través de redes públicas y abiertas. El cifrado sólido, que incluye usar solo claves y certificados de confianza, reduce el riesgo de ser el objetivo de ataques informáticos por parte de personas malintencionadas.

  5. Proteger todos los sistemas contra el malware y actualizar con regularidad el software antivirus. El malware puede ingresar a una red de muchas maneras, como mediante el uso de Internet, el correo electrónico de los empleados, los dispositivos móviles o los dispositivos de almacenamiento. El software antivirus actualizado o el software antimalware complementario reducirá el riesgo de explotación mediante malware.

  6. Desarrollar y mantener sistemas y aplicaciones seguros. Las vulnerabilidades en los sistemas y las aplicaciones permiten que personas sin escrúpulos obtengan acceso privilegiado. Se deben instalar de inmediato parches de seguridad para corregir las vulnerabilidades y evitar la explotación y el compromiso de los datos de titulares de tarjetas.

  7. Restringir el acceso a los datos de titulares de tarjetas únicamente al personal autorizado. Se deben usar sistemas y procesos para restringir el acceso a estos datos según la necesidad de conocerlos.

  8. Identificar y autenticar el acceso a los componentes del sistema. Se debe asignar una identificación única (ID) a cada persona que tenga acceso a los componentes del sistema, para que se pueda llevar un registro del acceso a los sistemas de datos críticos.

  9. Restringir el acceso físico a los datos de titulares de tarjetas. El acceso físico a estos datos o a los sistemas que los almacenan debe ser seguro para evitar el acceso no autorizado o la extracción de datos.

  10. Registrar y monitorear todo acceso a los datos de titulares de tarjetas y a los recursos de red. Debe haber mecanismos de registro para hacer un seguimiento de las actividades de los usuarios, algo fundamental para prevenir, detectar o minimizar el impacto de las filtraciones de datos.

  11. Probar los sistemas y procesos de seguridad con regularidad. Continuamente se descubren nuevas vulnerabilidades. Es necesario probar con frecuencia los sistemas, procesos y software para detectar vulnerabilidades que podrían aprovechar personas malintencionadas.

  12. Mantener una política de seguridad de la información para todo el personal. Una política de seguridad sólida incluye asegurarse de que el personal entienda la confidencialidad de los datos y su responsabilidad de protegerlos.

La lista completa de requisitos de cumplimiento, disponible en el sitio web del PCI Security Standards Council, ofrece muchos más detalles. Por ejemplo, el punto 6 sobre el desarrollo y mantenimiento de sistemas seguros abarca tipos específicos de vulnerabilidades, como:

  • Cross Site Scripting (XSS)

  • Fallos de inyección (SQL Injection)

  • Desbordamientos de búfer

  • Almacenamiento criptográfico inseguro

  • Comunicaciones inseguras

  • Manejo inadecuado de errores

  • Control de acceso inadecuado

  • Falsificación de solicitudes entre sitios (CSRF)

  • Fallos en la autenticación y la administración de sesiones.

Si usas Snyk, todos estos problemas de seguridad se pueden detectar fácilmente y corregir de forma automática dentro de los flujos de trabajo y pipelines que usa tu equipo.

Cómo pueden ayudarte Snyk Code y Snyk Open Source

Para mostrar el cumplimiento de PCI en acción, usaremos Snyk para proteger PrestaShop, una plataforma de comercio electrónico de código abierto del ecosistema PHP. Snyk ofrece varias maneras de detectar y corregir problemas. En este ejemplo, usaremos la CLI de Snyk para analizar las dependencias en busca de vulnerabilidades y, luego, PHPStorm con el plugin de Snyk para analizar el código.

Para seguir el ejemplo a continuación, necesitarás tener instalados Git, PHP y el administrador de dependencias Composer.

Página de inicio de comercio electrónico con un banner promocional, un menú de navegación, una barra de búsqueda y productos populares, como ropa y láminas enmarcadas

Configura tu entorno

Para seguir los pasos, tendrás que crear una cuenta gratuita de Snyk. Puedes comenzar en pocos minutos y no necesitas una tarjeta de crédito.

Después, tendrás que instalar la CLI de Snyk localmente. Lo mejor de la CLI de Snyk es que solo necesitas instalarla una vez para toda la plataforma. Así, puedes usarla para analizar tu código, dependencias, contenedores e IaC. Para empezar rápidamente, consulta nuestra guía rápida de la CLI de Snyk.

A continuación, clona el repositorio de PrestaShop (versión 1.7.8.3 al momento de escribir esta publicación) en tu entorno local:

git clone https://github.com/PrestaShop/PrestaShop.git

Una vez instalado PHP Composer, ejecuta:

composer update

Busca vulnerabilidades de código abierto

Primero, revisemos si hay vulnerabilidades de código abierto en el manifiesto de Composer. Para hacerlo, ejecuta lo siguiente en el directorio raíz del repositorio clonado:

snyk test

En este caso, se detectan 8 problemas y 11 rutas vulnerables, junto con algunas sugerencias para corregirlos.

Escaneo de terminal que muestra vulnerabilidades de gravedad alta y crítica en dependencias de PHP, incluidas vulnerabilidades de recorrido de directorios y ejecución remota de código

Ante estas vulnerabilidades, parece que solo tendré que actualizar las bibliotecas a una versión que ya incluya las correcciones. Por suerte, Snyk no solo puede identificar rutas vulnerables, sino también corregir problemas mediante un pull request automático en el repositorio conectado.

Para obtener más información sobre cómo conectar un repositorio, consulta nuestra documentación sobre integraciones con repositorios Git.

Busca vulnerabilidades en tu código

Ahora que viste la CLI de Snyk en acción, probemos si hay vulnerabilidades en el código con PHPStorm y el plugin de Snyk.

Esto revisará cada archivo de código del proyecto para detectar posibles vulnerabilidades. En nuestro ejemplo, se encontraron 252 posibles vulnerabilidades (99 [high], 131 [medium], 22 [low]) en el código, que deberán investigarse más a fondo.

Análisis de seguridad de Snyk Code en un IDE que muestra vulnerabilidades de cross-site scripting (XSS) en archivos PHP

Para corregir estas vulnerabilidades, puedo revisar las secciones de código destacadas en el análisis, investigar más y documentar mis hallazgos y correcciones. Usar PHPStorm con el plugin de Snyk facilita este proceso porque puedo revisar cada archivo e investigar más a fondo el código.

El plugin de Snyk para PHPStorm también me permite rastrear cada función de un archivo y ofrece ejemplos de correcciones usadas en otros proyectos que tenían el mismo tipo de problema.

Interfaz de análisis de seguridad que muestra vulnerabilidades en el código y una corrección resaltada de secuencias de comandos entre sitios en código PHP

Cumple con PCI

Desde desarrolladores hasta CTO y CISO, el proceso de cumplimiento de PCI DSS no tiene por qué ser complicado si se cuenta con procesos y herramientas que lo agilicen. Conocer los requisitos y disponer de las herramientas y los procesos necesarios para mantener el cumplimiento es fundamental. Además, para quienes desarrollan y leen esta publicación, documentar el código es un requisito clave de PCI y una buena manera de registrar cambios y notas para futuros desarrolladores.

Como viste, Snyk puede ayudarte a agilizar el proceso de cumplimiento de PCI DSS. Y lo mejor es que puedes integrar fácilmente los análisis de Snyk en tus pipelines de CI/CD y de código, lo que ayuda a automatizar y documentar los problemas en curso. Regístrate para obtener una cuenta gratuita y mantener el cumplimiento con mayor facilidad.

Protege tu código con información de vanguardia

Conoce todas las funcionalidades de SAST de Snyk Code en solo 30 minutos.