Jak začíst s detekcí secrets
Secrets nejsou tajné, pokud je všichni znají - zejména hackeři. Náhodné uložení hesla nebo přístupového klíče do vzdáleného repozitáře se může stát i těm nejzkušenějším vývojářům. V tomto návodu se zaměříme na to, jak tento problém jednoduše detekovat pomocí Gitleaks a Trufflehog.

Detekce secrets může být automatizována pomocí CI/CD pipelines, GitHub akcí či podobnými nástroji. Další informace o tomto tématu najdete v našem doporučení o automatizaci detekce secrets.
Tento návod se zabývá základy pro detekci tajemství s využitím Gitleaks a TrufleHog. Oba nástroje jsou open-source, tedy dostupné zdarma.
Gitleaks
Gitleaks je snadno použitelný nástroj pro detekci a prevenci v kódu vložených secrets, jako jsou hesla, API klíče a tokeny v repozitářích git.
Ve výchozím nastavení Gitleaks kontroluje všechny revize v úložišti, což je velmi užitečné.
Jak na to:
- Nainstalujte Docker
- V aktuálním adresáři spusťte následující kód, který získá Gitleaks ze vzdáleného registru.
docker run -v $(pwd):/tmp/out \ zricethezav/gitleaks:latest detect \ --source="/tmp/out" -v --no-color > result.txt
Výsledek bude uložen v souboru result.txt.
TruffleHog
TruffleHog je, podobně jako Gitleaks, nástroj pro vyhledávání secrets ve zdrojovém kódu založený na entropii a regulárních výrazech.
Ve výchozím nastavení kontroluje pouze aktuální větev. Jednou z jeho funkcí je -only-verified, která vrací pouze skutečně platné (true positive) nálezy. Bude však kontrolovat secrets proti službě, která udržuje databázi uniklých údajů z veřejných služeb. V kontextu univerzitních služeb to nemusí být tak užitečné, protože máme mnoho vlastních domén, které nejsou definovány v TruffleHog. Nicméně je užitečná pro kontrolu secrets ze služeb, jako je AWS, Azure a další.
Jak na to:
- Nainstalujte Docker
- V aktuálním adresáři spusťte následující příkaz (sed pouze escapuje ANSI barvy):
docker run --rm -it -v "$(pwd):/out" \ trufflesecurity/trufflehog:latest git file:///out | sed -r 's/\x1b_[^\x1b]*\x1b[\]//g; s/\x1B\[[^m]*m//g' > result.txt
Lze se setkat s chybou fatal: detected dubious ownership ... Jde však pouze o varování, které lze ignorovat, jak je vysvětleno zde.
Vyzkoušejte si to sami!
Předpokládejme, že potřebujete větší variabilitu a nevadí vám více ručních kontrol. V takovém případě můžete použít grep, nebo zkusit RegFinder. Ten je podobný nástroji grep, ale je pro odhalování secrets je vhodnější, (mj. je rychlejší ve větších repozitářích a poskytuje přehlednější výstup). Nejde totiž ani tak o nástroj, ale o regulární výrazy které použijete.
- Zklonujte tento repozitář
- Spusťte grep -n -r your_app/ -Ef regex_dir/general.txt
nebo
- Run ./regfinder.elf -d your_app/ -f regex_dir/general.txt
Rozšíření existujících vzorů regulárních výrazů je jednoduché. RegFinder ale není použitelný pro automatizované pipeline. Hodí se však, pokud potřebujete najít nestandardní secrets nebo při jiných úkonech, jako např. bezpečnostní review, kde se očekává více ruční práce.
Kontakt
Chcete-li se dozvědět více nebo potřebujete pomoci s nasazením, neváhejte nás kontaktovat na csirt@muni.cz.