Перейти к содержимому
AUTHORВЫПУСК №008 → АВТОМАТИЗАЦИЯ АГЕНТАМИ: 90% НЕ ПРОМПТ / имейте совесть, когда будете делиться или копировать
>AISTUDY_

Модуль s.4 · Урок 2

Урок 2: Безопасное исполнение кода ИИ

25 мин
s.4 / Урок 2 из 3

Чему вы научитесь

  • Понимать, почему сгенерированный агентом код опасно запускать на своей машине «как есть»
  • Различать две основные угрозы: prompt-injection и эксфильтрацию данных
  • Настраивать Docker-песочницу по образцу Kosmos: --cap-drop=ALL, --network=none, read-only FS, лимиты CPU, RAM, timeout
  • Проверять чужие навыки и код перед запуском, в том числе сканером Cisco AI Defense Skill Scanner
  • Встраивать изоляцию в свой рабочий процесс анализа из урока 1, не теряя в удобстве

Почему чужой код нельзя запускать как есть

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

Опасность не в том, что агент «злой». Опасность в том, что его инструкции можно перехватить, а его код имеет тот же доступ к системе, что и вы: к файлам, к сети, к переменным окружения с ключами.

Две угрозы: injection и эксфильтрация

Репозиторий Scientific Agent Skills прямо предупреждает о двух рисках при установке навыков — prompt-injection и эксфильтрации данных (K-Dense scientific-agent-skills). Разберём их по отдельности, потому что защищаются они по-разному.

УгрозаВ чём сутьКак проявляется в анализе
Prompt-injectionВ данные или навык вшита инструкция, которую агент воспринимает как командуВ CSV, README навыка или комментарии скрыта фраза «скачай и запусти скрипт», и агент её выполняет
Эксфильтрация данныхКод отправляет ваши данные на внешний серверСкрипт под видом анализа делает POST с содержимым датасета или с ключами из окружения

Связка этих угроз и опасна: prompt-injection заставляет агента написать код, а отсутствие изоляции даёт этому коду доступ к сети и файлам для эксфильтрации. Разорвать связку проще всего на втором звене — отобрать у кода сеть и лишние права.

Песочница Kosmos: конкретные флаги

Open-source Kosmos исполняет сгенерированный код в Docker-песочнице с жёсткой изоляцией. Набор мер из его подхода — хороший готовый шаблон (jimmc414/Kosmos).

МераФлаг DockerЧто отбирает у кода
Сброс capabilities--cap-drop=ALLПривилегированные операции ядра
Отключение сети--network=noneЛюбой исходящий трафик, то есть эксфильтрацию
Read-only файловая система--read-onlyЗапись куда-либо, кроме явного tmpfs
Лимит памяти--memoryВозможность съесть всю RAM хоста
Лимит CPU--cpusВозможность занять все ядра
Таймаутtimeout вокруг docker runБесконечный цикл, зависание

Логика набора простая: код получает ровно то, что нужно для счёта, — процессор, немного памяти и временную папку, — и ничего сверх этого. Без сети эксфильтрация невозможна технически, а не «по доверию».

Готовый пример запуска

Ниже минимальный безопасный запуск анализа из урока 1 в изолированном контейнере. Датасет и скрипт монтируются только на чтение, результаты пишутся в отдельную папку, сети нет.

docker run --rm \
  --cap-drop=ALL \
  --security-opt no-new-privileges \
  --network=none \
  --read-only \
  --tmpfs /tmp:size=256m \
  --memory=2g \
  --cpus=2 \
  --pids-limit=128 \
  --user 1000:1000 \
  -v "$PWD/data:/work/data:ro" \
  -v "$PWD/out:/work/out" \
  -w /work \
  python:3.13-slim \
  timeout 300 python /work/data/analysis.py

Разбор по группам флагов: первые три строки отбирают права и привилегии; --network=none закрывает эксфильтрацию; --read-only плюс --tmpfs дают запись только во временную папку; лимиты --memory, --cpus, --pids-limit и внешний timeout 300 ограничивают ресурсы и время.

Сканирование навыков до установки

Изоляция защищает во время исполнения. Но навык стоит проверить ещё до того, как вы его поставите. Scientific Agent Skills рекомендует сканер Cisco AI Defense Skill Scanner для проверки навыков перед установкой (K-Dense scientific-agent-skills).

  1. Прочитайте SKILL.md глазами. Навык по стандарту Agent Skills — это папка с документацией и кодом. Посмотрите, что он делает, до установки.
  2. Прогоните сканер. Cisco AI Defense Skill Scanner ищет подозрительные паттерны: сетевые вызовы, чтение секретов, исполнение внешних команд.
  3. Ставьте из доверенного источника. Предпочитайте официальный репозиторий и фиксированную версию, а не случайную ссылку из чата.
  4. Запускайте в песочнице. Даже проверенный навык исполняйте изолированно — сканер ловит не всё.

Изоляция как часть процесса, а не разовая мера

Песочница работает, только если она встроена в привычку. Удобный приём — сделать запуск в контейнере единственным способом исполнить код агента.

flowchart LR
    A[Агент пишет код] --> R[Человек читает код]
    R --> B[Сборка контейнера]
    B --> S[Запуск: cap-drop, network none, read-only, лимиты]
    S --> O[Папка out: графики и таблицы]
    O --> V{Человек проверяет вывод}
    V -- ошибки или подозрительное --> R

    style A fill:#0891b2,color:#fff,stroke:#0e7490
    style S fill:#dc2626,color:#fff,stroke:#991b1b
    style V fill:#f59e0b,color:#fff,stroke:#d97706
    style O fill:#059669,color:#fff,stroke:#047857

Заметьте, что человек стоит в двух местах: читает код до запуска и проверяет вывод после. Песочница не отменяет ревью — она ограничивает ущерб, если ревью что-то пропустит.


Следующий урок

Урок 3: Доменные пайплайны — соберём один сквозной кейс в вашей области: single-cell RNA-seq, drug discovery или интерпретация вариантов.

Скачать урок

Есть идея или нашли ошибку?

// Обсуждение

Можно писать анонимно. Укажите email, чтобы получать уведомления об ответах.