---
title: "Encuentra las dependencias que cualquiera podría secuestrar · SourceAnt"
description: "Un paquete interno nombrado con una palabra simple puede ser publicado por cualquiera. SourceAnt ya evalúa cada dependencia interna según si su nombre incluye un propietario."
url: "https://sourceant.ai/es/use-cases/dependency-confusion/"
---

Nombres de la cadena de suministro

# Cualquiera puede publicar un paquete llamado acme-auth. Tu build podría instalarlo.

Así funciona la confusión de dependencias, y termina con el código de un desconocido ejecutándose dentro de tu build. Los nombres en riesgo son los que están escritos en tus propios manifiestos, y SourceAnt ya ha evaluado cada uno de ellos.

[Empezar gratis](https://app.sourceant.ai/) [Explorar este caso de uso](https://sourceant.ai/es/use-cases/dependency-confusion/#overview)

## Cómo ocurre

Ni exploit ni truco ingenioso. Solo un nombre que nadie posee.

1.  01
    
    ### Leen un nombre
    
    Tu paquete interno se llama acme-auth. El nombre está en un lockfile de un repositorio público, en un stack trace, en un registro de trabajo o en una entrada de blog que escribió uno de tus ingenieros.
    
2.  02
    
    ### Lo publican
    
    Cualquiera puede registrar acme-auth en el registro público. No cuesta nada y lleva un minuto. Establecen la versión más alta que la tuya.
    
3.  03
    
    ### Tu build toma el suyo
    
    Según cómo esté configurado tu instalador, un paquete público puede imponerse al privado. Ahora su script de instalación se ejecuta donde se ejecuta tu build, con todo aquello a lo que tu build puede llegar.
    

La solución es bien conocida: poseer el nombre, o fijar la fuente de la que debe venir. La parte difícil es saber cuáles de tus nombres están expuestos, y esa lista no está escrita en ningún sitio.

Por qué SourceAnt lo sabe

## Tuvo que decidir hasta qué punto confiar en el nombre

Cuando SourceAnt lee un manifiesto y ve una dependencia de un nombre que publica uno de tus propios repositorios, propone la relación. Primero pregunta si el nombre incluye a su propietario.

Un nombre que incluye a su propietario resuelve a ti y a nadie más, así que la propuesta vuelve con total confianza. Una palabra simple recibe una calificación más baja, porque el registro público también puede responder por esa palabra. El número no es una evasiva. Es la forma de la exposición.

Así que la lista que quieres es un filtro que ya puedes ejecutar.

la calificación, tal como se ejecuta

1.0

El nombre incluye a su propietario. Nadie más puede publicarlo.

0.6

Una palabra simple. Probablemente resuelve a ti, y un desconocido podría tomarla mañana.

ninguno

Dos de tus repositorios publican el mismo nombre. Eso es ambiguo, así que no se propone nada en lugar de lanzar una moneda al aire.

## Tres de estos no pueden ser secuestrados. Uno sí.

La mayoría de los ecosistemas incluyen al propietario en el nombre. Python no.

| Ecosistema | Un nombre tuyo | Quién puede publicarlo |
| --- | --- | --- |
| Composer | acme/auth | Solo tú El proveedor forma parte del nombre. Nadie más puede publicarlo. |
| Go | github.com/acme/auth | Solo tú La ruta del módulo es un host que tú controlas. |
| npm | @acme/auth | Solo tú Con propietario cuando lleva ámbito. Un nombre simple no lo tiene. |
| PyPI | acme-auth | Cualquiera Los nombres de PyPI no tienen propietario. No existe una forma con ámbito a la que migrar. |

Si tus paquetes internos son de Python, todos ellos están en el segundo grupo. Eso no es un fallo de la inferencia. Es lo que son los nombres de PyPI.

## Entonces tienes una lista, y dos formas de cerrarla

### Toma el nombre, o impide que el registro responda por él

Regístralo públicamente para que nadie más pueda hacerlo, mueve el paquete detrás de un ámbito que controles, o fija la fuente desde la que tu instalador puede resolverlo.

### Anota los que decidas asumir

Regístralo como una restricción junto con tu razonamiento. La siguiente persona que lo encuentre, o el siguiente agente, leerá la decisión en lugar de reabrirla.

## Ponga su sistema en el registro

Ejecute el núcleo abierto en su propia infraestructura, o comience en el espacio de trabajo alojado. El grafo es portátil en ambos casos.

[Empezar gratis](https://app.sourceant.ai/) [Cómo funciona Systems](https://sourceant.ai/es/systems)

[Todos los casos de uso](https://sourceant.ai/es/use-cases)
