Перейти до змісту

GitHub — секрети у коді

Що це

GitHub — найбільша у світі платформа для коду. Понад 100 мільйонів розробників і 400+ мільйонів публічних репозиторіїв. Розробники припускаються двох типових помилок:

  1. Комітять секрети у код — API-ключі, токени, паролі баз даних, приватні сертифікати.
  2. Створюють особисті форки робочих репозиторіїв — щоб "побавитись вдома", і забувають зробити їх приватними.

Кожен такий комміт залишається в історії git назавжди, навіть якщо потім видалити файл або зробити force-push.

Навіщо вам це

Витоки секретів через публічні комміти — це найшвидший спосіб отримати компрометацію. Типовий сценарій:

  1. Розробник вставляє AWS-ключ у .env.example, забувши закоментувати реальне значення.
  2. git push — і ключ у публічному репо.
  3. Зловмисник, який у фоні сканує всі нові комміти на GitHub, знаходить ключ за 20-40 секунд.
  4. Через 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. Цього достатньо для невеликих компаній.

Повне підключення (рекомендовано)

  1. Settings → Detection Sources → GitHub → Connect.
  2. Авторизація на github.com.
  3. Платформа запитує мінімально необхідні дозволи: читання організації, доступ до публічних і приватних репо (якщо хочете моніторити приватні).
  4. Вибір організацій / репозиторіїв, які моніторити.
  5. Перший скан запускається автоматично.

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 секрет видаляється повністю.