
Пассивное расширение браузера для обнаружения API-ключей и секретов для Chrome и Firefox. Более 80 шаблонов обнаружения, нулевая конфигурация.
<p align="center">
<img width="128" height="128" alt="Логотип KeyFinder" src="https://assets.kitploit.com/production/public/readmes/13441/6a3719fb955d59b82cc0050ce4d323675f3e6d4f0ae09becf982a5b2f6755771.png">
</p>
<h1 align="center">KeyFinder</h1>
<p align="center">
<strong>Пассивное обнаружение API-ключей и секретов для Chrome и Firefox</strong>
</p>
<p align="center">
<img src="https://img.shields.io/badge/manifest-v3-blue"/>
<a href="https://chromewebstore.google.com/detail/keyfinder/oogbljkilkfgdlkbmajlolpanilnnkim"><img src="https://img.shields.io/badge/Chrome-Extension-green"/></a>
<a href="https://addons.mozilla.org/en-US/firefox/addon/keyfinder-original/"><img src="https://img.shields.io/badge/Firefox-Add--on-orange"/></a>
<img src="https://img.shields.io/github/license/momenbasel/keyFinder"/>
<img src="https://img.shields.io/github/v/release/momenbasel/keyFinder"/>
<img src="https://img.shields.io/github/downloads/momenbasel/keyFinder/total.svg"/>
</p>
<hr>
KeyFinder — это расширение для браузера Chrome и Firefox, которое пассивно сканирует каждую посещаемую вами страницу на предмет утечек API-ключей, токенов, секретов и учетных данных. Оно работает незаметно в фоновом режиме, не требуя никакой настройки.
<p align="center">
<video src="https://cdn.jsdelivr.net/gh/momenbasel/keyFinder@master/store/store-demo.mp4" poster="https://raw.githubusercontent.com/momenbasel/keyFinder/master/store/store-1-dashboard.png" controls muted playsinline></video>
</p>
## Что он обнаруживает
KeyFinder поставляется с **80+ шаблонами обнаружения**, охватывающими секреты из:
| Категория | Провайдеры |
|-----------|-----------|
| **Облачные** | AWS (ключи доступа, секретные ключи, сессионные токены, Cognito), Google Cloud (API-ключи, OAuth, сервисные аккаунты), Azure (ключи хранилища, SAS-токены, строки подключения) |
| **Системы контроля версий** | GitHub (PAT, OAuth, детализированные токены), GitLab (PAT, токены пайплайнов и раннеров), Bitbucket |
| **Платежи** | Stripe (секретные, публикуемые, ограниченные, вебхуки), PayPal Braintree, Square |
| **Коммуникации** | Slack (боты, пользовательские, приложения, вебхуки), Discord (боты, вебхуки), Telegram, Twilio, SendGrid |
| **AI / ML** | OpenAI, Anthropic, HuggingFace, Replicate |
| **Базы данных** | Строки подключения MongoDB, PostgreSQL, MySQL, Redis |
| **SaaS** | Shopify, Sentry, New Relic, PlanetScale, Linear, Notion, Datadog, Algolia, Mapbox |
| **Инфраструктура** | HashiCorp Vault, Terraform, Docker Hub, NPM, Cloudflare, DigitalOcean, Doppler, Pulumi, Grafana |
| **Криптография** | Приватные ключи RSA, EC, OpenSSH, PGP, DSA |
| **Общие** | JWT, Bearer-токены, Basic Auth, присвоения API-ключей, URL с учетными данными, строки с высокой энтропией |
## Как это работает
KeyFinder сканирует **10 различных поверхностей атаки** на каждой странице:
1. **URL-адреса скриптов `src`** — проверяет все URL-адреса скриптов на наличие ключевых слов и токенов в параметрах запроса
2. **Встраиваемые скрипты** — сканирует содержимое тегов `<script>` на наличие секретных шаблонов
3. **Внешние скрипты** — загружает и сканирует JavaScript-файлы из того же источника
4. **Мета-теги** — проверяет теги `<meta>` на предмет утечек API-ключей и токенов
5. **Скрытые поля форм** — просматривает значения `<input type="hidden">`
6. **Атрибуты данных** — сканирует атрибуты `data-*` на наличие чувствительных значений
7. **HTML-комментарии** — анализирует узлы комментариев на предмет случайно зафиксированных секретов
8. **Параметры URL** — анализирует ссылки и hrefs на наличие токенов в строках запроса
9. **Веб-хранилища** — сканирует localStorage и sessionStorage
10. **Сетевые ответы** — перехватывает ответы XHR и Fetch на предмет утечек
Кроме того, применяется **анализ энтропии Шеннона** для обнаружения случайных строк с высокой энтропией, которые могут быть undocumented форматами секретов.
## Возможности
- **Нулевые зависимости** — чистый vanilla JavaScript, без jQuery, без внешних библиотек
- **Manifest V3** — создано для современных Chrome и Firefox с архитектурой Service Worker
- **Пассивное сканирование** — работает автоматически при каждой загрузке страницы
- **Адаптация к SPA** — MutationObserver повторно сканирует динамически внедренный DOM
- **Значок оповещения на вкладке** — красная точка поверх значка, если на вкладке есть результаты
- **Пользовательские ключевые слова** — добавьте свои поисковые запросы для сканирования (валидированные, макс. 50)
- **Панель управления в стиле ops-консоли** — плоский терминальный интерфейс: результаты, отсортированные по серьезности, кликабельные плитки фильтрации по серьезности, тикер последних результатов и живой поиск (`/` — фокус, `Esc` — очистить)
- **Быстрая обработка в один клик** — нажмите на любую чип-карту совпадения, чтобы скопировать секрет, относительные метки времени с абсолютными при наведении, удаление отдельных результатов
- **Экспорт** — загрузка отфильтрованных результатов в JSON или CSV (с защитой от внедрения формул)
- **Защищенный мост** — уникальный nonce на странице для канала CustomEvent MAIN <-> ISOLATED
- **Ограниченное хранилище** — лимит 5000 результатов с удалением по FIFO; сериализованные записи между вкладками
- **Низкое потребление ресурсов** — минимальная загрузка CPU и памяти
- **Все фреймы** — сканирует iframe и встроенный контент
## Установка
### Chrome
- [Установить из Chrome Web Store](https://chromewebstore.google.com/detail/keyfinder/oogbljkilkfgdlkbmajlolpanilnnkim)
### Firefox
- [Установить из дополнений Firefox](https://addons.mozilla.org/en-US/firefox/addon/keyfinder-original/)
### Из исходного кода
```bash
git clone https://github.com/momenbasel/keyFinder.git
```
**Chrome:**
1. Перейдите на `chrome://extensions`
2. Включите **Режим разработчика**
3. Нажмите **Загрузить распакованное расширение** и выберите папку `keyFinder`
**Firefox:**
1. Перейдите на `about:debugging` > "Этот Firefox"
2. Нажмите **Загрузить временное дополнение**
3. Выберите `manifest.firefox.json` из папки `keyFinder`
## Использование
1. **Установите** расширение
2. **Серфите** в интернете как обычно — KeyFinder сканирует каждую страницу в фоновом режиме
3. Нажмите на **значок расширения**, чтобы просмотреть статистику и управлять ключевыми словами
4. Нажмите **Просмотреть результаты**, чтобы открыть полную панель результатов
5. **Фильтруйте** по серьезности, провайдеру или типу — или кликните по плитке серьезности для мгновенной фильтрации; нажмите `/` для поиска
6. **Экспортируйте** результаты в JSON или CSV для отчетности
## Добавление пользовательских ключевых слов
Нажмите на значок расширения, введите ключевое слово в поле ввода и нажмите **Добавить**. Ключевое слово будет использоваться для сканирования URL-адресов скриптов, встроенного кода и присвоений ключ-значение на каждой посещаемой странице.
Ключевые слова по умолчанию: `key`, `api_key`, `apikey`, `api-key`, `secret`, `token`, `access_token`, `auth`, `credential`, `password`, `client_id`, `client_secret`
## Архитектура
```
keyFinder/
manifest.json # Chrome MV3 manifest
manifest.firefox.json # Firefox MV3 manifest
popup.html # Интерфейс всплывающего окна расширения
results.html # Панель результатов
js/
background.js # Service Worker — обработка хранилища и сообщений
patterns.js # 80+ шаблонов регулярных выражений для обнаружения секретов
content.js # Сканер страниц в ISOLATED-мире — DOM, скрипты, сеть
interceptor-loader.js # Загрузчик в ISOLATED-мире — задает nonce, внедряет перехватчик в MAIN-мир
interceptor.js # Хуки XHR/Fetch в MAIN-мире + сканирование глобальной области window
popup.js # Логика всплывающего окна
results.js # Логика панели результатов с фильтрацией и экспортом
css/
popup.css # Стили всплывающего окна
results.css # Стили панели результатов
icons/
icon16.png
icon48.png
icon128.png
scripts/
build.sh # Сборка zip-пакетов для Chrome и Firefox
```
## Безопасность
См. [SECURITY.md](https://github.com/momenbasel/keyfinder/blob/master/SECURITY.md) для модели угроз, политики раскрытия информации и известных ограничений. Примечания к релизам находятся в [CHANGELOG.md](https://github.com/momenbasel/keyfinder/blob/master/CHANGELOG.md).
## Отказ от ответственности
Этот инструмент предназначен **только для исследовательских целей в области безопасности и авторизованного тестирования**. Используйте его для выявления утечек секретов в ваших собственных приложениях или во время авторизованных пентестов. Вы несете ответственность за свои действия.
## Профессиональные услуги
keyFinder создан и поддерживается [GreyCore Labs](https://greycorelabs.com), зарегистрированной в США компанией в области наступательной безопасности. Хотите, чтобы тот же взгляд был обращен на ваш собственный продукт?
- [Пентестинг](https://greycorelabs.com/#plans) — веб, API, мобильные, облачные. Фиксированная цена в течение 24 часов, отредактированный образец отчета по запросу.
- [Бесплатное сканирование внешней поверхности атаки](https://greycorelabs.com/#free-scan) — одностраничный отчет за 48 часов, без обязательств.
## Лицензия
MIT
## Автор
[@momenbassel](https://x.com/momenbassel) - [LinkedIn](https://www.linkedin.com/in/momenbasel/)