Тюрьма путей: почему одной проверки строки мало

«Агент работает только внутри своей папки». Звучит как одна строчка: проверил, что путь начинается с корня рабочей папки, — и готово. Именно так это обычно и пишут в первый раз. И именно так это обычно и обходят. В Элис у каждой группы есть своё рабочее пространство, и файловые инструменты читают и пишут только внутри него. Мы называем это тюрьмой путей. Запрет на её обход стоит в инвариантах стабильного префикса, но полагаться на то, что модель его помнит, нельзя. Защищает код. Почему простое сравнение строк не работает. Вот обходы, которые не похожи на обходы: • относительный путь с «..», который формально начинается с правильной папки, а реально из неё выходит; • соседняя папка с похожим именем: «/work/group» и «/work/group-old» совпадают по началу строки; • символическая ссылка внутри рабочей папки, которая смотрит наружу; • ссылка, подменённая между проверкой и записью, — классическая гонка «проверил — использовал»; • shell, где команда сама перейдёт куда угодно. Как устроено. Любой путь от модели приводится к реальному абсолютному пути — с раскрытием «..» и ссылок — и сравнивается с корнем по компонентам, а не по символам. Проверка делается в момент операции, а не заранее. Вышел за пределы — вызов отклоняется с отдельным видом провала и своим кодом выхода. Даже пакеты ставятся внутрь рабочей папки по жёсткому списку разрешённых, а не в систему. Бонус — предсказуемость: группу можно перенести или удалить целиком, зная, что агент ничего не разбросал по машине. Где было трудно. Shell. Внутри произвольной команды файловый фильтр бессилен. Поэтому shell закрыт с двух сторон: заведомо опасные команды запрещены политикой, остальное по умолчанию идёт через подтверждение человека. Настоящую изоляцию для shell дают средства уровня ОС — контейнер или отдельный пользователь, — и честнее сказать об этом прямо, чем делать вид, что фильтр путей ловит всё. Урок: проверяйте не строку, которую прислала модель, а реальный объект, с которым будет работать операция. Какой обход путей вы встречали в своих проектах? #Элис #ЭлисAI #AIбезопасность #DevSecOps

Тюрьма путей: почему одной проверки строки мало | Сетка — социальная сеть от hh.ru