Утечка ключей через Claude Code: как защитить репозитории от кражи токенов
Microsoft отрапортовала об инциденте, в котором заражение через Claude Code привело к компрометации 73 собственных репозиториев.

Что известно из источников
Хабр описывает сценарий, при котором открытие репозитория в Claude Code становится триггером: ключи (по всей видимости, токены доступа и/или секреты, попавшие в репозиторий) оказываются у атакующего, после чего атака распространяется дальше. Масштаб — 73 репозитория Microsoft — фигурирует в заголовке, детальная разбивка в публичных сниппетах не приводится. Корреляция с 0-day в VS Code намекает на смежный вектор: компрометация редактора как точка входа в локальные секреты и GitHub-токены.
Что это значит для пайплайна
Если ваш разработчик (или AI-агент) запускает Claude Code в директории с `.env`, `~/.ssh/`, `~/.config/gh/`, то любая RCE/LFI в агенте превращается в кражу credentials. Минимальная гигиена, которую стоит закрепить в команде:
```bash
# 1. Запретить агенту читать секреты на уровне файловой системы
# ~/.config/Code/User/settings.json
{
"claude.code.denyPaths": [
"~/.ssh",
"~/.aws",
"~/.config/gh",
"**/.env",
"**/*id_rsa*"
]
}
```
```bash
# 2. GitHub-токены — только через gh auth с короткоживущим scope
gh auth login --scopes "read:org, repo" --web
gh auth refresh --scopes "repo, read:org"
# Проверить, какие токены вообще живут в системе
gh auth status
gh extension list | grep auth
```
```bash
# 3. Аудит логов Claude Code на подозрительные обращения к секретам
grep -RInE "(BEGIN [A-Z ]+PRIVATE KEY|AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{36})" \
~/.claude/logs/ || echo "no leaks in logs"
```
Что отслеживать дальше
Дождаться полного бюллетеня Microsoft с CVE-идентификатором — в нём будет ясно, эксплуатировался ли баг через цепочку VS Code → Claude Code, или вектор самостоятельный. До публикации патча разумно: ограничить Claude Code песочницей (Docker без `--privileged`, без монтирования `~/.ssh` и `~/.config/gh`), отозвать долгоживущие GitHub PAT и перейти на GitHub App с TTL ≤ 1 ч, а в CI выкатить правило, запрещающее ассистентам читать файлы, подпадающие под `gitleaks`-конфиг. Для бэкенда это рутинная работа, но именно она отделяет «читали про инцидент» от «не попали в следующий».