Existen varias razones por las cuales se puede producir una fuga de datos: desde la infección de un malware hasta una mala configuración de seguridad en el servidor. Pero más allá de estas, muchas veces son los propios desarrolladores de software quienes no cumplen con los protocolos de seguridad necesarios para poder brindar la mejor protección contra ciberseguridad a sus usuarios.
Por esta razón, el software security cobra total relevancia en personas y organizaciones al momento de elegir una aplicación para trabajar. Los datos son un activo digital cada vez más preciado: los indicadores de Statista dicen que los ingresos en el mercado del software security están valuados en hasta 12 millones de dólares para 2024 y se espera que muestren una tasa anual de 13,36% hacia 2028.
¿Qué es la seguridad del software y por qué es tan importante ahora?
En un mundo interconectado, donde la mayoría de las empresas dependen de sistemas informáticos para operar, el software security es fundamental. Cada línea de código representa una posible vulnerabilidad, por lo que es crucial que los desarrolladores de una aplicación implementen medidas de seguridad robustas para proteger a sus clientes contra amenazas cibernéticas.
Chile es, en Latinoamérica, el segundo país en calidad ciberseguridad según los estándares de la National Cyber Security Index (NCSI). Ubicado en el puesto 23, su nivel de protección contra ataques de ciberdelitos está evaluado en un 60,83% de protección, con un desarrollo digital del 68,48%. Tan solo es superado por República Dominicana, que se ubica en el puesto 19 de la lista.
Definición y fundamentos de la seguridad del software
La Seguridad del Software (software security en inglés) hace referencia al concepto de implementar mecanismos en la construcción de la seguridad de una aplicación para ayudarla a resistir futuros ataques cibernéticos. Esto significa que una pieza de software se somete a pruebas de seguridad antes de salir al mercado para comprobar su capacidad de resiliencia a ataques maliciosos.
De acuerdo con la Secure Software Alliance (SSA), el concepto de software security busca que los desarrolladores de una aplicación cumplan una serie de protocolos de seguridad desde la producción temprana de su servicio, y que los usuarios no precisen de terceros (la descarga de un antivirus, por ejemplo) para estar completamente protegidos ante ciberdelitos o malware en sus dispositivos.
Por lo tanto, el desarrollo seguro no es más que un conjunto de prácticas, procesos y herramientas que tienen como objetivo crear una aplicación que sea segura desde su propia concepción, tomando en cuenta protocolos de ciberseguridad, para prevenir problemas antes de que verdaderamente ocurran.
Diferencia entre seguridad del software y ciberseguridad
Ciberseguridad y seguridad del software son dos conceptos que están ciertamente relacionados. Ambos hacen referencia a la protección de los datos de un individuo o una organización dentro del amplio espectro del IoT (Internet of Things). Desde el almacenamiento de información en un entorno Cloud hasta la protección de datos de extremo a extremo en la utilización de un servicio de comunicación por plataforma.
Sin embargo, ambos fenómenos presentan diferencias significativas en cuanto a lo que representan cada uno. La Universidad Francisco de Vitoria de España afirma que:
- La ciberseguridad defiende, con tecnologías o prácticas ofensivas, a las computadoras, servidores, dispositivos móviles y sistemas electrónicos y redes de datos de ataques maliciosos llevados a cabo por cibercriminales.
- La seguridad del software es la exposición de una aplicación a medidas de seguridad, para garantizar que los usuarios que la utilicen no sean expuestos a un ataque delictivo.
Durante cada etapa del desarrollo de ese software, sus desarrolladores hacen pruebas de riesgo hasta dar con los resultados deseados. De acuerdo con el Informe Global de Riesgos, publicado por el Foro Económico Mundial en 2022, se asegura que el 95% de los riesgos cibernéticos son producto de fallas humanas.
Mientras los desarrolladores de aplicaciones deben practicar software security en todo ciclo de desarrollo de una aplicación para prevenir las consecuencias de un error humano, las entidades gubernamentales deben promover la cultura de ciberseguridad a nivel país, involucrando a la academia, la industria, el Estado y la sociedad.
Desafíos y problemas de seguridad del software
Durante la etapa de producción de un nuevo sistema de software, los desarrolladores trabajan con una gran cantidad de líneas de código. Un código fuente es cada una de las líneas de un archivo en un programa informático. En cada línea se ejecuta una instrucción o comando que tiene que ejecutar el programa y, a medida que el código crece, es normal encontrar errores.
Estos errores acarrean importantes costos y riesgos, y son uno de los desafíos más importantes del desarrollo de software. Por eso, el Instituto de Ingeniería de Software de la Carnegie Mellon University recomienda llevar a cabo la evaluación de la seguridad del software en las fases iniciales del desarrollo de la aplicación, cuando los códigos no son tan extensos.
Corregir defectos, incluyendo fallos de seguridad, puede ser considerablemente más costoso después de la implementación del software que en su etapa de desarrollo. Además, muchos de estos errores representan riesgos de seguridad que podrían ser explotados por delincuentes, convirtiendo así la seguridad de software en un factor crucial al momento de poner a prueba una aplicación.
Otro desafío en software security, denominado Shift Left Security, implica que las consideraciones de seguridad se relegan al final del desarrollo de software. Según la investigación “Construyendo la Ciberseguridad en Chile” de la Biblioteca Nacional del Congreso, esto puede resultar en retrasos y vulnerabilidades graves. Para mejorar, desarrolladores y expertos en ciberseguridad deben integrar las pruebas de seguridad desde etapas tempranas.
Una investigación de Enterprise Strategy Group (ESG) revela que muchas organizaciones sufren ataques debido a configuraciones erróneas y vulnerabilidades de código abierto. Esto resalta la importancia de contar con herramientas adecuadas para prevenir problemas antes de implementar las aplicaciones. Además, es crucial brindar soporte a los desarrolladores para resolver eficientemente problemas durante la ejecución de aplicaciones.
En la implementación de software security, no se trata solo de probar o escanear antes de la implementación. También se refiere a ayudar a los desarrolladores a solucionar de manera eficiente los problemas encontrados en las aplicaciones en ejecución. Los expertos en ciberseguridad deben trabajar en estrecha colaboración con los desarrolladores para comprender sus necesidades e implementar herramientas que las respalden.
Herramientas y responsabilidades en seguridad del software
Existe un concepto que habitualmente está relacionado con la seguridad del software y el mundo del desarrollo de las aplicaciones y se conoce como DevSecOps. De acuerdo con Amazon Web Services (AWS), los Ingenieros en Desarrollo, Seguridad y Operaciones se encargan de integrar las pruebas de seguridad en cada etapa del proceso de desarrollo de software: Desde su definición, hasta el diseño, desarrollo, implementación y posterior mantenimiento.
La metodología DevSecOps es una de las pocas áreas de trabajo del desarrollo de software en la que la seguridad es una responsabilidad compartida e integrada en todo el proceso, donde se incluyen requerimientos orientados al cumplimiento de estándares (framework en inglés) en seguridad internacionales. En Chile existe la RAN 20-10, normativa que regula la adopción de ciertos estándares de seguridad.
De qué trata la RAN 20-10 y qué normativas contempla
La RAN 20-10 es una normativa creada por la Comisión para el Mercado Financiero que busca proporcionar un estándar de buenas prácticas y lineamientos que una organización debe cumplir para poder operar en Chile. RAN es una abreviatura de Recopilación Actualizada de Normas de Bancos, mientras que 20-10 corresponde a los capítulos donde se trata el aspecto legal de la seguridad en activos digitales.
Esta Ley busca, en materia de seguridad de software y ciberseguridad, que las plataformas tecnológicas sean seguras para sus clientes. Entró en vigencia el 1 de diciembre de 2020 y contempla los siguientes frameworks para brindar el mejor marco regulatorio en ciberseguridad para empresas que radiquen sus actividades dentro de territorio chileno:
- Ley ISO 27001: Se especializa en seguridad organizacional y se basa en los estándares del Sistema de Gestión de la Seguridad de la Información (SGSI). Esto busca que los desarrolladores estén obligados a documentar cómo protegerán a su aplicación y cómo manejarán los riesgos a los que podría estar expuesto un usuario en el futuro;
- Ley ISO 27002: Esta normativa se especializa en controles técnicos y operativos, con el fin de proporcionar un esquema operativo para la seguridad de la información, como una estructura de gobernabilidad, políticas claras y un fomento a la cultura de seguridad de la información.
Prácticas recomendadas para la seguridad del software
Una vez revisados los conceptos de DevSecOps que, a diferencia de los DevOps, buscan integrar la seguridad en todas las etapas del desarrollo de software en lugar de implementarla al final, descubre algunas prácticas recomendadas por AWS en seguridad de software:
Desplazar la seguridad a la izquierda
Detectar vulnerabilidades en las etapas iniciales del desarrollo de software. Mediante este enfoque, los equipos pueden prevenir problemas de seguridad antes de que surjan al crear y lanzar al público su aplicación. Forma parte del proceso fundamental de los DevSecOps.
Desplazar la seguridad a la derecha
Priorizar la seguridad una vez que la aplicación está en funcionamiento. Cuando un potencial cliente ejecuta un software, alguna de sus vulnerabilidades puede eludir las comprobaciones previas y solo manifestarse cuando ellos lo utilizan en sus dispositivos.
Utilizar herramientas de seguridad automatizadas
Los equipos de DevSecOps a menudo realizan múltiples revisiones diarias, por lo que es conveniente hacerse de las nuevas tecnologías de la Industria 4.0 para incorporar herramientas de análisis de seguridad en el proceso de Integración Continua y Entrega Continua (CI/CD). Esto agiliza el desarrollo al evitar que las evaluaciones de seguridad ralenticen el proceso.
Promover que las personas sean conscientes de la seguridad
Las empresas deben priorizar la concientización sobre seguridad al crear software, ya que todos los miembros del equipo involucrados en el desarrollo de una aplicación comparten la responsabilidad de proteger a sus usuarios contra posibles amenazas de seguridad.
Ciclo de vida del desarrollo seguro
A inicios del siglo XXI, las computadoras de escritorio comenzaron a ocupar un lugar fundamental en los hogares. Y como la conexión a internet era cada vez un fenómeno más generalizado, sus usuarios comenzaron a ser víctimas de malware y software maliciosos que buscaban aprovecharse de los usuarios que conectaban sus PC domésticas a Internet.
Rápidamente, se hizo evidente que proteger a los usuarios de estos ataques maliciosos iba a requerir un enfoque de seguridad fundamentalmente diferente. Y es por esto que Microsoft, la empresa de Bill Gates que cubre la mayor cuota del mercado de sistemas operativos a nivel mundial (69% en 2023 según Statista), creó junto a sus desarrolladores Microsoft SDL.
Dada la prominencia del sistema operativo frente a sus competidores, el ciclo de vida del desarrollo seguro de Microsoft es un buen ejemplo para conocer cuáles son los pasos a seguir respecto a seguridad cuando de la creación de una aplicación se trata.
Según el sitio oficial de Microsoft, el Ciclo de Vida de Desarrollo de Seguridad (SDL) representa un conjunto de prácticas que respaldan los requisitos de cumplimiento y garantía de seguridad. SDL ayuda a los desarrolladores a crear software más seguro al reducir la cantidad y la gravedad de las vulnerabilidades del software, al tiempo que reduce el costo de desarrollo.
Como se ha visto anteriormente, el concepto de software security busca que los desarrolladores de una aplicación hagan pruebas de seguridad en toda etapa de desarrollo de un software y no antes de ser lanzada. La seguridad y la privacidad nunca deben ser una ocurrencia tardía al desarrollar software seguro; debe existir un proceso formal para garantizar que se tengan en cuenta en todos los puntos del ciclo de vida del producto.
Es por esto que uno de los ciclos de vida más comunes en el DevOps está distribuido en 7 partes: 5 fases principales y 2 actividades de seguridad de soporte.
Fase 1 – Entrenamiento
Todos los empleados reciben formación básica sobre concientización en seguridad y una capacitación específica acorde a su función. Esta formación inicial se brinda a los nuevos empleados al momento de su contratación y se requiere una actualización anual. A su vez, fomentan la búsqueda de capacitación avanzada en seguridad y privacidad para todos ellos, incluidos pasantes y tercerizados.
Fase 2 – Requisitos
Cada producto, servicio y característica se desarrolla con protocolos de seguridad y privacidad claramente definidos desde el inicio. Estos requisitos se establecen en función del tipo de datos, amenazas conocidas, mejores prácticas, regulaciones y lecciones aprendidas de incidentes anteriores. Los requisitos se documentan y se actualizan continuamente a lo largo del ciclo de vida del producto para reflejar cambios en la funcionalidad y el panorama de amenazas (según indican las Normas ISO).
Fase 3 – Diseño
Con los requisitos definidos, se procede al diseño del software, creando modelos de amenazas para identificar y evaluar posibles riesgos. Estos modelos, representados a través de Diagramas de Flujo de Datos (DFD por sus siglas en inglés), se mantienen y actualizan durante todo el ciclo de vida del producto. Los desarrolladores utilizan herramientas específicas para comunicar, analizar y mitigar problemas de seguridad antes del lanzamiento.
Fase 4 – Implementación
La fase de implementación comienza con los desarrolladores escribiendo código conforme al plan. Se utilizan herramientas de desarrollo seguras que incluyen compiladores y entornos de desarrollo con controles de seguridad integrados. Estas herramientas aseguran que todos los requisitos de seguridad, privacidad y funcionalidad se implementen de manera efectiva.
Fase 5 – Verificación
Antes de publicar cualquier código, es conveniente realizar revisiones manuales y comprobaciones automatizadas para asegurar su conformidad con los requisitos de seguridad y diseño. Las revisiones manuales son realizadas por revisores independientes, y las comprobaciones automatizadas analizan el código fuente para detectar posibles fallos de seguridad, credenciales expuestas y vulnerabilidades. Se incluyen pruebas de penetración para identificar fallos que otros métodos no detecten.
Fase 6 – Lanzamiento
Después de superar todas las pruebas de seguridad, las compilaciones se liberan de manera gradual a grupos cada vez más grandes mediante un proceso de implementación segura. Este proceso permite probar la estabilidad y seguridad de las compilaciones en diferentes etapas antes de un lanzamiento global completo, asegurando la estabilidad y minimizando riesgos. Los grupos, en el caso de Microsoft, se dividen de la siguiente forma:
- El equipo de desarrollo responsable del servicio;
- Todos los empleados de Microsoft;
- Usuarios fuera de Microsoft que prueban betas en desarrollo;
- Lanzamiento estándar mundial.
Fase 7 – Respuesta
Después del lanzamiento, los servicios son monitoreados extensivamente para identificar posibles incidentes de seguridad. Un sistema de monitoreo centralizado casi en tiempo real permite detectar y responder a incidentes rápidamente, asegurando la protección continua de los servicios y usuarios.
Diseño de seguridad para sistemas de software
El mercado del desarrollo de aplicaciones demanda lanzamientos de software más frecuente y sólidos. Pero, ¿qué demandan sus desarrolladores? Según una investigación de 2023 publicada por la Universidad Autónoma de Chile, el éxito de los equipos de software demanda un método particular para desarrollar software, que otorgue en mayor competitividad y éxito; utilizando prácticas, herramientas y técnicas apropiadas.
El desarrollo de software debe fundamentarse en más que solo la experiencia y habilidades de los programadores y su equipo. La calidad de sus productos es crucial, ya que sus vulnerabilidades como software pueden poner en riesgo los activos de las organizaciones, la confianza de sus consumidores, las operaciones y diversas aplicaciones.
Si bien existen muchos métodos de seguridad para sistemas de software, algunos son más aceptados por los DevOps que otros. Conoce a continuación tres de ellos y por qué permiten a sus desarrolladores elaborar protocolos más seguros en la creación de sus software:
Secure Software Development Life Cycle (S-SDLC)
El S-SDLC integra la seguridad en todas las fases del ciclo de vida del desarrollo del software. Se estructura en seis fases, proporcionando un enfoque metódico para garantizar que se aborden las cuestiones de seguridad desde la concepción hasta el despliegue del software (tal como sucede en Microsoft SDL).
Security Assurance Maturity Model (SAMM)
Se centra en mejorar el programa de seguridad general de la organización. Proporciona un marco para evaluar la madurez de la seguridad en cuatro dominios, cada uno con tres niveles de madurez, facilitando una visión integral de la postura de seguridad organizacional.
McGraw’s Secure Software Development Life Cycle Process
Este proceso destaca por sus siete puntos de control que aseguran la seguridad a lo largo del ciclo de vida del software. Similar al S-SDLC, se enfoca en la integración de prácticas de seguridad durante todo el desarrollo, desde el diseño hasta la implementación.
Diferencias entre S-SDLC, SAMM y McGraw’s
Aunque el Secure Software Development Life Cycle (S-SDLC) sea el modelo más utilizado e incluso SAMM y McGraw’s tomen parte de su estructura para desarrollar las propias, las tres metodologías presentan diferencias significativas con base en su gestión, madurez y organización de la seguridad del software:
- Enfoque Comparativo: Tanto el S-SDLC como el proceso de McGraw se centran en la seguridad durante el desarrollo del software. En contraste, SAMM está orientado a mejorar el programa de seguridad general de la organización, proporcionando una evaluación y un marco de mejora continua.
- Estructura del Marco: El S-SDLC y el proceso de McGraw ofrecen enfoques estructurados para el desarrollo seguro de software. Por otro lado, SAMM proporciona un marco para evaluar y mejorar la madurez de seguridad organizacional, abarcando una visión más amplia que incluye políticas y procesos de seguridad.
- Evaluación y Madurez: Mientras que el S-SDLC y el proceso de McGraw no incluyen modelos de evaluación específicos, SAMM ofrece un modelo de medición que permite evaluar el nivel de madurez de seguridad de una organización, facilitando la identificación de áreas de mejora y el seguimiento del progreso.
- Énfasis en la Seguridad: El S-SDLC y el proceso de McGraw ponen énfasis en el proceso de desarrollo del software seguro. Por su parte, SAMM enfatiza la importancia del programa de seguridad global de la organización, asegurando que todos los aspectos de la seguridad estén alineados y sean robustos.
Gestión y organización de la seguridad del software
La seguridad del software requiere un enfoque integral que incluya la investigación empírica, incorporar la noción de seguridad en la profesionalización de los ingenieros, la adopción de herramientas y técnicas efectivas y el aumento de la conciencia sobre la ciberseguridad.
Solo a través de una combinación de estas estrategias se puede lograr un software que continúe funcionando correctamente bajo ataques maliciosos y proteja los datos sensibles de accesos no autorizados.
Problemas actuales en la Seguridad del Software
Uno de los principales problemas que enfrenta la seguridad del software es la falta de investigación empírica en el área de Ingeniería de Software para comprender mejor dónde y por qué surgen errores críticos de seguridad en el ciclo de vida del desarrollo del software. Además, existe una carencia de herramientas a todos los niveles del ciclo de desarrollo que puedan detectar automáticamente vulnerabilidades en el código fuente.
Factores que impactan la Seguridad del Software
Un factor crucial es la formación de los futuros profesionales en el DevOps. Las instituciones educativas y los profesores de ingeniería deben integrar la seguridad en sus planes de estudio para garantizar que los ingenieros del mañana estén bien equipados para manejar problemas de seguridad en el software que desarrollan.
Integración de seguridad en el ciclo de desarrollo
Gestionar los problemas de seguridad desde el inicio del proceso de desarrollo puede reducir hasta en un 66% el número de vulnerabilidades detectadas, según la investigación de la Universidad Autónoma de Chile. Modelos como la Metodología de Desarrollo de Software Seguro (SecSDM) han sido adaptados para apoyar a los estudiantes y desarrolladores en la creación de productos y procesos seguros.
Herramientas y técnicas de seguridad
La adopción de Herramientas de Análisis Estático (SAST) ha mostrado ser eficaz en la evaluación de la seguridad del software. Combinar diferentes herramientas SAST puede mejorar el rendimiento y la detección de vulnerabilidades, tales como la lectura del código fuente, binario o de bytes de una aplicación. Este método es conocido también como White Box Testing (Prueba de la Caja Blanca en español), que identifica la causa raíz de las vulnerabilidades y ayuda a corregir los fallos de seguridad desde dentro.