
Laboratoire de recherche en sécurité : reproduction contrôlée de GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (injection de commande shell via l’entrée workflow_dispatch de GitHub Actions) contre un instantané épinglé de NationalSecurityAgency/emissary
Artéfact de recherche automatisé — pas le projet en amont.
Ce dépôt est un laboratoire jetable construit par un harnais automatisé pour un mémoire de maîtrise à l'Université Laval sur la reproduction de vulnérabilités publiées dans les workflows GitHub Actions. Il s'agit d'un instantané verbatim de
NationalSecurityAgency/emissaryau commit898488b489615581ea66d17954742c8e4ffb0323(2026-01-09), redistribué sous la licence propre de ce projet, dont le fichier est inclus inchangé dans cet instantané.Le projet en amont n'est pas impliqué, n'est jamais ciblé, et la vulnérabilité étudiée ici est déjà publique. Chaque secret et variable dans ce dépôt est une valeur factice générée aléatoirement — aucun identifiant réel n'est présent. Les références d'actions et les images d'exécuteurs sont épinglées à ce qu'elles résolvaient le 2026-01-09 ; voir
pinning.mddans la sortie du harnais pour chaque modification apportée à l'instantané.Questions ou objections : [email protected]

Emissary est un moteur de workflow piloté par les données basé sur le P2P qui s'exécute dans un réseau P2P hétérogène, potentiellement largement dispersé et multi-niveaux de ressources de calcul. Les itinéraires de workflow ne sont pas pré-planifiés comme dans les moteurs de workflow conventionnels, mais sont découverts à mesure que plus d'informations sont découvertes sur les données. Il n'y a généralement aucune interaction utilisateur dans un workflow Emissary ; plutôt, les données sont traitées de manière orientée vers un objectif jusqu'à ce qu'elles atteignent un état de complétion.
Emissary est hautement configurable, mais dans cette implémentation de base il ne fait presque rien. Les utilisateurs de ce framework sont censés fournir des classes qui étendent emissary.place.ServiceProviderPlace pour effectuer du travail sur les charges utiles emissary.core.IBaseDataObject.
Une variété de choses peut être faite et le workflow est géré par étapes, par ex. STUDY, ID, COORDINATE, TRANSFORM, ANALYZE, IO, REVIEW.
Les classes responsables de la direction du workflow sont le emissary.core.MobileAgent et les classes qui en dérivent, qui gèrent le chemin d'un ensemble d'objets de charge utile liés à travers le workflow et le emissary.directory.DirectoryPlace qui gère les services disponibles, leur coût et leur qualité et maintient le réseau P2P connecté.
Lisez le guide DEVELOPING.md pour des informations sur l'installation des composants requis, l'extraction du code source, la compilation et l'exécution d'Emissary.
Exécutez mvn clean package pour compiler, tester et empaqueter Emissary
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.132 s
[INFO] Finished at: 2022-01-10T22:31:05Z
[INFO] ------------------------------------------------------------------------
Il y a un script bash dans Emissary qui exécute tout. Il se trouve dans le répertoire Emissary de niveau supérieur. Le script exécute la classe emissary.Emissary qui dispose de plusieurs commandes Picocli disponibles pour gérer différentes fonctions.
Si le script emissary est exécuté sans aucun argument, vous obtiendrez une liste de toutes les sous-commandes de configuration et une brève description.
./emissary
Exécuter ./emissary help vous donnera la même sortie que l'exécution sans arguments. Si vous voulez voir des informations plus
détaillées sur une commande, ajoutez le nom de la commande après help. Par exemple, pour voir tous les
arguments avec descriptions pour la commande server, exécutez :
./emissary help server
Le reste des commandes ont toutes des arguments (-b ou --projectBase) qui peuvent être définis, mais ils doivent correspondre à PROJECT_BASE.
Le répertoire de configuration est par défaut /config mais peut également être passé avec (-c ou --config). Lors de l'exécution depuis le checkout git, vous devez utiliser target comme projectBase. N'hésitez pas à modifier les fichiers de configuration dans target/config avant de commencer.
La journalisation est gérée par logback. Vous pouvez pointer vers un fichier personnalisé avec l'argument --logbackConfig.
Voir le help -c pour chaque commande pour obtenir plus d'informations.
Cette commande démarrera un serveur Emissary et initialisera tous les places, un place de ramassage, et les filtres de dépôt qui sont configurés. Il démarrera en mode autonome si -m ou --mode n'est pas spécifié. Par défaut, le nombre de MobileAgents est calculé en fonction des spécifications de la machine. Sur les ordinateurs modernes, cela peut être élevé. Vous pouvez contrôler le nombre d'agents avec -a ou --agents. Voici un exemple d'exécution.
./emissary server -a 2