Para que el desarrollo de software y aplicaciones sea seguro, todos los equipos involucrados en la entrega de una solución o nueva funcionalidad se deben proceder de acuerdo con los protocolos de actuación en cada fase del desarrollo. Dichos protocolos deben asegurar los siguientes requisitos:
- El código se desarrollará en un repositorio de control de versiones con acceso restringido al cual los componentes del equipo de desarrollo tendrán accesos restringidos de acuerdo con su rol en el proyecto.
- Cada nueva pieza de código o funcionalidad deberá estar debidamente versionada con un documento de versionado asociado que explique qué función cumple la pieza de código desarrollado.
- Se ejecutará una herramienta de análisis de código estático en cada fase del desarrollo de software en el momento de integración de éste.
- Deben existir entornos de desarrollo y pre-produccion donde probar el desplegar el código para realizar pruebas funcionales y de seguridad. El paso del código a cada entorno debe autorizarse.
- Si se usa repositorio de artefactos, el código se analizará automáticamente antes de publicarlo.
- Las librerías serán también analizadas automáticamente por la herramienta de análisis de código estático
- Si se usan librerías privadas almacenadas en un repositorio de artefactos, éstas deberán analizarse por la herramienta de análisis de código estático antes de subirlo al repositorio.
- Siempre que sea posible se utilizará arquitectura de microservicios.
- Siempre que sea posible se utilizará infraestructura en la nube debidamente securizada de acuerdo con las buenas prácticas cloud.
- Debe existir un plan de pruebas que asegure que el código cumpla con los requisitos funcionales y de seguridad.
Importancia de las herramientas de análisis de código estático
La implementación de herramientas de análisis de código estático, como SonarQube, en cada etapa del ciclo de desarrollo de software, es fundamental para asegurar la calidad del código.
SonarQube garantiza la integridad, seguridad y sostenibilidad del código por su capacidad para identificar y resolver vulnerabilidades en las bases de código de sistemas complejos hace más fiables las aplicaciones de IA, especialmente en contextos donde la seguridad es crítica, al integrarlo en los flujos de trabajo de desarrollo, las organizaciones pueden minimizar riesgos y proteger sus sistemas frente a amenazas emergentes.
Se deben tener en cuenta las siguientes buenas prácticas:
- El análisis de código estático debe ser realizado automáticamente con herramientas DevOps, en cada fase del desarrollo de Software y antes de promocionar el código a cada entorno.
- Si bien es fundamental asegurar la calidad del código desarrollado, también es necesario que las librerías utilizadas cumplan con los estándares de seguridad establecidos, por lo que deben arbitrarse los medios para su análisis.
- Otro aspecto para considerar es el análisis de vulnerabilidades de imágenes de los contenedores.
- Los desarrolladores pueden desarrollar código limpio instalando en su IDE un plugin de la herramienta de análisis de código estático que le sugerirá las correcciones que debe desarrollar según el estándar definido.
Implementación de análisis de código estático con SonarQube
SonarQube permite a desarrolladores y equipos de software establecer estándares de seguridad y calidad (quality gates) personalizables para determinar la aceptación de los proyectos.
Issues
Cuando un componente no cumple con una regla de codificación de las definidas por SonarQube lo califica como un Issue. Un issue (problema o incidencia) es un defecto o punto de mejora en el código fuente que se ha detectado mediante las reglas de análisis de código. Estas reglas están diseñadas para identificar posibles fallos, malas prácticas, vulnerabilidades de seguridad, errores de mantenimiento y otros problemas que podrían afectar la calidad del software.
Los issues en SonarQube pueden clasificarse en varias categorías:
- Bugs: Errores en el código que pueden causar un comportamiento incorrecto o fallos en tiempo de ejecución.
- Vulnerabilidades: Problemas de seguridad que podrían ser explotados por atacantes, como inyecciones SQL o fugas de información sensible.
- Code Smells: Código que funciona, pero que es difícil de mantener o entender, lo que aumenta el riesgo de errores futuros.
- Security Hotspots: Áreas del código que requieren revisión manual para asegurarse de que no haya riesgos de seguridad, aunque no son necesariamente vulnerabilidades.
Cada issue puede tener diferentes niveles de gravedad:
- Bloqueante: Problemas muy graves que deben ser resueltos de inmediato.
- Crítico: Problemas serios que podrían causar errores graves.
- Mayor: Problemas importantes que deberían solucionarse.
- Menor: Problemas menos graves, pero que igualmente es recomendable corregir.
- Informativo: Observaciones que no requieren acción inmediata, pero que pueden ser útiles para mejorar el código.
Categorías de Métricas
Para evaluar la calidad del códigoSonarQube agrupa estas issues en categorías de métricas, cada una tiene un enfoque específico.
- Security:
SonarQube analiza el código para encontrar posibles problemas que puedan ser explotados por un atacante, como inyecciones de SQL, desbordamientos de búfer, fallos de validación de datos, exposición de datos sensibles, uso inseguro de criptografía, dependencias vulnerables. Se basa en estándares como OWASP Top 10 y CWE.
Evalúa la seguridad del código en una escala de A (mejor) a E (peor). Un código con un bajo puntaje de seguridad tiene más probabilidades de contener vulnerabilidades que pueden comprometer la seguridad del sistema. Se basa en las siguientes métricas:

- 2. Reliability
Medida que indica la calidad del código en términos de fiabilidad durante su ejecución como como excepciones no manejadas, errores lógicos y problemas que afectan la estabilidad como, por ejemplo, uso incorrecto de API, códigos que pueden causar excepciones en tiempo de ejecución, lógica de control defectuosa etc.
Evalúa la seguridad en una escala de A (mejor) a E (peor). Un bajo nivel de fiabilidad puede significar la presencia de errores o bugs que hacen que el software falle durante su uso. Se basa en las siguientes métricas:

- 3. Maintainability:
Se centra en la facilidad con la que el código puede ser modificado, entendido o ampliado por otros desarrolladores. Los problemas aquí generalmente están relacionados con la complejidad del código, la duplicación y las malas prácticas de programación como, por ejemplo, código duplicado, complejidad ciclomática alta (métodos o funciones demasiado complejos), métodos o clases excesivamente grandes.
Mide la mantenibilidad del código en una escala de A (mejor) a E (peor). Esta métrica está basada en la deuda técnica. Se Basa en las siguientes métricas:

- 3. Security Hotspots:
Son áreas del código que potencialmente pueden ser problemáticas desde el punto de vista de la seguridad, pero no se confirma automáticamente como vulnerabilidad hasta que un desarrollador las revise, como, por ejemplo, uso de funciones criptográficas con configuraciones inseguras, autenticación, autorizaciones insuficientes, código relacionado con la manipulación de datos sensibles, etc.

- 4. Coverage:
Indica el porcentaje del código que está cubierto por pruebas unitarias.
- 5. Duplications:
Mide el porcentaje de código duplicado dentro del proyecto.
Quality gate
Para evaluar si un proyecto cumple con los estándares establecidos, SonarQube utiliza Quality Gate.
El Quality Gate establece umbrales mínimos de calidad de código que debe cumplir el proyecto, basándose en métricas clave como
- Security
- Reliability
- Maintainability
- Security Hotspots Reviewed
- Coverage
- Duplications
- Issues críticos y bloqueantes detectados en el código.
Ejemplo de Quality Gate:
- Security Rating se encuentra en la escala A
- Reliability Rating se encuentra en la escala A
- Maintainability Rating se encuentra en la escala A
- Reliability Rating se encuentra en la escala A
- Security Hotspots han sido revisados en su totalidad (100%)
- Blocker Issues son iguales a cero
- Critical Issues son iguales a cero
- Major Issues son iguales a cero
Descubre cómo integrar la seguridad dentro del ciclo DevOps y optimizar su implementación en proyectos de IA en nuestro artículo sobre Integración de seguridad en el ciclo DevOps: Automatización y buenas prácticas para la IA.




