О себе Портфолио Кейсы Услуги Блог Контакт 🎙 Поговорить с AI
EN DE RU
🎙 Поговорить с AI
October 31, 2026 · 4 min read

Ваш coding agent стал точкой входа в инфраструктуру: что проверить после бэкдора в Claude Code/Cursor

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и мой рабочий стек — Claude, Supabase, n8n, Doppler и self-hosted Postgres. Если ваш coding agent уже подключен к репозиторию, секретам, CI и базе, то после истории с бэкдором в Claude Code/Cursor надо считать его не IDE-ассистентом, а еще одним оператором инфраструктуры с широким периметром доступа. Проблема не в самом факте уязвимости. Проблема в том, что многие команды до сих пор оценивают такие инструменты как

Denis Shokhirev
Denis Shokhirev
Agentic AI Systems Architect
Telegram LinkedIn

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и мой рабочий стек — Claude, Supabase, n8n, Doppler и self-hosted Postgres. Если ваш coding agent уже подключен к репозиторию, секретам, CI и базе, то после истории с бэкдором в Claude Code/Cursor надо считать его не IDE-ассистентом, а еще одним оператором инфраструктуры с широким периметром доступа.

Проблема не в самом факте уязвимости. Проблема в том, что многие команды до сих пор оценивают такие инструменты как “помощь разработчику”, а не как исполняемую сущность, которая читает конфиги, предлагает код, трогает migrations, может подсказать опасный shell-командный шаблон и часто видит больше, чем junior engineer в первый месяц работы.

1. Сначала зафиксируйте реальный blast radius

После любого инцидента с coding agent я сначала не ищу “вредоносную строку”. Я считаю радиус доступа. Какие репозитории агент видел? Какие ветки мог менять? Какие секреты были в среде IDE, локальном shell, .env, n8n credentials, Supabase service role keys, Postgres DSN, CI variables? Если вы не можете ответить за 15 минут, у вас уже не проблема разработки, а проблема инвентаризации доступа.

Что проверить в первую очередь

ЗонаЧто проверитьПочему это критично
Gitscope токенов, write-доступ, access к приватным submoduleагент может протащить изменение в доверенный репозиторий
Secrets.env, Doppler, CI variables, локальные ключиутечка секрета переживает удаление вредоносного кода
Databaseservice role, migration user, direct SQL accessагент может сгенерировать опасные DDL/DML действия
Automationn8n credentials, webhook endpointsчерез автоматизацию легко расширяется периметр
Observabilityлоги, traces, prompt historyтам часто лежат токены и чувствительные payload

OWASP в LLM Top 10 2025 отдельно выделяет excessive agency как типовой риск: модельному компоненту часто дают доступ и полномочия шире, чем требуется задаче. Источник: OWASP GenAI Security Project, “LLM Top 10”, 2025, https://genai.owasp.org/. Для production-систем это очень точная формулировка: инцидент редко ограничивается одним ответом модели, обычно он раскрывает переизбыточный доступ вокруг нее.

2. Ротация секретов важнее поиска виноватого коммита

Если coding agent имел доступ к секретам, относитесь к ним как к потенциально скомпрометированным. Не “если увидим признаки”, а сразу по списку. Я обычно делю ротацию на 3 волны: мгновенно отзываемые токены, сервисные ключи с зависимостями и долгоживущие учетные данные инфраструктуры.

#!/usr/bin/env bash
set -euo pipefail

echo "Rotate high-risk secrets first"
echo "1) Revoke Git access tokens"
echo "2) Rotate Supabase service role key"
echo "3) Rotate Postgres application password"
echo "4) Rotate Doppler service token"
echo "5) Re-issue n8n credentials"

for item in git supabase postgres doppler n8n; do
  printf "queued: %s\n" "$item"
done

echo "After rotation, restart workers and invalidate cached sessions"

Здесь важен порядок. Сначала закрываете каналы дальнейшего доступа, потом меняете то, что может сломать прод, и только потом разбираете форензику. В regulated среде это особенно заметно: задержка в 6 часов между обнаружением и ротацией может быть опаснее самого первоначального вектора.

3. Перепроверьте код, который агент уже помог сгенерировать

Самый недооцененный участок — код, который был создан до публичного инцидента и уже попал в production. Особенно DB layer, shell wrappers, integration handlers и code, который работает с файлами. Я несколько раз ловил один и тот же паттерн: модель пишет удобную SQL-обертку через f-string или string interpolation, а дальше это проходит ревью, потому что выглядит “как обычно”.

OpenAI Cookbook в материалах по function calling и tool usage много раз подчеркивает необходимость валидации входов и ограничения действий инструмента на стороне приложения, а не на стороне модели. Источник: OpenAI Cookbook, 2024, https://cookbook.openai.com/. Это относится и к coding agents: доверять надо не тексту подсказки, а контролям вокруг исполнения.

import os
import psycopg
from psycopg.rows import dict_row

conn = psycopg.connect(os.environ["DATABASE_URL"], row_factory=dict_row)

def get_order(order_id: str):
    with conn.cursor() as cur:
        cur.execute(
            "select id, status from orders where id = %s",
            (order_id,)
        )
        return cur.fetchone()

def update_status(order_id: str, status: str):
    with conn.cursor() as cur:
        cur.execute(
            "update orders set status = %s where id = %s",
            (status, order_id)
        )
    conn.commit()

Минимальный набор после инцидента: прогон semgrep, bandit, gitleaks по активным репозиториям и выборочный ручной аудит модулей, к которым агент чаще всего прикасался. semgrep хорошо ловит опасные паттерны в application code, bandit — типовые проблемы в Python, gitleaks — случайно закоммиченные секреты.

semgrep --config auto .
bandit -r app/
gitleaks detect --source . --verbose
git log --since="90 days ago" --stat -- '*.py' '*.ts' '*.sql'

4. Ограничьте агенту среду исполнения, а не только prompt

Очень многие команды после подобных историй переписывают system prompt и считают задачу закрытой. Это почти ничего не меняет, если у агента все еще есть shell, сеть, секреты и право писать в доверенную ветку. Исполнение должно быть ограничено независимо от качества модели.

Практический baseline

Я рекомендую 4 слоя. Первый — отдельный low-privilege runtime для агентных задач. Второй — раздельные ключи для read и write операций. Третий — запрет прямого доступа к production-базе из среды, где работает coding agent. Четвертый — human approval на migrations, credential changes и любые действия с инфраструктурой.

agent_runtime:
  git_access: read_only
  network_egress: allowlist
  database:
    prod_direct_access: false
    staging_role: read_write
  secrets:
    mount_env_files: false
    use_doppler_service_token: true
  approvals:
    require_human_for:
      - migrations
      - credential_rotation
      - infra_changes

Если у вас Supabase, разделите service role и обычные application keys по контексту исполнения. Если у вас self-hosted Postgres, создайте отдельного пользователя только для staging и запретите reuse паролей между средами. Если у вас n8n, перепроверьте все credentials и webhook nodes: именно автоматизация часто превращает локальный инцидент в системный.

5. Логи и история подсказок — это тоже активы, а не мусор

Еще одна типичная ошибка: команды проверяют репозиторий и секреты, но забывают prompt history, IDE extension logs, CI artifacts и traces. А там нередко лежат фрагменты SQL, DSN, customer payloads и внутренние URL. Для европейского B2B это уже не просто инженерная небрежность, а риск инцидента с персональными данными и контрактными обязательствами.

После такого события я делаю короткий data-flow review: какие данные агент видел на входе, какие мог передать внешнему API, где они логировались, сколько времени хранятся и кто имеет к ним доступ. Этот шаг скучный, но он часто показывает больше, чем анализ самого suspicious commit.

FAQ

Нужно ли полностью отключать coding agent после такого инцидента?

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

Достаточно ли read-only доступа к Git?

Это хороший старт, но не полный ответ. Даже read-only доступ к коду, конфигам и истории коммитов может раскрыть чувствительные детали архитектуры, internal endpoints и паттерны ротации секретов.

Нужно ли проводить аудит всех старых PR, где участвовал агент?

Все подряд — обычно слишком дорого. Я бы начал с 60–90 дней, затем приоритизировал PR, затрагивавшие SQL, shell, auth, CI, secrets handling и инфраструктурные скрипты.

Какие инструменты дают практический минимум?

Для быстрого прохода мне хватает semgrep, bandit, gitleaks и ручного просмотра критичных модулей. Дальше уже зависит от стека и требований вашей компании.

Это проблема только Claude Code и Cursor?

Нет. Это класс проблем для любого coding agent или IDE-интеграции, которая имеет доступ к вашему коду, среде выполнения и инструментам. Название продукта меняет детали, но не меняет модель риска.

Где в вашем LLM pipeline сейчас реально ловятся самые опасные ошибки — на этапе статического анализа, в runtime-ограничениях или только на человеческом ревью перед merge? Мне правда интересно сравнить это с тем, что я вижу в production у B2B-команд.

I run a free 30-min stack audit for DACH founders building AI in regulated markets. DM me on LinkedIn or write to @ger_dennis_ai.

Для вашего бизнеса

Такие агенты я делаю для бизнеса в Германии и ЕС.

Опишите в двух предложениях, что отнимает у команды время, — отвечу в течение суток.

Разработка ИИ-агентов (страница на немецком) →
Читать дальше
Компьютерные агенты ломаются на пикселях: как перейти на stable UI refs через accessibility tree и перестать чинить flaky desktop automation
Cursor-marketplace скомпрометировали: как не пустить AI-расширение с SSH-бэкдором на ноутбуки разработчиков
Агент сломал прод не из-за «галлюцинаций», а потому что не видел интерфейс: почему runtime-perception для web/desktop становится обязательным
AI-агент получил доступ к прод-среде? Как построить replayable security triage и доказуемый audit trail до первого инцидента
Все статьи →
Где это применяется
Услуги — что мы делаем
Поговорить с голосовым агентом
Кейсы
Готовы к следующему шагу?

Превратить процесс в систему, которая работает

Продакшн-качество, а не демо.

Обсудить проект → ← Все статьи