Under Construction

Prometheus Lab

Portfolio & Resources

Back to Blog
Tool15 min5 views

Trufflehog

Author

Minh Khoa

Author

TruffleHog: Công cụ phát hiện và xử lý "Secret" bị lộ

TruffleHog là một công cụ mã nguồn mở mạnh mẽ được thiết kế để phát hiện và xử lý các "secret" (bí mật) bị lộ trong hệ thống của bạn — như API keys, mật khẩu cơ sở dữ liệu, private keys, token,...

Tổng quan

  • Phạm vi phát hiện (Discovery): TruffleHog có thể tìm kiếm mật khẩu qua nhiều nguồn khác nhau như Git (bao gồm cả lịch sử commit), filesystem, container Docker, S3, CI logs, chat, wiki,...
  • Phân loại (Classification): Công cụ hỗ trợ hơn 800 loại định danh secret — từ AWS, Stripe, Cloudflare đến các key SSL, mật khẩu Postgres... giúp xác định nhanh loại bí mật bị rò rỉ.
  • Xác thực (Validation): TruffleHog còn tự động thử đăng nhập với secret phát hiện được để kiểm chứng tính hợp lệ, từ đó đánh dấu được đâu là mối đe dọa thực sự.
  • Phân tích thêm (Analysis): Với những loại secret phổ biến, công cụ sẽ truy vấn API để thu thập thông tin thêm như ai tạo, được phép truy cập những gì, quyền hạn ra sao… giúp đánh giá rủi ro chính xác hơn.

Quét Repo trong Git

Quét toàn bộ commit để cho biết các warning và error cần chú ý.

Mac & Window:

git clone [https://github.com/trufflesecurity/trufflehog.git](https://github.com/trufflesecurity/trufflehog.git)
cd trufflehog
go install

Quét S3 trong AWS

"S3 chỉ là nơi lưu file, thì có gì phải quét?"Vì dev thường vô tình đẩy các file nhạy cảm lên S3 như:

  • 🔐 API key, token, mật khẩu: .env, config.json, .pem, .p12, .aws/credentials
  • 📄 Tài liệu nội bộ nhạy cảm: client-list.xlsx, payment_config.pdf, user_dump.sql
  • ⚙️ File cấu hình chứa secret: config.js, firebase-config.json, settings.py
  • 🔑 Private key / SSH key / JWT secret: id_rsa, jwt-secret.txt
  • 💾 Dump database hoặc log file: user_data.json, prod.log chứa thông tin user, email

Lệnh cơ bản:

trufflehog s3 --bucket=<bucket-name> --results=verified,unknown

Detail:

trufflehog s3 \
--bucket=my-private-bucket \
--aws-access-key-id=YOUR_ACCESS_KEY \
--aws-secret-access-key=YOUR_SECRET_KEY \
--region=ap-southeast-1 \
--results=verified,unknown \
--json > s3_secrets.json

Kết quả khi TruffleHog quét secrets trong repo

✅ 1. Không lộ key thật (chưa xác minh được, Verified: false)

Thường là các chuỗi nghi ngờ có dạng giống key/API token/password nhưng không chắc chắn. Có các trường như:

"Verified": false,
"VerificationError": "i/o timeout" hoặc null,
"Raw": "[http://user:pass@example.com](http://user:pass@example.com)",
"Redacted": "http://user:********@example.com"

Những cái này chưa chắc là lộ, ví dụ:

  • Sample code
  • File test
  • Default config
  • Hoặc nằm trong node_modules/, README.md, url.test.js...

🟡 → Bạn cần kiểm tra thủ công từng dòng xem đó là dummy/test hay key thật bị đẩy lên.

❌ 2. Lộ key thật (Verified: true)

Khi Verified: true → TruffleHog đã cố xác thực key thành công bằng cách gọi API hoặc kiểm tra pattern thực tế.

Ví dụ kết quả sẽ là:

"Verified": true,
"Raw": "ghp_xxxxxxx",
"Redacted": "ghp_*******"

Trong ExtraData đôi khi sẽ có hướng dẫn revoke:

"rotation_guide": "[https://howtorotate.com/docs/tutorials/github/](https://howtorotate.com/docs/tutorials/github/)"

🟥 → Cực kỳ nguy hiểm! Cần làm ngay:

  • Revoke key / credential
  • Xoá khỏi Git history
  • Regenerate & rotate