[Перевод] Преодоление турбулентности в области безопасности ИИ

a0cd341033e983fa32417c427260c001.png

Привет, на связи Елена Кузнецова, специалист по автоматизации Шерпа Роботикс. Сегодня я перевела для вас статью, посвященную безопасности в сфере искусственного интеллекта. Применение старых моделей безопасности к новым вызовам в области искусственного интеллекта превращает предприятия в лаборатории для изучения непредсказуемости турбулентности.

Известный немецкий физик Вернер Гейзенберг на смертном одре якобы сказал: «Когда встречусь с Богом, я задам ему два вопроса: почему теория относительности и почему турбулентность? Я уверен, что на первый вопрос он ответит».

Эта цитата часто ошибочно приписывается Альберту Эйнштейну, но главное здесь не авторство, а сама идея, ученые испытывают дискомфорт, пытаясь моделировать системы, поведение которых невозможно точно предсказать. Турбулентность в гидродинамике — одна из самых сложных для прогнозирования и математически неопределённых областей.

Сегодня мы оказались в схожей ситуации с безопасностью в эпоху искусственного интеллекта. Объем и скорость генерации кода создают новые нагрузки, которые выходят за пределы старых моделей безопасности программного обеспечения. Мы сталкиваемся с явлением, аналогичным турбулентности в fluid dynamics, где привычные методы уже не работают.

Как турбулентность разрушает модели

Начнем с базового понятия гидродинамики — ламинарного потока, который описывает движение жидкости через трубу. Ламинарность (от лат. lamina — слой) — это как слои в ламинате или в круассане, где частицы жидкости скользят друг по другу в слоистом порядке. В таком режиме движения жидкости в трубе не происходит смешивания потоков — вода в центре движется быстрее, у стенок — медленнее, образуя идеально предсказуемую картину.

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

Ламинарный поток — это своего рода идеал, который легко моделировать и прогнозировать. Однако реальный мир не всегда так прост. Как только вы увеличиваете скорость потока, изменяете диаметр трубы или снижаете вязкость, система выходит из предсказуемого состояния. Начинается турбулентность.

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

Турбулентность — это пример системы, поведение которой сложно предсказать на уровне отдельной частицы. Однако с помощью методов, таких как линейная регрессия, можно создавать модели, которые описывают общие тенденции при заданных входных параметрах. Вопрос только в том, какие предположения лежат в основе этих моделей.

Безопасность программного обеспечения в состоянии переходного потока

На сегодняшний день многие разработчики используют инструменты ИИ для более быстрой разработки кода, но лишь немногие используют ИИ для проверки запросов на изменения и кода, который их команда пишет. Это как переход от ламинарного потока к турбулентности.

Ламинарный поток — это то состояние, в котором мы находимся в большинстве моделей, которые применяются для написания и обеспечения безопасности программного обеспечения. Разработчики пишут код, проводят ревью, и для поиска дефектов и уязвимостей проверяют код на уровне отдельных строк и pull request.

В открытых проектах есть список поддерживающих, которые проверяют код от контрибьюторов. Исследователи уязвимостей постоянно находят новые проблемы, которые получают уникальные идентификаторы CVE и отслеживаются в таблицах. Всё это просто для понимания и моделирования.

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

Но если разработчики используют ИИ для создания все большего объема кода, но не применяют те же подходы для его проверки, мы начинаем перегружать систему — «трубопровод» оказывается не в состоянии справиться с этим объемом, и прежние предположения начинают разрушаться.

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

Искусственный интеллект и безопасность

Когда трубопровод лопается, можно четко наблюдать, как происходит переход от ламинарного потока к турбулентности. Сначала вода течет плавно, но буквально через мгновение — бах, и происходит взрыв. Это и есть тот момент, когда система рушится, не выдержав нагрузки.

Сегодня мы стоим на пороге аналогичного перехода в области безопасности искусственного интеллекта. Не все потеряно, но пора пересмотреть наш подход. Мы всё ещё можем добиться хороших результатов и защитить системы, но модели ИИ явно не справляются с новым объёмом и скоростью изменений, которые они вызывают.

С ростом роли искусственного интеллекта в разработке программного обеспечения масштабы, с которыми он будет внедряться, только увеличиваются. Разработчики пишут всё больше и больше кода с помощью ИИ-систем. А любой код, как мы знаем, содержит баги — и некоторые из них могут существенно повлиять на безопасность. Чем больше кода создается, тем большее количество уязвимостей появляется в системе.

Исследователи безопасности становятся всё более продуктивными в поиске известных уязвимостей. Если они начинают находить больше уязвимостей, чем команды могут обработать и устранить, это ведет к потере доверия к системам и их безопасности.

При этом системы ИИ внедряются в производственные среды с беспрецедентной скоростью, особенно когда речь идет о данных, которые требуют повышенной конфиденциальности. Это делает задачу безопасного развертывания ещё более сложной, так как ставки растут. Компании стремятся внедрить ИИ в свою инфраструктуру гораздо быстрее, чем я видел за всю свою карьеру.

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

Мы вынуждены адаптировать новые методы.Требуются новые подходы. Разработчикам нужно не только писать код быстрее, но и вовремя выявлять и устранять уязвимости, чтобы идти в ногу с темпом разработки. Командам безопасности предстоит решать проблему выявления новых уязвимостей быстрее, чем это позволяет традиционный подход с таблицами и списками — так всё это управляется сегодня.

Простой арифметики тут не хватит. Нам предстоит изменить сам способ мышления и перейти к вероятностным или статистическим методам. 

Нужно начать рассматривать системы как «скот», а не как «питомцев». Это аналогия, которая часто используется в контексте инфраструктуры: если у вас есть только несколько серверов, вы можете к каждому из них обращаться по имени и следить за каждым в отдельности. Но если количество таких систем возрастет в 20 раз, сделать это будет невозможно.

Рост атак на ИИ-системы

Этот переход уже начинается, но пока что он не распределён равномерно. 

Разработчики больше не могут угнаться за процессом ревью кода, потому что значительная его часть поступает от источников, которым они не доверяют, и находить уязвимости в таком коде становится всё сложнее.

А вот злоумышленники понимают, что атаки на системы — это как раз та область, где большие языковые модели ИИ могут продемонстрировать свои преимущества. Ошибки при атаке практически не имеют стоимости: они могут бесконечно повторять свои попытки. В то время как защитники должны быть безошибочны всегда. Этот дисбаланс вызывает у команд безопасности те же ощущения, что и у физиков при работе с турбулентными системами.

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

Мы уже проходили этот путь

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

Инфраструктура, необходимая для запуска ИИ-обработки, во многом совпадает с той, что используется для других целей — по сути, это Kubernetes с добавлением CUDA. 

Многие из нас всё ещё помнят трудности при внедрении защищённых многопользовательских приложений на Kubernetes, и этот процесс не сложнее.

Работа с исходными кодами ИИ-Toolkit’ов показывает, что мы находимся в чрезвычайно быстро меняющейся и турбулентной среде безопасности. Например, сборки PyTorch работают только с конкретными версиями CUDA, которые требуют старых версий компиляторов GCC/Clang. На создание пакетов может уйти несколько часов, даже на мощных системах.

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

Кроме того, многие из этих библиотек обрабатывают несанкционированные и необработанные данные для обучения, что ещё больше усложняет ситуацию с безопасностью.

Несмотря на всё это, стоит оставаться оптимистом в долгосрочной перспективе. ИИ может стать важным инструментом для обработки шума в огромных объемах данных и выявления важных сигналов. Но, как мы уже научились за десятилетия работы с открытым исходным кодом, необходимо начинать с надежного фундамента безопасности и строить всё правильно с самого начала.

Компания Chainguard, например, представила набор изображений для ИИ, включающий весь цикл работы с ИИ, от разработки до хранения данных в векторных базах. Адресуя цепочку поставок ИИ на уровне исходных материалов, включая подписи программного обеспечения, счета материалов (SBOM) и исправления уязвимостей CVE, мы расширяем «трубопроводы», создавая защитные барьеры для масштабных амбиций в разработке ИИ-систем.

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

Habrahabr.ru прочитано 4171 раз