Уязвимость CPython открывает серверы ИИ для атак с побегом из песочницы

Cpython безопасность ии уязвимость инференс Python csoonline.com

Уязвимость в CPython позволяет вредоносным шаблонам ИИ обходить песочницы и выполнять код на серверах инференса. Исследователи RunSybil обнаружили, что злоумышленники могут получить доступ к серверам, обрабатывающим миллионы запросов, и облачной инфраструктуре. Команда Python оспаривает серьезность угрозы.

Уязвимость в CPython, связанная с безопасностью памяти, может позволить вредоносным шаблонам моделей ИИ обойти песочницы кода и выполнять произвольный код на серверах инференса, как утверждают исследователи безопасности из RunSybil.

«Эксплуатируя эту уязвимость, злоумышленники могут получить доступ к серверам, обрабатывающим миллионы пользовательских запросов», — написал в своем блоге Дариус Хуле, исследователь безопасности из RunSybil. «Они также могут нанести удар непосредственно по облачной инфраструктуре, на которой размещены эти рабочие нагрузки».

Исследователи продемонстрировали, как специально созданная модель может использовать эту уязвимость для обхода Jinja, движка шаблонов на основе Python, используемого для структурирования взаимодействий между пользователями и LLM, а также защитных механизмов песочницы, и выполнять код в процессе обслуживания модели. Атака может поставить под угрозу поставщиков услуг хостинга ИИ, которые позволяют клиентам загружать и запускать собственные модели, потенциально предоставляя злоумышленникам доступ к инфраструктуре, обрабатывающей запросы нескольких клиентов, добавлено в сообщении.

Однако команда реагирования на инциденты безопасности Python (PSRT), которая занимается отчетами о безопасности, связанными с CPython, не согласилась с оценкой последствий демонстрации в своем ответе CSO. «Мы признаем наличие базовой ошибки в CPython, о которой сообщила RunSybil, и ценим их вклад в ее исправление. Однако мы не считаем продемонстрированный обход песочницы уязвимостью безопасности CPython», — заявила команда.

Разногласия касаются того, должен ли интерпретатор нести ответственность за предотвращение обхода песочницы. В то время как RunSybil утверждает, что ошибка создает риски для инфраструктуры инференса ИИ, PSRT заявляет, что выполнение недоверенного кода Python в песочнице выходит за рамки модели угроз безопасности CPython.

Эксплуатация механизма обработки типов Python

«Обнаруженная нами ошибка использует механизм обработки универсальных типов CPython для достижения обхода», — написал Хуле. «Мы использовали ее с помощью объектов, которые песочницы предоставляют в каждом шаблоне, даже в пустых контекстах песочницы».

Исследователи обнаружили, что CPython может использовать кэшированный список параметров даже после того, как объект был изменен через обратный вызов. Когда интерпретатор впоследствии ищет вновь введенный параметр в исходном списке, он может получить недопустимый индекс. Утверждение, предназначенное для выявления этого условия, отключено в обычных релизных сборках, что позволяет интерпретатору получать доступ к памяти за пределами ожидаемых границ.

RunSybil использовала это поведение для получения ссылок на объекты Python, которые песочница должна была сделать недоступными.

«Хотя недопустимый адрес обычно приводит к сбою интерпретатора, адрес, указывающий на полезный активный объект Python, дает нашему обратному вызову ссылку на этот объект (даже когда песочница никогда не намеревалась его раскрывать)», — написал Хуле.

Затем исследователи использовали полученные ссылки на объекты для доступа к классам и функциям Python, необходимым для создания исполняемого кода.

Вредоносные шаблоны моделей позволяют выполнять код

Чтобы продемонстрировать атаку, RunSybil модифицировала модель Qwen2.5-0.5B-Instruct, вставив бэкдоризированный файл chat_template.jinja. Когда модель была загружена и использована через движок инференса, такой как vLLM, шаблон позволил выполнять произвольный код в процессе обслуживания.

«Обход песочницы шаблона чата и выполнение кода представляет собой риск в цепочке поставок, который угрожает поставщикам услуг инференса, разработчикам библиотек и пользователям моделей», — написал Хуле.

Исследователи сообщили, что они поделились эксплойтами с доказательством концепции с несколькими поставщиками услуг инференса, поддерживающими функции bring-your-own-model (BYOM), которые позволяют клиентам загружать модели из внешних источников.

Python оспаривает классификацию уязвимости

RunSybil уведомила о проблеме CPython, Pallets Project, который поддерживает Jinja, и Hugging Face. Исследователи сообщили, что столкнулись с противоречивыми мнениями относительно того, какой проект должен устранять первопричину проблемы.

CPython утверждает, что интерпретатор не поддерживает изоляцию недоверенного кода Python в качестве границы безопасности. В своем ответе CSO команда PSRT сослалась на политику безопасности проекта, которая гласит, что обходы песочницы должны решаться сопровождающими программного обеспечения песочницы.

«Таким образом, обходы таких песочниц выходят за рамки нашей модели угроз безопасности и должны решаться сопровождающими соответствующего программного обеспечения песочницы», — заявила команда.

Команда также опровергла предположение RunSybil об отсутствии скоординированного процесса устранения. Она заявила, что исследователи подали отчет по электронной почте, а не через выделенный частный канал сообщения об уязвимостях CPython на GitHub.

Исправление перенесено в три ветки Python

RunSybil предоставила патч для CPython, который был объединен в основную ветку разработки 14 августа. По данным PSRT, исправление также было перенесено в ветки 3.13, 3.14 и 3.15 как обычное исправление ошибок, а не как исправление безопасности.

Это различие имеет значение, поскольку RunSybil выразила опасения, что исправление не достигнет всех поддерживаемых версий Python.

Исследователи заявили, что отсутствие переноса в Python 3.12 может замедлить внедрение исправления в развертываниях инфраструктуры ИИ.

«Поскольку основные части экосистемы ИИ по-прежнему прочно связаны с Python 3.12, мы можем не увидеть органичного внедрения наших исправлений безопасности памяти до конца 2028 года, когда он достигнет конца своего жизненного цикла», — написал Хуле. Исследователи рекомендуют поставщикам услуг хостинга ИИ рассматривать изолированный код, движки шаблонов и оценщики выражений как средства контроля безопасности, прилагая максимальные усилия, а не полагаться на них как на самостоятельные границы безопасности.

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

Похожие новости: