
Apiiro виявила 2,539 секретів у файлах дозволів Claude Code на GitHub
Дослідження Apiiro показує, що 2,539 справжніх секретів знайдено у 1,994 публічних репозиторіях GitHub, часто у файлах .claude/settings.local.json, створених під час підтвердження команд.
Дослідники Apiiro виявили 2,539 справжніх секретів у 1,994 публічних репозиторіях GitHub, багато з них зберігалися у файлах дозволів Claude Code з назвою .claude/settings.local.json. Ці файли можуть створюватися, коли користувач вибирає «Yes, and don't ask again» для команди, що містить секрет. Apiiro каже, що постраждали 63 організації, а одна підтвердила, що її ключ був активним.
Як секрети потрапляють у файли
Claude Code запитує підтвердження перед виконанням shell команд. Якщо розробник вибирає «Yes, and don't ask again», він зберігає точну затверджену команду у .claude/settings.local.json усередині папки проєкту. Оскільки ця команда може містити пароль бази даних, хмарний ключ, токен API або логін SSH, скопійований з локальної конфігурації, секрет записується у файл. Claude Code додає файл до глобального списку ігнорування Git користувача, але не до власного .gitignore репозиторію, тому пізніший коміт може його включити. У 539 із 1,105 репозиторіїв із справжнім секретом, які Apiiro простежила, файл змінив коміт, співавтором якого був Claude.
Масштаб і відкритість
На GitHub було 104,185 публічних копій .claude/settings.local.json у 103,617 репозиторіях. Apiiro знайшла справжній секрет у 1,122 із цих файлів, які містили 1,379 різних секретів. З них 379 були паролями баз даних, а 122 були ключами сервісної ролі Supabase. Apiiro також знайшла ще 1,160 секретів у історії Git, спільних файлах налаштувань і транскриптах чатів агента. Загалом Apiiro нарахувала 2,539 різних справжніх секретів у 1,994 репозиторіях. Серед випадків постраждалих є хмарний ключ API постачальника баз даних, пароль продакшен бази Azure Postgres, продакшен токен Square, ключ API у форматі OpenAI, токен npm і пароль власника бази даних медичних записів. Apiiro також знайшла 43 облікових даних SSH у списках дозволу, зокрема паролі root у командах sshpass. Загальні сканери пропустили багато секретів: gitleaks позначив 564 із 1,122 файлів, TruffleHog позначив 643, а 215 не позначив жоден. Багато з них були паролями всередині команд, таких як PGPASSWORD=, sshpass -p, mysql -p або заголовки bearer.
Що мають робити користувачі
Apiiro радить розробникам вилучити файл з відстеження командою git rm --cached .claude/settings.local.json і додати його до власного .gitignore репозиторію, якщо він відстежується. Вони мають ротувати всі облікові дані, які файл коли-небудь містив, бо видалення не прибирає його з історії, форків і клонів. Навіть якщо файл ніколи не було закомічено, користувачам варто відкрити його і видалити кожне правило, що містить секрет. Розробники мають посилатися на секрети як на змінні, наприклад $DB_URL, замість того щоб вводити їх у команди, і затверджувати шаблони на кшталт Bash(npm run:*) замість буквальних команд. Команди безпеки мають ставитися до папок агента і файлів пам'яті як до таких, що можуть містити секрети, додавати їх до сканування pre-commit і CI та спочатку розглядати облікові дані, пов'язані з публічними хостами.
Джерела: apiiro.com
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.