Графические процессоры (GPU) используются в общих средах, нарушение которых чревато серьезными последствиями, как если бы они были защищенными элементами инфраструктуры. Однако GPU подвержены рискам, которых нет у центральных процессоров (CPU), пишет на портале The New Stack Джед Салазар, технический директор компании Edera.
Искусственный интеллект стремительно развивается, меняя шаблоны ПО, бизнес-модели и инфраструктуру. Но одно важное оборудование с трудом поспевает за этими изменениями. Те же самые GPU, которые когда-то принесли нам реалистичные тени в играх вроде «Quake III Arena» и плавные движения в «Counter-Strike», теперь обеспечивают работу платформ машинного обучения и облачного ИИ. Первоначально созданные для высокоскоростной визуализации пикселей и световых эффектов, GPU превосходны в параллельной обработке. Это сделало их идеальными для иммерсивных игр, а теперь делает их незаменимыми для нейронных сетей.
Что не поспевает за развитием, так это безопасность GPU.
В то время как CPU эволюционировали и теперь включают в себя такие средства защиты, как разделение привилегий, виртуальная память и наблюдаемость во время выполнения, GPU по-прежнему остаются привязанными к философии проектирования, созданной для доверенных однопользовательских сред. Это несоответствие создает опасные слепые зоны в современной инфраструктуре. В июне компания Wiz раскрыла очередной недостаток изоляции GPU, который еще раз подчеркнул отсутствие в GPU базовых средств защиты многопользовательских систем. Эти процессоры никогда не были созданы для обеспечения строгих границ между рабочими нагрузками, а также для поддержки телеметрии и контролируемости, которые требуются для современной безопасности ИИ.
Тем не менее, GPU сейчас используются в общих средах, нарушение которых чревато серьезными последствиями, как если бы они были защищенными компонентами инфраструктуры. Именно эта ложная уверенность делает эту новую угрозу столь актуальной.
GPU и CPU созданы для выполнения совершенно разных задач
Производители CPU десятилетиями разрабатывали средства защиты, включая уровни привилегий, виртуальную память, изоляцию процессов и наблюдаемость. Дизайн GPU по-прежнему основан на предположениях, сделанных для однопользовательских одноцелевых контекстов. GPU никогда не были предназначены для совместного использования для различных рабочих нагрузок или для защиты данных одного клиента от другого.
На архитектурном уровне GPU и CPU полностью различаются. CPU предназначены для вычислений общего назначения с жестким контролем над выполнением и памятью. Они обрабатывают разнообразные задачи с помощью небольшого числа ядер, каждое из которых способно переключаться между процессами и поддерживать изоляцию с помощью виртуальной памяти и строгих уровней привилегий.
GPU оптимизированы для пропускной способности. Они содержат тысячи простых ядер, предназначенных для выполнения одной и той же инструкции над большими наборами данных. Это делает их отличным инструментом для рендеринга и матричных вычислений, но создает слепые зоны в контексте переключения и изоляции памяти. Память одной рабочей нагрузки может сохраняться в течение длительного времени после ее завершения, что становится риском в общих средах. Без таблиц страниц, рандомизации памяти или границ системных вызовов GPU подвержены рискам, которых нет у CPU.
Проблемы безопасности GPU традиционно сосредоточены на этой недостаточной изоляции. Многие модели программирования предполагают, что драйвер безопасно управляет памятью и что пользователи являются доверенными. Это предположение не работает в облаке. Один контейнер или одна виртуальная машина может оставлять следы данных, к которым потенциально могут получить доступ другие. Эти риски усугубляются непрозрачностью выполнения GPU. Не существует зрелых инструментов для проверки выполнения или аудита поведения, что ограничивает видимость и контроль.
Более скрытые риски и иллюзия безопасности
Хотя эти классические проблемы остаются актуальными, более серьезную озабоченность вызывает другая проблема. Предприятия развертывают рабочие нагрузки ИИ в кластерах с GPU-ускорением, полагая, что модели изоляции CPU по-прежнему применимы. Это не так.
Во-первых, драйверы GPU представляют собой огромную поверхность атаки. Эти драйверы часто работают с повышенными привилегиями и управляют доступом к оборудованию для всех рабочих нагрузок. Одна единственная уязвимость может поставить под угрозу хостинговую систему. В отличие от CPU, где драйверы меньше по размеру и часто абстрагируются операционной системой, драйверы GPU напрямую обрабатывают планирование, память и отправку инструкций. Они большие, сложные и часто проприетарные, что затрудняет их аудит и исправление.
Во-вторых, телеметрия от GPU ограничена. Большинство инструментов отчитываются о показателях производительности, таких как использование и пропускная способность памяти, а не о поведенческих сигналах. Не существует эквивалента отслеживания системных вызовов или аудита ядра. Злонамеренная деятельность, такая как хищение ключей или сбор данных, может происходить полностью внутри ядер GPU и оставаться незамеченной.
В-третьих, общие GPU создают слепые зоны в многопользовательских средах. Рабочие нагрузки часто выполняются подряд без надежных гарантий того, что данные одного пользователя не станут доступны другому. Убеждение, что GPU выполняют только безобидные математические вычисления, скрывает тот факт, что эти вычисления часто включают конфиденциальные вложения, веса и токены. По мере усложнения систем ИИ ценность того, что временно находится на GPU, увеличивается. Игнорирование этих рисков только откладывает обнаружение реальных уязвимостей, связанных с этими пробелами.
Чему нас научили Linux и контейнеры
Linux никогда не разрабатывалась для обеспечения безопасности миллиардов контейнеров, работающих в облачных средах. Она начиналась как универсальная ОС, предназначенная для отдельных машин и доверенных пользователей. По мере того как она становилась основой современной инфраструктуры, вопросы изоляции, прозрачности и многопользовательской работы становились все более актуальными. За этим последовала быстрая эволюция инструментов безопасности, включая пространства имен, cgroups, seccomp и расширенную наблюдаемость. Экосистеме пришлось создать уровни защиты вокруг ядра, которое изначально не было предназначено для обеспечения безопасности облачных сред.
Такая же картина наблюдается и с GPU. Эти процессоры были созданы для рендеринга графики и ускорения локальных вычислений, а не для выполнения конфиденциальных ИИ-задач многих арендаторов на общем оборудовании. Однако именно этого от них сейчас и ожидают. Как и Linux в начале эры контейнеров, архитектура GPU не успевает за требованиями современного использования. Чем раньше мы осознаем этот разрыв, тем скорее сможем разработать средства защиты, необходимые для обеспечения безопасности инфраструктуры ИИ. В противном случае мы будем продолжать ускоряться без необходимых мер предосторожности, чтобы избежать последствий.
Можно ли действительно доверять безопасности ИИ, если вы не понимаете, что происходит на уровне GPU?