Desarrollo seguro de software

OBJETIVOS DEL SERVICIO

Ayudar en implementar una metodología de desarrollo seguro donde se establezcan las etapas, las actividades y técnicas necesarias para la construcción y mantenimiento de un proyecto de desarrollo de software, garantizando la obtención de productos de calidad en marcados dentro de las necesidades y lineamientos de la organización. También se puede complementar este servicio con revisiones de código utilizando herramienta para este fin.

ALCANCE

La metodología de desarrollo seguro define las etapas y actividades que se deben seguir para la implementación de nuevos desarrollos, mejoras, desarrollos externos y para dar solución a fallos en el software, garantizando que estos procesos se realicen de forma eficiente, siguiendo los procedimientos establecidos y asegurando en todo momento la calidad del software.

BUENAS PRACTICAS EN DESARROLLO SEGURO (OWASP)

  • Verificar la seguridad al inicio del ciclo
  • Parametrizar las consultas a la base de datos
  • Codificar los datos
  • Validar todas las entradas
  • Implementar controles de autenticación y de identidad
  • Implementar controles de acceso apropiados
  • Proteger los datos
  • Implementar detección de intrusos y registros
  • Utilizar frameworks y librerías de seguridad
  • Manejo de errores y excepciones adecuado

CUMPLIMIENTO DEL REQUERIMIENTO 6.3.2 PCI DSS V3.21

El requerimiento:

Review custom code prior to release to production or customers in order to identify any potential coding vulnerability (using either manual or automated processes) to include at least the following:

  • Code changes are reviewed by individuals other than the originating code author, and by individuals knowledgeable about code-review techniques and secure coding practices.
  • Code reviews ensure code is developed according to secure coding guidelines
  • Appropriate corrections are implemented prior to release.
  • Code-review results are reviewed and approved by management prior to release.

Observaciones para evidenciar su cumplimiento

Considerando el requerimiento 6.3.2 de la norma (PCI DSS V 3.21, p.55), el código desarrollado por las empresas debe ser revisado y corregido antes de su puesta en producción con el fin de evitar robos de información y otros tipos de ataques, ya que las aplicaciones son uno de los componentes que más interesan y atraen a los atacantes (hackers) debido a que la información personal y financiera residente en él. Con estas revisiones se mejora notablemente el aspecto de ciberseguridad (ISO 27032:2012) dentro de las organizaciones.

El código de los programas tanto internos como con presencia externa debe ser revisado por una persona con suficiente conocimiento en desarrollo seguro diferente al desarrollador y que entienda claramente la arquitectura de este sistema para que pueda realizar un acercamiento top-down a la futura revisión. Para que este proceso sea formal se debe contar con un Procedimiento de desarrollo seguro y la correspondiente política de seguridad PCI DSS que obligue a su uso, conocimiento y cumplimiento.

La revisión de código puede ser en algunos casos un proceso muy desgastante, por ello, en algunos casos, es recomendable utilizar una herramienta, pero teniendo en cuenta que el uso de la herramienta no elimina el factor humano que debe analizar y comprender muy bien estos resultados y descartar ‘falsos positivos’ si llegasen a presentarse, para proceder luego a la corrección de las fallas.

La revisión de código debe estar enmarcada dentro del procedimiento ya mencionado, en donde las pruebas funcionales, no funcionales, de seguridad (caja negra y caja blanca) y de esfuerzo (stress), por ejemplo, contribuirán a una mejor efectividad en esta revisión. Los resultados de esta revisión automatizada servirán de evidencia para el auditor o ente externo revisor. También es posible realizar revisiones manuales de las cuales se debe generar un formato. Este formato debe contener al menos nombre del código, líneas de código, fecha de diligenciamiento, responsables, fallas encontradas, correcciones realizadas, lista de verificación con base en el requerimiento 6.5 donde se definen los diferentes tipos de vulnerabilidades para el código y campo de firmas de la gerencia o responsable, firmado por la gerencia donde se evidencie la revisión realizada y los correctivos tomados.

Finalmente, las fases que se deben considerar en el procedimiento de desarrollo seguro deben ser al menos las siguientes:

  • Requerimientos
  • Diseño
  • Codificación
  • Integración
  • Validación y prueba
  • Producción