GitHub — секрети у коді¶
Що це¶
GitHub — найбільша у світі платформа для коду. Понад 100 мільйонів розробників і 400+ мільйонів публічних репозиторіїв. Розробники припускаються двох типових помилок:
- Комітять секрети у код — API-ключі, токени, паролі баз даних, приватні сертифікати.
- Створюють особисті форки робочих репозиторіїв — щоб "побавитись вдома", і забувають зробити їх приватними.
Кожен такий комміт залишається в історії git назавжди, навіть якщо потім видалити файл або зробити force-push.
Навіщо вам це¶
Витоки секретів через публічні комміти — це найшвидший спосіб отримати компрометацію. Типовий сценарій:
- Розробник вставляє AWS-ключ у
.env.example, забувши закоментувати реальне значення. git push— і ключ у публічному репо.- Зловмисник, який у фоні сканує всі нові комміти на GitHub, знаходить ключ за 20-40 секунд.
- Через 5 хвилин у вашому AWS — нові інстанси з майнингом крипти на $50k/місяць.
Згідно з річними звітами GitGuardian, у 2024 на публічному GitHub було виявлено 23 мільйони експонованих секретів. BCP Portal моніторить ваш домен / організацію / ключові слова у нових коммітах, щоб ви знайшли витік раніше за зловмисника.
Що ми шукаємо¶
Платформа розпізнає 80+ типів секретів, серед них:
- AWS — Access Keys, Secret Keys.
- GitHub / GitLab — Personal Access Tokens, App tokens.
- Cloud — Google API Keys, Azure tokens.
- Платіжні системи — Stripe live keys, PayPal credentials.
- AI / LLM — OpenAI, Anthropic API keys.
- Комунікації — Slack tokens, Discord webhooks, Twilio.
- JWT-токени з production issuer'ами.
- Приватні ключі — RSA, EC, OpenSSH у будь-якому форматі.
- Паролі баз даних у connection-рядках.
Кожен тип має fal-positive фільтри: тести, приклади (your-key-here, xxxxxx, EXAMPLE_KEY) ігноруються автоматично.
Що ми сканіруємо¶
Без підключення вашої організації¶
Платформа шукає у всьому публічному GitHub згадки ваших DataSources (домен, бренд, ключові слова). На кожен матч аналізуємо файл на наявність секретів.
З підключеною GitHub-організацією¶
Додатково ми скануємо:
- Усі публічні репозиторії вашої організації.
- Публічні форки співробітників — найчастіше джерело витоків.
- Приватні репозиторії організації — якщо ви надаєте відповідний доступ.
Активна перевірка ключів (опційно)¶
Для частини знахідок (AWS, Stripe, GitHub) платформа може автоматично перевірити, чи ключ ще робочий — це дозволяє точно знати, що треба ротувати негайно, а що вже мертве.
Перевірка робиться read-only запитами, які не змінюють ваші системи. Включається окремим прапором у налаштуваннях сервісу.
Severity знахідок¶
| Severity | Коли так класифікуємо |
|---|---|
| Critical | Активний секрет (AWS / Stripe / OpenAI) у файлі, який не є тестом чи прикладом |
| High | Розпізнаний тип секрету у будь-якому файлі |
| Medium | Generic high-entropy рядок з ключовими словами password, secret, token |
| Low | Згадка вашого домену або keyword без секрет-патерну |
Що бачите у дашборді¶
Знахідка GitHub містить:
- Прямий лінк на конкретний рядок у репо (
github.com/org/repo/blob/.../file#L42). - Тип секрету — наприклад, AWS Access Key.
- Контекст — ±3 рядки навколо.
- Автор комміту та дата.
- Validation status: чи ключ ще активний (якщо ви включили перевірку).
- Severity і рекомендована дія.
Як підключити¶
Швидкий старт (без OAuth)¶
Працює одразу, з коробки — платформа шукає по публічному GitHub за вашими DataSources. Цього достатньо для невеликих компаній.
Повне підключення (рекомендовано)¶
- Settings → Detection Sources → GitHub → Connect.
- Авторизація на github.com.
- Платформа запитує мінімально необхідні дозволи: читання організації, доступ до публічних і приватних репо (якщо хочете моніторити приватні).
- Вибір організацій / репозиторіїв, які моніторити.
- Перший скан запускається автоматично.
Personal Token vs GitHub App
Для невеликих команд можна підключитись через Personal Access Token однієї людини. Для організацій рекомендуємо GitHub App — він не залежить від однієї конкретної людини і має вищі rate limits.
Розклад сканування¶
- Швидкий режим (пошук по публічному GitHub) — щогодини.
- Повне сканування вашої організації — кожні 6 годин або щодня залежно від розміру (для великих орг повний скан може зайняти кілька годин).
FAQ¶
Що робити, якщо знайдено активний AWS-ключ?
1. Негайно деактивувати ключ у AWS Console — це 30 секунд.
2. Перевірити CloudTrail на підозрілу активність за останні дні.
3. Видалити секрет з git історії (інструменти git-filter-repo або BFG).
4. Зробити post-mortem: чому секрет потрапив у код, як зробити, щоб таке не повторювалось (pre-commit hooks, secret scanning).
Чи скануємо ми приватні репо інших користувачів? Ні. Лише публічні + ваші власні, до яких ви дали доступ через OAuth. Зловмисник не може використати BCP Portal, щоб подивитись чужий приватний код.
Як часто фолс-позитиви? Тип-specific патерни (AWS, Stripe, GitHub PAT) — менше 2% false positives. Generic high-entropy матчі — 15-20%. Validation-режим зводить fal-positives на активні ключі до нуля.
Чи зберігаються самі секрети у платформі?
Самі ключі зберігаються зашифрованими, доступ обмежений за роллю. У звітах і експортах вони маскуються (AKIA...XXX). Через 90 днів після resolution секрет видаляється повністю.