> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corgea.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Escaneo de dependencias (SCA)

> El escaneo de dependencias, también conocido como análisis de composición de software (SCA), identifica automáticamente vulnerabilidades de seguridad conocidas en las dependencias y bibliotecas de terceros de tu proyecto. Escanea archivos de manifiestos de dependencias (como `package.json`, `requirements.txt`, `pom.xml`) y proporciona información detallada sobre vulnerabilidades, incluyendo identificadores CVE, puntuaciones CVSS y orientación para remediación.

## Resumen

* **Qué hace**: El escaneo de dependencias, también conocido como Análisis de Composición de Software (SCA), identifica automáticamente vulnerabilidades de seguridad conocidas en las dependencias y bibliotecas de terceros de tu proyecto. Escanea archivos de manifiestos de dependencias (como `package.json`, `requirements.txt`, `pom.xml`) y proporciona información detallada sobre vulnerabilidades, incluyendo identificadores CVE, puntuaciones CVSS y orientación para remediación.

* **Para quién es**: Esta función está dirigida a equipos de seguridad, desarrolladores, ingenieros de DevOps y cualquier persona responsable de mantener aplicaciones seguras. Resulta especialmente útil en proyectos con numerosas dependencias de terceros cuyos equipos deben conocer las vulnerabilidades que pueden afectar a sus aplicaciones.

## Características y beneficios principales

* **Cobertura integral de ecosistemas**: Analiza dependencias de 25+ lenguajes y ecosistemas, como Python, JavaScript/Node.js, Java, Go, Ruby, PHP, C# y Swift

<Accordion title="Ver todas las fuentes de datos de vulnerabilidades">
  - **Fuentes de datos reconocidas**: Utiliza numerosas bases de datos de vulnerabilidades fiables, entre ellas:
    * GitHub Advisory Database (CC-BY 4.0)
    * PyPI Advisory Database (CC-BY 4.0)
    * Go Vulnerability Database (CC-BY 4.0)
    * Rust Advisory Database (CC0 1.0)
    * Global Security Database (CC0 1.0)
    * OSS-Fuzz (CC-BY 4.0)
    * Rocky Linux (BSD)
    * AlmaLinux (MIT)
    * Avisos de seguridad de Haskell (CC0 1.0)
    * RConsortium Advisory Database (Apache 2.0)
    * Paquetes maliciosos OpenSSF (Apache 2.0)
    * Base de datos de Python Software Foundation (CC-BY 4.0)
    * Base de datos de vulnerabilidades de Bitnami (Apache 2.0)
    * Ubuntu (GPL v3)
    * Y muchas más fuentes autorizadas
</Accordion>

* **Información detallada sobre vulnerabilidades**: Proporciona:
  * Identificadores CVE e identificadores alternativos de vulnerabilidades
  * Puntuaciones y calificaciones de gravedad CVSS (Crítica, Alta, Media, Baja)
  * Versiones de paquetes afectadas y correcciones disponibles
  * Descripciones detalladas de vulnerabilidades y referencias
  * Enlaces a avisos de fuentes como GitHub Advisory Database, NVD y los proveedores, cuando estén disponibles
  * Fechas de publicación y enlaces externos
* **Lógica de escaneo inteligente**: Detecta automáticamente cuando hay archivos de dependencia presentes y optimiza el rendimiento de escaneo

## Instrucciones de configuración

<Info>El proyecto debe contener al menos un archivo de dependencia compatible y permisos apropiados para realizar escaneos de seguridad.</Info>

### Pasos de configuración

<Steps>
  <Step title="Verificar archivos de dependencia">
    Asegúrate de que tu proyecto contiene archivos de dependencias compatibles:

    <Tabs>
      <Tab title="Python">
        ```text theme={null}
        requirements.txt
        Pipfile
        Pipfile.lock
        pyproject.toml
        poetry.lock
        ```
      </Tab>

      <Tab title="JavaScript/Node.js">
        ```text theme={null}
        package.json
        package-lock.json
        yarn.lock
        pnpm-lock.yaml
        ```
      </Tab>

      <Tab title="Java">
        ```text theme={null}
        pom.xml
        build.gradle
        build.gradle.kts
        gradle.lockfile
        ```
      </Tab>

      <Tab title="Ve">
        ```text theme={null}
        go.mod
        go.sum
        ```
      </Tab>

      <Tab title="Ruby">
        ```text theme={null}
        Gemfile
        Gemfile.lock
        ```
      </Tab>

      <Tab title="PHP">
        ```text theme={null}
        composer.json
        composer.lock
        ```
      </Tab>

      <Tab title="C#">
        ```text theme={null}
        *.csproj
        packages.config
        ```
      </Tab>

      <Tab title="Swift">
        ```text theme={null}
        Package.swift
        Package.resolved
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Configurar el alcance de escaneo">
    Elige si incluir el escaneo de dependencias en escaneos completos o parciales
  </Step>

  <Step title="Configurar notificaciones">
    Configura cómo quieres ser notificado de nuevas vulnerabilidades
  </Step>
</Steps>

## Guía de uso

<Note>Para consultar las dependencias de un escaneo, descargar archivos SBOM o exportar las dependencias a CSV necesitas el permiso **Ver problema SCA**. Si el control de acceso a proyectos está habilitado, también debes tener acceso al proyecto.</Note>

### Flujos de trabajo clave

1. **Detección automática**: El sistema identifica automáticamente los archivos de dependencias en el directorio de tu proyecto
2. **Escaneo exhaustivo**: Analiza todos los archivos de dependencias compatibles y compara los paquetes con bases de datos de vulnerabilidades
3. **Procesamiento de vulnerabilidades**: Analiza los resultados y los enriquece con información de seguridad adicional
4. **Creación de hallazgos**: Crea un hallazgo con seguimiento por cada vulnerabilidad detectada
5. **Informes**: Genera informes completos con recomendaciones prácticas de remediación

### Filtros de la vista de dependencias

<img src="https://mintcdn.com/corgea/Ol14XvOQ0I7r7nLK/images/dependencies/dependencies_view.png?fit=max&auto=format&n=Ol14XvOQ0I7r7nLK&q=85&s=407616b72ca6c9419a9d4c7ae9ff35e3" alt="Vista de dependencias" width="3586" height="2066" data-path="images/dependencies/dependencies_view.png" />

Utiliza filtros en la vista de Dependencias para restringir los resultados de SCA:

* **Buscar**: Encuentra hallazgos por CVE, nombre de paquete o resumen
* **Gravedad**: Limita los resultados a hallazgos críticos, altos, medios o bajos
* **Estado del SLA**: Muestra los hallazgos de dependencias vencidos o escalados cuando se aplica un SLA de SCA
* **Ecosistema**: Limita los resultados a un ecosistema de paquetes concreto
* **Proyecto**: Filtra a un proyecto específico por nombre (muestra solo proyectos a los que puedes acceder)
* **Licencia**: Filtra por la licencia de la dependencia
* **Tipo de dependencia**: Muestra dependencias directas, transitivas, de desarrollo u opcionales
* **Alcanzabilidad**: Muestra hallazgos alcanzables, inalcanzables, no utilizados o cuyo análisis sigue en curso. Consulta [Análisis de alcanzabilidad](#reachability-analysis)
* **Corrección disponible**: Muestra solo hallazgos con una corrección conocida

**Escaneos afectados** cuenta los escaneos distintos en los que se detectó una vulnerabilidad, incluso cuando el mismo escaneo la encuentra en múltiples paquetes o manifiestos.

### Exportar dependencias a CSV

Haz clic en **Exportar CSV** en la vista de Dependencias para descargar los resultados que coincidan con tu búsqueda y filtros actuales. La exportación incluye detalles de paquetes y vulnerabilidades, tipo de dependencia y alcance alcanzable, proyecto y rama, y la ruta del manifiesto afectada. Cuando el Control de Acceso al Proyecto está activado, la exportación incluye solo los proyectos a los que puedes acceder.

### Dependencias transitivas

Muchas vulnerabilidades de los proyectos modernos se encuentran en dependencias **transitivas**: paquetes que no añadiste directamente, sino que incorporaron otras dependencias. Corgea resuelve el grafo completo para mostrar exactamente de qué depende la aplicación y por qué.

#### Tipos de dependencias

En los resultados de escaneo, los grupos de paquetes incluyen insignias que muestran de dónde proviene una dependencia vulnerable:

* **Direct**: El paquete vulnerable es una dependencia directa declarada en tu manifiesto (por ejemplo, `package.json` o `pom.xml`).
* **Transitivo**: El paquete vulnerable se incorpora indirectamente mediante otra dependencia.
* **Dev**: El paquete vulnerable se utiliza como dependencia de desarrollo (compilación, prueba o herramienta) en lugar de en tiempo de ejecución.
* **Opcional**: El paquete vulnerable se marca como dependencia opcional.

En la página de detalles del hallazgo de SCA, el tipo de dependencia aparece junto a sus demás datos. La insignia **Sub-dependencias** indica que el paquete seleccionado contiene dependencias anidadas.

#### Cómo se construye el grafo de dependencias

Corgea construye el árbol de dependencias combinando los paquetes que declaras con los paquetes que tu build realmente resuelve:

1. **Las dependencias directas** se leen de los manifiestos (`package.json`, `pom.xml`, `requirements.txt`, `go.mod`, `Gemfile` y otros).
2. **Las dependencias transitivas** se resuelven a partir de lockfiles —como `package-lock.json`, `yarn.lock`, `poetry.lock` y `go.sum`— y de un SBOM generado, que contiene las versiones resueltas exactas y sus relaciones jerárquicas.
3. Cuando falta un lockfile, Corgea intenta **generarlo automáticamente** en los ecosistemas compatibles (por ejemplo, resolviendo dependencias de Python o .NET) para poder analizar también los paquetes transitivos.

Cada dependencia registra el **padre** que la introdujo y la **dependencia directa raíz** a la que se remonta, lo que permite a Corgea mostrar la ruta completa desde tu manifiesto hasta el paquete vulnerable.

#### Vista del árbol de dependencias

La vista de dependencias puede representarlas como un árbol **desplegable**, donde puedes expandir una dependencia directa para ver todos los paquetes que incorpora:

```text theme={null}
express@4.17.1 (direct)
├── lodash@4.17.15 (transitive)
└── qs@6.7.0 (transitive)
    └── side-channel@1.0.4 (transitive)
```

La búsqueda en el árbol resalta los paquetes coincidentes y mantiene visibles sus antecesores para mostrar *por qué* está presente un paquete vulnerable. Por motivos de rendimiento, el árbol no se renderiza en proyectos muy grandes —con más de unas 10.000 dependencias—; en esos casos, utiliza las vistas de lista y búsqueda.

### Ecosistemas compatibles

<Accordion title="Ver los 25+ ecosistemas compatibles">
  El escaneo de dependencias es compatible con los siguientes ecosistemas:

  * **AlmaLinux** - Paquetes de Linux empresarial
  * **Alpine** - Paquetes de Linux Alpine
  * **Android** - Dependencias de aplicaciones Android
  * **Bitnami** - Paquetes de aplicaciones Bitnami
  * **crates.io** - Paquetes de Rust
  * **Curl** - vulnerabilidades en la biblioteca cURL
  * **Debian GNU/Linux** - Paquetes de Debian
  * **Git** - Repositorios Git (incluyendo C/C++)
  * **GitHub Actions** - Workflows de GitHub Actions
  * **Go** - Módulos y paquetes de Go
  * **Haskell** - Paquetes de Haskell
  * **Hex** - Paquetes de Elixir
  * **Kernel de Linux** - Vulnerabilidades del kernel de Linux
  * **Maven** - Dependencias de Java Maven
  * **npm** - Paquetes de Node.js
  * **NuGet** - Paquetes .NET
  * **OSS-Fuzz** - El servicio de fuzzing continuo de Google
  * **Packagist** - Paquetes PHP
  * **Pub** - Paquetes de Dart
  * **PyPI** - Paquetes en Python
  * **Python** - Vulnerabilidades del lenguaje Python
  * **R** - Paquetes R (CRAN y Bioconductor)
  * **Rocky Linux** - Paquetes de Rocky Linux
  * **RubyGems** - Paquetes de Ruby
  * **SwiftURL** - Paquetes Swift
  * **Ubuntu OS** - Paquetes de Ubuntu
</Accordion>

### Ejemplo de proyecto multiecosistema

```text Enterprise Application Structure theme={null}
Enterprise Application:
├── backend/
│   ├── requirements.txt        ✓ Python dependencies
│   ├── pom.xml                 ✓ Java dependencies
│   └── go.mod                  ✓ Go dependencies
├── frontend/
│   ├── package.json            ✓ Node.js dependencies
│   └── package-lock.json       ✓ Lock file
├── mobile/
│   └── Gemfile                 ✓ Ruby dependencies
└── infrastructure/
    └── docker-compose.yml      ✓ Container dependencies
```

### Desglose de la gravedad de la vulnerabilidad

<Warning>**Crítico**: Se requiere acción inmediata, posible compromiso total del sistema</Warning>

* **Alto**: Debe abordarse con prontitud, impacto significativo en la seguridad
* **Medio**: Debería tratarse en ciclos de mantenimiento regulares
* **Bajo**: Hallazgos menores que pueden abordarse cuando resulte conveniente

## Análisis de alcanzabilidad

Un paquete vulnerable en el árbol de dependencias no implica necesariamente que la aplicación esté expuesta. El análisis de alcanzabilidad ayuda a priorizar al determinar si el código puede activar la vulnerabilidad.

Por cada dependencia **directa** vulnerable, Corgea responde a dos preguntas:

1. **¿Se usa el paquete?** Corgea busca importaciones y usos del paquete en tu código. Un paquete que se declara pero nunca se importa conlleva un riesgo mucho menor.
2. **¿Es accesible la función vulnerable?** Para los paquetes que se usan, Corgea analiza si tu código realmente llama a las funciones específicas afectadas por la vulnerabilidad.

Corgea trata de forma distinta las bibliotecas auxiliares y los frameworks. En las **bibliotecas auxiliares**, puede buscar llamadas directas a las funciones vulnerables. En los **frameworks**, donde el código vulnerable se ejecuta dentro del propio framework y no mediante una función invocada directamente, la alcanzabilidad se marca como *incierta*, porque no puede determinarse solo a partir del código de la aplicación.

<Note>El análisis de alcanzabilidad se ejecuta en las dependencias directas. Las vulnerabilidades de dependencias transitivas se notifican y pueden corregirse —consulta [Recomendaciones de corrección](#fix-recommendations)—, pero su alcanzabilidad no se analiza de forma individual.</Note>

### Estados de alcanzabilidad

Cada hallazgo analizado recibe uno de los siguientes estados, que también puedes utilizar como filtros en la vista de dependencias:

* **Accesible**: Tu código llama a la funcionalidad vulnerable. Estas son la máxima prioridad, especialmente para dependencias directas.
* **Inalcanzable**: Se utiliza el paquete, pero no se llaman las funciones vulnerables.
* **No utilizado**: El paquete está declarado pero no se usa en tu código.
* **Analizando**: El análisis de alcanzabilidad del hallazgo sigue en curso.

### Visualización de la alcanzabilidad

En los hallazgos alcanzables, Corgea puede representar la ruta desde los puntos de entrada de la aplicación hasta el código vulnerable. Muestra cómo fluye la ejecución desde los **endpoints**, pasa por **funciones** intermedias y llega a la función **vulnerable**, lo que permite comprender y validar la alcanzabilidad.

## Recomendaciones de corrección

Cuando existe una corrección, Corgea recomienda la **versión corregida más próxima**, es decir, la versión más baja que resuelve la vulnerabilidad, y la muestra junto a la instalada. Así, la actualización es lo más pequeña posible y se reduce el riesgo de cambios incompatibles.

En las dependencias **directas**, puedes aplicar la corrección actualizando la versión en el manifiesto.

En las dependencias **transitivas**, normalmente no puedes sustituir la versión directamente porque la controla un paquete padre. Corgea muestra la **ruta de dependencias** y la **dependencia padre** que debes actualizar para incorporar la versión transitiva corregida. Consulta [Dependencias transitivas](#transitive-dependencies) para saber cómo se construye la ruta.

<Note>Las recomendaciones de corrección de dependencias son orientativas. Comprueba la compatibilidad de las actualizaciones antes de aplicarlas.</Note>

## Escaneo de licencias

Durante el escaneo de dependencias, Corgea captura la **licencia de software** asociada a cada dependencia, dándote visibilidad sobre las licencias presentes en todo tu proyecto.

La información de licencias aparece de dos formas:

* **Filtro de licencias**: En la vista de dependencias, filtra los hallazgos por licencia (consulta [Filtros de la vista de dependencias](#dependencies-view-filters)).
* **Exportación CSV**: La información de licencia se incluye al [exportar dependencias a CSV](#export-dependencies-to-csv).

<Note>El escaneo de licencias proporciona un inventario de licencias para visibilidad e informes. No aplica automáticamente las políticas de cumplimiento de licencias.</Note>

## Escaneo de imágenes en contenedor

Corgea también escanea las imágenes de contenedor de las que depende el proyecto e identifica vulnerabilidades en paquetes base del sistema operativo y en otros programas instalados en sus capas. Las imágenes se detectan automáticamente en archivos `Dockerfile` y Docker Compose, sin configuración adicional.

Para conocer los métodos de detección, los registros compatibles y los límites, consulta [Escaneo de imágenes de contenedor](/es/container-scanning).

## Detección de paquetes maliciosos

Como parte del escaneo de dependencias, Corgea identifica paquetes **maliciosos o comprometidos** conocidos, como typosquats, versiones secuestradas y versiones con puertas traseras, mediante OpenSSF Malicious Packages y fuentes de avisos relacionadas.

Para obtener más información, consulta [Detección de paquetes maliciosos](/es/malware-scanning).

## Mejores prácticas

<Tip>Activa el escaneo automático para detectar nuevas vulnerabilidades a medida que se revelan en tiempo real.</Tip>

* **Escaneo periódico**: Habilita el escaneo automático para detectar vulnerabilidades nuevas a medida que se publican
* **Actualizaciones de dependencias**: Actualiza rápidamente las dependencias cuando haya correcciones disponibles
* **Priorización por gravedad**: Aborda primero las vulnerabilidades críticas y de gravedad alta
* **Evaluación de riesgos**: Evalúa si las vulnerabilidades afectan realmente a la superficie de ataque de tu aplicación
* **Higiene de dependencias**: Revisa y elimina periódicamente las dependencias sin usar para reducir la superficie de ataque
* **Versiones fijas**: Utiliza números de versión concretos en los archivos de dependencias para obtener resultados coherentes
* **Monitorización**: Configura alertas para nuevas vulnerabilidades descubiertas en tus dependencias
* **Documentación**: Mantén registros de los riesgos aceptados y de las decisiones de remediación

## Resolución de problemas

<AccordionGroup>
  <Accordion title="No se han encontrado vulnerabilidades, pero sí hay dependencias">
    **Solución**: Comprueba que los archivos de dependencias tengan formatos compatibles y contengan información válida

    **Comprobación**: Asegúrate de que los archivos no estén dañados ni contengan errores de sintaxis
  </Accordion>

  <Accordion title="Los resultados del escaneo parecen incompletos">
    **Solución**: Comprueba que todos los archivos de dependencias estén incluidos en el ámbito del escaneo

    **Comprobación**: Verifica que los archivos de dependencias tengan un formato correcto y sean accesibles
  </Accordion>

  <Accordion title="Se notifican vulnerabilidades que son falsos positivos">
    **Solución**: Revisa los detalles de las vulnerabilidades para determinar si afectan realmente a la aplicación

    **Comprobación**: Considera los patrones de uso específicos y los vectores de ataque en tu aplicación
  </Accordion>

  <Accordion title="El rendimiento del escaneo es lento">
    **Solución**: Es normal en proyectos grandes con muchas dependencias

    **Comprobación**: Considera usar escaneo incremental solo para archivos modificados
  </Accordion>
</AccordionGroup>
