TI-GU-002 Guia Desarrollo Seguro V02
TI-GU-002 Guia Desarrollo Seguro V02
TI-GU-002 Guia Desarrollo Seguro V02
TABLA DE CONTENIDO
1. PROCESO ......................................................................................................................................................... 3
2. SUB PROCESO ................................................................................................................................................. 3
3. OBJETIVO ......................................................................................................................................................... 3
4. ALCANCE .......................................................................................................................................................... 3
5. DEFINICIONES.................................................................................................................................................. 3
6. DISPOSICIONES GENERALES……………………...………………………………………………………………...4
7. CONTENIDO...................................................................................................................................................... 4
71. PRINCIPIOS DE DESARROLLO SEGURO………………………………………………...…………………………4
7.2 CONSIDERACIONES PARA EL DESARROLLO SEGURO .............................................................................. 6
7.3 OTROS LINEAMIENTOS A TENER EN CUENTA ............................................................................................. 9
7.4 GESTIÓN DE CONTRASEÑAS ...................................................................................................................... 10
Página 2 de 10
Código: A3-GU-02
Versión:02
GUÍA DE DESARROLLO SEGURO
Vigencia:04/10/2021
1. PROCESO
2. SUB PROCESO
NA.
3. OBJETIVO
4. ALCANCE
Comprende los lineamientos inmersos en el ciclo de vida del desarrollo de software incluyendo principios seguros y
consideraciones para el desarrollo seguro que definen acciones e impactos de seguridad a nivel de aplicación, de
sistema operativo y de base de datos.
5. DEFINICIONES
• Buffer overflow o Buffer overrun (Desbordamiento de búfer): es un error de software que se produce cuando
un programa no controla adecuadamente la cantidad de datos que se copian sobre un área de memoria
reservada a tal efecto (buffer): Si dicha cantidad es superior a la capacidad preasignada, los bytes sobrantes se
almacenan en zonas de memoria adyacentes, sobrescribiendo su contenido original, que probablemente
pertenecían a datos o código almacenados en memoria. Esto constituye un fallo de programación.
• Inyección SQL: es un método de infiltración de código intruso que se vale de una vulnerabilidad informática
presente en una aplicación en el nivel de validación de las entradas para realizar operaciones sobre una base
de datos.
• FTP: el Protocolo de transferencia de archivos (en inglés File Transfer Protocol o FTP) es un protocolo de red
para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol),
basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para
descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en
cada equipo.
Página 3 de 10
Código: A3-GU-02
Versión:02
GUÍA DE DESARROLLO SEGURO
Vigencia:04/10/2021
6. DISPOSICIONES GENERALES
• En la fase de diseño y levantamiento de requerimientos, los líderes del proceso deben identificar los
requerimientos establecidos por las normativas o estándares aplicables, como son ISO 27001, Ley 1581 de
protección de datos personales, así como lo establecido por la Oficina de Tecnología en los lineamientos del
Ciclo de Vida de Software.
• Todo proveedor o tercero que participe en las etapas de diseño, desarrollo, implementación o mantenimiento
de aplicaciones debe firmar el acuerdo de confidencialidad establecido por la USPEC.
• Todo tercero debe seguir estándares, buenas prácticas o modelos de madurez de desarrollo seguro, basándose
en (o publicadas por) OWASP, NIST, SANS, SAMM, BSIMM o MICROSOFT. Al respecto de esta consideración,
en el presente documento se contemplaran algunas de las vulnerabilidades referidas en OWASP (Validación
de datos de entrada, Administración de autenticación y contraseñas, Administración de sesiones, Control de
Acceso, Prácticas Criptográficas, Manejo de errores y Logs, y Protección de datos).
• Los riesgos que se encuentren a lo largo del ciclo de vida de desarrollo deben quedar documentados
(principalmente aquellos que no han sido gestionados o que deben ser aceptados por la USPEC).
• Para los desarrollos que se realicen o contraten, se debe asegurar los derechos de autor y la propiedad
intelectual del código fuente a la USPEC, para lo cual el software se debe registrar y patentar, de acuerdo a la
legislación colombiana.
• Se debe contar con los ambientes de desarrollo, pruebas y producción, teniendo en cuenta que la separación
de funciones y ambientes lógicos de trabajo es un método para reducir el riesgo accidental o deliberado del mal
uso del sistema.
• Así mismo, es necesario implementar para todos los ambientes, a todos y cada uno de los equipos software de
seguridad (antivirus, privilegios de acceso y otros que apliquen), con el propósito de proteger la integridad de
los sistemas informáticos y de telecomunicaciones.
• Se debe contemplar el Principio del mínimo privilegio, los intervinientes en el desarrollo de software deben tener
habilitado exclusivamente los derechos de acceso (escritura, lectura, etc.) a los objetos que ineludiblemente
requieran para cumplir las funciones del puesto que ocupan.
7. CONTENIDO
• Se debe contar con ambiente de producción, pruebas y desarrollo y estos deben ser independientes.
Estos ambientes deben ser lo más similar posible, a efectos de prevenir situaciones en las cuales el
software desarrollado presente comportamientos distintos y errores en el ambiente de pruebas y
producción.
• Los desarrolladores deben realizar su trabajo exclusivamente en ambiente de desarrollo, nunca en otros
ambientes directamente.
Página 4 de 10
Código: A3-GU-02
Versión:02
GUÍA DE DESARROLLO SEGURO
Vigencia:04/10/2021
• Los nombres de dominio para los ambientes de producción, pruebas y desarrollo, deben ser diferentes
a efectos de evitar confusión durante la ejecución de las pruebas, puesta en producción y desarrollo.
• Es necesario que se tenga instalado el mismo manejador de base de datos y versión en los ambientes
de prueba y producción. Si esto no es posible, usar herramientas automatizadas de propagación de una
base de datos a otros.
• Se debe contemplar incluir réplicas de todos los componentes con los cuales el software tendrá
interoperación en producción incluyendo: otras aplicaciones cliente servidor, bases de datos
relacionales, componentes middleware, interfaces, demonios (daemons), procesos personalizados,
utilidades FTP y otros.
• “Partir siempre de un modelo de permisos mínimos, es mejor ir escalando privilegios por demanda de
acuerdo a los perfiles establecidos en las etapas de diseño.
• Si se utiliza un lenguaje que no sea compilado, asegurarse de limpiar el código que se pone en
producción, para que no contenga rutinas de pruebas, comentarios o cualquier tipo de mecanismo que
pueda dar lugar a un acceso indebido.
• Nunca confiar en los datos que ingresan a la aplicación, todo debe ser verificado para garantizar que lo
que está ingresando a los sistemas es lo esperado y además evitar inyecciones de código.
• Hacer un seguimiento de las tecnologías utilizadas para el desarrollo. Estas van evolucionando y
cualquier mejora que se haga puede dejar obsoleta o inseguras versiones anteriores.
• Todos los accesos que se hagan a los sistemas deben ser validados.
• Para intercambiar información sensible utilizar protocolos para cifrar las comunicaciones, y en el caso de
almacenamiento la información confidencial debería estar cifrada utilizando algoritmos fuertes y claves
robustas.
• Cualquier funcionalidad, campo, botón o menú nuevo debe agregarse de acuerdo a los requerimientos
de diseño. De esta forma se evita tener porciones de código que resultan siendo innecesarias.
• Cualquier cambio que se haga debería quedar documentado, esto facilitará modificaciones futuras.
• Poner más cuidado en los puntos más vulnerables, no hay que olvidar que el nivel máximo de seguridad
viene dado por el punto más débil.”1
1
https://www.welivesecurity.com/la-es/2014/02/28/10-principios-basicos-para-desarrollo-seguro/
SISTEMA INTEGRADO DE GESTIÓN INSTITUCIONAL – SIGI
OFICINA ASESORA DE PLANEACIÓN Y DESARROLLO
Una vez descargado o impreso este documento se considerará una COPIA NO CONTROLADA
Página 5 de 10
Código: A3-GU-02
Versión:02
GUÍA DE DESARROLLO SEGURO
Vigencia:04/10/2021
Divulgación de las buenas prácticas en el desarrollo seguro de software: La socialización de las directrices impartidas
a través de este documento están a cargo de la OTEC, con el fin de garantizar su uso y apropiación en todos los
procesos de desarrollo adelantados desde y para la Entidad. Se debe hacer énfasis en la importancia del buen uso
de la aplicación, así como la confidencialidad que maneja, las restricciones, roles y perfiles, manejos de usuarios y
contraseñas con los que va a contar la aplicación.
Manejo de Entradas; Nunca confíe en las entradas (Buenas prácticas en el desarrollo de software)
• Una de las medidas más importante de defensa que los desarrolladores pueden tomar es validar las entradas
que recibe su software. Esto no es sólo responsabilidad de los desarrollos, también comprende la validación de
metodologías y procedimientos de desarrollo.
• Revisiones de entradas no seguras. Las entradas son la mayor causa de algunas de las vulnerabilidades más
peligrosas (incluyendo desbordamiento de Buffer, inyección SQL, entre otras).
• Si una aplicación consta de más de un proceso, valide las entradas para cada proceso incluso si la entrada es
proporcionada por otra parte de la aplicación. Valide la entrada incluso si esta es entregada sobre una conexión
segura, si llega de una fuente confiable o si está protegida por permisos estrictos de archivo.
• Revisar las variables de entrada (incluyendo variables de entorno, valores de registro, servicios de red y
nombres de ruta), teniendo en cuenta que pueden ser vulnerables a ataques y alterar su contenido.
Es importante tener en cuenta los siguientes aspectos para llevar a cabo una validación del desarrollo:
• Datos Incompletos o No validos: No repare los datos de entrada que fallen las validaciones de entrada, sólo
rechácelos.
• Longitud de las entradas: Siempre realice la revisión contra un mínimo y un máximo de longitud esperada.
• Comprobación del límite de entradas numéricas: Siempre verifique las entradas numéricas contra valores
máximos y mínimos. Sin una comprobación de límite para entradas numéricas, los atacantes pueden crear un
desbordamiento de enteros.
• Filtrado de Meta-caracteres: Verifique que no existan caracteres especiales como por ejemplo una comilla
simple (‘) que es un carácter en solicitudes SQL o periodos dobles (slash o backslash) ya que pueden ser
utilizados para acceder a rutas de sistemas de archivos.
• No revele información sensible en las respuestas de error, incluyendo detalles del sistema, identificadores de
sesión o información de la cuenta.
Página 6 de 10
Código: A3-GU-02
Versión:02
GUÍA DE DESARROLLO SEGURO
Vigencia:04/10/2021
• La aplicación debe manejar errores controlados de aplicación y no debe revelar configuración del servidor.
• Las acciones e impactos que se presentan en el siguiente cuadro son una guía clave de los lineamientos para
el desarrollo de software seguro.
Tabla 1
Lineamientos para Desarrollo Seguro
Página 7 de 10
Código: A3-GU-02
Versión:02
GUÍA DE DESARROLLO SEGURO
Vigencia:04/10/2021
Página 8 de 10
Código: A3-GU-02
Versión:02
GUÍA DE DESARROLLO SEGURO
Vigencia:04/10/2021
• Los ambientes de desarrollo, pruebas y producción se deben encontrar claramente definida, independiente y
controlados. Se sugiere la no existencia de ambiente local del desarrollador (Maquinas de usuario). Para los
ambientes de prueba y desarrollo, no deben contener información real vigente o copiada de los sistemas de
producción.
Estos lineamientos se aplican a todos los funcionarios y contratistas, que intervienen en los procesos de planeación,
liderazgo y desarrollo de proyectos de desarrollo de software.
Página 9 de 10
Código: A3-GU-02
Versión:02
GUÍA DE DESARROLLO SEGURO
Vigencia:04/10/2021
• Los desarrolladores revisarán y determinarán la acción a seguir para el tratamiento de las vulnerabilidades, para
evitar que tengan brechas de seguridad.
• Se debe hacer implementación de controles para el manejo de versiones del código fuente en ambientes de
producción, calidad y desarrollo.
La gestión de las contraseñas se debe realizar según lo establecido en la Guía Manejo de Contraseñas Seguras
TI-GU-001.
RESUMEN DE CAMBIOS
RESPONSABILIDAD Y AUTORIDAD
Elaboró / Actualizó: Revisó: Aprobó:
Nombre:
Nombre: Nombre:
Mayra Alexandra Agudelo
Diana Paola Cárdenas Huertas Camilo Alejandro Romero González
Carvajal
Cargo: Cargo: Cargo:
Profesional Especializado Profesional Universitario Coordinador Grupo Comunicaciones
Dependencia: Dependencia: Dependencia:
Oficina de Tecnología Oficina de Tecnología Oficina de Tecnología
Página 10 de 10