Несколько критических уязвимостей, получивших общее название ShellTorch, были обнаружены в опенсорсном инструменте TorchServe, который используется для обслуживания ИИ-моделей PyTorch. Исследователи заявили, что обнаружили в интернете десятки тысяч уязвимых серверов, некоторые из которых принадлежат крупным организациям.
TorchServe представляет собой популярный опенсорсный пакет для PyTorch, фреймворка машинного обучения, используемого для таких приложений, как компьютерное зрение и обработка естественного языка. В настоящее время PyTorch является частью Linux Foundation, но большой вклад в него внесли Meta* (его первоначальный разработчик) и AWS.
TorchServe используется организациями по всему миру, и его ежемесячно скачивают более 30 000 из PyPi и более 1 млн раз из DockerHub. На этот инструмент полагаются в основном те, кто занимается обучением и разработкой ИИ-моделей: от академических исследователей до крупных компаний, включая Amazon, OpenAI, Google, Intel, Microsoft, Tesla и Walmart.
Проблемы, обнаруженные в TorchServe исследовательской группой Oligo Security, могут привести к несанкционированному доступу к серверу, а также к удаленному выполнению произвольного кода (RCE).
Сообщается, что три уязвимости, носящие общее имя ShellTorch, затрагивают TorchServe версий с 0.3.0 по 0.8.1. Все эти проблемы уже устранены в версии 0.8.2, до которой теперь рекомендуется обновиться как можно скорее.
- Первая уязвимость (не имеет идентификатора CVE) связана с неправильной конфигурацией API-интерфейса управления, которая по умолчанию привязывает веб-панель к 0.0.0.0 вместо localhost, что делает его доступным для внешних запросов. Поскольку здесь также отсутствует аутентификация, это обеспечивает неограниченный доступ для всех желающих, что может использоваться для загрузки вредоносных моделей с внешних адресов.
- CVE-2023-43654 (9,8 балла по шкале CVSS) — SSRF-проблема, которая приводит к удаленному выполнению кода. Хотя в API TorchServe реализована логика определения списка разрешенных доменов для получения конфигурационных файлов моделей с удаленных URL-адресов, оказалось, что по умолчанию разрешены все домены, что приводит к SSRF-ошибке. Это позволяет злоумышленникам загружать вредоносные модели, которые при запуске на целевом сервере ведут к выполнению произвольного кода.
- CVE-2022-1471 (9,9 по шкале CVSS) представляет собой проблему десериализации Java, тоже приводящую к удаленному выполнению кода. Уязвимость связана с использованием небезопасной версии опенсорсной библиотеки SnakeYAML, которая допускает небезопасную десериализацию объектов Java. В итоге злоумышленники могут загрузить модель с вредоносным YAML-файлом, чтобы инициировать удаленное выполнение кода.
Отмечается, что исследователи Oligo не обнаруживали уязвимость в SnakeYAML, а лишь использовали ее в своей цепочке эксплоитов.
«Используя привилегии, предоставленные этими уязвимостями, можно просматривать, изменять, похищать и удалять ИИ-модели и конфиденциальные данные, поступающие на целевой сервер TorchServe и исходящие с него», — пишут исследователи.
В итоге объединение всех описанных проблем позволяет без труда скомпрометировать систему с уязвимостей версией TorchServe. Демонстрацию ShellTorch-атаки можно увидеть ниже.
По словам представителей Oligo, аналитики компании провели сканирование интернета в поисках уязвимых систем и обнаружили десятки тысяч IP-адресов, которые уязвимы перед ShellTorch, причем многие из них принадлежат крупным международным организациям.
«Как только злоумышленнику удастся проникнуть в сеть организации, выполнив код на PyTorch-сервере, он сможет использовать это в качестве начального плацдарма для бокового перемещения с целью проведения еще более мощных атак, особенно в тех случаях, если отсутствуют соответствующие ограничения или стандартные средства контроля», — предупреждают исследователи.
Как уже было сказано выше, для устранения уязвимостей пользователям необходимо обновить TorchServe до версии 0.8.2, выпущенной 28 августа 2023 года. После этого обновления на экран выводится предупреждение о SSRF-ошибке, что устраняет риски, связанные с CVE-2023-43654.
Также необходимо правильно настроить консоль управления, установив в файле config.properties значение management_address на http://127.0.0.1:8081. После этого TorchServe будет привязываться к localhost.
Помимо этого нужно убедиться, что сервер получает модели только с доверенных доменов, изменив значение allowed_urls в файле config.properties соответствующим образом.
Эксперты Oligo уже опубликовали бесплатный инструмент проверки, с помощью которого администраторы могут проверить, уязвимы ли их экземпляры к атакам ShellTorch.
Компании Amazon и Google уже выпустили собственные бюллетени безопасности, посвященные проблемам CVE-2023-43654 и CVE-2022-1471. Так, в сообщении Amazon содержатся рекомендации для клиентов, использующих контейнеры DLC (Deep Learning Containers) в EC2, EKS и ECS.
Представитель Meta*, в свою очередь, сообщили СМИ, что уязвимости в TorchServe были исправлены еще в августе текущего года, следовательно, цепочка эксплоитов, описанная в отчете экспертов Oligo, выглядит «спорной».
* Деятельность Meta Platforms признана экстремисткой и запрещена в России.