Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 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
vor 4 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.

root@kitploit:~
- 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:

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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:

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
┌────────────────────────────────────────────────────┐
│  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:

root@kitploit:~
- 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:

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

Vollständigen Commit ansehen: fcba413

Projektstruktur

root@kitploit:~
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