---
service: "Publicasta"
schema_version: "1.0"
article_id: 347
title: "Snowflakes GitHub-Actions-Lektion: Wenn ein öffentliches Issue zu CI/CD-Eingabe wird"
language: "de"
default_language: "en"
canonical_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets?lang=de"
json_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.json?lang=de"
api_url: "https://publicasta.com/api/public/v1/channels/cybersecurity/articles/snowflake_github_actions_red_agent_cicd_secrets?lang=de"
channel_url: "https://publicasta.com/api/public/v1/channels/cybersecurity"
channel_articles: "https://publicasta.com/api/public/v1/channels/cybersecurity/articles"
search_url: "https://publicasta.com/api/public/v1/search"
documentation_url: "https://publicasta.com/api-docs#reading-publicasta"
openapi_url: "https://publicasta.com/api-docs/openapi.json"
published_at: "2026-08-18T07:10:37+00:00"
updated_at: "2026-08-18T07:10:37+00:00"
translations:
  - language: "ar"
    html_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets?lang=ar"
    markdown_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.md?lang=ar"
    json_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.json?lang=ar"
  - language: "de"
    html_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets?lang=de"
    markdown_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.md?lang=de"
    json_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.json?lang=de"
  - language: "en"
    html_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets?lang=en"
    markdown_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.md?lang=en"
    json_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.json?lang=en"
  - language: "es"
    html_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets?lang=es"
    markdown_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.md?lang=es"
    json_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.json?lang=es"
  - language: "fr"
    html_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets?lang=fr"
    markdown_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.md?lang=fr"
    json_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.json?lang=fr"
  - language: "pl"
    html_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets?lang=pl"
    markdown_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.md?lang=pl"
    json_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.json?lang=pl"
  - language: "ru"
    html_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets?lang=ru"
    markdown_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.md?lang=ru"
    json_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.json?lang=ru"
  - language: "zh"
    html_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets?lang=zh"
    markdown_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.md?lang=zh"
    json_url: "https://publicasta.com/cybersecurity/snowflake_github_actions_red_agent_cicd_secrets.json?lang=zh"
---

# Snowflakes GitHub-Actions-Lektion: Wenn ein öffentliches Issue zu CI/CD-Eingabe wird

> Der Fall Wiz Red Agent belegt keinen Einbruch bei Snowflake-Kunden. Er warnt nüchtern: Öffentliche Repository-Ereignisse, YAML-Automation und langlebige interne Tokens brauchen Produktionskontrollen.

Der Fall von Wiz und Snowflake ist weder ein neuer Nachweis für einen Einbruch bei Snowflake-Kunden noch ein Beweis, dass AI-Programmierhilfen grundsätzlich unsicher sind. Die brauchbare Lehre ist enger: Ein öffentliches GitHub-Issue kann zur Eingabe für Unternehmensautomatisierung werden. Wenn diese Eingabe in GitHub Actions direkt in einen Shell-Befehl eingefügt wird, ist sie nicht mehr nur Text. Wiz Research berichtet, dass das autonome Red Agent Tool eine Workflow-Injection im öffentlichen Repository `snowflakedb/snowflake-connector-net` fand, ein präpariertes Issue öffnete, einen Callback von einem GitHub-Actions-Runner erhielt und ein Jira API token extrahierte. Snowflake korrigierte den Workflow, rotierte das Token und fand laut öffentlicher Darstellung keine unbefugten Zugriffe außerhalb der autorisierten Forschung.

 ![Neutrales Diagramm: Ein öffentliches GitHub-Issue fließt in einen CI-Workflow und zu einem gesperrten internen Jira-Token](https://publicasta.com/storage/projects/9/pages/347/2026/08/2ecdf05a-81f4-48bc-a6c8-c253ba05059a.webp)

 ## Was passiert ist

 Ausgangspunkt war ein gewöhnliches Automatisierungsmuster. Ein öffentliches Repository verband GitHub-Issues mit internen Jira-Prozessen über GitHub Actions. Solche Hilfsskripte erstellen Tickets, synchronisieren Status, benachrichtigen Slack oder aktualisieren Warteschlangen. Das Risiko entsteht, wenn ein Workflow fremdgesteuerten Text als vertrauenswürdig behandelt. Issue-Titel, Issue-Body, Branch-Namen, Pull-Request-Titel und Kommentare können in öffentlichen Projekten von außen beeinflusst werden.

 Wiz schreibt, Red Agent habe in `.github/workflows/jira_issue.yml` eine Script-Injection gefunden. Der Workflow lief bei `issues: opened`. Laut Wiz wurde der vom Angreifer kontrollierte Issue-Titel direkt in einen Shell-`run:`-Block interpoliert. Ein erster Versuch erzeugte einen bash syntax error; anschließend passte der Agent den Ansatz an und erhielt einen Out-of-band-Callback des Runners mit kodierten Zugangsdaten. Das Jira-Token authentifizierte sich als `qa@snowflake.net` im Atlassian-Tenant von Snowflake und bot Lesezugriff auf Engineering-, Security-Compliance- und Bug-Bounty-Projekte.

 Die Zeitleiste begrenzt den Fall. PR #1218, “SNOW-2069227 : Update jira workflows”, wurde am 18. Juni 2026 gemergt. Wiz gibt an, das Problem am 23. Juni gefunden, getestet und gemeldet zu haben. Der Fix PR #1402 wurde am selben Tag gemergt; das Token wurde am 24. Juni rotiert. Wiz veröffentlichte den Bericht am 17. August, The Hacker News berichtete am 18. August und wies darauf hin, dass kein betroffener Release des Snowflake Connector for .NET, kein öffentliches CVE und kein CISA KEV bekannt waren und keine öffentliche Evidenz für Kundenkompromittierung vorlag.

 ## Warum es jetzt wichtig ist

 Der Fall verbindet zwei Entwicklungen. Code-Assistenten sind im Entwicklungsalltag angekommen, und automatisierte Security-Reviews begleiten viele Pull Requests. Gleichzeitig können autonome Sicherheitsagenten öffentliche Repositories lesen, bekannte Fehlerklassen erkennen, einen Pfad testen, Fehlschläge beobachten und sich anpassen. Das macht nicht jeden Agenten zu einem Superangreifer, verkürzt aber die Zeit zwischen Fehler und funktionierendem Nachweis.

 Die reife Reaktion ist weder ein Verbot von Copilot noch blindes Vertrauen. Änderungen an `.github/workflows`, Deployment-Skripten, Cloud-Zugangsdaten, Jira-Tokens, Release-Signaturen und Paketveröffentlichungen müssen als sicherheitsrelevanter Code gelten. Ein Bot-Kommentar ist kein vollständiger Security-Review.

 ## Workflow-Injection ohne Angriffsanleitung

 Ein Issue-Titel ist Daten, solange er als Text gespeichert bleibt. Er wird gefährlich, wenn ein Workflow ihn direkt in einen Shell-Befehl einsetzt. Enthält der Text Zeichen, die die Shell interpretiert, kann der Runner etwas ausführen, was nie vorgesehen war.

 Sichere Muster halten nicht vertrauenswürdige Werte aus dem Befehlstext heraus. Sie werden in Umgebungsvariablen gelegt, korrekt quotiert, als Daten an Werkzeuge übergeben und beim Bau von JSON mit strukturierten Encodern wie `jq --arg` verarbeitet. GitHub hat diese Klasse selbst beschrieben: Kontexte wie Issue-Titel oder Branch-Namen sollten nicht direkt in `run:` expandiert werden. Das Problem ist nicht Snowflake- oder Jira-spezifisch; es entsteht überall, wo CI/CD-YAML öffentliche Metadaten, Shell und Secrets mischt.

 ## Öffentliche Repositories als Angriffsfläche

 Ein öffentliches Repository ist nicht nur Codeausgabe und Community. Es kann Automatisierung starten. Ein neues Issue, ein Kommentar, ein Label oder ein Branch-Name können Workflows auf gehosteten oder eigenen Runnern auslösen. Diese Workflows können Tokens für Jira, Slack, Paketregistries, Cloud-Dienste oder Release-Werkzeuge besitzen.

 `issues: opened` ist daher ein nicht vertrauenswürdiger Eingabepfad aus dem Internet. Berührt der Workflow ein internes Service-Token, ist das öffentliche Repository mit Unternehmensinfrastruktur verbunden. Auch reine Lesetokens sind nicht harmlos. Jira kann offene Schwachstellen, Triage-Kommentare, interne Namen, Compliance-Informationen und operative Hinweise enthalten. Für Angreifer wird das zur Karte.

 ## Die Rolle von AI

 Der AI-Aspekt ist real, aber Präzision ist nötig. Wiz stellte den Fall zunächst in den Kontext eines Copilot-assisted Pull Requests und eines autonomen Red Agent. Später stellte Wiz klar, dass Copilot als Co-Autor oder Prüfer im gemergten PR auftauchte und alles als in Ordnung markierte, aber dass öffentliche Belege nicht zeigen, dass Copilot die verwundbaren Zeilen schrieb. Die Schlussfolgerung lautet daher nicht “Copilot hat den Bug erzeugt”. Sie lautet: AI-Unterstützung verhinderte eine bekannte CI/CD-Fehlerklasse nicht.

 Red Agent zeigt die andere Seite. Autorisierte autonome Tools können alte Klassen schnell auf neue Repositories anwenden und validieren. Verteidiger sollten davon ausgehen, dass öffentliche Automatisierung schneller und kontinuierlicher geprüft wird als früher.

 ## Kein Kundenbruch, aber ein ernstes Signal

 Öffentliche Informationen zeigen keinen Snowflake-Kundenbruch. THN beschrieb das Problem als auf Repository-CI/CD beschränkt und ohne identifizierten betroffenen Connector-Release. Wiz sagt, Snowflake habe Logs geprüft und Wiz sei der einzige Akteur im Expositionsfenster gewesen. Das Token wurde rotiert.

 Das begrenzt den Vorfall, nimmt ihm aber nicht die Bedeutung. Ein offengelegtes CI/CD-Secret ist auch dann relevant, wenn ein autorisierter Forscher es findet und die Korrektur schnell erfolgt. Interne Jira-Leserechte können Angreifern Engineering-Kontext, Sicherheitsstatus und Prioritäten liefern.

 ## Kontrollen für Teams

 Inventarisieren Sie Workflows, vor allem solche mit `issues`, `issue_comment`, `pull_request`, `pull_request_target`, `discussion` oder manuellen Eingaben. Erfassen Sie Secrets, externe Systeme und Runner-Typ. Suchen Sie direkte GitHub-Kontext-Expansionen in `run:`: Issue-Titel, Issue-Body, Branch-Namen, PR-Titel und Kommentare.

 Reduzieren Sie Berechtigungen explizit. Vermeiden Sie Secrets in Workflows, die von öffentlichen Ereignissen ausgelöst werden. Nutzen Sie OIDC, kurzlebige Credentials und eng begrenzte Servicekonten. Legen Sie privilegierte Schritte hinter Maintainer-Freigaben oder Broker-Dienste. Erzwingen Sie Code-Owner-Reviews für `.github/workflows/**`, Release- und Deployment-Skripte. Bewahren Sie Logs lange genug auf, um Token-Nutzung mit Workflow-Läufen zu korrelieren.

 ## Governance für AI-gestützte Änderungen

 AI-generierte oder AI-geprüfte Änderungen brauchen risikobasierte Regeln. Labels helfen bei der Nachvollziehbarkeit, ersetzen aber keine Prüfung. Wenn eine Änderung CI/CD, Identität, Secrets, Releases oder Kundendatenpfade betrifft, braucht sie menschliche Review durch Verantwortliche plus passende automatische Checks.

 Die ruhige Schlussfolgerung: AI ersetzt AppSec-Grundlagen nicht, sondern beschleunigt beide Seiten. Zwischen verwundbarem Merge und funktionierendem Nachweis können nur Tage oder Stunden liegen. CI/CD-YAML ist Produktionscode mit Secrets. Öffentliche Issues sind Benutzereingaben. Eingaben brauchen Grenzen, Secrets brauchen Scope, Automatisierung braucht Eigentümer.
