Gestionar Vulnerabilidades en Dependencias

Guía práctica de seguridad de dependencias en apps modernas: higiene, actualizaciones y resoluciones, con Yarn audit y Apiiro para reducir riesgos.

1 sept 2025 • 5 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

La seguridad es un pilar esencial de la ingeniería de software y se compone de varias capas que se refuerzan entre sí: prácticas de codificación seguras, endurecimiento de la infraestructura, protección de datos y monitorización proactiva. A todo ello se suma una capa crítica que a menudo se pasa por alto: gestionar la seguridad de las dependencias de terceros.

Las aplicaciones modernas casi nunca existen en aislamiento; se apoyan en ecosistemas masivos de librerías de código abierto. Cada dependencia añadida aporta funcionalidad, pero también introduce riesgo.

Herramientas como Dependabot en GitHub pueden vigilar vulnerabilidades conocidas y abrir pull requests para actualizar dependencias, aliviando parte de la carga operativa. Aun así, las actualizaciones automáticas no son una solución mágica. Plataformas de alcance amplio como Apiiro permiten detectar vulnerabilidades en todo el grafo de dependencias y correlacionarlas con el contexto de la aplicación, manteniendo al equipo de ingeniería al mando del triaje, la priorización y el parcheo.

Usaremos como ejemplo práctico una aplicación React con Yarn, pero los pasos son universales. Trabajes con Node.js, Python, Java, Go o Rust, la postura es la misma: higiene de dependencias, actualizaciones regulares y resolución cuidadosa de riesgos transitivos.

Discrepancias entre herramientas: Apiiro y Yarn audit

Apiiro señaló dos vulnerabilidades críticas en una aplicación React de nuestro equipo. Mi primera reacción fue ejecutar yarn audit con los flags adecuados: yarn audit --groups dependencies --level high --frozen-lockfile.

Yarn informó más de veinte vulnerabilidades críticas y altas. Por qué difieren tanto los resultados

- Fuentes de datos: yarn audit en Yarn Classic se apoya en la base de avisos de seguridad de npm, mientras que Apiiro agrega múltiples bases de vulnerabilidades y las cruza con el contexto de la aplicación.

- Puntuación de severidad: Apiiro puede aplicar reglas de evaluación de riesgo adicionales definidas por el equipo de seguridad, mostrando solo los problemas más relevantes para el negocio.

- Configuración: es habitual que seguridad configure Apiiro para centrarse en ciertos umbrales de severidad o suprimir hallazgos con controles compensatorios, mientras que el audit del gestor de paquetes suele reportarlo todo.

En resumen, no se trata de que una herramienta esté mal. Responden a propósitos distintos: el audit de Yarn es un listado en bruto de CVE conocidos, y Apiiro ofrece una visión filtrada y basada en riesgo.

Un proceso estructurado

Gran parte de las vulnerabilidades aparece en dependencias anidadas, no solo en dependencias directas. Para tratarlas con eficacia conviene entender el lock file y cómo funciona la resolución de dependencias, un área que muchos desarrolladores pasan por alto.

Desde la práctica, el parcheo de vulnerabilidades en dependencias puede abordarse en tres pasos. Tras cada paso, vuelve a ejecutar el audit de tu gestor de paquetes o una herramienta externa como Apiiro para medir la reducción de hallazgos y confirmar el progreso.

1. Higiene de dependencias

Con frecuencia quedan dependencias sin uso por refactorizaciones, pruebas o código copiado. Cada paquete añadido amplía la superficie de ataque. Mantener higiene implica detectar y eliminar dependencias no utilizadas de forma periódica. Esto mejora la seguridad, simplifica el proyecto, acelera las compilaciones y reduce el riesgo en la cadena de suministro.

2. Actualización de dependencias

Con la lista limpia, toca actualizar a versiones no rompedoras. Parece simple, pero cada gestor se comporta distinto.

- Yarn Classic v1: editar versiones a mano en package.json y ejecutar yarn install solo actualiza dentro de los rangos definidos y respeta el lock; las transitivas vulnerables pueden quedarse. Usar yarn upgrade nombre-paquete actualiza a la versión más reciente que cumpla el rango y reescribe el lock.

- Yarn 2 en adelante Berry: yarn install preserva el lock y solo resuelve nuevo si el rango no cuadra; yarn up nombre-paquete es el comando equivalente a upgrade.

Conclusión práctica: install preserva, upgrade o up actualiza y reescribe el lock. Pasar por alto esta diferencia puede dejar vulnerabilidades vivas pese a cambios manuales en package.json.

3. Resolución de dependencias anidadas

Si tras actualizar directas aún quedan vulnerabilidades, es probable que residan en dependencias anidadas a uno o varios niveles. En estos casos, usa resoluciones de paquetes. Con resolutions en la raíz de package.json puedes forzar una versión concreta a lo largo del grafo. Por ejemplo, fijar lodash 4.17.21 globalmente o acotado a una ruta como react-scripts/**/lodash 4.17.21. Después ejecuta yarn install para materializar las resoluciones en el lock.

Si no existe parche para una dependiencia comprometida, documenta el caso y comunícalo a seguridad con alternativas viables para reemplazar la librería y una estimación del esfuerzo de refactorización. El equipo de seguridad valorará el riesgo, el mantenimiento activo del paquete y la cadencia de parches antes de decidir si procede un refactor.

Buenas prácticas operativas

- Automatiza auditorías en CI y rompe el build en severidades acordadas.

- Mantén políticas de versionado claras y revisiones de código enfocadas en la introducción de nuevas dependencias.

- Centraliza excepciones con caducidad y plan de remediación.

- Integra alertas con observabilidad para detectar explotación real en tiempo de ejecución.

Sobre Q2BSTUDIO

En Q2BSTUDIO ayudamos a empresas a fortalecer su cadena de suministro de software con un enfoque integral que combina desarrollo seguro, ciberseguridad, automatización y observabilidad. Diseñamos aplicaciones a medida y software a medida con seguridad por diseño, aprovechando inteligencia artificial, agentes IA e ia para empresas para acelerar el análisis de riesgos y priorizar remediaciones.

Nuestro equipo ofrece auditorías de dependencias, revisiones de arquitectura, pruebas de intrusión y planes de respuesta. Descubre cómo reforzamos tu postura con nuestros servicios de ciberseguridad y pentesting y cómo escalamos tus cargas con servicios cloud AWS y Azure alineados a buenas prácticas de seguridad.

Palabras clave y valor

Aplicamos inteligencia artificial para clasificar vulnerabilidades, priorizar según impacto y automatizar tareas repetitivas, liberando a tu equipo para el trabajo de mayor valor. Combinamos servicios inteligencia de negocio y power bi para crear paneles accionables que miden riesgo, deuda técnica y avance de remediación en tiempo real.

Conclusión

La gestión de dependencias no es un ruido de fondo, es una práctica continua que reduce exposición y mejora la resiliencia. Con higiene, actualizaciones y resoluciones, y el apoyo de herramientas como Dependabot y Apiiro, las vulnerabilidades dejan de ser sorpresas caóticas para convertirse en trabajo planificado y medible. En Q2BSTUDIO impulsamos este enfoque de extremo a extremo para que tu software sea más seguro, mantenible y rápido de evolucionar.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat