
Laboratório de pesquisa em segurança: reprodução controlada do GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (injeção de shell em entrada workflow_dispatch do GitHub Actions) contra um snapshot fixado de NationalSecurityAgency/emissary
Artefato de pesquisa automatizado — não é o projeto upstream.
Este repositório é um laboratório descartável construído por um harness automatizado para uma dissertação de mestrado na Université Laval sobre a reprodução de vulnerabilidades publicadas em workflows do GitHub Actions. É um snapshot verbatim de
NationalSecurityAgency/emissaryno commit898488b489615581ea66d17954742c8e4ffb0323(2026-01-09), redistribuído sob a licença do próprio projeto, cujo arquivo está incluído inalterado neste snapshot.O projeto upstream não está envolvido, nunca é alvo, e a vulnerabilidade estudada aqui já é pública. Cada segredo e variável neste repositório é um valor fictício gerado aleatoriamente — nenhuma credencial real está presente. Referências de ações e imagens de runners estão fixadas no que resolveram em 2026-01-09; veja
pinning.mdna saída do harness para cada alteração feita no snapshot.Perguntas ou objeções: [email protected]

Emissary é um motor de workflow orientado a dados baseado em P2P que executa em uma rede P2P heterogênea, possivelmente amplamente dispersa, de múltiplas camadas, de recursos computacionais. Os itinerários de workflow não são pré-planejados como em motores de workflow convencionais, mas são descobertos à medida que mais informações são descobertas sobre os dados. Normalmente não há interação do usuário em um workflow do Emissary; em vez disso, os dados são processados de forma orientada a objetivos até atingirem um estado de conclusão.
O Emissary é altamente configurável, mas nesta implementação base quase não faz nada. Espera-se que os usuários deste framework forneçam classes que estendam emissary.place.ServiceProviderPlace para realizar trabalho em payloads de emissary.core.IBaseDataObject.
Uma variedade de coisas pode ser feita e o workflow é gerenciado em estágios, por exemplo, STUDY, ID, COORDENAR, TRANSFORM, ANALYZE, IO, REVIEW.
As classes responsáveis por direcionar o workflow são o emissary.core.MobileAgent e classes derivadas dele, que gerenciam o caminho de um conjunto de objetos de payload relacionados através do workflow e o emissary.directory.DirectoryPlace que gerencia os serviços disponíveis, seu custo e qualidade e mantém a rede P2P conectada.
Leia o guia DEVELOPING.md para obter informações sobre a instalação dos componentes necessários, obtenção do código-fonte, compilação e execução do Emissary.
Execute mvn clean package para compilar, testar e empacotar o Emissary
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.132 s
[INFO] Finished at: 2022-01-10T22:31:05Z
[INFO] ------------------------------------------------------------------------
Há um script bash no Emissary que executa tudo. Ele está no diretório de nível superior do Emissary. O script executa a classe emissary.Emissary que possui vários comandos Picocli disponíveis para lidar com diferentes funções.
Se o script emissary for executado sem nenhum argumento, você obterá uma listagem de todos os subcomandos de configuração e uma breve descrição.
./emissary
Executar ./emissary help fornecerá a mesma saída que executar sem argumentos. Se você quiser ver informações mais
detalhadas sobre um comando, adicione o nome do comando após help. Por exemplo, para ver todos os
argumentos com descrições para o comando server, execute:
./emissary help server
O restante dos comandos possui argumentos (-b ou --projectBase) que podem ser definidos, mas devem corresponder ao PROJECT_BASE.
O diretório de configuração é padronizado para /config mas também pode ser passado com (-c ou --config). Ao executar a partir do checkout do git, você deve usar target como projectBase. Sinta-se à vontade para modificar os arquivos de configuração em target/config antes de iniciar.
O registro de logs é tratado pelo logback. Você pode apontar para um arquivo personalizado com o argumento --logbackConfig.
Veja o help -c para cada comando para obter mais informações.
Este comando iniciará um servidor Emissary e inicializará todos os lugares, um lugar de coleta (pickup place) e filtros de entrega que estão configurados. Ele iniciará em modo standalone se -m ou --mode não for especificado. Por padrão, o número de MobileAgents é calculado com base nas especificações da máquina. Em computadores modernos, isso pode ser alto. Você pode controlar o número de agentes com -a ou --agents. Aqui está um exemplo de execução.
./emissary server -a 2
Sem configuração adicional, ele iniciará em http://localhost:8001. Se você navegar para essa url, precisará inserir o nome de usuário e a senha definidos em target/config/jetty-users.properties, que são emissary e emissary123.