
Laboratorio di ricerca sulla sicurezza: riproduzione controllata di GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (iniezione di shell tramite input workflow_dispatch di GitHub Actions) contro uno snapshot bloccato di NationalSecurityAgency/emissary
Artefatto di ricerca automatizzato — non è il progetto upstream.
Questo repository è un laboratorio usa e getta costruito da un sistema automatizzato per una tesi magistrale presso l'Université Laval sulla riproduzione di vulnerabilità pubblicate nei workflow di GitHub Actions. È uno snapshot integrale di
NationalSecurityAgency/emissaryal commit898488b489615581ea66d17954742c8e4ffb0323(2026-01-09), ridistribuito sotto la licenza del progetto stesso, il cui file è incluso invariato in questo snapshot.Il progetto upstream non è coinvolto, non è mai preso di mira, e la vulnerabilità studiata qui è già pubblica. Ogni segreto e variabile in questo repository è un valore fittizio generato casualmente — nessuna credenziale reale è presente. I riferimenti alle azioni e le immagini dei runner sono bloccati a ciò a cui risolvevano il 2026-01-09; consulta
pinning.mdnell'output del sistema per ogni modifica apportata allo snapshot.Domande o obiezioni: [email protected]

Emissary è un motore di workflow basato sui dati e su architettura P2P che opera in una rete P2P eterogenea, potenzialmente ampiamente distribuita e multi-livello, di risorse di calcolo. Gli itinerari dei workflow non sono pre-pianificati come nei motori di workflow convenzionali, ma vengono scoperti man mano che vengono scoperte maggiori informazioni sui dati. In genere non c'è interazione con l'utente in un workflow Emissary; piuttosto, i dati vengono elaborati in modo orientato agli obiettivi fino a raggiungere uno stato di completamento.
Emissary è altamente configurabile, ma in questa implementazione di base non fa quasi nulla. Ci si aspetta che gli utenti di questo framework forniscano classi che estendono emissary.place.ServiceProviderPlace per eseguire lavoro sui payload di emissary.core.IBaseDataObject.
Si possono fare diverse cose e il workflow è gestito in fasi, ad es. STUDY, ID, COORDINATE, TRANSFORM, ANALYZE, IO, REVIEW.
Le classi responsabili di dirigere il workflow sono emissary.core.MobileAgent e le classi derivate da essa, che gestiscono il percorso di un insieme di oggetti payload correlati attraverso il workflow e emissary.directory.DirectoryPlace che gestisce i servizi disponibili, il loro costo e la loro qualità e mantiene connessa la rete P2P.
Leggi la guida DEVELOPING.md per informazioni sull'installazione dei componenti richiesti, sul recupero del codice sorgente, sulla compilazione e sull'esecuzione di Emissary.
Esegui mvn clean package per compilare, testare e impacchettare Emissary
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.132 s
[INFO] Finished at: 2022-01-10T22:31:05Z
[INFO] ------------------------------------------------------------------------
C'è uno script bash in Emissary che esegue tutto. Si trova nella directory di livello superiore di Emissary. Lo script esegue la classe emissary.Emissary che dispone di diversi comandi Picocli disponibili per gestire diverse funzioni.
Se lo script emissary viene eseguito senza alcun argomento, otterrai un elenco di tutti i sottocomandi di configurazione e una breve descrizione.
./emissary
Eseguire ./emissary help ti darà lo stesso output dell'esecuzione senza argomenti. Se vuoi vedere informazioni più
dettagliate su un comando, aggiungi il nome del comando dopo help. Ad esempio, per vedere tutti gli
argomenti con le descrizioni per il comando server, esegui:
./emissary help server
Il resto dei comandi ha tutti argomenti (-b o --projectBase) che possono essere impostati, ma devono corrispondere a PROJECT_BASE.
La directory di configurazione è impostata di default su /config ma può anche essere passata con (-c o --config). Quando si esegue dal checkout git, dovresti usare target come projectBase. Sentiti libero di modificare i file di configurazione in target/config prima di iniziare.
La registrazione (logging) è gestita da logback. Puoi puntare a un file personalizzato con l'argomento --logbackConfig.
Consulta help -c per ogni comando per ottenere maggiori informazioni.
Questo comando avvierà un server Emissary e inizializzerà tutti i luoghi (places), un luogo di ritiro (pickup place) e i filtri di consegna (drop off filters) configurati. Si avvierà in modalità standalone se -m o --mode non è specificato. Di default, il numero di MobileAgents viene calcolato in base alle specifiche della macchina. Sui computer moderni, questo può essere elevato. Puoi controllare il numero di agenti con -a o --agents. Ecco un esempio di esecuzione.
./emissary server -a 2