Pci DSS 6.3
Pci DSS 6.3
Si procesa, transmite o almacena datos de tarjetas de crédito en su software, es probable que esté
sujeto al Estándar de seguridad de datos de la industria de tarjetas de pago (PCI DSS). Una de las
secciones más onerosas de PCI DSS es el requisito 6: desarrollar y mantener sistemas y
aplicaciones seguros. En particular, PCI DSS 6.3 requiere que las organizaciones "... incorporen la
seguridad de la información durante todo el ciclo de vida de desarrollo de software [SDLC] ...". Un
procedimiento de prueba específico para los auditores es "Examinar los procesos de desarrollo de
software escritos para verificar que la seguridad de la información se incluya durante todo el ciclo
de vida". Si tiene un auditor no tan estricto, simplemente escribir que incorpora seguridad en el
SDLC en la documentación sin practicarlo realmente puede ser suficiente (esto a menudo sucede
en la práctica). Sin embargo, los auditores más rigurosos pueden profundizar y exigir pruebas de
que está incorporando seguridad de la información en todo el SDLC para PCI DSS 6.3. Las
organizaciones generalmente recurren a los siguientes tipos de evidencia
Claramente, sin embargo, esto no cubre el espectro de todo el SDLC. Puede proporcionar una
prueba real de un SDLC seguro haciendo lo siguiente:
Proporcione evidencia de que los requisitos fueron probados, ya sea utilizando las mismas
herramientas del paso 1 o resultados de una solución de prueba como HP Quality Center que
define los scripts / pasos que los probadores siguieron y los resultados de las pruebas.
Seguir estos pasos es un gasto inteligente en el cumplimiento de PCI, ya que no solo cumplirá con
PCI DSS 6.3, sino que también reducirá el costo de proteger sus sistemas con los requisitos de
seguridad del software.
Aplicación de software segura definida
El requisito 6.3 de PCI se centra en el ciclo de vida de desarrollo de software o SDLC. El requisito
6.3 de PCI establece que todas las aplicaciones de software internas y externas deben
desarrollarse de forma segura, de acuerdo con las PCI DSS, las mejores prácticas de la industria y
con la seguridad de la información incorporada.
Una aplicación de software desarrollada de forma segura debe tener varias capacidades. Debe
poder funcionar en una aplicación o sistema operativo reforzado. La aplicación debe cifrar datos
confidenciales en el almacenamiento y en la transmisión. Debe funcionar en un sistema que
admita antivirus. El software desarrollado de forma segura admite controles de autenticación.
También debe poder parchearse y actualizarse continuamente.
Las aplicaciones de software seguras deben desarrollarse de acuerdo con las mejores prácticas de
la industria. Hay varias metodologías de desarrollo para trabajar (Waterfall, Scrum), pero de
acuerdo con PCI DSS, la mejor manera de garantizar que desarrolle aplicaciones de software de
forma segura es incorporar la seguridad de la información en varias fases de su proceso de
desarrollo: recopilación de requisitos, diseño, desarrollo, y pruebas.
Comencemos hablando sobre cómo el PCI DSS puede ser parte de su SDLC y lo que eso significa.
Debemos asegurarnos de que, cuando se desarrolle una aplicación, esa aplicación se pueda poner
en producción, se pueda endurecer por completo y sea totalmente compatible con todos los
requisitos de las PCI DSS. Por lo general, la orientación que les doy a los clientes cuando estoy
trabajando con ellos es: debe funcionar en una aplicación o sistema operativo reforzado y que
funcione completamente. Necesita encriptar los datos en almacenamiento y transmisión. Necesita
operar en un sistema que soporte antivirus. Necesitamos poder parchearlo y actualizarlo. Necesita
soportar controles de autenticación. A medida que avanzamos por el PCI DSS, cada uno de estos
controles tiene algún aspecto de la gestión del entorno de la tarjeta de crédito. Queremos
asegurarnos de que las aplicaciones que está desarrollando admitan ese entorno seguro y
protegido.
Lo siguiente de lo que habla el PCI DSS es que las aplicaciones deben desarrollarse de acuerdo con
las mejores prácticas. Eso es bastante fácil. Google busca SDLC y hay Cascada, Scrum y muchas
otras metodologías de desarrollo que puedes usar. Efectivamente, lo que estamos buscando son
varias fases, desde una perspectiva de evaluación.
El siguiente es el diseño. Luego buscamos el método y significa que usted ha utilizado el diseño de
esta aplicación para asegurarse de que esta aplicación se desarrollará de acuerdo con las
especificaciones que haya requerido. Tenemos consideraciones de diseño en torno al cifrado, la
autenticación (cómo puede autenticarse). También tenemos todos los requisitos de contraseña;
¿vas a permitir que la aplicación se autentique de forma nativa, o vas a conectarla a tu servidor de
autenticación? Hay muchas cosas que buscamos en términos de la fase de diseño, pero lo que
estamos buscando es que haya diseñado para cumplir con las especificaciones de seguridad que se
han llamado desde su fase de requisitos.
Después de desarrollar esa aplicación, pasamos a una fase de prueba. Desde una perspectiva de
evaluación, solicitamos sus casos de prueba, mostrándome que todos los requisitos de seguridad y
todas las funciones de diseño y seguridad que ha diseñado se realizan de forma segura y que en
realidad cumple con todos esos requisitos. Una vez más, la intención es que después de que la
aplicación se haya desarrollado y puesto en producción, esta aplicación se haya endurecido por
completo.
Pasamos de requisitos, diseño, desarrollo, prueba y ahora pasamos a producción. Como parte de
su SDLC, buscamos los métodos y medios de cómo empuja esa aplicación a la producción de
manera segura. El requisito 6 requiere que tengamos una separación de deberes. Hay un par de
lugares donde se habla de la separación de tareas, pero específicamente dice que tenemos un
lugar separado para entornos de desarrollo de la producción, y personas separadas en desarrollo
que se utilizan para la gestión o la producción.
Por último, como parte de un SDLC, tenemos el final de la vida. Como asesor, realmente no
cuestionamos lo que está haciendo durante esas fases. Es posible que deseemos asegurarnos de
que esté cubriendo todos los atributos de seguridad necesarios y que esos atributos de seguridad
cumplan con todos los requisitos de seguridad establecidos por el PCI DSS. Incluso si desarrolla la
aplicación, estas aplicaciones deben desarrollarse de tal manera que sean seguras cuando se
pongan en producción y sin ninguna vulnerabilidad.
El Estándar de seguridad de datos de la industria de tarjetas de pago (PCI DSS) tiene 12 requisitos
principales, pero dentro de ellos tiene una multitud de requisitos secundarios. Si bien muchos de
estos son sencillos, hay varios que pueden dejar incluso perplejo a la persona tecnológicamente
inteligente.
Incorpore seguridad de la información durante todo el ciclo de vida del desarrollo de software.
Si bien 6.3 es a menudo uno de los requisitos más ignorados dentro del DSS, se puede aprovechar
para madurar sus esfuerzos de desarrollo de software. Por lo tanto, analicemos este requisito
punto por punto.
La intención aquí es que cuando una aplicación entra en producción, se puede colocar en un
entorno y una función completamente reforzados, así como operar, de manera compatible con
PCI. Esto significa que todos los requisitos que encontramos en PCI DSS 1 a 8, más 10, cuando
corresponda, deben integrarse en el software. Los ejemplos incluyen el enmascaramiento de los
datos del titular de la tarjeta, el cifrado, la autenticación, el registro, la transmisión segura, etc.
Es imperativo que todos los desarrolladores comprendan el marco de seguridad contra el que
intentan desarrollarse defensivamente. El PCI DSS llama a OWASP; sin embargo, esto se centra
solo en las 10 principales vulnerabilidades de las aplicaciones basadas en la web. Por lo tanto,
también recomiendo echar un vistazo al CWE Top 25 como marco de seguridad.
Punto 3: incorpore la seguridad de la información a lo largo del ciclo de vida del desarrollo de
software.
A menudo escucho: "Usamos OWASP como nuestro SDLC"; sin embargo, es importante
comprender que el SDLC es un "ciclo de vida de desarrollo de software", mientras que el OWASP
SKF es un marco de seguridad. Si bien están relacionados, son diferentes. La mayoría de las
organizaciones probablemente utilizarán una metodología de desarrollo basada en AGILE, JAD /
RAD, Waterfall o alguna variante de estas.
Desde la perspectiva de PCI DSS, no importa qué metodología se use para desarrollar software
siempre que existan estas fases de desarrollo distintas:
Requisitos: en Agile, a menudo escuchamos los requisitos llamados "historias", pero estas historias
definen el estado final. En algunos casos, los requisitos se documentan como lo haría una política
(es decir, "la aplicación debe cifrar los datos en reposo"). Realmente no importa cómo los llames,
porque todos son lo mismo: los requisitos definen cómo funcionará la aplicación. En una tienda de
desarrollo madura, veremos "especificaciones de usuario, requisitos de especificaciones técnicas";
sin embargo, al observar los requisitos específicos, vamos a querer ver los requisitos de seguridad.
Esto refleja tanto el primer como el segundo puntos anteriores. También tenga en cuenta que los
requisitos deben cubrir los requisitos de PCI DSS aplicables, como se discutió anteriormente.
Diseño: en la fase de diseño de un SDLC, buscamos garantizar que los requisitos de seguridad que
se mencionaron en la fase de requisitos se diseñen en la aplicación. Además, no olvide comprobar
que el diseño en sí se basa en prácticas seguras (requeridas en los puntos 1 y 2 anteriores).
Cuando se realiza el diseño, generalmente debe haber una bifurcación para la fase de Prueba y la
fase de Desarrollo . Se requeriría que el equipo de prueba desarrollara sus guiones de prueba y
casos de prueba. Esto lleva tiempo, por lo que la mayoría de las organizaciones comenzarán esto
como parte de la fase de diseño, ya que están "diseñando los casos de prueba" para la aplicación.
Desarrollo: durante esta fase queremos asegurarnos de que los codificadores hayan recibido
capacitación en desarrollo de código seguro en el último año. También recomiendo saber lo
suficiente sobre cómo desarrollar software para saber cuándo las respuestas proporcionadas son
suficientes. Las pruebas para esto se encuentran en los requisitos de PCI DSS 6.5.1 a 6.5.10.
Cuando proporcione capacitación de código seguro anual a su personal, asegúrese de conservar
evidencia de que la capacitación se llevó a cabo y cubrió los atributos necesarios para defender sus
aplicaciones desarrolladas contra el ataque
Prueba: Hay dos formas de saber que la aplicación es segura cuando entra en producción: 1) El
equipo de prueba ha revisado el código fuente y / o ha realizado las pruebas empíricas apropiadas
para demostrar que la aplicación es segura, y 2) La prueba se ejecutó contra los requisitos para
garantizar que los requisitos de seguridad previamente identificados se hayan cumplido y se
implementen correctamente. Debe estar preparado para presentar registros de revisión de
código, evaluaciones de seguridad automáticas o manuales, casos de prueba de aceptación de
seguridad / regulación y resultados de cada uno, demostrando que La aplicación es segura y está
libre de vulnerabilidades.
Etapa: esta fase de desarrollo es donde buscamos asegurarnos de que haya SOD (segregación de
funciones) entre el personal de producción y el personal de desarrollo. Buscamos asegurar que el
personal de desarrollo no pueda entrar en producción y el personal de producción no pueda
entrar en desarrollo. También hay diferentes redes. Este control está destinado a garantizar que el
código no se promocione a producción sin los controles de seguridad correctos definidos por el
SDLC. El argumento contrario a esto es a menudo: "Somos una tienda unipersonal, por lo que no
tenemos SOD". Si encuentra esto, estoy feliz de tener una conversación sobre cómo superar este
desafío.
End of Life (EOL): la última fase de un SDLC es EOL. En esta fase, buscamos información para
definir cómo se da de baja la aplicación para garantizar que cualquier dato residual del titular de la
tarjeta se maneje / elimine de forma segura. Los detalles aquí están algo capturados en el
requisito 9.8 de PCI DSS.
Con suerte, los consejos que he proporcionado aquí lo ayudarán a establecer el camino para
cumplir con el requisito 6.3 de PCI DSS. Haga clic aquí para obtener más información sobre el
desarrollo de software seguro y cómo su empresa podría beneficiarse de una evaluación del ciclo
de vida del software seguro con certificación PCI.