Astral, la empresa detrás de herramientas ampliamente utilizadas por millones de desarrolladores como Ruff, uv y ty, ha hecho públicos los protocolos de seguridad que emplea internamente en sus procesos de CI/CD. Tras los recientes ataques a la cadena de suministro que afectaron a proyectos de renombre como Trivy y LiteLLM, la compañía decidió compartir sus prácticas de ingeniería para servir de referencia a otros desarrolladores y mantenedores.
Refuerzo de la seguridad en CI/CD
Aunque Astral depende en gran medida de GitHub Actions para mantener su ritmo de desarrollo, la empresa advierte que la configuración predeterminada de esta plataforma suele ser insuficiente. Para mitigar riesgos, han desactivado a nivel de organización los disparadores de alto riesgo, como `pull_request_target` y `workflow_run`. Según Astral, estos disparadores son vulnerables a abusos y, en la mayoría de los casos, pueden sustituirse por el disparador `pull_request` —que cuenta con permisos más restringidos— o mediante el uso de aplicaciones de GitHub.
En cuanto a la gestión de dependencias, Astral exige que todas las acciones se bloqueen utilizando el hash de confirmación (Commit SHA) específico, evitando así el uso de ramas o etiquetas, que son más fáciles de falsificar. Para garantizar el cumplimiento de esta política, la empresa realiza una doble verificación mediante la herramienta de análisis estático zizmor y las políticas integradas de GitHub, llegando incluso a ayudar a proyectos derivados a implementar el bloqueo por hash en toda su cadena de dependencias.
La estrategia de seguridad de Astral también se basa en el principio de menor privilegio. Por defecto, los permisos de la organización están configurados como de solo lectura y cada flujo de trabajo comienza sin permisos, los cuales se otorgan de forma granular solo cuando es estrictamente necesario. Además, utilizan entornos de despliegue (Deployment Environments) para aislar credenciales sensibles, asegurando que, incluso si un proceso de prueba o revisión de código se viera comprometido, el atacante no pueda acceder a claves críticas, como las de firma de paquetes.
Para abordar las "vulnerabilidades de inmutabilidad" en las dependencias de las acciones —donde un código bloqueado podría descargar binarios externos alterados—, Astral ha implementado un mecanismo de revisión manual. Para las acciones que utilizan binarios nativos, la empresa exige incluir internamente un mapa que relacione los enlaces de descarga con sus hashes criptográficos, evitando así que un atacante pueda inyectar código malicioso sustituyendo la fuente original.
Astral subraya que estas medidas buscan equilibrar la eficiencia en el desarrollo con la seguridad. Al trasladar los procesos críticos de desarrollo y publicación desde los equipos locales de los desarrolladores hacia entornos controlados y auditables, la compañía espera establecer un estándar de seguridad replicable para toda la comunidad de código abierto.