KI-Tools & -Skripte
Azure Pipelines Sicherheitsprüfung
Prüft azure-pipelines.yml und seine Vorlagen auf Secrets im YAML, in Skripte eingefügte Commit-Nachrichten oder PR-Branchnamen, curl | bash, ausgemusterte gehostete Images und Tasks, persistCredentials sowie Vorlagen-Repositorys, die einem Branch folgen.
Das bekommst du: 1 Datei · 44.25 KB · ZIP
Kaufoptionen ansehenProduktbeschreibung
Ein Schritt, der echo "Building $(Build.SourceVersionMessage)" ausführt, sieht harmlos aus, doch Azure Pipelines fügt die Commit-Nachricht in das Skript ein, bevor bash startet. Eine Commit-Nachricht mit einem Anführungszeichen oder $( ) wird daher als Befehl auf Ihrem Agent ausgeführt, direkt neben Ihren Secrets. Eine Pipeline, die noch vmImage: windows-2019 verwendet, funktioniert nicht mehr, seit dieses Image am 31. Dezember 2025 entfernt wurde, und CmdLine@1, PowerShell@1, Maven@2 sowie 70 weitere Task-Versionen werden am 24. November 2026 ausgemustert und am 15. März 2027 entfernt. Dieser Skill findet diese und die weiteren unten aufgeführten Fehler in Azure Pipelines und sagt Ihnen, wie Sie jeden davon beheben.
Ihr Agent führt einen Scanner über azure-pipelines.yml, Dateien in .azure-pipelines/ und .azuredevops/ sowie jede YAML-Datei aus, deren Schlüssel der obersten Ebene und Schritte zu Azure Pipelines gehören. So werden auch Step-, Job-, Stage-, Variablen- und extends-Vorlagen geprüft, einschließlich solcher unter build/, die eine Pipeline einbindet. Dateien für GitHub Actions, GitLab CI, Compose und Kubernetes werden übersprungen. Der Scanner kennt die Makrosyntax $(var), Vorlagenausdrücke ${{ }} und Laufzeitausdrücke $[ ], behandelt über env: zugeordnete Werte als sicher und verfolgt innerhalb einer Datei Variablen, die aus nicht vertrauenswürdigen Werten gebildet werden. Er führt nie die Pipeline oder ein Skript aus und nutzt nie das Netzwerk. Er liefert BLOCK, REVIEW oder NOT FLAGGED mit Datei, Zeile, Begründung und einem sichereren Ansatz. Secrets werden nie ausgegeben.
Was geprüft wird
BLOCK (vor der Auslieferung beheben)
- A01: als Literale geschriebene Passwörter, Tokens und Schlüssel: Variablen oder env-Einträge mit Secret-Namen, Task-Eingaben wie keystorePass, Standardwerte von Parametern, Passwörter in URLs oder Verbindungszeichenfolgen, Bearer-Header, --token-Flags, curl -u user:pass, docker/az login -p, sqlcmd -P, PowerShell $password = '...', -Password und ConvertTo-SecureString -AsPlainText, issecret-Logging-Befehle sowie bekannte Token-Formate (ghp_, npm_, glpat-, xox, AWS-Zugriffsschlüssel-IDs, Private-Key-Blöcke)
- A02: $(Build.SourceVersionMessage) oder $(System.PullRequest.SourceBranch) oder eine daraus gebildete Variable im Skripttext (script, bash, pwsh, powershell, Inline-Skripte von Tasks und Argumente von Shell-Tasks)
- A03: Skripte, die über unverschlüsseltes HTTP oder mit deaktivierter Zertifikatsprüfung geladen werden (curl -k, wget --no-check-certificate, -SkipCertificateCheck) und per Pipe an eine Shell oder Invoke-Expression übergeben werden
- A04: entfernte Images und Tasks: ausgemusterte von Microsoft gehostete Images (windows-2019, vs2017-win2016, ubuntu-16.04 bis ubuntu-20.04, macOS-10.13 bis macOS-13 sowie macOS-14 und ubuntu-22.04 ab ihrem Entfernungsdatum), auch über eine Matrix-Variable oder einen Parameter, den vmImage verwendet, und ab dem 15. März 2027 die ausgemusterten Task-Versionen
REVIEW (vor dem Release prüfen)
- A11: checkout mit persistCredentials: true
- A12: Container-Jobs oder Service-Container mit --privileged, weitreichenden Capabilities, Host-Namespaces, deaktiviertem seccomp oder AppArmor, einem docker.sock-Volume oder mapDockerSocket: true
- A13: Vorlagen aus einer Repository-Ressource von GitHub, Bitbucket oder einer anderen Organisation ohne ref oder mit einem Branch-ref (ein Tag oder ein 40-stelliger Commit-SHA gilt als fixiert)
- A14: $(System.AccessToken) oder Variablen mit Secret-Namen, die statt über env: in Skripttext oder Befehlszeilenargumente von Tasks eingefügt werden
- A15: Skripte, die über HTTPS geladen und sofort ausgeführt werden (curl | sh, irm | iex, bash <(curl ...), iex "& { $(irm ...) }", [scriptblock]::Create((iwr ...)))
- A16: Freitext-String-Parameter zur Laufzeit ohne values-Liste oder $(Build.RequestedFor) und die anderen Namen des Auslösers im Skripttext
- A17: veraltete gehostete Images vor ihrem Entfernungsdatum: macOS-14 (23. November 2026) und ubuntu-22.04 (17. April 2027)
- A18: die 73 Task-Versionen auf Microsofts Ausmusterungsliste vom November 2026, jeweils mit ihrem Ersatz, bis zu ihrer Entfernung am 15. März 2027
- A19: AzureCLI mit addSpnToEnvironment: true
- A20: ein expliziter pr-Trigger in einer Pipeline, die Jobs in einem selbstgehosteten Pool ausführt
Lieferumfang
- Der Scanner (Python 3.9+, nur Standardbibliothek)
- Ein Regelleitfaden mit Begründung, sichererem Ansatz und Microsoft-Quelle für jede Regel
- Ein riskantes und ein sicheres Beispiel (eine Build- und Release-Pipeline mit einer Schrittvorlage) sowie der echte Bericht, den der Scanner für das riskante Beispiel erzeugt
Grenzen
Der Scanner liest jede YAML-Datei so, wie sie geschrieben ist. Werte, die zwischen Dateien übergeben werden (Vorlagenparameter, Variablen aus anderen Dateien, Variablengruppen, Variablen aus der UI und zur Warteschlangenzeit), werden nicht verfolgt, und Einstellungen außerhalb von YAML sind nicht sichtbar: Einstellungen für Fork-Builds und Fork-Secrets, erforderliche Vorlagenprüfungen, Einschränkungen für Variablen zur Warteschlangenzeit, Validierung von Shell-Argumenten, Autorisierungsbereich von Jobs, Branch-Richtlinien und ob das Repository öffentlich ist. Branchnamen wie $(Build.SourceBranchName) werden nicht markiert. Beim Scan eines ganzen Repositorys wird ein build/-Ordner nur nach Dateien mit Pipeline-Namen und lokalen Vorlagen durchsucht, und Ordner wie dist, vendor und node_modules werden übersprungen. Die Image- und Task-Listen folgen den Microsoft-Seiten mit Stand 12. November 2026 für Azure DevOps Services. Klassische Pipelines und Release-Pipelines, die in der Weboberfläche definiert sind, werden nicht gelesen. NOT FLAGGED ist keine Garantie.
Inhalt
Eine ZIP-Datei mit 12 Dateien: SKILL.md, der Scanner in scripts/ (5 Python-Dateien), references/rules.md (jede Regel mit Begründung und sichererem Ansatz) und examples/ (4 Beispieldateien plus report.md, die echte Scanner-Ausgabe für das riskante Beispiel).
Verwendung: Dies ist ein Agent-Skill: ein Ordner mit einer SKILL.md-Datei und Python-Skripten, die ein KI-Coding-Agent wie Claude Code, Cursor oder Codex CLI ausführen kann. Entpacken Sie ihn in den Skills-Ordner Ihres Agents (für Claude Code: ~/.claude/skills/) und bitten Sie Ihren Agent dann, Ihr Projekt zu prüfen. Die Skripte laufen auch eigenständig mit Python 3.9 oder neuer, ohne dass etwas installiert werden muss. Sie lesen nur Ihre Dateien: kein Netzwerkzugriff, und nichts wird irgendwohin gesendet.
Das bekommst du
1 Datei · 44.25 KB
- azure-pipelines-safety-check-1.0.0.zipZIP · 44.25 KB
KI-Tools & -Skripte
Azure Pipelines Sicherheitsprüfung
Prüft azure-pipelines.yml und seine Vorlagen auf Secrets im YAML, in Skripte eingefügte Commit-Nachrichten oder PR-Branchnamen, curl | bash, ausgemusterte gehostete Images und Tasks, persistCredentials sowie Vorlagen-Repositorys, die einem Branch folgen.
Getly hat die hochgeladenen Dateien geöffnet und nichts gefunden, was das Öffnen verhindern würde. Das ist kein Virenscan und keine Qualitätsbewertung.
Tags
Häufige Fragen
Erhalte ich sofort Zugriff?
Ja. Dies ist ein digitales Produkt - du kannst es direkt nach dem Kauf aus deiner Bibliothek herunterladen.
Darf ich es für kommerzielle Projekte nutzen?
Ja. Kommerzielle Nutzung ist erlaubt: im eigenen Business und in dem, was du verkaufst. Die Datei selbst darfst du nicht weiterverkaufen oder verbreiten.
Wie sind die Rückerstattungsbedingungen?
Du kannst innerhalb von 30 Tagen eine Rückerstattung anfordern. Stimmt etwas nicht, fordere sie bei deiner Bestellung an - das Getly-Team prüft sie.
Welche Dateiformate und -größen erhalte ich?
Du lädst 1 Datei herunter - ZIP - insgesamt 44.25 KB.
Erhalte ich kostenlose Updates?
Ja - wenn der Verkäufer eine neue Version veröffentlicht, kannst du die aktuellen Dateien kostenlos erneut aus deiner Bibliothek herunterladen. Aktuelle Änderungen findest du im Changelog.
Preis
$5.00



