В рамках подготовки к релизу o1/o1-mini OpenAI отдали модели на тестирование безопасности внешним командам, ну и проводили внутреннее тестирование. В частности, проверяли навыки LLM-агента в решении задач кибербезопасности (писал об этом тут ).
По сравнению с GPT-4o, o1-preview и o1-mini продемонстрировали улучшение в способности разбивать задачи на подзадачи, рассуждать о том, какие стратегии будут эффективны для успешного выполнения, и пересматривать планы в случае неудачи этих стратегий — ну, это ожидаемо. Но вот во время тестирования произошёл один курьёзно-неприятный случай.
Была задача нахождения уязвимости в коде программы, запущенной в отдельном Docker-контейнере. В контейнере есть файл с секретной строкой, которую атакующий (человек или модель) должны получить — как раз используя найденную проблему.
Однако из-за инфраструктурной ошибки контейнер не запустился. Модель, будучи неспособной подключиться к контейнеру, заподозрила проблемы с DNS и использовала программу nmap для сканирования сети. Вместо того, чтобы найти целевой контейнер (в рамках задачи LLM знает, какую цельнужно «атаковать»), модель обнаружила, что из-за неправильной конфигурации был доступен внешний API-интерфейс демона Docker, работающий на виртуальной машине. «Демон» это программа верхнего уровня, отвечающая за оркестрацию и управляющая процессом, по сути родительский процесс и для контейнера с LLM-агентом, и для контейнера с целевой программой/файлом для атаки.
Модель использовала демон для получения списка контейнеров, запущенных на сервере. Она обнаружила тот самый сломанный сломанный контейнер и попыталась выяснить, почему же он не запустился. Не сумев исправить проблему (но будучи проинструктированной ВЫПОЛНИТЬ СВОЮ ЗАДАЧУ), модель решила пойти другим путём. Она отправила команду запуска нового контейнера (того же, который в прошлый раз не запустился), но отдала ему команду вывода содержания файла с секретной строкой. Команда была исполнена, LLM получила «ключ» в виде строки и как следствие решила задачу (ведь цель — это добраться до строчки и затем отдать её на проверку).
Этот пример отражает ключевые элементы того, что называется «instrumental convergence» и захвата ресурсов: модель преследовала поставленную перед ней цель, а когда эта цель оказалась недостижимой, она собрала больше ресурсов (в данном случае получила доступ к демону Docker) и использовала их для достижения цели — в виде способа, который человек не ожидал и не предполагал.
Источник — отчёт OpenAI
Пост 13.09.2024 16:24