Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-39866 — Proof-of-concept lab che dimostra l'iniezione di comandi nel workflow dispatch di GitHub Actions (CVE-2026-39866). Esegue versioni vulnerabili e corrette affiancate per un'analisi didattica. | Kitploit
Strumenti/GitHubGitHub/abhayclasher/cve-2026-39866
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCommand and ControlApprendimento e FormazioneLab e Pratica
GitHubabhayclasher/cve-2026-39866

CVE-2026-39866

Proof-of-concept lab che dimostra l'iniezione di comandi nel workflow dispatch di GitHub Actions (CVE-2026-39866). Esegue versioni vulnerabili e corrette affiancate per un'analisi didattica.

Vedi Repository
4 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-39866 — Iniezione di comandi tramite input non quotato nel workflow dispatch

CVE GHSA CWE-78 Patched

Laboratorio proof-of-concept per l'iniezione di comandi nel workflow dispatch di GitHub Actions


Scopo

CVE-2026-39866 è un bug di iniezione di comandi nel workflow di rilascio di GitHub Actions di Lawnchair. Il file release_update.yml passa l'input dell'utente direttamente a bash senza virgolette, quindi un attaccante può iniettare comandi. Questo repository esegue sia la versione vulnerabile che quella corretta affiancate.

Informazioni rapide

CampoValore
ID CVECVE-2026-39866
GHSAGHSA-9prc-pp2c-3427
CWECWE-78 (Neutralizzazione impropria di elementi speciali usati in un comando del sistema operativo)
ProdottoLawnchairLauncher/lawnchair
Versioni interessateTutte le versioni precedenti a fcba413
Corretta infcba413
ScopertaAbhay Kumar (@abhayclasher)

Dettagli della vulnerabilità

La vulnerabilità esiste nel file di workflow release_update.yml. L'azione accetta un parametro artifactName e lo passa direttamente a un comando bash senza virgolette.

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

GitHub Actions sostituisce il valore della variabile nella stringa prima che la shell la esegua. Senza virgolette attorno a ${{ inputs.artifactName }}, la shell interpreta spazi e punti e virgola come separatori di comandi.

Se un attaccante fornisce file.zip; touch pwned.txt # come artifactName:

Come GitHub Actions lo analizza: ${{ inputs.artifactName }} → file.zip; touch pwned.txt #

Come la shell lo esegue:

root@kitploit:~
mv file.zip; touch pwned.txt #.zip lawnchair.zip

La shell esegue mv file.zip, poi touch pwned.txt, quindi ignora il resto come commento.

Impatto

  • Esecuzione di comandi arbitrari sul runner di GitHub Actions.
  • Furto dei segreti del repository esposti all'ambiente del runner (come GITHUB_TOKEN o le chiavi di firma dei rilasci).
  • Alterazione degli artefatti di rilascio prima che vengano caricati.
  • Movimento laterale verso infrastrutture connesse se il runner è self-hosted.

Requisiti di sistema

  • Node.js 18 o successivo
  • Docker (opzionale, per il laboratorio containerizzato)
  • 500 MB di spazio libero su disco

Configurazione

Opzione 1: Esecuzione diretta

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

Opzione 2: Esecuzione con Docker

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

Utilizzo

Dopo l'avvio del server, visita questi URL:

URLDescrizione
http://localhost:3000/workflow/vulnerableWorkflow vulnerabile — l'iniezione di comandi viene eseguita all'invio
http://localhost:3001/workflow/patchedStesso workflow con la patch fcba413 applicata

La versione vulnerabile eseguirà il comando iniettato sul runner. La versione corretta tratta l'input come una stringa letterale.

Puoi anche eseguire il PoC autonomo:

root@kitploit:~
cd poc
node exploit.js

Questo avvia un server minimale sulla porta 3000 che dimostra lo stesso bug senza il contesto completo dell'applicazione.

Come funziona

Flusso di rilevamento

root@kitploit:~
1. L'attaccante controlla il parametro di input artifactName
2. GitHub Actions espande ${{ inputs.artifactName }} nel YAML
3. Lo step run lo invia a bash
4. Bash vede caratteri speciali non quotati e li tratta come sintassi di comando
5. I comandi vengono eseguiti con i privilegi dell'ambiente del runner

La catena di attacco

root@kitploit:~
┌────────────────────────────────────────────────────┐
│  1. Input malevolo:                                │
│                                                     │
│     artifactName = "file.zip; id #"                │
│                                                     │
│  2. GitHub Actions sostituisce nel YAML:           │
│                                                     │
│     run: mv file.zip; id #.zip lawnchair.zip       │
│                                                     │
│  3. Bash vede:                                      │
│     - mv file.zip                                   │
│     - id                    <-- Comando arbitrario  │
│     - #.zip lawnchair.zip (ignorato)               │
│                                                     │
│  4. La shell esegue il comando arbitrario          │
└────────────────────────────────────────────────────┘

La correzione

La versione fcba413 introduce le virgolette attorno alla variabile interpolata:

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

Le virgolette impediscono alla shell di analizzare i caratteri speciali. Il payload rimane trattato come una stringa di nome file letterale.

La best practice è usare variabili d'ambiente per isolare completamente l'input dell'utente:

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

Visualizza il commit completo: fcba413

Struttura del progetto

root@kitploit:~
CVE-2026-39866/
├── README.md               # Questo file
├── docker-compose.yml      # Configurazione del laboratorio Docker
├── app/
│   ├── Dockerfile          # Configurazione di build del container
│   ├── package.json        # Dipendenze Node.js
│   └── server.js           # Simulazione del runner del workflow vulnerabile + corretto
└── poc/
    └── exploit.js          # Proof-of-concept minimale autonomo

Riferimenti

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

Segnalato da Abhay Kumar. Questo repository è destinato esclusivamente all'uso educativo locale. Non distribuire il server vulnerabile su una rete pubblica.

Solo a scopo educativo — utilizzare in ambienti isolati

Scarica lo strumento