
Proof-of-concept, демонстрирующий уязвимость внедрения команд в инструменте MS-Agent Shell, позволяющий выполнение произвольных команд и получение обратной оболочки (reverse shell) через обход проверок безопасности на Python.
Критическая уязвимость внедрения команд (CVE-2026–2256, CVSS X.X) была обнаружена в компоненте Shell tool фреймворка MS-Agent версии 1.5.2. Уязвимость возникает из-за некорректной санитизации пользовательского ввода, который напрямую передаётся в контекст выполнения shell, что позволяет выполнить непредусмотренные команды. Злоумышленник может воспользоваться этой уязвимостью, внедряя специально сформированный контент в источники данных, потребляемые агентом, такие как промпты, документы, журналы или исследовательские входные данные, без необходимости прямого доступа к shell или явного неправильного использования оператором. В результате произвольные команды могут выполняться с привилегиями процесса MS-Agent на хост-системе в рамках обычного потока выполнения агента, что потенциально может привести к полной компрометации хоста.
Shell tool — это внутренний компонент MS-Agent, который позволяет агентам выполнять команды операционной системы на хосте. Он предназначен для поддержки рабочих процессов агента, таких как управление файлами, навигация по каталогам и задачи автоматизации, путём делегирования выполнения команд базовой ОС.
Этот упрощённый PoC показывает, как можно обойти функцию check_safe() в Shell tool агента ms-agent для установления обратной оболочки (reverse shell) с помощью Python.
nc (netcat)Запустите PoC, чтобы убедиться, что команда обходит проверки безопасности. Ожидаемый результат: ✓ ОБХОД УСПЕШЕН — команда проходит все проверки безопасности
Откройте НОВОЕ окно терминала и выполните:
nc -l 1111
Это запустит прослушиватель на порту 1111. Оставьте этот терминал открытым и ожидающим.
В исходном терминале выполните:
./reverse_shell_poc.py --execute
При появлении запроса введите yes и нажмите Enter.
Переключитесь на терминал с прослушивателем netcat (из шага 2). Теперь у вас должно появиться приглашение shell!
Попробуйте такие команды, как:
whoami — узнать имя пользователяpwd — узнать текущий каталогls — список файловexit — закрыть соединениеpython3 для выполнения произвольного кодаpython3 НЕ входит в список заблокированных командФункция check_safe() блокирует такие команды, как:
sudo, rm -rf /, chmod, curl | bash и т.д.Но она НЕ блокирует:
python3 (выполнение произвольного кода)nc (netcat — сетевые подключения)perl, ruby, node (другие интерпретаторы)Это демонстрирует КРИТИЧЕСКУЮ уязвимость:
После тестирования вы можете удалить тестовый каталог:
rm -rf /tmp/test_output
Это демонстрация только для localhost (подключение к 127.0.0.1). Этот PoC намеренно избегает удалённого подключения, чтобы снизить риск злоупотребления.