Gitleaks

Gitleaks jest niesamowitym, a zarazem zgrabnym narzędziem, który pozwoli nam znaleźć poufne dane jak hasła czy klucze w repozytoriach git. Jak możemy go użyć ?

Utwórzmy lokalnie katalog z zainicjalizowanym repozytorium git:

mkdir demo
cd demo
git init

a następnie utwórzmy prosty skrypt i zapiszmy zmiany w git:

echo hostname > script.sh
chmod +x script.sh
git add script.sh
git commit -am "Simple script"

W kolejnym kroku zainstalujmy gitleaks i urzyjmy go za pomocą komendy:

brew install gitleaks
gitleaks detect --source . -v

Narzędzie nie powinno znaleźć żadnych danych, dlatego utwórzym plik provider.tf z zawartością:

provider "aws" {
  region     = "us-west-2"
  access_key = "lkKJkJsi819jc8s9jd8ciejr5.34.22kdksfASASS"
  secret_key = "alkskadsKKj81jsodio1j98Aasd1.asio32JJJ8ss"
}

Po utworzeniu pliku, zapiszmy zmiany w git:

git add provider.tf
git commit -am "Add TF provider with AWS API key"

I sprawdźmy wyniki z uruchomienia gitleaks :

gitleaks detect --source . -v

    ○
    │╲
    │ ○
    ○ ░
    ░    gitleaks

Finding:     access_key = "lkKJkJsi819jc8s9jd8ciejr5.34.22kdksfASASS""
Secret:      lkKJkJsi819jc8s9jd8ciejr5.34.22kdksfASASS
RuleID:      generic-api-key
Entropy:     4.308295
File:        provider.tf
Line:        3
Commit:      d496e23a1872af79917e78f80a6fac9da1fd7063
Author:      Sebastian Czech
Email:       sebaczech@gmail.com
Date:        2023-08-02T20:43:09Z
Fingerprint: d496e23a1872af79917e78f80a6fac9da1fd7063:provider.tf:generic-api-key:3

Finding:     secret_key = "alkskadsKKj81jsodio1j98Aasd1.asio32JJJ8ss""
Secret:      alkskadsKKj81jsodio1j98Aasd1.asio32JJJ8ss
RuleID:      generic-api-key
Entropy:     3.840947
File:        provider.tf
Line:        4
Commit:      d496e23a1872af79917e78f80a6fac9da1fd7063
Author:      Sebastian Czech
Email:       sebaczech@gmail.com
Date:        2023-08-02T20:43:09Z
Fingerprint: d496e23a1872af79917e78f80a6fac9da1fd7063:provider.tf:generic-api-key:4

10:43PM INF 5 commits scanned.
10:43PM INF scan completed in 65.1ms
10:43PM WRN leaks found: 2

Narzędzie wykryło generic-api-key. Usuńmy zatem plik z danymi poufnymi:

rm provider.tf
git commit -am "Remove AWS API key"

Po ponownym uruchomieniu gitleaks problem wciąż występuje. Dlaczego ? Z powodu historii w git. Rozwiązanie problemu znajdziemy w dokumentacji removing sensitive data from a repository.

Zainstalujmy najpierw narzędzie git-filter-repo:

brew install git-filter-repo

które może być użyte za pomocą komend:

git filter-repo --invert-paths --path provider.tf
git filter-repo --invert-paths --path provider.tf --force

W efekcie gitleaks nie znajduje żadnych nieprawidłowości:

gitleaks detect --source . -v

    ○
    │╲
    │ ○
    ○ ░
    ░    gitleaks

10:54PM INF 3 commits scanned.
10:54PM INF scan completed in 62.4ms
10:54PM INF no leaks found

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.