esenfrdeitptru

La importancia y la realidad del desarrollo seguro

AS-047-2022

Fecha: 11/Mayo/2022

Resumen:

Establecer y definir las mejores prácticas para producir código seguro, que garanticen que la seguridad sea parte de los sistemas de información, tiene el propósito de disminuir el riesgo de que el software se envíe a producción con vulnerabilidades explotables.

El apego a las directrices de seguridad y el manejo de mejores prácticas para producir código seguro lo debe aplicar el personal técnico de la Institución que desarrolla software para la Escuela Politécnica Nacional y sus unidades desconcentradas. Se  debe desarrollar código seguro y definirlo como una práctica desde el inicio del ciclo de vida del sistema a diseñar, implementar y/o actualizar.

Requisitos de Seguridad.

La falta de tiempo y la falta de un enfoque cohesivo son las principales barreras para crear un código seguro.

La confianza en el código existente es uno de los factores que aumenta el riesgo de que el software se envíe con vulnerabilidades explotables. Abordar esta desconexión de lo que constituye un código seguro es necesario para que los desarrolladores creen un código de calidad que también sea seguro.

Al principio, esto puede significar aumentar los plazos para dar a los desarrolladores más tiempo para codificar correctamente, aunque es probable que ese gasto de tiempo al comienzo del proceso de codificación se compense más tarde debido a la menor necesidad de revisiones del programa y parches, posteriores a la implementación. Considerar eliminar la posibilidad de una brecha puede terminar ahorrando cientos de horas y posiblemente miles de dólares en pérdida.

Con los antecedentes expuestos y con base a la norma ISO 27001, y con base a la directriz institucional “Directrices de seguridad de la red de computadoras” sección 5.4 “Directriz de bases de datos de credenciales”, y sección 5.5 “Directriz de seguridad de sistemas informáticos”.

Se detallan a continuación los principales requisitos para los controles de seguridad:

  1. Validación de los datos de entrada: Validar que los datos son correctos y apropiados
  2. Control de procesamiento interno: Verificaciones de validación en las aplicaciones para detectar cualquier corrupción de la información por errores de procesamiento o actos deliberados.
  3. Validar los datos de salida: para asegurar que el procesamiento de la información almacenada es correcto y adecuado.
  4. Controles criptográficos para la protección de la información: métodos criptográficos para la autenticación y seguridad en la transferencia de datos.
  5. Implementar un sistema de gestión de llaves para apoyar el uso de técnicas criptográficas.
  6. Los servicios de las aplicaciones pueden usar métodos de autenticación seguros, por ejemplo, el uso de una llave criptográfica pública y firmas digitales para reducir los riesgos. Además, cuando se necesiten estos servicios, se pueden usar terceras partes confiables.
  7. Implementar un procedimiento para controlar la instalación de software.
  8. Los datos de prueba deben seleccionarse cuidadosamente, así como también deben protegerse y controlarse.
  9. Restringir el acceso al código fuente de los programas.
  10. Controlar la implementación de cambios.
  11. Evitar las oportunidades de fuga de información.
  12. Obtener información oportuna sobre las vulnerabilidades técnicas de los sistemas.
  13. Definir los procesos de suministro de acceso y de autorización para usuarios de los sistemas de información, al igual que para usuarios privilegiados o técnicos.
  14. Interfaces con el ingreso o seguimiento, o los sistemas de detección de fuga de datos.
  15. Si los sistemas se adquieren, se debería seguir un proceso formal de adquisición y pruebas. Los contratos con los proveedores deberían tener en cuenta los requisitos de seguridad de este protocolo.
  16. Requisitos de protección de información confidencial.
  17. Requisitos de resiliencia contra los ataques: Apego a directrices de respaldo, respaldo del código fuente, respaldos de configuraciones.
  18. La orientación sobre la seguridad en el ciclo de vida de desarrollo del software: 1) la seguridad en la metodología de desarrollo de software; 2) las directrices de codificación seguras para cada lenguaje de programación usado.
  19. Orientar sobre la seguridad en el ciclo de vida de desarrollo del software: 1) la seguridad en la metodología de desarrollo de software; 2) mejores prácticas para la codificación seguras para cada lenguaje de programación usado.
  20. Puntos de chequeo de seguridad en los hitos del proyecto.
  21. Auditorías internas con las recomendaciones para la remediación o justificación.
  22. Establecer acuerdos de licencias, propiedad de código y derechos de propiedad intelectual.

Mejores Prácticas Para La Codificación Segura

Con base a los requisitos de seguridad y los principales aspectos definidos en el OWASP, estas son las mejores prácticas para una codificación segura:

  1. Los desarrolladores deberían recibir formación/capacitación, para el uso de estándares de codificación,  uso y prueba, y su uso debería verificarse mediante la revisión del código.
  2. Los desarrolladores debe apegarse a los requisitos de seguridad identificados en el presente documento, también registrados en las “Directrices de seguridad de la red de computadoras”, este control definido en la lista de Owasp como, C1: “Definir los requerimientos de Seguridad”, está en primer lugar.
  3. C2: Apalancamiento en librerías y marcos de seguridad.
  4. C3: Acceso seguro a la base de datos.
  5. C4: Codificación y escape de datos.
  6. C5: Validar todos los datos de entrada.
  7. C6: Implementar la identidad digital.
  8. C7: Aplicar controles de acceso.
  9. C8: Proteger los datos en todos las partes.
  10. C9: Implementar el registro y monitoreo de seguridad.
  11. C10: Manejar todos los errores y las excepciones.

OWASP Application Security Verification Standard (ASVS) proporciona una base para probar los controles técnicos de seguridad de las aplicaciones web y también proporciona a los desarrolladores una lista de requisitos para el desarrollo seguro, los cuales sirven para protegerse contra vulnerabilidades como Cross-Site Scripting (XSS) y la inyección SQL.

Referencias:

https://blog.segu-info.com.ar/2022/05/la-importancia-y-la-realidad-del.html
http://intranet.epn.edu.ec/index.php/comunidad-politecnica/descargas/viewcategory/58-directrices-informaticas
https://owasp.org/www-project-application-security-verification-standard/