Índice
1. Introducción
Antes de comenzar, quiero dar las gracias a mi compañero Ivan Suárez Romero de Izertis que ha tenido la inmensa amabilidad de completar de manera proactiva este tutorial, que se había quedado en el tintero.
El número de ciberataques ha crecido enormemente en los últimos años, y con ello, la necesidad de mejorar la protección de nuestros sistemas de información.
La complejidad y variedad de las infraestructuras sobre las que corren nuestras aplicaciones, la gran cantidad de datos que se manejan y su ubicuidad junto a la diversidad de los sistemas de almacenamiento, el incremento del uso de código abierto (es más fácil atacar un código que es público y que se puede analizar), la explosión de la IA (de la misma manera que se puede usar para proteger, se puede usar para atacar), etc., hacen que sea cada vez más urgente abordar este problema de manera proactiva.
Generalmente, una brecha de seguridad no suele ser cuestión de un único factor, sino que es una combinación de varios factores encadenados que han fallado. Primero, los atacantes habrán tenido que pasar tiempo estudiando nuestro sistema buscando vulnerabilidades, mediante el análisis de nuestros dominios y subdominios, tratando de descubrir cómo es nuestra infraestructura, qué forma tienen nuestras APIs, qué bases de datos usamos, qué tecnologías, lenguajes, versiones, librerías o frameworks de terceros se usan y qué vulnerabilidades conocidas tienen.
Una vez que han encontrado una posible vulnerabilidad, tratan de explotarla, y para ello, la mayor parte de las veces se necesita la colaboración de algún ingenuo que abra un correo electrónico, haga clic en un enlace o descargue un archivo. Y además, suele ser necesaria también la colaboración de un equipo que haya dejado escapar un error durante el desarrollo, como por ejemplo, no haber validado correctamente una entrada de datos, no haber escapado correctamente una salida, o no haber configurado correctamente un servidor, framework o base de datos, que ha sido abandonado a la suerte de la configuración por defecto.
Como desarrolladores, podemos hacer poco para convencer a los atacantes de que no nos ataquen (podemos ponerles más difícil el análisis de nuestra infraestructura, ofuscando y omitiendo en la medida de lo posible información, pero poco más), y podemos hacer poco para evitar que algún usuario despistado haga clic en enlaces o descargue archivos, pero sí podemos hacer mucho para evitar exponer nuestro sistema a vulnerabilidades.
¿Qué podemos hacer? Pues, entre otras cosas, podemos seguir buenas prácticas de programación, estar al día de los tipos de ataque más comunes, conocer cómo son esos ataques y cómo evitarlos en la fundación OWASP, entre otras acciones. En definitiva, estar al día para poder incorporar este conocimiento en nuestras revisiones de código. Sin embargo, esto no es suficiente, y cada vez es más necesario incorporarlo de una manera más sistemática en nuestros procesos de desarrollo, integración y despliegue, lo que se ha venido a denominar en estos últimos años como DevSecOps:

En esta tarea de incorporar la seguridad en nuestros procesos de desarrollo, es fundamental la realización de análisis de seguridad de nuestras aplicaciones. Para ello, es muy conveniente contar con herramientas que, de manera automática e integrada, nos ayuden en esta labor.
Podemos hablar, entre otros, de diferentes tipos de análisis de seguridad:
- Static Application Security Testing (SAST): Se realiza sobre el código fuente o binario sin ejecutarlo.
- Software Composition Analysis (SCA): Se realiza sobre las dependencias de nuestro código.
- Dynamic Application Security Testing (DAST): Se realiza sobre el código en ejecución.
- Interactive Application Security Testing (IAST): Se realiza sobre el código en ejecución, pero interactuando con él.
- Security Operations Center (SOC): Se realiza en tiempo real mediante la monitorización del entorno productivo para detectar y evitar amenazas de seguridad.
- Pen testing: Se realiza sobre la infraestructura, aplicaciones, personas y procesos en el entorno productivo para encontrar vulnerabilidades.
Una de las herramientas que nos puede ayudar en esta labor es Kiuwan, una herramienta que nos permite realizar análisis de seguridad estáticos (SAST) y análisis de composición (SCA) en nuestras aplicaciones de manera automática, integrada en nuestros procesos de desarrollo. Proporciona información detallada de las vulnerabilidades encontradas, recomendaciones para su corrección y soporte para gestionar y controlar (Governance) las correcciones sugeridas.
En este tutorial, vamos a ver un pequeño ejemplo de uso de Kiuwan en un proyecto y cómo podemos interpretar los resultados obtenidos.
3. Un ejemplo
Lo primero que debemos hacer es registrarnos en Kiuwan y crear un proyecto. Para ello, vamos a la página de Kiuwan y nos registramos. Una vez registrados, iniciamos sesión en la plataforma.

Paso 1: Descarga e instalación del analizador local de Kiuwan
Kiuwan ofrece un Analizador Local que nos permite analizar nuestro código desde nuestra máquina. Para descargarlo:

-
Inicia sesión en tu cuenta de Kiuwan.
-
Haz clic en tu nombre en la esquina superior derecha del panel principal de Kiuwan.
-
Selecciona **Download Kiuwan Local Analyzer**.
-
Acepta los términos de uso.
-
Descargamos el ZIP de **Kiuwan Local Analyzer** compatible con nuestro sistema operativo.
-
Una vez descargado, descomprimimos el archivo y ubicamos la carpeta en una ruta de fácil acceso.
Paso 2: Preparación del proyecto para el análisis
Para este ejemplo, utilizaremos un proyecto Java sencillo. Supongamos que tenemos una aplicación web desarrollada con Spring Boot.

- Asegúrate de que el código fuente esté completo y actualizado.
- Si el proyecto utiliza herramientas de construcción como Maven o Gradle, ejecuta un
cleanpara eliminar archivos temporales que no son necesarios analizar.
Paso 3: Ejecución del análisis
Abrimos una terminal y navegamos hasta la carpeta donde ubicamos el Kiuwan Local Analyzer. Ejecutamos el siguiente comando:
|
Bash
|
|
|---|---|
|
./kiuwan.sh -c -s /ruta/a/tu/proyecto -n NombreDeTuProyecto
|
|
-cindica que queremos realizar un análisis completo (código y seguridad).-sespecifica la ruta al código fuente de nuestro proyecto.-nes el nombre del proyecto en Kiuwan.

En sistemas Windows, el comando sería:
|
Bash
|
|
|---|---|
|
kiuwan.cmd -c -s rutaatuproyecto -n NombreDeTuProyecto
|
|

Paso 4: Esperar a que finalice el análisis
El analizador comenzará a examinar el código. Dependiendo del tamaño del proyecto, este proceso puede tardar desde unos minutos hasta más tiempo. Durante el análisis, Kiuwan evaluará el código en busca de:
- Vulnerabilidades de seguridad.
- Problemas de calidad del código.
- Uso de componentes de terceros y sus posibles riesgos.

Paso 5: Revisión de los resultados en la plataforma
Una vez finalizado el análisis, podemos ver los resultados en la plataforma web de Kiuwan:
- Inicia sesión en Kiuwan si aún no lo has hecho.
- En el panel principal, ve a Applications y selecciona el proyecto que acabas de analizar.
- Accederás a un dashboard con una visión general del estado de tu proyecto.

Interpretación de los resultados
- Overview: Aquí obtienes una puntuación global del análisis, incluyendo indicadores de calidad y seguridad.
- Defects: Lista detallada de los defectos encontrados, clasificados por severidad y tipo.
- Vulnerabilities: En esta sección puedes ver las vulnerabilidades de seguridad detectadas, con información sobre el tipo de vulnerabilidad y las posibles formas de corregirla.
- Components: Muestra los componentes de terceros utilizados en el proyecto y alerta sobre posibles riesgos asociados a ellos.
- Action Plan: Kiuwan sugiere un plan de acción priorizado para abordar los problemas más críticos primero.

Paso 6: Integración con el proceso de desarrollo
Para maximizar los beneficios, es recomendable integrar Kiuwan en nuestro flujo de trabajo:
- Integración con IDEs: Kiuwan ofrece plugins para IDEs como Eclipse, IntelliJ IDEA y Visual Studio Code, permitiendo detectar problemas en tiempo real mientras codificas.
- Integración con CI/CD: Puedes integrar Kiuwan con herramientas de integración continua como Jenkins, Azure DevOps o GitLab CI/CD para automatizar los análisis en cada build.
- Configuración de umbrales: Establece criterios de aceptación para que, si se superan ciertos niveles de vulnerabilidades, el build falle y se notifique al equipo.
4. Conclusiones
La seguridad en el desarrollo de software es un aspecto crítico que no debe pasarse por alto. Herramientas como Kiuwan nos facilitan la identificación y corrección de vulnerabilidades y problemas de calidad en nuestro código de forma automática y sistemática.
Al integrar Kiuwan en nuestros procesos de desarrollo, no solo mejoramos la calidad y seguridad de nuestras aplicaciones, sino que también fomentamos una cultura de DevSecOps en nuestros equipos. Esto nos permite entregar software más seguro y robusto, reduciendo riesgos y potenciales costes asociados a brechas de seguridad.
Recordemos que la seguridad es responsabilidad de todos los involucrados en el ciclo de vida del software. Adoptar prácticas y herramientas que nos ayuden en esta tarea es fundamental para enfrentar los desafíos actuales en materia de ciberseguridad.
5. Glosario de términos
6. Referencias bibliográficas
-
OWASP Foundation. (2021). OWASP Top Ten. Recuperado de
-
Kiuwan Documentation. (s.f.). User Guide and Documentation. Kiuwan. Recuperado de
-
Departamento de Defensa de los Estados Unidos. (2019). DoD Enterprise DevSecOps Reference Design, Version 1.0. Recuperado de
https://dodcio.defense.gov/Portals/0/Documents/DoD%20Enterprise%20DevSecOps%20Reference%20Design%20v1.0_Public%20Release.pdf -
Instituto Nacional de Estándares y Tecnología (NIST). (2018). Framework for Improving Critical Infrastructure Cybersecurity, Version 1.1. Recuperado de
-
SANS Institute. (2019). The Value of SAST and DAST in Application Security Testing. Recuperado de
-
Kim, G., Humble, J., Debois, P., & Willis, J. (2016). The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations. IT Revolution Press.
-
Myers, M., & Williams, L. (2018). Assessing the Coverage of SAST and DAST Security Tools Using Bug Injection. IEEE Transactions on Software Engineering, 44(9), 833-846.
-
Chen, L. (2017). Continuous Delivery: Overcoming Adoption Challenges. Journal of Systems and Software, 128, 72-86.
-
Guía de Pruebas OWASP. (2014). OWASP Testing Guide v4. Recuperado de
https://owasp.org/www-project-web-security-testing-guide/assets/archive/OWASP_Testing_Guide_v4.pdf -
Contreras, J. (2020). Implementación de DevSecOps en Entornos Ágiles. Revista Latinoamericana de Seguridad Informática, 14(2), 45-53.