
DevSecOps series No. 1 — Rompiendo el CI/CD usando repositorios Git maliciosos
Este es el primer post de una serie sobre DevSecOps. Hablaremos sobre la (in)seguridad en el proceso de DevSecOps.
Hoy veremos la seguridad en el proceso de construcción cuando necesitas GIT externo.
GIT en el proceso de CI
Clonar repositorios GIT es una tarea habitual para un pipeline de CI cuando estás construyendo artefactos. Algunos lenguajes de programación hacen más uso de GIT para el proceso de construcción. Por ejemplo, en GoLang puedes establecer dependencias como URL de Github:
package main
import (
"github.com/spf13/cobra"
"github.com/pkg/errors"
)
func main() {
...
}
Esta es una tarea muy común en un proceso de CI. Nada extraño ahí.
Repositorios GIT maliciosos
Las bombas de software son un concepto muy antiguo en la seguridad informática. Como puedes imaginar, la idea de la bomba de Git también existe.
Desde 2017 hay disponible un PoC para Git Bomb. Puedes obtener más información en el sitio web del autor: https://kate.io/blog/git-bomb/
Básicamente, Git Bomb es un repositorio Git especial que se creó para romper el proceso de clonación de Git y nunca terminar.
Probando el ataque de Git Bomb
Si alguno de los repositorios de tu proceso de construcción depende de un repositorio comprometido (o si el autor es un “gracioso”) cuando intentes clonar tu máquina de CI se romperá.
En el mejor de los casos (si tu máquina de C.I. estaba endurecida) el proceso terminará cuando se alcance el tiempo de espera.
Aquí puedes ver un ejemplo cuando intentamos clonar un repositorio PoC de Git Bomb:
Cancelé el proceso después de que llevara 4 minutos.
También puedes comprobar que el consumo de CPU era muy alto (casi 100%):
No seáis malos y no hagáis esto en casa 😜