
Лаборатория исследований безопасности: контролируемое воспроизведение GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (инъекция shell-команд через входные данные workflow_dispatch в GitHub Actions) против зафиксированного снимка NationalSecurityAgency/emissary
Автоматизированный исследовательский артефакт — не вышестоящий проект.
Этот репозиторий — одноразовая лаборатория, созданная автоматизированной системой для магистерской диссертации в Université Laval по воспроизведению опубликованных уязвимостей рабочих процессов GitHub Actions. Это точный снимок
NationalSecurityAgency/emissaryна коммите898488b489615581ea66d17954742c8e4ffb0323(2026-01-09), распространяемый под собственной лицензией этого проекта, файл которой включён без изменений в этот снимок.Вышестоящий проект не участвует, никогда не является целью, и изучаемая здесь уязвимость уже является публичной. Каждый секрет и переменная в этом репозитории — случайно сгенерированное фиктивное значение — никаких реальных учётных данных здесь нет. Ссылки на действия и образы исполнителей закреплены на те, которые они разрешались на 2026-01-09; см.
pinning.mdв выводе системы для каждого изменения, внесённого в снимок.Вопросы или возражения: [email protected]

Emissary — это P2P-ориентированный управляемый данными механизм рабочих процессов, который работает в гетерогенной, возможно широко распределённой, многоуровневой P2P-сети вычислительных ресурсов. Маршруты рабочих процессов не планируются заранее, как в обычных механизмах рабочих процессов, а обнаруживаются по мере получения дополнительной информации о данных. Обычно в рабочем процессе Emissary нет взаимодействия с пользователем; вместо этого данные обрабатываются целенаправленно, пока не достигнут состояния завершения.
Emissary является высококонфигурируемым, но в этой базовой реализации почти ничего не делает. Ожидается, что пользователи этого фреймворка предоставят классы, расширяющие emissary.place.ServiceProviderPlace, для выполнения работы над полезными нагрузками emissary.core.IBaseDataObject.
Можно выполнять различные действия, и рабочий процесс управляется по этапам, например STUDY, ID, COORDINATE, TRANSFORM, ANALYZE, IO, REVIEW.
Классами, отвечающими за управление рабочим процессом, являются emissary.core.MobileAgent и производные от него классы, которые управляют путём набора связанных объектов полезной нагрузки через рабочий процесс, и emissary.directory.DirectoryPlace, который управляет доступными сервисами, их стоимостью и качеством и поддерживает связь P2P-сети.
Прочитайте руководство DEVELOPING.md для получения информации об установке необходимых компонентов, получении исходного кода, сборке и запуске Emissary.
Выполните mvn clean package для компиляции, тестирования и упаковки Emissary
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.132 s
[INFO] Finished at: 2022-01-10T22:31:05Z
[INFO] ------------------------------------------------------------------------
В Emissary есть один bash-скрипт, который запускает всё. Он находится в верхнем уровне каталога Emissary. Скрипт запускает класс emissary.Emissary, который имеет несколько команд Picocli, доступных для обработки различных функций.
Если скрипт emissary запущен без каких-либо аргументов, вы получите список всех подкоманд конфигурации и краткое описание.
./emissary
Запуск ./emissary help даст вам тот же вывод, что и запуск без аргументов. Если вы хотите увидеть более
подробную информацию о команде, добавьте имя команды после help. Например, чтобы увидеть все
аргументы с описаниями для команды server, выполните:
./emissary help server
Остальные команды имеют аргументы (-b или --projectBase), которые можно задать, но они должны соответствовать PROJECT_BASE.
Каталог конфигурации по умолчанию — /config, но его также можно передать с помощью (-c или --config). При запуске из git-клона следует использовать target в качестве projectBase. Не стесняйтесь изменять файлы конфигурации в target/config перед запуском.
Журналирование обрабатывается logback. Вы можете указать пользовательский файл с помощью аргумента --logbackConfig.
См. help -c для каждой команды, чтобы получить дополнительную информацию.
Эта команда запустит сервер Emissary и инициализирует все настроенные места (places), место приёма (pickup place) и фильтры сдачи (drop off filters). Он запустится в автономном режиме, если -m или --mode не указан. По умолчанию количество MobileAgents рассчитывается на основе характеристик машины. На современных компьютерах это число может быть высоким. Вы можете управлять количеством агентов с помощью -a или --agents. Вот пример запуска.
./emissary server -a 2
Без дополнительной настройки он запустится на http://localhost:8001. Если вы перейдёте по этому адресу, вам потребуется ввести имя пользователя и пароль, определённые в target/config/jetty-users.properties, а именно emissary и emissary123.