kotwice i aliasy yaml - kotwice yaml

Kotwice i aliasy YAML: pomijana powierzchnia ataku CI/CD

Jak działają kotwice i aliasy YAML CI/CD Pipelines

Kotwice YAML a aliasy to potężne narzędzia do utrzymywania CI/CD pipeline Definicje DRY (Don't Repeat Yourself). Kotwice definiują bloki wielokrotnego użytku (&kotwica), i aliasy (*alias) kopiuj ich zawartość wszędzie tam, gdzie jest to wskazane. Działa to na popularnych platformach, takich jak GitHub Actions, GitLab CI i CircleCI.

Oto prosty przykład:

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

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

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

				
			

⚠️ Niebezpieczny przykład, nie używać w środowisku produkcyjnym

Chociaż wzorce YAML z kotwicami, takie jak ten, poprawiają łatwość utrzymania, mogą one również abstrahować od ważnego kontekstu. CI/CD, gdzie konfiguracja jest kodem, kotwice YAML i aliasy mogą dyskretnie propagować niebezpieczne ustawienia domyślne, bez wiedzy programistów, co jest dziedziczone.

Zagrożenia bezpieczeństwa ukryte w strukturach YAML Anchors

Problem z nimi Nie chodzi o składnię, ale o sposób jej użycia (lub niewłaściwego użycia). Ustawienia zabezpieczeń, takie jak zbyt szerokie uprawnienia, pominięte walidacje lub zakodowane na stałe klucze dostępu, można wbudować w kotwicę i używać wszędzie.

Przykład:

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

job-dev:
<<: *unsafe

job-prod:
<<: *unsafe

				
			

Ta kotwica (&niebezpieczny) zawiera niepewność curl | bash Wzorzec, który jest wstrzykiwany do wielu zadań. Nawet jeśli jedno zadanie powinno mieć inną walidację lub obsługę tajnych danych, jest ono zagrożone. Plik YAML firmy Anchors Struktury Ułatw przeoczenie błędu podczas przeglądu.

Jak błędnie skonfigurowany kod YAML prowadzi do narażenia łańcucha dostaw

Pojedyncza błędnie skonfigurowana Kotwica YAML może kaskadowo przenosić niebezpieczną logikę na wiele pipelines. Gdy aliasy są używane bez wyraźnej dokumentacji lub widoczności, łatwo jest nieumyślnie odziedziczyć niebezpieczne zachowania.

Rozważ ten scenariusz:

  • A .ci-szablony repozytorium definiuje współdzielone kotwice dla budować, rozwijać, test.
  • Projekty realizowane w wielu zespołach wykorzystują <<: *etap kompilacji bez przeglądania jego treści.
  • Później ktoś modyfikuje kotwicę, aby pominąć weryfikację podpisu dla zależności.

Teraz każde spożycie pipeline dziedziczy tę niepewną logikę. To klasyka ryzyko łańcucha dostaw oprogramowania:niezabezpieczone szablony replikowane po cichu za pośrednictwem Kotwice i aliasy YAML.

Tego rodzaju luki nie zawsze są wykrywane podczas tradycyjnych przeglądów kodu. Nadużycia w kodzie YAML Anchors kryją się za aliasingiem, co sprawia, że CI/CD logika nieprzejrzysta.

Wykrywanie i zapobieganie niebezpiecznemu użytkowaniu kotwic

Aby ograniczyć ryzyko związane z zakotwiczeniami YAML, wdróż walidację na wielu poziomach:

  • CI/CD Linters:Używaj linterów obsługujących YAML, które rozszerzają kotwice i aliasy YAML przed analizą. Przykład: akcjalint dla GitHub Actions lub niestandardowych linterów dla GitLab.
  • Narzędzia do skanowania konfiguracji:Używaj narzędzi zdolnych do parsowania i analizowania logiki YAML w celu wykrycia wzorców wysokiego ryzyka.
  • Sprawdź różnice po rozszerzeniu:Niektóre platformy umożliwiają przeglądanie skompilowanych pipelineZawsze sprawdzaj rozszerzony plik YAML, nie tylko plik źródłowy.
  • Guardrails:Skonfiguruj zasady, aby blokować niebezpieczne konfiguracje jak nieograniczone polecenia powłoki lub niesprawdzone pobieranie skryptów.

Zabezpieczanie kotwic YAML w DevSecOps Pipelines

Najlepsze praktyki bezpiecznego korzystania z kotwice i aliasy zawierać:

  • Utrzymuj minimalną liczbę kotwicUnikaj upychania zbyt wielu obowiązków w jednym punkcie odniesienia. Podziel logikę na oddzielne, jasno nazwane punkty odniesienia.
  • Używaj wyraźnych definicji zadań gdzie granice bezpieczeństwa mają znaczenie, szczególnie pomiędzy etapem rozwoju i produkcji.
  • Unikaj ponownego używania kotwic w różnych środowiskach chyba że jest to konieczne. Zdefiniuj osobne punkty zaczepienia dla środowiska dev, staging i prod.
  • Skanuj szablony i łańcuchy dziedziczenia w scentralizowanym CI/CD repozytoria konfiguracji.

Nigdy nie ukrywaj tajemnic do kotwicy. Zawsze wyciągaj je bezpiecznie.

Wniosek

Kotwice i aliasy YAML to potężne narzędzia zwiększające produktywność, ale źle zarządzane stają się bezpośrednim zagrożeniem dla łańcucha dostaw. Mogą one dyskretnie rozprzestrzeniać niebezpieczne błędy, osłabiać izolację etapów i zaciemniać krytyczną logikę w Twoim łańcuchu dostaw. CI/CD pipelines.

Aby zabezpieczyć pipelines zbudowany na strukturach kotwic YAML, wymusza widoczność, ogranicza ponowne użycie kotwic i traktuje CI/CD Konfiguracje poddajemy takiej samej kontroli jak kod aplikacji. Niewłaściwie użyte kotwice to nie tylko kwestia stylu, ale i powierzchnia ataku. Narzędzia takie jak Xygeni może wykrywać niewłaściwie używane kotwice, blokować niebezpieczne wzorce i zapewniać zespołom pełną widoczność odziedziczonych CI/CD logiki, zanim niebezpieczny kod trafi do produkcji.

sca-tools-oprogramowanie-narzędzia-analizy-kompozycji
Określ priorytety, rozwiąż problemy i zabezpiecz zagrożenia związane z oprogramowaniem
Załóż darmowe konto.
Nie wymagamy karty kredytowej.

Zabezpiecz rozwój i dostarczanie oprogramowania

z pakietem produktów Xygeni