Por qué stdx no se publica en crates.io: un manifiesto contra los repositorios centralizados

Fuentes: Why stdx is not on crates.io

stdx, un proyecto que busca replicar en Rust la idea de una biblioteca estándar al estilo de Go, ha decidido no publicar sus 64 crates en crates.io, el registro oficial de paquetes del ecosistema Rust, y distribuirlos exclusivamente a través de repositorios Git (GitHub y Codeberg). Su autor explica los motivos en un artículo técnico y argumentativo.

El primer problema es de nombres: al ser un monorepo con docenas de paquetes, muchos nombres ya están ocupados en crates.io. Renombrarlos sería poco práctico (¿quién quiere una biblioteca de criptografía llamada "froggy"?) y el truco de prefijar con "stdx-" abriría la puerta a typosquatting y a la distribución de malware, algo que la falta de namespaces en crates.io no ayuda a prevenir.

El segundo motivo es la seguridad de la cadena de suministro. El autor, que trabaja desde 2021 en seguridad de la cadena de suministro en Rust y se define como ex atacante, sostiene que los registros centralizados de paquetes añaden una capa de ofuscación que multiplica los vectores de ataque: tokens de publicación robados, discrepancias entre el código fuente y el publicado, compromisos de la base de datos, ataques de intermediario, cuentas vulneradas, typosquatting, namesquatting y dependency confusion, entre otros. Considera que añadir capas de firma, certificados, logs de transparencia y servicios de auditoría es colocar "carreta tras buey": soluciones complejas que los atacantes saben aprovechar.

Frente a este modelo, propone seguir el enfoque de Go: declarar directamente la URL del repositorio de cada dependencia y delegar la integridad criptográfica y el caché en herramientas similares al checksum database y a pkg.go.dev. Como ejemplo, sugiere una línea de configuración que apunta a un repositorio Git en lugar de a un nombre de paquete. El autor aclara que su crítica no apunta al equipo de crates.io, sino al modelo de repositorio centralizado en sí, y anima a otros desarrolladores de Rust a distribuir sus crates únicamente por Git.