LLM предлагает shell-команду: как ограничить исполнение

Предпочитайте узкие операции с фиксированными аргументами произвольной командной строке. Проверять намерение модели полезно, но окончательные ограничения файлов, сети и процесса должны действовать вне неё.

Где появляется ошибка

Помощник должен конвертировать загруженный файл. Он строит строку для shell из имени файла, которое пришло от пользователя. Необычное имя меняет смысл команды, и программа выполняет действие, не связанное с конвертацией. Даже без специальной инъекции агент может предложить команду с широким шаблоном удаления или неверным рабочим каталогом. Разрешение «работать с файлом» не означает доступ ко всей машине.

Рабочее решение

Вызывайте конкретную программу через безопасный интерфейс аргументов, когда это возможно, без интерпретации shell. Ограничьте каталог, права процесса, сеть и время исполнения. Проверяйте разрешённые типы операций и допустимость путей, а не только наличие опасного символа. Для удаления и публикации требуются дополнительные бизнес-ограничения. Если shell действительно необходим, изоляция и контроль становятся важнее: нельзя обещать безопасность исключительно на основании списка запрещённых слов.

Контрольные случаи

ПроверкаОжидаемое поведение
Имя файла содержит пробелы и специальные символыОно остаётся одним значением аргумента и не превращается в дополнительную команду.
Путь указывает за пределы разрешённого каталогаОперация отклоняется до чтения или изменения чужого файла; права процесса тоже ограничивают ущерб.
Конвертер зависает или создаёт слишком большой результатПроцесс остановлен по лимитам, временные ресурсы учтены, приложение сообщает понятный отказ.

Перед разрешением команды фиксируйте рабочий каталог и действующего пользователя процесса. Одинаковая строка может иметь разный эффект в тестовой папке и каталоге с рабочими данными приложения.

Отсутствие shell не устраняет уязвимости самой запускаемой программы. Ей по-прежнему нужны обновления, ограничения ресурсов и изоляция при обработке недоверенных файлов.

При построении агентов безопасность определяется не красотой команды, а границами того, что реально сможет сделать исполнитель. В платном курсе LLM Security PRO: Prompt Injection, утечки, tool-abuse можно продолжить изучение соответствующего инженерного направления. Перед покупкой сравните программу и открытые материалы со своей задачей.

Документация для проверки технических деталей: OWASP: защита от командных инъекций.

Следующий шаг: Безопасность LLM-приложений: практические проверки. По смежным вопросам: HTML из ответа LLM: как не превратить чат в XSS, Память AI-агента: как не сохранить чужую команду навсегда.