Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-39866 — Proof-of-Concept-Labor zur Demonstration von Command Injection bei GitHub Actions Workflow Dispatch (CVE-2026-39866). Führt verwundbare und gepatchte Versionen nebeneinander für die Bildungsanalyse aus. | Kitploit
Tools/GitHubGitHub/abhayclasher/cve-2026-39866
SchwachstellenanalyseExploitationWebanwendungs-ExploitationCommand and ControlLernen & BildungLabs & Praxis
GitHubabhayclasher/cve-2026-39866

CVE-2026-39866

Proof-of-Concept-Labor zur Demonstration von Command Injection bei GitHub Actions Workflow Dispatch (CVE-2026-39866). Führt verwundbare und gepatchte Versionen nebeneinander für die Bildungsanalyse aus.

Repository anzeigen
16vor 5 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-39866 — Command Injection über unquotiertes Workflow-Dispatch-Eingabefeld

CVE GHSA CWE-78 Patched

Proof-of-Concept-Labor für Command Injection im GitHub-Actions-Workflow-Dispatch


Zweck

CVE-2026-39866 ist ein Command-Injection-Fehler im GitHub-Actions-Release-Workflow von Lawnchair. Die Datei release_update.yml übergibt Benutzereingaben ohne Quoting direkt an bash, sodass ein Angreifer Befehle einschleusen kann. Dieses Repository führt sowohl die verwundbare als auch die gepatchte Version nebeneinander aus.

Kurzübersicht

FeldWert
CVE-IDCVE-2026-39866
GHSAGHSA-9prc-pp2c-3427
CWECWE-78 (Unzureichende Neutralisierung spezieller Elemente in einem OS-Befehl)
ProduktLawnchairLauncher/lawnchair
BetroffenAlle Versionen unterhalb von fcba413
Gepatchtfcba413
EntdeckungAbhay Kumar (@abhayclasher)

Details zur Schwachstelle

Die Schwachstelle befindet sich in der Workflow-Datei release_update.yml. Die Aktion nimmt einen Parameter artifactName entgegen und übergibt ihn ohne Quoting direkt an einen bash-Befehl.

- name: Rename artifact
  run: mv ${{ inputs.artifactName }}.zip lawnchair.zip

GitHub Actions ersetzt den Variablenwert in der Zeichenkette, bevor die Shell sie ausführt. Ohne Anführungszeichen um ${{ inputs.artifactName }} interpretiert die Shell Leerzeichen und Semikolons als Befehlsseparatoren.

Wenn ein Angreifer file.zip; touch pwned.txt # als artifactName liefert:

Wie GitHub Actions es parst: ${{ inputs.artifactName }} → file.zip; touch pwned.txt #

Wie die Shell es ausführt:

mv file.zip; touch pwned.txt #.zip lawnchair.zip

Die Shell führt mv file.zip aus, dann touch pwned.txt und ignoriert den Rest als Kommentar.

Auswirkungen

  • Ausführen beliebiger Befehle auf dem GitHub-Actions-Runner.
  • Stehlen von Repository-Secrets, die der Runner-Umgebung zugänglich sind (wie GITHUB_TOKEN oder Release-Signaturschlüssel).
  • Verändern von Release-Artefakten, bevor sie hochgeladen werden.
  • Wechsel in verbundene Infrastruktur, wenn der Runner selbst gehostet ist.

Systemanforderungen

  • Node.js 18 oder neuer
  • Docker (optional, für containerisiertes Labor)
  • 500 MB freier Speicherplatz

Einrichtung

Option 1: Direkt ausführen

git clone https://github.com/abhayclasher/CVE-2026-39866.git
cd CVE-2026-39866/app
npm install
node server.js

Option 2: Mit Docker ausführen

git clone https://github.com/abhayclasher/CVE-2026-39866.git
cd CVE-2026-39866
docker compose up -d

Verwendung

Nachdem der Server gestartet ist, rufen Sie diese URLs auf:

URLBeschreibung
http://localhost:3000/workflow/vulnerableVerwundbarer Workflow — Command Injection wird beim Absenden ausgeführt
http://localhost:3001/workflow/patchedGleicher Workflow mit angewendetem fcba413-Patch

Die verwundbare Version führt Ihren eingeschleusten Befehl auf dem Runner aus. Die gepatchte Version behandelt die Eingabe als literale Zeichenkette.

Sie können auch das eigenständige PoC ausführen:

cd poc
node exploit.js

Dies startet einen minimalen Server auf Port 3000, der denselben Fehler ohne den vollständigen Anwendungskontext demonstriert.

So funktioniert es

Erkennungsablauf

1. Angreifer kontrolliert den Eingabeparameter artifactName
2. GitHub Actions expandiert ${{ inputs.artifactName }} in das YAML
3. Der run-Schritt sendet dies an bash
4. Bash sieht unquotierte Sonderzeichen und behandelt sie als Befehlssyntax
5. Befehle werden mit den Privilegien der Runner-Umgebung ausgeführt

Die Angriffskette

┌────────────────────────────────────────────────────┐
│  1. Bösartige Eingabe:                             │
│                                                     │
│     artifactName = "file.zip; id #"                │
│                                                     │
│  2. GitHub Actions setzt in YAML ein:              │
│                                                     │
│     run: mv file.zip; id #.zip lawnchair.zip       │
│                                                     │
│  3. Bash sieht:                                     │
│     - mv file.zip                                   │
│     - id                    <-- Beliebiger Befehl   │
│     - #.zip lawnchair.zip (ignoriert)              │
│                                                     │
│  4. Shell führt beliebigen Befehl aus              │
└────────────────────────────────────────────────────┘

Der Fix

Version fcba413 führt Quoting um die interpolierte Variable ein:

- name: Rename artifact
  run: mv "${{ inputs.artifactName }}.zip" lawnchair.zip

Anführungszeichen verhindern, dass die Shell Sonderzeichen parst. Die Nutzlast wird weiterhin als literale Dateinamen-Zeichenkette behandelt.

Best Practice ist die Verwendung von Umgebungsvariablen, um Benutzereingaben vollständig zu isolieren:

- name: Rename artifact
  env:
    ARTIFACT_NAME: ${{ inputs.artifactName }}
  run: mv "$ARTIFACT_NAME.zip" lawnchair.zip

Vollständigen Commit ansehen: fcba413

Projektstruktur

CVE-2026-39866/
├── README.md               # Diese Datei
├── docker-compose.yml      # Docker-Labor-Konfiguration
├── app/
│   ├── Dockerfile          # Container-Build-Konfiguration
│   ├── package.json        # Node.js-Abhängigkeiten
│   └── server.js           # Simulation des verwundbaren + gepatchten Workflow-Runners
└── poc/
    └── exploit.js          # Eigenständiges minimales Proof-of-Concept

Referenzen

  • NVD — CVE-2026-39866
  • GitHub Security Advisory
  • Patch-Commit
  • CWE-78

Gemeldet von Abhay Kumar. Dieses Repository ist ausschließlich für lokale Bildungszwecke gedacht. Stellen Sie den verwundbaren Server nicht in einem öffentlichen Netzwerk bereit.

Nur für Bildungszwecke — nur in isolierten Umgebungen verwenden

Tool herunterladen