Комментарии 69
Интересно хоть это побудит людей запускать агентов в изолированной среде?
А хотя о чем это я. Надо просто попросить llm не ломать продакшен и все будет хорошо.
Изолированной от чего? От того что мне нужно сделать?
От мира. И от того что жалко потерять. И особенно от продакшена.
Древние умели делать пользователей с правами доступа только к конкретному каталогу. И только к конкретным хостам по сети. И запускать все страшное под ними. Но увы, это знание утеряно.
Вы еще скажите под рутом не сидеть.
Можно, а зачем? Рано или поздно навайбкоженое всё равно надо переносить в прод, иначе какой во всём этом смысл. Проверить этот вайбкод никто из операторов LLM всё равно не способен, так что переносить один хрен придется как есть. Так пусть уж оно сразу само.
Перед тем как код модели покатится в прод его прочитают и проверят минимум два человека. Первый тот кто промпт писал. Второй на кодревью.
Вы не ту проблему решаете. Защита от слопа в проде это другая проблема. Вайбкодеры даже не могут решить проблему как настроить безопасное окружение для генерации слопа.
Почти во всех агентах есть такие настройки. Обычно по умолчанию агент имеет доступ к директории проекта. Сложности возникают, когда агент обращается к файлам не через встроенные инструменты (Read/Write), а через сторонние программы (Bash, Python и др.). В этом случае до запуска команды обычно невозможно заранее понять, какие файлы будут прочитаны или записаны агентом.
В итоге, чтобы гарантированно обезопасить систему и свои данные от действий агента, нужна реальная изоляция: отдельный пользователь в системе, виртуальная машина, Docker и прочие средства создания песочниц (Bash sandbox, Nono и др.). На практике это может быть неудобно. Чтобы сделать «прокаченного» агента, его надо снарядить инструментами, доступными в вашей системе (playwright-cli, notify-send, скрипты npx и т. п.), и тут внезапно оказывается, что эти инструменты загружают какие-то библиотеки из /usr/lib, или конфиги из ~/.config, или делают сетевые подключения через dbus. В итоге конфиг для такой песочницы получается громоздким и хрупким.
В итоге, чтобы гарантированно обезопасить систему и свои данные от действий агента, нужна реальная изоляция: отдельный пользователь в системе, виртуальная машина, Docker и прочие средства создания песочниц
В это время в ленте соседняя статья: Открытая модель сбежала из песочницы.
Весь продакшен всего мира уже лет 10 работает в изолированных контейнерах.
Решены все эти проблемы о которых вы пишете. Вариантов контейнеризации и изоляции море. Сделать надежно и удобно совсем несложно.
Пользователей создавать, права настраивать... vscode devcontainer отлично изолирует все что нужно, мы не в 2005-м. Для 90% задач это более чем ок.
Только вот я подозреваю что задачи на которых модель удаляла бекапы связанны с работой с бэкапами, и именно в таком классе задач единственная правильная тактика - проверяй по шагам. Ну а древние умели делать такое и без моделей...
Древние умели делать пользователей с правами доступа только к конкретному каталогу
Хорошо. Как запустить агента от имени другого пользователя? И поможет ли это?
Вот тут человек заморочился
`su -l agent agent`? А вообще, есть unshare, можно запускать в изолированном окружении, без переключения пользователя.
Ну, и вообще, у проблемы дофига решений, некоторые посложнее, некоторые попроще. Но они, конечно, вайбкодерам недоступны: они просто слов-то таких не знают, чтобы запромптить агента.
причем в claude code уже есть встроенный sandbox, который работает очень неплохо, если его настроить чуть-чуть. но никто об этой фиче не знает, по крайней мере из моих коллег. даже когда я говорю, то все-равно игнор. видимо каждый пока не получит что-то нехорошее, то не сделает. но уже на уровне компании думают как это настроить массово
Клод агент под рутом не сидит, ничто не мешает ему сделать пользователя кроме лени
Логично, любое приложение если начинает спамить запросами люди рано или поздно перестают читать их содержимое просто потому, что это утомительно.
Классификатор расходует дополнительные токены при каждом вызове инструмента.
Есть подозрение, что именно ради этого всё и затевалось.
Фабл и так жрет токены как не в себя.
5 часовое окно на 100 баксовой подписке в часы минимальной нагрузки (если считать что максимум это рабочие часы в Америке) это всего лишь два кодревью. ПР обычные. До 1000 строк. Но проект большой.
Все чаще посещают мысли что пора на Кими ехать для тех же кодревью. Польза от llm кодревью однозначно есть, но количество выполненной работы за уплоченные деньги совсем не радует. Антропики куда-то не туда пошли.
Особенно остро проблема проявляется если вспомнить про рандом в работе всех сеток и хочется частично решить эту проблему хотя бы двойным прогоном. В идеале вообще тройной-четверной, но это уже совсем неразумно по деньгам.
Классические подходы опять работают. Фаззинг сетками выглядит рабочим планом. Осталось вопрос цены решить.
А вы пользуетесь claude каждый день, чтобы утвержать, что это не нужно?
У нормальных людей (хотя, если смотреть на график нормального распределения интеллекта, то всё же не столь уж и нормальных), клоды и прочая работают в «песочницах», где сетевая и дисковая активность жёстко обрезана. Про остальных иногда пишут новости как там что-то утекло или удалено. Кто бы мог подумать! 🤷♂️
клоды и прочая работают в «песочницах», где сетевая и дисковая активность жёстко обрезана
Добавил код. Дальше что? Нужно чтобы работал гит, то есть сеть нужна. Очень желательно, чтобы тесты провести там же, то есть и тестовая БД нужна
Это такая просьба вас научить как сетевые запросы 3rd parties ограничивать списком разрешённых? :)
Можно, например, взять прокси, тот же Squid, к примеру. Если нужно будет лезть внутрь SSL, придётся почитать про SSL bump. CA по клиентам раскидывать. Всё это муторно, но это, собственно, то, чем и должны продовые инфосексы заниматься, а не кофе с печеньками трескать. ;)
инфосексы
Но я же не этот с сексуальным названием. Если каждый девелопер будет настраивать самостоятельно, то это долго и криво.
А у нас это тупо запрещено
Опять же тупо я использую отдельный ноутбук и синхронизацию файлов. Остальное изолированно физически
Ну, условно говоря, я напомнил о том, что неплохо было бы мыть руки. А если там кому-то это долго, криво, запрещено и прочая — это их выбор и проблемы. :)
Но я же не этот с сексуальным названием. Если каждый девелопер будет настраивать самостоятельно, то это долго и криво.
открыл ваш профиль, раздел (не сексуально) «о себе», читаю: «Специализируюсь на глубоком реинжиниринге сложных систем и приведении их к живому состоянию (безопасность, снижение TCO и incident rate). Что я делаю: Стабилизация: Быстрая изоляция критических узлов системы (ACL»
Что тут скажешь, кроме хрестоматийного «трусики или крестик». :)
ACL не имеет отношения к секьюрности
Безопасность в смысле защиты от сбоев, а не защиты от взлома
У нас сложные отношения с безопасниками... И как я уже писал, LLM у нас запрещена по причине риска утечки паролей, персданных и кода
ACL не имеет отношения к секьюрности
— как и «изоляция критических узлов», видимо, тоже. Мой тейк про нормальное распределение получает дополнительную доказательную силу. 🫶
ой, редактирование комментов. Так уже скоро придётся брать за правило — хочешь, чтобы ответ был не на постоянно меняющееся нечто — выждать 30 минут. Хоть бы настройку уведомлений уже подвезли под такое, не вручную же засекать, лол. :))
У нас сложные отношения с безопасниками... И как я уже писал, LLM у нас запрещена по причине риска утечки паролей, персданных и кода
нет, не писал. Единственное было краткое "А у нас это тупо запрещено" и звучало как ответ на мой посыл про сетевую изоляцию/ограничение сетевых запросов. 🤷♂️
Дальше что?
Шаблонная виртуалка с подсетью, из которой видно дев-окружение. Его по-умолчанию можно ломать, и даже нужно, там нет приватных или секретных данных, и оно должно разворачиватся по клику. Если агент там что-то сломает - ну штош, разворачиваем площадку заново и продолжаем.
У клода политики ограничений сделаны по-дурацки. Они применяются к тулам, а чаще нужно - к ресурсам. Поэтому когда одному инструменту что-то запрещено, клод находит другой - которому можно - и делает свое грязное дело.
Речь как раз о том, что ограничения должны быть не «у Клода на тул», а на уровне самой песочницы: сеть, ФС, credentials, доступные ресурсы. Тогда вообще неважно, какой именно инструмент модель решила использовать — за границу политики он всё равно не выйдет.
Короче, Клод не умеет. Надо делать загончик вручную
«Клод не умеет» — вообще не по адресу. Клод и не должен быть security boundary.
«Надо делать загончик вручную» — да, …ь. Это и называется sandbox / внешний контур ограничений. Именно про него с первой реплики я и говорил.
Особенно прекрасно, что теперь это пишет тот же человек, который пять минут назад объяснял, почему такой «загончик» строить у них то ли запрещёно (до редактирования коммента), то не его работа. :)
У наших разработчиков нет прав ставить виртуалки, ставить приложения и клод тоже. Вот так вот по корпоративной политике безопасности. Обойти можно, конечно, но влетит.
Интересно, как у вас безопасники смотрят на Клод
Upd:
Да, не моя работа именно потому что запрещено
Странные у вас разработчики. И еще более странные те кто запреты пишет. Виртуалка на ноуте или на своей дев тачке это базовая необходимость любого разработчика. Как вы там вообще без Докера (или аналога) софт тестируете?
Наверное, странно...
Персданные в тестовом контуре. Во всех контурах. По ид элементарно определяется ИНН. Шифровать их видимо сильно усложнит жизнь техподдержке.
Хотя, надо подумать...
Как очистить данные от ПД чтобы безбоязненно использовать их в тестовых и девелопмент средах человечество давно придумало. Ваша задача совсем не уникальна и давно решена.
Техподдержка к тестовым средам разработки не имеет никакого отношения.
Хехе. Похоже, вы натолкнули меня на мысль как убрать персданные со всех стендов, не усложнив расследование инцидентов.
Это не так очевидно, как вам кажется. Но и не так невозможно, как думают [тупые] безопасники. А разработка почему-то в нагнутом положении...
Это довольно очевидно на самом деле.
Задача уже решена на нескольких уровнях. Сейчас все приличные люди чистят ПД сохраняя статистические распределения и читаемость данных.
В сильно упрощенном виде: Имя - меняем на рандом имя из заранее сгенеренного списка. Фамилию - аналогично. Под все номера всего пишем генераторы которые обеспечивают такое же распределение. Адрес обобщаем до города и пишем рандомный из этого города из адресной базы.
И так далее. С этим и работать разработке удобно и данные для почти любого анализа статистики правильные и утекать там нечему.
И это все уже придумали и сделали больше 10 лет назад.
Поэтому надо не просто запрещать инструмент, а сразу прерывать работу агента, если с запретом столкнулся агент. LLM очень упорна в своих стремлениях. Даже если это запрещено на уровне промта/инструмента/прав.
Зачем? Сейчас llmки достаточно хороши чтобы понять что это запрещено и надо использовать другой инструмент. Особенно если им об этом явно написать где-нибудь.
Прерывать работу это то что сейчас сделал Антропик и это не работает. Софт должен работать. Но в своей песочнице. И это то что надо сделать руками местных девопсов.
Сколько было уже историй про “ИИ сбежал из песочницы”?
Стремление к результату - не плохо само по себе. Это становится проблемой, когда ИИ что-то надумает и упорно начинает искать обход явного запрета. А такое происходит достаточно регулярно.
Не отработал инструмент? Пробуем выполнить через bash. Не получилось с bash? Пробуем самописный скрипт. Скрипт не сработал? Ищем выход дальше. Роемся по системе, истории коммитов и так далее. Есть доступ к другому серверу? Пороемся и там.
Это хорошо, когда агент так решает основную задачу. Но это становится проблемой, если агент решит дропнуть весь прод из-за проблем с обновлением сервиса.
Рекламы будет еще больше. Не переживайте. Пора уже научиться ее фильтровать.
Вы же понимаете концепцию песочницы? Можно все пробовать, песочница специально для этого создана. А чтобы моделька не жгла токены ей стоит прямо в инструкции написать что сработает для той или иной задачи.
И она еë проигнорирует. Пишем 2-3 страницы инструкций, пару скилов, промт. И вот она уже не ориентируеися и треть правил игнорирует. Что с дрейфом внимания делать?
Если бы только реклама… Но и реальных случаев достаточно. Дропаются проды, дропаются данные в БД. Локально сколько всего было дропнуто…
Лично у меня - неоднократно дропались текущие изменения из-за того, что агент решил поиграться с git, надеясь в истории коммитов найти решение текущей задачи. Хотя в промте явно сказано git не трогать (после 1го случая добавил запрет).
И да, работа идет в песочнице, с регулярными бекапами и без ключей от чего-либо (даже агент не имеет ключей от инференс-провайдера - запросы идут через локальный сервис). Поэтому и последствия лайтовые.
Это другой класс ошибок. Юзер сам дает агенту доступ к базам и слезно просит ллмку ее не дропать. Нам такими юзерами стоит только насмехаться.
А кто мешает запушить текущие изменения перед тем как давать агенту волю? Казалось бы пару кнопкок нажать и пусть хоть весь локальный репозиторий сносит.
Ну так текущие изменения на то и текущие - что не готовы к коммиту )
Логика “ничего важного не давай агенту - нечего будет терять” понятна. Песочница с максимальными ограничениями - тоже понятно.
Но в такой ситуации возможности агента сильно ограничены… Впрочем, но то чтобы я против.
Я просто к тому, что “не лезь” в инструкции работает не очень эффективно. Песочница - да, нужна. Но и остановка после первых же подозрительных действий тоже будет на пользу. Эти подходы не противоречат друг другу.
К коммиту готово все что не хочется терять.
Так дайте доступ к вашим дев стендам и дев базам. Пусть разнесет если что. Их вообще не жалко.
Останавливать всегда плохо. Программа должна решать задачу, а не дергать челвовека из-за мелочей.
Из-за мелочей - да, не следует дергать.
Но на мой взгляд, попытка выйти за пределы ограничений - не мелочь. Это как минимум сигнал о том, что LLM ушла куда-то не туда, а как максимум - ей задачу дали за пределами ее ограничений. В любом случае, результат врятли будет удовлетворительным.
Это как раз мелочь.
Ллм пытается создать временный файл не там. Надо направить автоматически.
Ллм пытается скачать исходники либы не из корпоративной репы, надо показать где их брать.
Ллм пытается гуглить, вместо обращения к разрешенной документации. Надо сказать.
И тому подобное.
Да. Но тут мало вариантов “LLM сама поняла, что пошла не туда и как надо было делать”. Автоматические подсказки? Так на все случаи не напасешься их.
Заранее в контекст положить основные моменты - очень даже неплохой выход. Но если LLM уже пошла не по правильному пути - очень маловероятно, что она вдруг вспомнит, как надо было делать.
А вот обойти ограничения, порушив чего-нибудь попутно - очень даже получится.
Впрочем, вопрос всегда в балансе - удобство vs цена ошибки. На каждый чих дергать не дело. Да и не работает, как показала практика. Но и “делай все, что хочешь” - тоже вариант не лучший (хотя я именно таким вариантом и пользуюсь, пускай и в песочнице в виде докера).
Среди этих уже отобранных сессий серьёзное действие, которое пользователь явно не запрашивал, обнаружили в 6,3% случаев с ручным подтверждением и в 2,4% случаев с Auto mode.
ЛЛМ: Прошу разрешения отформатировать диск Д:
Пользователь: Разрешаю.
ЛЛМ: Ой, я опечаталась, и отформатировала диск С:
Антропик: А вот мы, в нашем продвинутом режиме Auto mode, вообще не разрешаем команду “Формат”. Так намного безопаснее. Хотя “опечатки” у ЛЛМ все равно случаются. Но не в 6,3% случаев, а всего лишь в 2,4%.
Зачем, если есть dangerously-skip-permissions
Именно потому все такого рода инструменты работать строго в песочницах.
Пропустил человек, пропустила некая автоматика - все это глупости.
Факт выполнения команды должен быть минимизирован сам по себе.
Оказывается, если людям спамить, то они начинают игнорировать, ну нифигасебе...
Блин, читаешь статьи, все сплошь гении в топовые компании переходят, потом читаешь их открытия и чего то рука к лицу тянется.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Anthropic сделает Auto mode режимом по умолчанию в Claude Code: люди пропустили 86,4% опасных команд