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.

29. 10. 2024 Matěj Smyčka DevOps

Bez popisku

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 GitleaksTrufleHog. 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:

  1. Nainstalujte Docker
  2. 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:

  1. Nainstalujte Docker
  2. 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.

  1. Zklonujte tento repozitář
  2. Spusťte grep -n -r your_app/ -Ef regex_dir/general.txt

nebo

  1. 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.

Používáte starou verzi internetového prohlížeče. Doporučujeme aktualizovat Váš prohlížeč na nejnovější verzi.

Další info