Уязвимость aws-sdk-pandas позволяла злоумышленникам перехватывать результаты Athena
В библиотеке aws-sdk-pandas до версии 3.16.1 обнаружена уязвимость CVE-2026-118029, позволявшая перехватывать результаты запросов Athena между учётными записями AWS. Если злоумышленник первым создавал бакет с ожидаемым именем, он мог получать результаты запросов пользователей из других учётных записей. Уязвимость устранена в версии 3.16.1.
Проблема возникала, когда пользователь запускал запрос Athena, не указывая расположение выходных данных в S3. В таких случаях библиотека формировала предсказуемое имя бакета по шаблону aws-athena-query-results-{account_id}-{region} и пыталась его создать. Ошибки BucketAlreadyExists и BucketAlreadyOwnedByYou обрабатывались одинаково: библиотека записывала сообщение в журнал отладки и продолжала работу, не проверяя владельца бакета. По имеющимся данным, до версии 3.16.1 она также не использовала параметр ExpectedBucketOwner для операций S3.
Злоумышленник мог постоянно получать результаты запросов Athena к источникам данных, доступным через каталог Glue жертвы. Среди таких источников были хранилища данных S3 и федеративные запросы к RDS или Redshift. В результатах могли содержаться персональные и финансовые данные, учётные данные и бизнес-аналитика. Серверное исправление обработки стандартного хранилища Athena не защищало приложения, в которых имя бакета независимо формировала библиотека.
Поддерживаемый библиотекой по умолчанию рабочий процесс выполнения запросов на основе CTAS также допускал отравление данных. Athena создавала файлы результатов в формате Parquet и манифест в формате CSV с путями к ним в бакете S3 под контролем злоумышленника. Тот мог отслеживать создание манифеста, например, с помощью EventBridge и Lambda, а затем изменять указанные в нём данные или внедрять вредоносные значения до того, как библиотека прочитает манифест и десериализует файлы Parquet в объект pandas DataFrame. Такое содержимое могло повлиять на последующую обработку SQL, HTML или команд оболочки.
Вредоносные файлы Parquet также могли использовать уязвимости парсеров. В частности, CVE-2023-47248 в затронутых версиях PyArrow позволяла выполнять произвольный код при десериализации PyArrow IPC.
В версии 3.16.1 разработчики добавили проверку владельца бакета и целостности манифеста. Авторы отчёта рекомендуют обновить библиотеку и явно проверять владельца бакета, используемого для вывода результатов Athena.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



