Gittuf, una capa de seguridad para repositorios Git que deberías de conocer
Si trabajas con repositorios Git y te preocupa la seguridad de estos, déjame decirte que para esto existe una solución que puede ayudarte a resolver esto y más. La utilidad de la que vamos a hablar el día de hoy tiene como nombre Gittuf el cual es un proyecto que aborda las limitaciones de seguridad y control de acceso en Git.
Gittuf está enfocado en desarrollar un sistema jerárquico para verificar el contenido de los repositorios Git. Esta herramienta proporciona una capa adicional de seguridad y un conjunto de utilidades para gestionar las claves de los desarrolladores con acceso al repositorio, así como establecer reglas para acceder a ramas, etiquetas y archivos individuales.
¿Cómo funciona Gittuf?
Gittuf aborda estas las deficiencias de Git al implementar la administración segura de claves y mecanismos de control de acceso granular, inspirados en The Update Framework (TUF) utilizado en proyectos como Docker, Fuchsia, AGL (Automotive Grade Linux) y PyPI para proteger los procesos de actualización, además de ello permite asociar claves confiables usando identidades de Sigstore y admite firmas de confirmaciones de Git mediante OIDC y GPG, así como claves SSH.
El proyecto almacena la información y artefactos de verificación adicional en un espacio de nombres específico dentro del almacén de objetos de Git, lo que permite la compatibilidad con herramientas y servicios existentes como GitHub y GitLab. En ausencia de soporte de Gittuf, el repositorio sigue siendo accesible, pero la capacidad de verificar exhaustivamente su integridad se ve limitada.
En Gittuf, los desarrolladores y los cambios que realizan se identifican mediante claves y firmas digitales. Este sistema permite generar nuevas claves de forma segura, distribuir claves de manera confiable, realizar rotaciones periódicas de claves, revocar claves comprometidas, administrar listas de acceso (ACL) y espacios de nombres en repositorios de Git.
Para verificar las firmas digitales de confirmaciones y etiquetas, el propietario del repositorio genera y distribuye claves públicas que están directamente asociadas con el repositorio. Se utilizan mecanismos para revocar y reemplazar claves con el fin de evitar que los atacantes promuevan cambios fraudulentos después de obtener acceso a las claves para generar firmas digitales de desarrolladores individuales. Las claves tienen una vida útil limitada y requieren actualizaciones constantes para protegerlas contra la firma con claves antiguas.
Además, Gittuf mantiene un registro de referencia de todos los cambios, conocido como Registro de Estado de Referencia (RSL), cuya integridad y protección contra la distorsión retroactiva se garantizan mediante una estructura de árbol «Merkle Tree». Cada rama del árbol verifica todas las ramas y nodos subyacentes gracias al hash de árbol, lo que permite a los usuarios verificar la exactitud de todo el historial de operaciones y estados pasados. También protege contra «ataques de estado de referencia» en repositorios Git y planea agregar flexibilidad en los algoritmos criptográficos, integración con in-toto para certificaciones de seguimiento de fuentes de SLSA, y restricción de acceso de lectura en repositorios Git.
Cabe mencionar que Gittuf está actualmente en una fase pre-alfa, donde sus características principales están en proceso de desarrollo y actualmente la principal prioridad es avanzar hacia la versión alfa en la cual el trabajo será implementar el documento de diseño principal, que incluye características como políticas para espacios de nombres Git y de archivos, distribución de claves, registro de estado de referencia y la capacidad de sincronizar metadatos de Gittuf con repositorios remotos.
Como tal, la hoja de ruta de Gittuf establece un plan para utilizar la propia herramienta Gittuf en su desarrollo y aseguramiento. El proceso de «dogfooding» de Gittuf se llevará a cabo en varias fases:
- Fase 1
En esta etapa inicial, se utilizará la automatización para crear y firmar entradas RSL en nombre de los mantenedores de Gittuf, ademas se menciona que se registrará una certificación de GitHub para cada solicitud de extracción fusionada en la rama principal, proporcionando un rastro auditable para futuras inspecciones utilizando Gittuf. - Fase 2
Con la mejora de la compatibilidad de comandos y la usabilidad de la herramienta Gittuf, se iniciará la transición para que al menos algunas entradas RSL sean emitidas por claves locales en posesión de los mantenedores. - Fase 3
A medida que Gittuf se acerque a la versión 1, se espera realizar una transición más fluida hacia firmas principalmente fuera de línea. Esto requerirá mejoras adicionales en la usabilidad. En esta fase final, se espera haber abordado los problemas del uso activo de Gittuf para proceder con una versión estable y funcional.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.