Тестирование на масштабируемость в облачной среде

Тестирование на масштабируемость в облачной среде

Не так давно в Trend Micro задались целью выполнить тест масштабируемости одного из собственных продуктов (Trend Micro Deep Security). Скорый поверхностный расчет показал, что для выполнения этой задачи потребовалось бы 35 серверов Dell 710 с возможностью виртуализации. Найти столько доступных серверов – непростая задача для любой компании, а о том, чтобы купить столько серверов ради месячного тестирования, не могло быть и речи.



Поэтому было решено обратиться за помощью к облакам. Подходящим решением стала инфраструктура Amazon Web Services (AWS), с помощью которой удалось получить необходимое количество менее крупных ресурсов. (В данном случае небольшие экземпляры идеально подходили для моделирования крупной архитектуры «менеджер-агент», причем каждый экземпляр моделировал множество агентов).

Следует иметь в виду, что просто открыть учетную запись и сделать запрос на 1000 небольших экземпляров не удастся. Сотрудники Amazon связываются с клиентом по электронной почте, чтобы определить требуемое соотношение типов экземпляров, платформ, зон доступности и регионов, которые будут выгодны как вашему проекту, так и AWS. Сразу после определения конфигурации мы разработали необходимые инструменты быстрого увеличения или уменьшения масштаба нашей тестовой среды. К ним относились AMI (шаблоны) и инструменты, использовавшие интерфейсы прикладного программирования для обнаружения и мониторинга ресурсов.

Нас не миновали странности платформы AWS, такие как перекос временной диаграммы при активном использовании ресурсов ЦП, некорректная информация о ресурсах ЦП для небольших экземпляров в CloudWatch и неизбежные «войны цен» за точечные экземпляры. Из-за особого характера тестов не все шло по плану. Порой при увеличении масштаба возникали сообщения об ошибке от интерфейса прикладного программирования AWS с формулировкой «недостаточно ресурсов». Будет нелишним иметь запасные варианты на случай, когда нужный тип экземпляра или регион перегружены.

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

В итоге были достигнуты поставленные цели по масштабируемости и потрачено гораздо меньше средств.

Популярную ИИ-библиотеку LiteLLM заразили бэкдором через PyPI

В экосистеме ИИ-разработки всплыла неприятная история: исследователи из Endor Labs обнаружили, что популярная Python-библиотека LiteLLM, у которой больше 95 млн загрузок в месяц, была скомпрометирована в репозитории PyPI. Через заражённые версии злоумышленники распространяли многоступенчатый бэкдор.

Речь идёт о версиях 1.82.7 и 1.82.8. Причём в официальном GitHub-репозитории проекта такого вредоносного кода не было.

Проблема возникла именно в пакетах, опубликованных в PyPI: туда попал файл с закладкой, который декодировал и запускал скрытую нагрузку сразу после импорта библиотеки.

Во второй заражённой версии, 1.82.8, схема стала ещё жёстче. Пакет устанавливал .pth-файл в директорию site-packages, из-за чего вредоносный код мог запускаться вообще при любом старте Python, даже если сам LiteLLM никто не импортировал.

После запуска зловред начинал искать самое ценное: SSH-ключи, токены AWS, GCP и Azure, секреты Kubernetes, криптокошельки и другие конфиденциальные данные. Если заражение происходило в контейнерной или кластерной среде, вредонос пытался двигаться дальше по инфраструктуре, в том числе через развёртывание привилегированных подов на узлах Kubernetes.

Для закрепления на хосте атакующие, как сообщается, ставили systemd-бэкдор sysmon.service, который регулярно связывался с командным сервером и мог получать новые команды или дополнительные вредоносные модули.

Специалисты считают, что за атакой стоит группировка TeamPCP, которая в последнее время явно разошлась: до этого её уже замечали в инцидентах, затронувших GitHub Actions, Docker Hub, npm и OpenVSX.

Украденные данные, по информации исследователей, шифровались и отправлялись на сервер атакующих. Для маскировки использовались домены, внешне похожие на легитимные, например models.litellm[.]cloud и checkmarx[.]zone.

Сейчас разработчикам и DevOps-командам советуют как можно быстрее проверить окружение. Последней известной чистой версией LiteLLM считается 1.82.6. Если в системе использовались 1.82.7 или 1.82.8, нужно проверить наличие файла litellm_init.pth, артефактов вроде ~/.config/sysmon/sysmon.py и сервиса sysmon.service.

RSS: Новости на портале Anti-Malware.ru