Уязвимость LLM: несанкционированный вызов инструментов — скрытая угроза для агентных систем
Внедрение вызова инструментов (tool calling) в большие языковые модели считается решённой инженерной задачей, однако на практике сохраняется опасный класс сбоев. Модель в определённых условиях может самостоятельно «придумать» инструмент и успешно его вызвать — при условии, что этот инструмент реально существует в её рабочем окружении. Эта аномалия не выглядит как явная ошибка до тех пор, пока не приводит к полноценному инциденту, обходя стандартные API-ограничения и механизмы контроля доступа.
Проблема коренится в архитектуре современных агентных систем, где LLM действуют как оркестраторы, динамически выбирая и активируя внешние функции. Уязвимость возникает на стыке семантического понимания модели и фактического списка доступных ей инструментов. Модель, следуя своей внутренней логике и контексту запроса, может сгенерировать сигнатуру вызова для инструмента, который не был явно ей предоставлен, но который совпадает по названию или назначению с реально существующей в системе функцией. Это создаёт брешь в безопасности, позволяя осуществлять действия, на которые не было дано прямого разрешения.
Последствия такой уязвимости в реальных сценариях работы с данными и системами доступа могут быть значительными. Она открывает путь к несанкционированным операциям с конфиденциальной информацией, манипуляциям в бизнес-процессах или изменению критических настроек. Риск особенно высок в сложных корпоративных средах с большим количеством взаимосвязанных сервисов и микросервисов. Данная проблема требует пересмотра подходов к проектированию агентных систем, усиления валидации на уровне оркестратора и внедрения дополнительных контекстных проверок перед исполнением любого вызова.