Закріплені секретні файли

Закріплені секретні файли

Один відсутній .gitігноруйте, і ваш .env відправляється у світ.

Що таке Закріплені секретні файли?

Жорстке кодування секрету в джерелі є однією з проблем. Закріплення цілого файлу з них є іншим. Репозиторій без .gitignore відстежує файли .env, приватні ключі та JSON облікового запису служби з першого коміту, і коли файл відстежується, він належить до історії, тому кожен клон містить копію. Ви клонуєте загальнодоступний репозиторій, прочитаєте зафіксований .env і перейдете в робоче середовище. Потім ви скасуєте відстеження файлів за допомогою git rm --cached, повернете кожен відкритий ключ, додасте .gitignore та встановите хук перед фіксацією, який блокує секретні імена файлів.

Що ви дізнаєтесь у Закріплені секретні файли

Закріплені секретні файли — Кроки навчання

  1. Збільште розмір мішені

    Сьогодні Боб націлений на Tavonn, стартап із інтеграції платежів, який відкрито розповсюджує частину свого коду. Він починає з загальнодоступного сховища, оцінюючи, чим керує компанія, перш ніж шукати шлях туди. Загальнодоступне репо — це подарунок для такого, як Боб: увесь проект, кожен файл можна завантажити однією командою.

  2. Клонуйте репо

    Боб клонує сховище на власну машину, щоб він міг читати кожен файл, який він відстежує, офлайн і у власному темпі. Незалежно від доріжок репо з клоном. Якщо секретний файл коли-небудь був зафіксований, він знаходиться в копії, яку він щойно витягнув.

  3. Список відстежуваних файлів

    Боб перераховує все, що відстежує репозиторій. Він не дивиться на те, що є на диску, він запитує git, які файли насправді перебувають під контролем версій, тому що це ті, які несе кожен клон.

  4. Прочитайте секретний файл

    Боб відкриває зафіксований файл середовища. Це різниця між цим витоком і одним жорстко закодованим ключем: це не одне значення, вставлене в рядок коду, це цілий файл секретів під контролем версій. Тут є все, що потрібно для роботи служби, у вигляді звичайного тексту.

  5. Досягніть сценічного середовища

    Витік ключа є лише теорією, поки він щось не відкриває. У Боба вже є всі необхідні елементи з клону: причетний .env дав йому базову URL-адресу API у PUBLIC_API_URL і активний ключ, а маршрути, які він клонував у src/routes/payments.js , визначають платіжний канал у /v1/transactions . Він збирає запит і несе ключ у заголовку авторизації так, як це зробив би справжній клієнт. Кінцеві точки ніколи не були секретом; вони сидять у публічному джерелі. Ключ був, і зафіксований файл передав йому один, тому у сервера немає причин відхилити запит.

  6. Платіжні дані відкриті

    Сервер довірив ключу та відповів. Боб читає платіжні записи Тавонна поза компанією, не маючи власного рахунку.

  7. Перевірка знань

    Ви щойно спостерігали, як публічне репо передає сторонньому ключі до живого середовища. Зафіксуйте чому.

  8. Тривога приземляється

    Ви володієте репо платіжної служби Tavonn. Вночі секретний сканер служби безпеки позначив загальнодоступне сховище та надіслав вам електронний лист. Висновок однозначний: зафіксований .env із активними ключами знаходиться в загальнодоступному репо, і немає жодного .gitignore , який зберігає такі файли.

  9. Відстежується, без .gitignore

    Ваш перший крок — побачити це на власні очі. Ви вказуєте, що git відстежує в репозиторії, і ось воно: .env і ключ сервісного облікового запису знаходяться під контролем версій, а .gitignore немає в списку. Наявність файлу на диску – це одне; файл, який відстежує git, фіксується в історії та в кожному клоні.

  10. Відстежте секретні файли

    Ви зупиняєте git відстеження секретних файлів за допомогою git rm --cached , який видаляє їх з індексу, залишаючи на диску, щоб служба все ще могла працювати локально. Ви фіксуєте та натискаєте цю зміну, і файли зникають із поточного репо. Здається, це виправлення. Це не так, і наступний крок показує чому.

Охоплення стандартів безпеки

CWE

  • CWE-540 Inclusion of Sensitive Information in Source Code
  • CWE-522 Insufficiently Protected Credentials

MITRE ATT&CK

  • T1552.001 Unsecured Credentials: Credentials In Files

CIS Controls

  • CIS 3 Data Protection
  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.DS Data Security
  • PR.PS Platform Security