Выполнение произвольного кода через Google Colab
Оригинал: Arbitrary Code Execution with Google Colab
Google Colab — это сервис Jupyter Notebook, выполняющий код на виртуальных машинах. Jupyter Notebook часто используется для исследований и экспериментов в области ML и data science и содержит исполняемые фрагменты Python-кода, а также типовую функциональность командной строки Unix. Помимо манипуляции данными и визуализации, такая возможность выполнения кода позволяет пользователям скачивать произвольные файлы из интернета, изменять файлы на виртуальной машине и выполнять другие действия.
Пользователи также могут делиться Jupyter Notebook с другими пользователями по ссылкам. Если notebook содержит вредоносный код, пользователи могут неосознанно выполнить этот код, который, например, может быть обфусцирован или скрыт в загружаемом скрипте.
Когда пользователь открывает общий Jupyter Notebook в Colab, ему предлагается разрешить notebook доступ к Google Drive. У предоставления доступа к Google Drive могут быть легитимные причины, например возможность использовать собственные файлы пользователя, но оно также может приводить к вредоносным последствиям, таким как эксфильтрация данных или открытие сервера к Google Drive жертвы.
Это упражнение повышает осведомленность о последствиях выполнения произвольного кода и интеграции Colab с Google Drive. Безопасно оценивайте ссылки на общие Colab notebook и проверяйте код перед выполнением.
Процедура
- AML.TA0003 Подготовка ресурсов
AML.T0017 Разработка средств для атаки
Злоумышленник создает Jupyter Notebook, содержащий обфусцированный вредоносный код. - AML.TA0004 Первичный доступ
AML.T0010.001 ПО для ИИ
Jupyter Notebook часто используются для исследований и экспериментов в области ML и data science и содержат исполняемые фрагменты Python-кода, а также типовую функциональность командной строки Unix.
Пользователи могут столкнуться со скомпрометированным notebook на публичных сайтах или получить его напрямую по ссылке.
- AML.TA0004 Первичный доступ
AML.T0012 Действующие учетные записи
Пользователь-жертва может подключить свой Google Drive к скомпрометированному Colab notebook.
Типовые причины подключения ML-notebook к Google Drive включают обучение на размещенных там данных или сохранение выходных файлов модели.
from google.colab import drive drive.mount('/content/drive')При выполнении появляется окно подтверждения доступа и предупреждение о возможном доступе к данным:
> Этот notebook запрашивает доступ к вашим файлам Google Drive. Предоставление доступа к Google Drive позволит коду, выполняемому в notebook, изменять файлы в вашем Google Drive. Перед предоставлением доступа обязательно проверьте код notebook.
Тем не менее пользователь-жертва может принять запрос и предоставить скомпрометированному Colab notebook доступ к своему Drive.
Выданные разрешения включают:
создание, изменение и удаление всех файлов Google Drive;
просмотр данных Google Photos;
просмотр контактов Google.
- AML.TA0005 Выполнение
AML.T0011 Запуск пользователем
Пользователь-жертва может неосознанно выполнить вредоносный код, входящий в состав скомпрометированного Colab notebook.
Вредоносный код может быть обфусцирован или скрыт в других файлах, которые notebook загружает при выполнении.
- AML.TA0009 Сбор материалов
AML.T0035 Сбор ИИ-артефактов
Злоумышленник может искать в системе жертвы частные и проприетарные данные, включая артефакты ML-моделей.
Jupyter Notebook позволяют выполнять shell-команды.
В этом примере смонтированный Drive проверяется на наличие checkpoint-файлов моделей PyTorch:
!find /content/drive/MyDrive/ -type f -name *.pt> /content/drive/MyDrive/models/checkpoint.pt
- AML.TA0010 Эксфильтрация
AML.T0025 Эксфильтрация киберсредствами
Получив доступ к Google Drive, злоумышленник может открыть сервер для эксфильтрации частных данных или артефактов ML-моделей.
В примере из исходной статьи показаны загрузка, установка и использование
ngrok, серверного приложения, чтобы открыть доступный злоумышленнику URL к Google Drive жертвы и всем его файлам. - AML.TA0011 Воздействие
AML.T0048.004 Кража интеллектуальной собственности ИИ
Эксфильтрированные данные могут включать чувствительные или частные данные, например артефакты ML-моделей, хранящиеся в Google Drive. - AML.TA0011 Воздействие
AML.T0048 Внешний ущерб
Эксфильтрированные данные могут включать чувствительные или частные данные, например проприетарные данные, хранящиеся в Google Drive, а также контакты и фотографии пользователя.
В результате пользователю может быть причинен финансовый, репутационный и иной ущерб.