Skip to content
Back to skills

Secrets Detection

BSecurity

Обнаружение секретов в коде и git-истории — паттерны ключей (sk-, ghp_, AKIA, xox., private keys, user:pass@), поиск в рабочем дереве и git log -p --all, gitleaks/trufflehog и grep-альтернативы, фильтр ложных срабатываний (env-подстановки, плейсхолдеры), протокол реагирования с обязательной ротацией. Use для поиска утёкших ключей/токенов/паролей и проверки перед пушем.

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 11, 2026
securitygobashnodeawsgitapisecurity

Works with

  • api

Security analysis

B85/100
  • highContains patterns that look like hardcoded API keys

Pro shows the line behind each finding and how to fix it

Scanned September 11, 2026

npx -y skills add Vitammiin/agent-vorcl-flow --skill secrets-detection --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Secrets Detection?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Secrets Detection
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/vitammiin-secrets-detection-agent-vorcl-flow/badge)](https://www.skillsdirectory.com/skills/vitammiin-secrets-detection-agent-vorcl-flow)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: secrets-detection
description: Обнаружение секретов в коде и git-истории — паттерны ключей (sk-, ghp_, AKIA, xox., private keys, user:pass@), поиск в рабочем дереве и git log -p --all, gitleaks/trufflehog и grep-альтернативы, фильтр ложных срабатываний (env-подстановки, плейсхолдеры), протокол реагирования с обязательной ротацией. Use для поиска утёкших ключей/токенов/паролей и проверки перед пушем.
version: 1.0.0
---

# Навык: Обнаружение секретов

Ключевой принцип: **найденный секрет = скомпрометирован**. Ключ, побывавший в git-истории, считается утёкшим независимо от приватности репозитория; удаление из истории утечку НЕ отменяет — обязательна ротация.

## 1. Паттерны секретов
| Префикс/форма | Провайдер | Regex (rg) |
|---|---|---|
| `sk-`, `sk-ant-`, `sk-proj-` | OpenAI / Anthropic | `sk-[A-Za-z0-9_-]{20,}` |
| `ghp_`, `github_pat_`, `gho_`, `ghs_` | GitHub token/PAT | `gh[pos]_[A-Za-z0-9]{36,}` · `github_pat_[A-Za-z0-9_]{22,}` |
| `AKIA` (+ secret 40 симв.) | AWS access key | `AKIA[0-9A-Z]{16}` |
| `xoxb-`/`xoxp-`/`xoxa-`/`xoxs-` | Slack | `xox[bpoas]-[A-Za-z0-9-]{10,}` |
| `rnd_` | Render API | `rnd_[A-Za-z0-9]{20,}` |
| `fc-` | Firecrawl | `fc-[a-f0-9]{24,}` |
| `AIza` | Google API | `AIza[0-9A-Za-z_-]{35}` |
| `Bearer <токен>` литералом | любой | `Bearer\s+[A-Za-z0-9._~+/-]{20,}` (не `Bearer \$\{`) |
| `eyJ…` длинный | JWT (сам может быть секретом) | `eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9._-]{20,}` |
| PEM-блоки | private keys | `-----BEGIN (RSA \|EC \|OPENSSH \|PGP )?PRIVATE KEY-----` |
| URL с кредами | connection strings | `[a-z][a-z0-9+.-]*://[^/\s:@]+:[^@\s]+@` |
| Присваивания | generic | `(?i)(password\|passwd\|secret\|api_?key\|token)\s*[:=]\s*['"][^'"]{8,}` |

## 2. Где искать (все четыре слоя)
```bash
rg -n --hidden -g '!node_modules' -g '!.git' '<паттерн>'      # 1. рабочее дерево (включая dotfiles)
git ls-files | grep -iE '\.env'                                # 2. .env закоммичен? + есть ли в .gitignore
git log -p --all -S 'AKIA' --pickaxe-regex                     # 3. вся история, все ветки
git log --all --diff-filter=D --summary | grep delete          # 4. удалённые файлы (диффы смотри git show <commit>^:<path>)
git grep -nE '<паттерн>' $(git rev-list --all) -- .            # альтернатива: grep по каждому коммиту (медленно, полно)
```
Не забывай: staged-изменения (`git diff --cached`), stash (`git stash list` + `git stash show -p`), сорсмапы и артефакты сборки, если закоммичены.

## 3. Инструменты (если установлены) и ручной fallback
| Инструмент | Команда | Что даёт |
|---|---|---|
| **gitleaks** | `gitleaks detect --log-opts="--all" -v` | дерево + вся история, готовые правила, низкий шум |
| **trufflehog** | `trufflehog git file://. --only-verified` | верификация ключей живыми запросами к провайдеру |
| нет ни того ни другого | `rg`/`git log -p -S`/`git grep` по таблице §1 | ручной прогон — честно пометь это в отчёте |
Ничего не устанавливай в чужой проект в рамках read-only аудита — при отсутствии инструментов работай grep'ами.

## 4. Что НЕ секрет (фильтр до отчёта)
- **Env-подстановки:** `${API_KEY}`, `${DB_URL:-postgres://localhost}`, `process.env.SECRET`, `$ENV_VAR` — это ссылки на секрет, не секрет.
- **Плейсхолдеры:** `<your-api-key>`, `xxx`, `changeme`, `sk-...`, `TODO`, `dummy`, `example`.
- **Документация/тесты:** очевидные фейки (`sk-test-1234`, `AKIAIOSFODNN7EXAMPLE` — официальный пример AWS), faker-данные.
- **Публичные по дизайну:** Google Maps browser key с рестрикциями, публичные Sentry DSN, VAPID public key — понизь severity/пометь, но проверь рестрикции.
Сомневаешься, реальный ли ключ (энтропия высокая, но контекст неясен) — секция «требует проверки», не false confidence в обе стороны.

## 5. Протокол при находке
1. **Ротация ключа — обязательна и первична.** Отозвать/перевыпустить у провайдера. Удаление строки/переписывание истории утечку не отменяет.
2. Проверить логи провайдера на использование ключа за период экспозиции.
3. Чистка истории (`git filter-repo`/BFG) — вторично, отдельной задачей на `gitflow` (переписывание истории — force-push, координация с командой).
4. Предотвращение: секрет → env/менеджер секретов, `.env` в `.gitignore`, pre-push чек (`/security:pre-push`), gitleaks в CI.
5. Отчёт: `file:line` или коммит-хэш + путь, провайдер, severity (реальный ключ = critical), значение в отчёте — **маскировать** (`sk-ant-…Xy9Q`, первые/последние 4 символа).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.