La cadena de suministro
La amenaza más probable no viene de fuera: viene de tus dependencias. Cuántas tienes de verdad, qué puede hacer cada una en cada lado, y las cinco defensas ordenadas por lo que cuestan.
Cuántas son
# en el frontend: el árbol completo, no lo que dice package.jsonnpm ls --all | wc -l# en el core: lo mismocd src-tauri && cargo tree | wc -lLos números suelen desconcertar. Un frontend moderno con una herramienta de construcción y un framework anda por varios cientos; el árbol de Rust de un proyecto de Tauri, por otros tantos. Y ninguno de esos números lo eligió nadie: se eligieron diez o quince dependencias directas, y el resto vino detrás.
Qué puede hacer cada una
Y aquí está la diferencia que la fase V explota:
La lectura es la que decide la práctica: una dependencia del core es infinitamente más peligrosa que una del frontend, porque en el core no hay ninguna frontera. Todo el trabajo de la fase V acota el frontend; el core no lo acota nada.
De ahí una regla que vale más que cualquier herramienta: el core tiene pocas dependencias y se revisan; el frontend puede tener más y está acotado.
Las cinco defensas
El momento en que entra sin que nadie mire
Merece nombrarlo porque es donde falla el proceso, no la herramienta:
Una actualización. El fichero de bloqueo protege del cambio inadvertido; una actualización deliberada lo reescribe entero, y con él pueden entrar decenas de paquetes nuevos. Actualizar todo de golpe justo antes de publicar es el peor momento posible.
Una dependencia transitiva. Añades un paquete y vienen quince. Nadie revisa esos quince porque nadie los eligió. Es la razón de la defensa 3: mirar el árbol que añade, no solo el paquete.
Un plugin de Tauri. Los oficiales están mantenidos por el equipo del framework; los de la comunidad son dependencias del core como cualquier otra, con todo lo de la columna derecha de la tabla. El nivel 70 da el criterio para evaluarlos.