В этом сюжете мы поделимся результатами интернет-переписи системы машинного обучения и искусственного интеллекта, выполненной командой AISec. В период с июля 2019 года по октябрь 2019 года мы обнаружили 6225 уникальных IP-адресов, принадлежащих системам и приложениям AIML.

Согласно полученным результатам, большая часть удаленно доступных хостов с компонентами AIML (по уникальным IP-адресам) находится в Северной Америке (2643 хоста или 42,8% от всех результатов), в Европе (1644 хоста или 26,6% от всех результатов) и в Азии (1537 хостов или 24,9% от всех результатов).

Цель этого проекта — предоставить инструменты и результаты пассивного и активного снятия отпечатков машинного обучения и платформ и приложений искусственного интеллекта с использованием общего подхода к анализу угроз, а также ответить на следующие вопросы:

  • Как обнаружить системы с поддержкой AI/ML в Интернете и корпоративной сети?
  • Безопасны ли приложения AI/ML в масштабах Интернета?
  • Каков уровень безопасности приложений AI/ML в общем смысле в настоящее время?
  • Сколько времени требуется для исправления уязвимостей, установки обновлений безопасности для систем с поддержкой ML/AI, развернутых в Интернете?

Разработанное программное обеспечение, поисковые запросы Shodan и Censys доступны в репозитории AISec [1] на GitHub. Репозиторий также содержит метаданные, результаты поиска и статистику сканирования всего Интернета за октябрь 2019 года. Для ссылок используйте полный текст статьи [5].

команда AIsec

Сергей Гордейчик
Антон Николаев
Денис Колегов
Мария Недяк
Роман Палкин

Наш подход

Общий подход к перечислению киберсистем основан на получении полной и исчерпывающей информации о конкретном решении от каждого связанного поставщика, входящего в область. Эта информация помогает находить общедоступные целевые фреймворки, приложения и системы с помощью известных поисковых систем, таких как Shodan[1]» и Censys[2]». Для этой цели мы разработали специальный фреймворк под названием Grinder [3], который может помочь в автоматизации процесса поиска и получения конкретной информации об устройствах, подключенных к Интернету. Помимо этого фреймворка, мы также предлагаем подход к поиску различных устройств с помощью различных поисковых систем.

  1. Создавать подписи интерфейсов продуктов и фреймворков AIML.
  2. Определяйте и выражайте подписи на языке запросов поисковой системы.
  3. Найдите и перечислите устройства с помощью поисковых систем (Shodan, Censys и т. д.).
  4. Используйте метод добавочного сохранения для сохранения результатов в базе данных.
  5. При обнаружении уязвимостей дважды просканируйте узел, чтобы свести к минимуму ложные срабатывания.
  6. Если уязвимости все еще присутствуют, проверьте их еще раз, используя PoC-скрипты на Python и Lua NSE.
  7. Сохраните подтвержденные результаты в базе данных.
  8. Если обнаружен новый продукт или интерфейс AIML, перейдите к шагу 1.
  9. Регулярно выполняйте шаги 3–7.

Оборудование для машинного обучения

Контроллер управления основной платой (BMC) — это служебный процессор, способный отслеживать физическое состояние серверов, компьютеров или других аппаратных устройств с помощью датчиков. Например, он может контролировать напряжение питания, скорость вращения вентилятора, функции операционной системы, влажность и температуру; выполняет задачу удаленного управления. Контроллер BMC встроен в саму материнскую плату.

Кроме того, контроллеры BMC можно использовать для мониторинга и управления сложными платформами AIML, такими как NVidia DGX-1, независимо от оборудования и операционной системы. Доступ к контроллерам осуществляется удаленно через соединение Ethernet с портом IPMI, а сама система предоставляет службы управления, такие как SNMP.

По этим причинам, если контроллер управления BMC доступен в Интернете и реализует неподходящие механизмы аутентификации и контроля безопасности (например, поддерживает учетные данные по умолчанию, вообще не реализует аутентификацию или авторизацию), любой может получить контроль над высокопроизводительными вычислительными системами, такими как ДГХ-1.

В случае системы DGX-1 мы могли найти некоторые учетные данные по умолчанию («qct.admin» / «qct.admin») в документации. Исходя из этого, мы предположили, что другие учетные данные могут содержать подстроку «qct». Поскольку системы DGX-1 также предоставляют службу SNMP, мы попытались подключиться к SNMP, используя строки сообщества на основе комбинаций «qct», «public» и «private» и их мутаций. Итак, если бы эти учетные данные были действительными, мы бы получили контроль над системой DGX-1, используя тривиальную атаку с подбором пароля.

Было обнаружено, что «qct.private» и «qct.public» являются действительными учетными данными SNMP. Нам удалось установить соединение по SNMP со всеми известными хостами DGX-1 с помощью следующих команд:

  1. snmpwalk -v 2c -c qct.private ‹host› ‹seed›
  2. snmpwalk -v 2c -c qct.public ‹хост›

Всего мы обнаружили 147 контроллеров BMC на DGX-1 и ускорителях GPU, 14 из них имели учетные данные по умолчанию, а 3 хоста с учетными данными по умолчанию ответили по SNMP следующими строками:

  1. «ДГХ-1»
  2. «DGX-1 с V100»
  3. «ДГХ-1 с В100–32»

Веб-интерфейс системы обучения

Было проверено, что большинство доступных компонентов не имеют механизмов аутентификации. Например, мы могли бы получить доступ к различным обучающим системам, таким как NVIDIA DIGITS (Deep Learning GPU Training System). Это позволит злоумышленнику получить все обученные модели для каждой эпохи обучения. Он также делал предварительно обученные модели или публиковал текущие данные на сервере логического вывода. Более того, он получит доступ к наборам данных, изучит их в WUI или загрузит все данные. Кроме того, у нас был доступ к системным журналам, которые также можно было загрузить вместе с исходным кодом архитектуры модели на Python. Влияние этой открытой функциональности очевидно: в реальных системах модель машинного обучения можно украсть с помощью веб-интерфейса. В результате злоумышленник может получить обученные модели, датасеты с данными, логи задач и исходный код архитектуры модели.

Мы также изучили TensorBoard, который предоставляет визуализацию и инструменты, необходимые для экспериментов ML с TensorFlow. Отсутствие механизмов аутентификации позволяет злоумышленнику контролировать процесс обучения модели. Следует отметить, что в настоящее время это ожидаемое поведение, поскольку TensorFlow и его компоненты изначально не имеют механизмов аутентификации. Кроме того, TensorBoard позволяет использовать удаленный отладчик «tfdbg» для отладки учебных сессий «на лету». В этом случае сценарий атаки с отравлением данных может быть реальным: злоумышленник может изменить поведение модели на основе входных данных, предоставленных в режиме реального времени, а затем соответствующим образом изменить векторы атаки и входные данные.

Системы баз данных

В случае поиска данных, которые использовались для обучения модели ML (аннотации, изображения, текстовые данные и т. д.), мы можем искать открытые базы данных, содержащие связанные данные. Например, мы можем искать открытые базы данных MongoDB без какой-либо аутентификации — в некоторых ситуациях в них много разной информации о процессе обучения, обучающих данных и так далее.

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

Журналы и системная информация

Службы и приложения на основе машинного обучения используют различные системы поиска и индексирования для сохранения журналов и другой системной информации. Одним из них является Elasticsearch: распределенная многопользовательская полнотекстовая поисковая система с веб-интерфейсом HTTP и документами JSON без схем, а также Kibana (плагин визуализации для Elasticsearch).

Основную проблему, вызвавшую уязвимость сервисов Elasticsearch, можно легко найти в Shodan с помощью следующего запроса: product:elastic port:9200 «Elastic Indices».

Этот запрос возвращает 19 629 открытых систем Elasticsearch. Более того, мы можем выполнять поиск по их открытым данным, потому что Shodan также индексирует все доступные индексы. Благодаря этому мы можем напрямую искать специальные ключевые слова, такие как «метки», «набор данных», «данные», «мл-журналы» и так далее.

Журналы, доступные через аналитические механизмы Elasticsearch, могут содержать много различной конфиденциальной информации. Например, если найденная система используется в медицинских организациях, она может содержать персональные данные, медицинские результаты или специальную дополнительную информацию. Более того, если система AIML имеет Elasticsearch в качестве открытой службы, мы можем получить всю связанную информацию: информацию о приложении, данные, которые оно использует, некоторую дополнительную информацию о наборах данных, метках и т. д.

Контейнеры

Контейнеры Docker часто используются для развертывания системы машинного обучения. Docker предоставляет API для взаимодействия с демоном Docker (называемым Docker Engine API), а также SDK для Go и Python. SDK позволяет быстро и легко создавать и масштабировать приложения и решения Docker.

Docker Engine API — это RESTful API, к которому обращается клиент HTTP, такой как wget или curl, или библиотека HTTP, которая является частью большинства современных языков программирования.

API Docker Engine предоставляет следующие методы (конечные точки), позволяющие экспортировать все контейнеры по их идентификаторам:

  1. GET /containers/json — чтобы получить список всех контейнеров
  2. GET /images/json — чтобы получить список всех изображений
  3. GET /containers/(id или name)/logs — для экспорта логов
  4. GET /containers/(id или name)/export — полностью экспортировать контейнер по id

Кроме того, можно инициировать другие действия, такие как остановка, запуск и создание новых контейнеров на удаленном хосте. Всего нам удалось найти около 3 350 открытых Docker API по следующему запросу:

  1. «Контейнеры Docker:» порт: 2375

Мы нашли около 13 900 экземпляров на разных портах по следующему запросу:

  1. «Контейнеры Docker:» «Изображение:» «Команда:»

Приложения ML, неправильно использующие Docker API Engine, могут быть скомпрометированы из-за того, что к различным токенам, которые приложения используют в конфигурации запуска, можно легко получить доступ. Затем учетные данные можно использовать для входа в эти приложения:

Услуги инфраструктуры ИИ

В эту категорию входит стек технологий, необходимый для включения и поддержки приложений машинного обучения. Стек содержит несколько популярных активно поддерживаемых инфраструктур AIML, связанных со следующими аспектами:

  1. Архитектура сквозных обучающих конвейеров машинного обучения.
  2. Вывод в масштабе производства в облаке или на конечных устройствах.
  3. Компилятор и стеки оптимизации для развертывания на различных устройствах.
  4. Новые идеи эффективного крупномасштабного распределенного обучения.

Например, мы можем искать Kubeflow — набор инструментов машинного обучения для Kubernetes. Проект Kubeflow посвящен развертыванию рабочих процессов машинного обучения в Kubernetes. Цель этого проекта — не воссоздавать другие сервисы, а предоставить простой способ развертывания лучших в своем классе систем с открытым исходным кодом для машинного обучения в различных инфраструктурах.

Kubeflow содержит следующие компоненты:

  1. Блокноты: JupyterHub для создания интерактивных блокнотов Jupyter и управления ими.
  2. Обучение модели TensorFlow: контроллер обучения TensorFlow, который можно настроить на использование ЦП или ГП и динамически настроить на размер кластера с помощью одной настройки.
  3. Model Serving: контейнер TensorFlow Serving для экспорта обученных моделей TensorFlow в Kubernetes. Интеграция с Seldon Core, платформой с открытым исходным кодом для развертывания моделей машинного обучения в Kubernetes, и NVIDIA TensorRT Inference Server для максимального использования графического процессора при масштабном развертывании моделей машинного обучения и машинного обучения.
  4. Мультифреймворк: включает TensorFlow, PyTorch, MXNet, Chainer и другие.

Kubeflow можно использовать для создания и запуска собственных блокнотов Jupyter, получения доступа к терминалу Jupyter Notebook, загрузки наборов данных с данными и журналами и многого другого.

В качестве другого примера рассмотрим MLflow — это платформа с открытым исходным кодом для управления сквозным жизненным циклом машинного обучения. Выяснилось, что MLflow можно использовать для доступа к моделям, данным или результатам обучения без какой-либо аутентификации, просто открыв веб-интерфейс приложения.

Продолжение следует…

[1] репозиторий AISec на GitHub. URL-адрес: https://github.com/sdnewhop/AISec

[2] Майкл Ширер. SHODAN для пентестеров. URL-адрес https://www.defcon.org/images/defcon-18/dc-18-presentations/Schearer/DEFCON-18-Schearer-SHODAN.pdf.

[3] Поисковая система Censys. URL-адрес: https://censys.io

[4] Фреймворк Grinder. URL: https://github.com/sdnewhop/grinder

[5] Сергей Гордейчик, Денис Колегов, Антоний Николаев. Измерение безопасности внедрения искусственного интеллекта и машинного обучения в Интернете https://www.researchgate.net/publication/337771481_Measuring_Artificial_Intelligence_and_Machine_Learning_Implementation_Security_on_the_Internet