ToolUniverse запускал Python, предоставленный вызывающей стороной, в изолированной программной среде, из которой можно было выйти, на сервере, не требующем аутентификации. Исполнитель, стоящий за инструментом python_code_executor, в python_executor_tool.py, проверял отправленный источник на наличие запрещенного списка имен и вызовов атрибутов, но оставил доступными встроенные функции поиска атрибутов и не останавливал атрибут dunder, полученный посредством поиска строки или через уже разрешенный модуль, поэтому вызывающий объект мог перейти от класса литерала к его базовому классу и перечислить подклассы, чтобы получить ссылку на модули процесса и подпроцесса. Аргумент для каждого вызова также позволяет вызывающей стороне расширить список разрешенных импортов до запуска проверки.
Серверы HTTP и MCP в http_api_server.py и smcp_server.py привязаны к каждому интерфейсу с включенной отладкой и без аутентификации, поэтому любой вызывающий объект, способный получить доступ к порту, выполняет код как серверный процесс. Версия 1.3.0 добавляет аутентификацию по токену носителя, по умолчанию устанавливает адрес привязки на петлю и ужесточает проверки атрибутов.
Показать оригинальное описание (EN)
ToolUniverse ran caller-supplied Python inside a sandbox that could be escaped, on a server that required no authentication. The executor behind the python_code_executor tool, in python_executor_tool.py, inspected the submitted source for a denied list of attribute names and calls but left the attribute-lookup builtins available and did not stop a dunder attribute reached through a string lookup or through a module already permitted, so a caller could walk from a literal's class to its base and enumerate subclasses to obtain a reference to the process and subprocess modules. A per-call argument also let the caller widen the import allow-list before the inspection ran. The HTTP and MCP servers in http_api_server.py and smcp_server.py bound to every interface with debugging enabled and no authentication, so any caller able to reach the port executed code as the server process. Version 1.3.0 adds bearer-token authentication, defaults the bind address to loopback, and hardens the attribute checks.
Характеристики атаки
Последствия
Строка CVSS v4.0