
trufflehog v3.97.0
البحث عن بيانات الاعتماد المسربة والتحقق منها وتحليلها
TruffleHog
ابحث عن بيانات الاعتماد المسربة.
🔎 المسح حالياً
🌐 TruffleHog للمؤسسات
هل أنت مهتم بمراقبة مستمرة لـ Git, Jira, Slack, Confluence, Microsoft Teams, Sharepoint (وغيرها) بحثًا عن بيانات الاعتماد؟ لدينا منتج للمؤسسات يمكن أن يساعد! تعرف على المزيد في https://trufflesecurity.com/trufflehog-enterprise.
نحن نستخدم الإيرادات من منتج المؤسسات لتمويل المزيد من المشاريع مفتوحة المصدر الرائعة التي يمكن للمجتمع بأكمله الاستفادة منها.
ما هو TruffleHog 🐽
TruffleHog هي أقوى أداة لاكتشاف وتصنيف والتحقق من صحة وتحليل الأسرار. في هذا السياق، يشير السر إلى بيانات الاعتماد التي تستخدمها آلة لمصادقة نفسها أمام آلة أخرى. يشمل ذلك مفاتيح API وكلمات مرور قواعد البيانات ومفاتيح التشفير الخاصة والمزيد.
الاكتشاف 🔍
يمكن لـ TruffleHog البحث عن الأسرار في العديد من الأماكن بما في ذلك Git والمحادثات والويكي والسجلات ومنصات اختبار API ومخازن الكائنات وأنظمة الملفات والمزيد.
التصنيف 📁
يقوم TruffleHog بتصنيف أكثر من 800 نوع من الأسرار، وربطها بالهوية المحددة التي تنتمي إليها. هل هو سر AWS؟ سر Stripe؟ سر Cloudflare؟ كلمة مرور Postgres؟ مفتاح SSL خاص؟ أحيانًا يكون من الصعب التمييز بمجرد النظر إليه، لذا يقوم TruffleHog بتصنيف كل ما يجده.
التحقق من الصحة ✅
لكل سر يمكن لـ TruffleHog تصنيفه، يمكنه أيضًا تسجيل الدخول لتأكيد ما إذا كان ذلك السر نشطًا أم لا. هذه الخطوة حاسمة لمعرفة ما إذا كان هناك خطر نشط حالي أم لا.
التحليل 🔬
بالنسبة لحوالي 20 نوعًا من أنواع بيانات الاعتماد الأكثر تسربًا، بدلاً من إرسال طلب واحد للتحقق مما إذا كان السر يمكنه تسجيل الدخول، يمكن لـ TruffleHog إرسال العديد من الطلبات لمعرفة كل شيء عن السر. من الذي أنشأه؟ ما الموارد التي يمكنه الوصول إليها؟ ما الأذونات التي يمتلكها على تلك الموارد؟
📢 انضم إلى مجتمعنا
هل لديك أسئلة؟ ملاحظات؟ انضم إلى Slack أو Discord وتحدث معنا.
انضم إلى مجتمع Slack
انضم إلى Discord لمسح الأسرار
📺 عرض توضيحي
```bash
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --org=trufflesecurity
# :floppy_disk: التثبيت
عدة خيارات متاحة لك:
### مستخدمو MacOS```bash
brew install trufflehog
Docker:
تأكد من تشغيل محرك Docker قبل تنفيذ الأوامر التالية:
Unix```bash
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
#### موجه أوامر ويندوز```bash
docker run --rm -it -v "%cd:/=\%:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
Windows PowerShell```bash
docker run --rm -it -v "${PWD}:/pwd" trufflesecurity/trufflehog github --repo https://github.com/trufflesecurity/test_keys
#### M1 and M2 Mac```bash
docker run --platform linux/arm64 --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
الإصدارات الثنائية```bash
Download and unpack from https://github.com/trufflesecurity/trufflehog/releases
### تجميع من المصدر```bash
git clone https://github.com/trufflesecurity/trufflehog.git
cd trufflehog; go install
استخدام سكريبت التثبيت```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
### استخدام نص التثبيت، التحقق من توقيع المجموع الاختباري (يتطلب تثبيت cosign)```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -v -b /usr/local/bin
استخدام سكريبت التثبيت لتثبيت إصدار معين```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
# :closed_lock_with_key: التحقق من القطع الأثرية
يتم تطبيق المجاميع الاختبارية (checksums) على جميع القطع الأثرية، ويتم توقيع ملف المجموع الاختباري الناتج باستخدام cosign.
تحتاج إلى الأداة التالية للتحقق من التوقيع:
- [Cosign](https://docs.sigstore.dev/cosign/system_config/installation/)
خطوات التحقق هي كما يلي:
1. قم بتنزيل ملفات القطع الأثرية التي تريدها، والملفات التالية من صفحة [الإصدارات](https://github.com/trufflesecurity/trufflehog/releases).
- trufflehog\_{version}\_checksums.txt
- trufflehog\_{version}\_checksums.txt.pem
- trufflehog\_{version}\_checksums.txt.sig
2. تحقق من التوقيع: ```shell
cosign verify-blob <path to trufflehog_{version}_checksums.txt> \
--certificate <path to trufflehog_{version}_checksums.txt.pem> \
--signature <path to trufflehog_{version}_checksums.txt.sig> \
--certificate-identity-regexp 'https://github\.com/trufflesecurity/trufflehog/\.github/workflows/.+' \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
- بمجرد تأكيد صحة التوقيع، يمكنك المتابعة للتحقق من تطابق مجاميع SHA256 مع الملف الذي تم تنزيله: ```shell
sha256sum --ignore-missing -c trufflehog_{version}_checksums.txt
استبدل {version} بإصدار الملفات التي تم تنزيلها
بدلاً من ذلك، إذا كنت تستخدم برنامج التثبيت، فمرر الخيار -v للتحقق من التوقيع.
يتطلب ذلك تثبيت ثنائي Cosign قبل تشغيل برنامج التثبيت.
🚀 بداية سريعة
1: امسح مستودعًا بحثًا عن الأسرار المؤكدة فقط
الأمر:```bash trufflehog git https://github.com/trufflesecurity/test_keys --results=verified
المخرجات المتوقعة:```
🐷🔑🐷 TruffleHog. Unearth your secrets. 🐷🔑🐷
Found verified result 🐷🔑
Detector Type: AWS
Decoder Type: PLAIN
Raw result: AKIAYVP4CIPPERUVIFXG
Line: 4
Commit: fbc14303ffbf8fb1c2c1914e8dda7d0121633aca
File: keys
Email: counter <[email protected]>
Repository: https://github.com/trufflesecurity/test_keys
Timestamp: 2022-06-16 10:17:40 -0700 PDT
...
2: مسح منظمة GitHub للأسرار الموثقة فقط```bash
trufflehog github --org=trufflesecurity --results=verified
## 3: مسح منظمة GitHub باستثناء المستودعات المؤرشفة```bash
trufflehog github --org=trufflesecurity --exclude-archived
4: امسح مستودع GitHub للأسرار المؤكدة فقط واحصل على مخرجات JSON
الأمر:```bash trufflehog git https://github.com/trufflesecurity/test_keys --results=verified --json
المخرجات المتوقعة:```
{"SourceMetadata":{"Data":{"Git":{"commit":"fbc14303ffbf8fb1c2c1914e8dda7d0121633aca","file":"keys","email":"counter \[email protected]\u003e","repository":"https://github.com/trufflesecurity/test_keys","timestamp":"2022-06-16 10:17:40 -0700 PDT","line":4}}},"SourceID":0,"SourceType":16,"SourceName":"trufflehog - git","DetectorType":2,"DetectorName":"AWS","DecoderName":"PLAIN","Verified":true,"Raw":"AKIAYVP4CIPPERUVIFXG","Redacted":"AKIAYVP4CIPPERUVIFXG","ExtraData":{"account":"595918472158","arn":"arn:aws:iam::595918472158:user/canarytokens.com@@mirux23ppyky6hx3l6vclmhnj","user_id":"AIDAYVP4CIPPJ5M54LRCY"},"StructuredData":null}
...
5: مسح مستودع GitHub + مشكلاته وطلبات السحب```bash
trufflehog github --repo=https://github.com/trufflesecurity/test_keys --issue-comments --pr-comments
## 6: مسح S3 bucket للحصول على نتائج عالية الثقة (verified + unknown)```bash
trufflehog s3 --bucket=<bucket name> --results=verified,unknown
7: فحص S3 buckets باستخدام IAM Roles```bash
trufflehog s3 --role-arn=
## 8: فحص مستودع Github باستخدام مصادقة SSH في Docker```bash
docker run --rm -v "$HOME/.ssh:/root/.ssh:ro" trufflesecurity/trufflehog:latest git ssh://github.com/trufflesecurity/test_keys
9: امسح الملفات أو الدلائل الفردية```bash
trufflehog filesystem path/to/file1.txt path/to/file2.txt path/to/dir
## 10: مسح مستودع git محلي
استنساخ مستودع git. على سبيل المثال مستودع [مفاتيح الاختبار](https://github.com/trufflesecurity/trufflehog/blob/HEAD/[email protected]:trufflesecurity/test_keys.git).```bash
git clone [email protected]:trufflesecurity/test_keys.git
قم بتشغيل trufflehog من الدليل الأصلي (خارج مستودع git).```bash trufflehog git file://test_keys --results=verified,unknown
للحماية من إعدادات git الخبيثة في الفحص المحلي (انظر CVE-2025-41390)، يقوم TruffleHog باستنساخ مستودعات git المحلية إلى دليل مؤقت قبل الفحص. يتبع هذا [أفضل ممارسات الأمان في Git](https://git-scm.com/docs/git#_security). إذا كنت ترغب في تحديد مسار مخصص لاستنساخ المستودع إليه (بدلاً من tmp)، يمكنك استخدام العلامة `--clone-path`. إذا كنت تفضل تخطي عملية الاستنساخ المحلية وفحص المستودع مباشرةً (افعل هذا فقط للمستودعات الموثوقة)، يمكنك استخدام العلامة `--trust-local-git-config`.
## 11: امسح دلاء GCS للحصول على الأسرار المُتحقق منها فقط```bash
trufflehog gcs --project-id=<project-ID> --cloud-environment --results=verified
12: مسح صورة Docker للأسرار التي تم التحقق منها فقط
استخدم علامة --image عدة مرات لمسح عدة صور.```bash
to scan from a remote registry
trufflehog docker --image trufflesecurity/secrets --results=verified
to scan from the local docker daemon
trufflehog docker --image docker://new_image:tag --results=verified
to scan from an image saved as a tarball
trufflehog docker --image file://path_to_image.tar --results=verified
## 13: المسح في CI
قم بتعيين العلامة `--since-commit` إلى الفرع الافتراضي الذي يدمج فيه المستخدمون (مثل: "main"). قم بتعيين العلامة `--branch` إلى اسم فرع طلب السحب الخاص بك (مثل: "feature-1"). اعتمادًا على منصة CI/CD التي تستخدمها، يمكن جلب هذه القيمة ديناميكيًا (مثل: [CIRCLE_BRANCH في Circle CI](https://circleci.com/docs/variables/) و [TRAVIS_PULL_REQUEST_BRANCH في Travis CI](https://docs.travis-ci.com/user/environment-variables/)). إذا تم استنساخ المستودع وتم سحب الفرع المستهدف بالفعل أثناء سير عمل CI/CD، فإن `--branch HEAD` يجب أن يكون كافيًا. ستُرجع العلامة `--fail` رمز خطأ 183 إذا تم العثور على بيانات اعتماد صالحة.```bash
trufflehog git file://. --since-commit main --branch feature-1 --results=verified,unknown --fail
١٤: مسح مساحة عمل Postman
استخدم العلامات --workspace-id, --collection-id, --environment عدة مرات لمسح أهداف متعددة.```bash
trufflehog postman --token= --workspace-id=
## 15: مسح خادم Jenkins```bash
trufflehog jenkins --url https://jenkins.example.com --username admin --password admin
16: مسح خادم Elasticsearch
مسح مجموعة محلية
هناك طريقتان للمصادقة على مجموعة محلية باستخدام TruffleHog: (1) اسم المستخدم وكلمة المرور، (2) رمز الخدمة.
الاتصال بمجموعة محلية باستخدام اسم المستخدم وكلمة المرور```bash
trufflehog elasticsearch --nodes 192.168.14.3 192.168.14.4 --username truffle --password hog
#### الاتصال بمجموعة محلية باستخدام رمز خدمة```bash
trufflehog elasticsearch --nodes 192.168.14.3 192.168.14.4 --service-token ‘AAEWVaWM...Rva2VuaSDZ’
مسح مجموعة Elastic Cloud
لمسح مجموعة على Elastic Cloud، ستحتاج إلى Cloud ID و API key.```bash
trufflehog elasticsearch
--cloud-id 'search-prod:dXMtY2Vx...YjM1ODNlOWFiZGRlNjI0NA=='
--api-key 'MlVtVjBZ...ZSYlduYnF1djh3NG5FQQ=='
## 17. امسح مستودع GitHub بحثًا عن Cross Fork Object References والالتزامات المحذوفة
سيعمل الأمر التالي على تعداد الالتزامات المحذوفة والمخفية في مستودع GitHub ثم يقوم بمسحها بحثًا عن الأسرار. هذه ميزة في إصدار ألفا.```bash
trufflehog github-experimental --repo https://github.com/<USER>/<REPO>.git --object-discovery
بالإضافة إلى إخراج TruffleHog العادي، يقوم العلم --object-discovery بإنشاء ملفين في دليل جديد $HOME/.trufflehog: valid_hidden.txt وinvalid.txt. تُستخدم هذه لتتبع الحالة أثناء تعداد الالتزامات، وكذلك لتزويد المستخدمين بقائمة كاملة بجميع الالتزامات المخفية والمحذوفة (valid_hidden.txt). إذا كنت ترغب في إزالة هذه الملفات تلقائيًا بعد الفحص، فيرجى إضافة العلم --delete-cached-data.
ملاحظة: يستغرق تعداد جميع الالتزامات الصالحة في مستودع باستخدام هذه الطريقة ما بين 20 دقيقة وعدة ساعات، اعتمادًا على حجم مستودعك. أضفنا شريط تقدم لإطلاعك على المدة التي سيستغرقها التعداد. عملية فحص الأسرار الفعلية سريعة جدًا.
لمزيد من المعلومات حول مراجع الكائنات عبر التشعبات، يرجى قراءة مقالنا على المدونة.
18. فحص Hugging Face
فحص نموذج، مجموعة بيانات، مساحة أو حاوية Hugging Face```bash
trufflehog huggingface
--model <model_id>
--dataset <dataset_id>
--space <space_id>
--bucket <bucket_id>
### امسح جميع Models و Datasets و Spaces و Buckets التابعة لمنظمة أو مستخدم Hugging Face```bash
trufflehog huggingface --org <orgname> --user <username>
(اختياريًا) عند مسح مؤسسة أو مستخدم، يمكنك تخطي فئة كاملة من الموارد باستخدام --skip-all-models, --skip-all-datasets, --skip-all-spaces, --skip-all-buckets أو مورد معين باستخدام --ignore-models <model_id>, --ignore-datasets <dataset_id>, --ignore-spaces <space_id>, --ignore-buckets <bucket_id>.
مسح التعليقات في المناقشات وطلبات السحب (PR)```bash
trufflehog huggingface --model <model_id> --include-discussions --include-prs
## 19. مسح إدخال stdin```bash
aws s3 cp s3://example/gzipped/data.gz - | gunzip -c | trufflehog stdin
❓ الأسئلة الشائعة
- كل ما أراه هو
🐷🔑🐷 TruffleHog. Unearth your secrets. 🐷🔑🐷ويخرج البرنامج، ما الأمر؟- هذا يعني أنه لم يتم اكتشاف أي أسرار
- لماذا تستغرق الفحص وقتًا طويلاً عند فحص مؤسسة GitHub؟
- فحوصات GitHub غير المصادق عليها لها حدود للمعدل. لتحسين حدود المعدل، قم بتضمين العلم
--tokenمع رمز وصول شخصي
- فحوصات GitHub غير المصادق عليها لها حدود للمعدل. لتحسين حدود المعدل، قم بتضمين العلم
- تقول إنه تم التحقق من مفتاح خاص، ماذا يعني ذلك؟
- النتيجة المؤكدة تعني أن TruffleHog أكد أن بيانات الاعتماد صالحة عن طريق اختبارها ضد واجهة برمجة التطبيقات الخاصة بالخدمة. بالنسبة للمفاتيح الخاصة، أكدنا أنه يمكن استخدام المفتاح مباشرة لمصادقة SSH أو SSL. اطلع على منشور مدونتنا Driftwood لمعرفة المزيد منشور المدونة
- هل هناك طريقة سهلة لتجاهل أسرار معينة؟
- إذا كان المصدر الممسوح يدعم أرقام الأسطر، فيمكنك إضافة تعليق
trufflehog:ignoreعلى السطر الذي يحتوي على السر لتجاهل هذا السر.
- إذا كان المصدر الممسوح يدعم أرقام الأسطر، فيمكنك إضافة تعليق
📰 ما الجديد في الإصدار 3؟
TruffleHog v3 هي إعادة كتابة كاملة بلغة Go مع العديد من الميزات الجديدة والقوية.
- لقد أضفنا أكثر من 700 كاشف لبيانات الاعتماد تدعم التحقق النشط ضد واجهات برمجة التطبيقات الخاصة بها.
- لقد أضفنا أيضًا دعمًا أصليًا لمسح GitHub و GitLab و Docker وأنظمة الملفات و S3 و GCS و Circle CI و Travis CI.
- تحقق فوريًا من المفاتيح الخاصة مقابل ملايين مستخدمي GitHub ومليارات شهادات TLS باستخدام تقنيتنا Driftwood.
- مسح الملفات الثنائية والمستندات وتنسيقات الملفات الأخرى
- متاح كإجراء GitHub وخطاف pre-commit
ما هو التحقق من بيانات الاعتماد؟
لكل بيانات اعتماد محتملة يتم اكتشافها، قمنا بتنفيذ التحقق البرمجي بعناية ضد واجهة برمجة التطبيقات التي نعتقد أنها تنتمي إليها. التحقق يزيل النتائج الإيجابية الكاذبة ويوفر ثلاث حالات للنتيجة:
- تم التحقق: تم تأكيد صلاحية بيانات الاعتماد ونشاطها عن طريق اختبار واجهة برمجة التطبيقات
- غير مؤكد: تم اكتشاف بيانات الاعتماد ولكن لم يتم تأكيد صلاحيتها (قد تكون غير صالحة أو منتهية الصلاحية أو تم تعطيل التحقق)
- غير معروف: تمت محاولة التحقق ولكن فشلت بسبب أخطاء، مثل فشل الشبكة أو واجهة برمجة التطبيقات
على سبيل المثال، يقوم كاشف بيانات اعتماد AWS بإجراء استدعاء لواجهة برمجة التطبيقات GetCallerIdentity ضد واجهة برمجة تطبيقات AWS للتحقق مما إذا كانت بيانات اعتماد AWS نشطة.
📝 الاستخدام
لدى TruffleHog أمر فرعي لكل مصدر بيانات قد ترغب في مسحه:
- git
- github
- gitlab
- huggingface
- docker
- s3
- filesystem (الملفات والدلائل)
- syslog
- circleci
- travisci
- gcs (تخزين Google السحابي)
- postman
- jenkins
- elasticsearch
- stdin
- multi-scan
يمكن أن يحتوي كل أمر فرعي على خيارات يمكنك رؤيتها باستخدام العلم --help المقدم للأمر الفرعي:```
$ trufflehog git --help
usage: TruffleHog [] [ ...]
TruffleHog is a tool for finding credentials.
Flags: -h, --[no-]help Show context-sensitive help (also try --help-long and --help-man). --log-level=0 Logging verbosity on a scale of 0 (info) to 5 (trace). Can be disabled with "-1". --[no-]profile Enables profiling and sets a pprof and fgprof server on :18066. -j, --[no-]json Output in JSON format. --[no-]json-legacy Use the pre-v3.0 JSON format. Only works with git, gitlab, and github sources. --[no-]github-actions Output in GitHub Actions format. --concurrency=12 Number of concurrent workers. --[no-]no-verification Don't verify the results. --results=RESULTS Specifies which type(s) of results to output: verified (confirmed valid by API), unknown (verification failed due to error), unverified (detected but not verified), filtered_unverified (unverified but would have been filtered out). Defaults to verified,unverified,unknown. --[no-]no-color Disable colorized output --[no-]allow-verification-overlap Allow verification of similar credentials across detectors --[no-]filter-unverified Only output first unverified result per chunk per detector if there are more than one results. --filter-entropy=FILTER-ENTROPY Filter unverified results with Shannon entropy. Start with 3.0. --config=CONFIG Path to configuration file. --[no-]print-avg-detector-time Print the average time spent on each detector. --[no-]no-update Don't check for updates. --[no-]fail Exit with code 183 if results are found. --[no-]fail-on-scan-errors Exit with non-zero error code if an error occurs during the scan. --verifier=VERIFIER ... Set custom verification endpoints. --[no-]custom-verifiers-only Only use custom verification endpoints. --detector-timeout=DETECTOR-TIMEOUT Maximum time to spend scanning chunks per detector (e.g., 30s). --archive-max-size=ARCHIVE-MAX-SIZE Maximum size of archive to scan. (Byte units eg. 512B, 2KB, 4MB) --archive-max-depth=ARCHIVE-MAX-DEPTH Maximum depth of archive to scan. --archive-timeout=ARCHIVE-TIMEOUT Maximum time to spend extracting an archive. --include-detectors="all" Comma separated list of detector types to include. Protobuf name or IDs may be used, as well as ranges. --exclude-detectors=EXCLUDE-DETECTORS Comma separated list of detector types to exclude. Protobuf name or IDs may be used, as well as ranges. IDs defined here take precedence over the include list. --[no-]no-verification-cache Disable verification caching --[no-]force-skip-binaries Force skipping binaries. --[no-]force-skip-archives Force skipping archives. --[no-]skip-additional-refs Skip additional references. --user-agent-suffix=USER-AGENT-SUFFIX Suffix to add to User-Agent. --[no-]version Show application version.
Commands: help [...] Show help.
git []
Find credentials in git repositories.
github [] Find credentials in GitHub repositories.
github-experimental --repo=REPO [] Run an experimental GitHub scan. Must specify at least one experimental sub-module to run: object-discovery.
gitlab --token=TOKEN [] Find credentials in GitLab repositories.
filesystem [] [...] Find credentials in a filesystem.
s3 [] Find credentials in S3 buckets.
gcs [] Find credentials in GCS buckets.
syslog --format=FORMAT [] Scan syslog
circleci --token=TOKEN Scan CircleCI
docker [] Scan Docker Image
travisci --token=TOKEN Scan TravisCI
postman [] Scan Postman
elasticsearch [] Scan Elasticsearch
jenkins --url=URL [] Scan Jenkins
huggingface [] Find credentials in HuggingFace datasets, models and spaces.
stdin Find credentials from stdin.
multi-scan Find credentials in multiple sources defined in configuration.
json-enumerator [...] Find credentials from a JSON enumerator input.
analyze Analyze API keys for fine-grained permissions information.
على سبيل المثال، لمسح مستودع `git`، ابدأ بـ```
trufflehog git https://github.com/trufflesecurity/trufflehog.git
الإعدادات
يدعم TruffleHog تعريف كاشفات regex مخصصة ومصادر متعددة في ملف إعدادات يتم توفيره عبر العلم --config. يمكن استخدام كاشفات regex مع أي أمر فرعي، بينما المصادر المعرفة في الإعدادات مخصصة فقط للأمر الفرعي multi-scan.
يمكن العثور على تنسيق الإعدادات للمصادر في صفحة وثائق تكوين المصادر الخاصة بـ Truffle Security.
مثال على تكوين مصدر GitHub و مرجع الخيارات:```yaml sources:
- connection:
'@type': type.googleapis.com/sources.GitHub
repositories:
- https://github.com/trufflesecurity/test_keys.git unauthenticated: {} name: example config scan type: SOURCE_TYPE_GITHUB verify: true
يمكنك تعريف عدة اتصالات تحت مفتاح `sources` (انظر أعلاه)، وسيقوم TruffleHog بمسح جميع المصادر بالتزامن.
## S3
يدعم مصدر S3 افتراض أدوار IAM للمسح بالإضافة إلى مستخدمي IAM. وهذا يسهل على المستخدمين مسح حسابات AWS متعددة دون الحاجة إلى الاعتماد على بيانات اعتماد مشفرة ثابتة لكل حساب.
الهوية IAM التي يستخدمها TruffleHog في البداية ستحتاج إلى صلاحيات `AssumeRole` كمدير أساسي في [سياسة الثقة](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/) لكل دور IAM يتم افتراضه.
لمسح حاوية محددة باستخدام بيانات اعتماد محلية أو بيانات تعريف المثيل إذا كنت على مثيل EC2:```bash
trufflehog s3 --bucket=<bucket-name>
لمسح دلو معين باستخدام دور مفترض:```bash trufflehog s3 --bucket= --role-arn=
يمكن تمرير أدوار متعددة كوسائط منفصلة. سيحاول الأمر التالي مسح كل bucket يمتلك كل دور أذونات لسرده في S3 API:```bash
trufflehog s3 --role-arn=<iam-role-arn-1> --role-arn=<iam-role-arn-2>
رموز الخروج:
- 0: لم يتم العثور على أخطاء ولا نتائج.
- 1: تم العثور على خطأ. قد لا تكون المصادر قد أكملت الفحص.
- 183: لم يتم العثور على أخطاء، ولكن تم العثور على نتائج. سيتم إرجاعه فقط إذا تم استخدام العلم
--fail.
:octocat: إجراء TruffleHog على GitHub
الاستخدام العام```
on: push: branches: - main pull_request:
jobs: test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Secret Scanning uses: trufflesecurity/trufflehog@main with: extra_args: --results=verified,unknown
في مثال التكوين أعلاه، نقوم بمسح الأسرار الحية في جميع طلبات السحب (PRs) والدفعات (Pushes) إلى `main`. يتم مسح تغييرات الكود فقط في المراجع المذكورة. إذا كنت ترغب في مسح فرع كامل، يُرجى الاطلاع على قسم "الاستخدام المتقدم" أدناه.
### الاستنساخ الضحل
إذا كنت تقوم بدمج TruffleHog في سير عمل مستقل ولا تقوم بتشغيل أي أدوات CI/CD أخرى إلى جانب TruffleHog، فإننا نوصي باستخدام [الاستنساخ الضحل](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthltdepthgt) لتسريع سير العمل. إليك مثال على كيفية القيام بذلك:```
...
- shell: bash
run: |
if [ "${{ github.event_name }}" == "push" ]; then
echo "depth=$(($(jq length <<< '${{ toJson(github.event.commits) }}') + 2))" >> $GITHUB_ENV
echo "branch=${{ github.ref_name }}" >> $GITHUB_ENV
fi
if [ "${{ github.event_name }}" == "pull_request" ]; then
echo "depth=$((${{ github.event.pull_request.commits }}+2))" >> $GITHUB_ENV
echo "branch=${{ github.event.pull_request.head.ref }}" >> $GITHUB_ENV
fi
- uses: actions/checkout@v3
with:
ref: ${{env.branch}}
fetch-depth: ${{env.depth}}
- uses: trufflesecurity/trufflehog@main
with:
extra_args: --results=verified,unknown
...
اعتمادًا على نوع الحدث (push أو PR)، نقوم بحساب عدد الالتزامات الموجودة. ثم نضيف 2، لنتمكن من الرجوع إلى التزام أساسي قبل تغييرات الكود الخاصة بنا. نمرر هذه القيمة الصحيحة إلى علامة fetch-depth في إجراء checkout بالإضافة إلى الفرع ذي الصلة. الآن يجب أن تكون عملية checkout أقصر بكثير.
الكشف عن الكناري
يكتشف TruffleHog بشكل ثابت https://canarytokens.org/.

الاستخدام المتقدم```yaml
- name: TruffleHog
uses: trufflesecurity/trufflehog@main
with:
Repository path
path:Start scanning from here (usually main branch).
base:Scan commits until here (usually dev branch).
head: # optionalExtra args to be passed to the trufflehog cli.
extra_args: --log-level=2 --results=verified,unknownScan with a specific TruffleHog version (default: latest).
version:Docker image to pull. Override to use a registry mirror (default: ghcr.io/trufflesecurity/trufflehog).
image:
إذا كنت ترغب في تحديد مراجع `base` و `head` محددة، يمكنك استخدام الوسيط `base` (علامة `--since-commit` في سطر أوامر TruffleHog) والوسيط `head` (علامة `--branch` في سطر أوامر TruffleHog). نوصي فقط باستخدام هذه الوسائط لحالات استخدام محددة جدًا، حيث لا يعمل السلوك الافتراضي.
#### الاستخدام المتقدم: مسح الفرع بالكامل```
- name: scan-push
uses: trufflesecurity/trufflehog@main
with:
base: ""
head: ${{ github.ref_name }}
extra_args: --results=verified,unknown
TruffleHog GitLab CI
مثال الاستخدام```yaml
stages:
- security
security-secrets: stage: security allow_failure: false image: alpine:latest variables: SCAN_PATH: "." # Set the relative path in the repo to scan before_script: - apk add --no-cache git curl jq - curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin script: - trufflehog filesystem "$SCAN_PATH" --results=verified,unknown --fail --json | jq rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
في مثال المسار أعلاه، نقوم بفحص الأسرار الحية في جميع أدلة وملفات المستودع. هذه المهمة تعمل فقط عندما يكون مصدر المسار حدث طلب دمج، مما يعني أنه يتم تشغيلها عند إنشاء طلب دمج جديد.
## Pre-commit Hook
يمكن استخدام TruffleHog في خطاف ما قبل الالتزام لمنع تسرب بيانات الاعتماد قبل أن تغادر جهازك على الإطلاق.
راجع [وثائق خطاف ما قبل الالتزام](https://github.com/trufflesecurity/trufflehog/blob/HEAD/PreCommit.md) لمزيد من المعلومات.
## كاشف التعبير العادي المخصص (alpha)
يدعم TruffleHog كشف والتحقق من التعبيرات العادية المخصصة. للكشف، يلزم وجود **تعبير عادي** واحد على الأقل و**كلمة مفتاحية**. **الكلمة المفتاحية** هي معرف سلسلة نصية ثابتة يظهر في التعبير العادي أو حوله ليتم كشفه. للسماح بأقصى قدر من المرونة للتحقق، يتم استخدام webhook يحتوي على نتائج التطابق للتعبير العادي.
سيرسل TruffleHog طلب POST بصيغة JSON يحتوي على نتائج التطابق للتعبير العادي إلى نقطة نهاية webhook مهيأة. إذا استجابت نقطة النهاية برمز حالة استجابة `200 OK`، فإن السر يعتبر موثوقًا. إذا فشل التحقق بسبب أخطاء الشبكة/API، يتم وضع علامة على النتيجة بأنها غير معروفة.
تدعم الكاشفات المخصصة عددًا من آليات التصفية المختلفة: الإنتروبيا، التعبير العادي المستهدف للمطابقة بأكملها، التعبير العادي المستهدف للسر الملتقط، وقوائم الكلمات المستبعدة التي يتم التحقق منها مقابل السر (المجموعة الملتقطة إن وجدت، المطابقة بأكملها إذا لم تكن مجموعة الالتقاط موجودة). لاحظ أنه إذا كان الكاشف المخصص الخاص بك يحتوي على عدة `regex` (في هذا المثال `hogID` و `hogToken`)، فسيتم تطبيق المرشحات على كل تعبير عادي. [هنا](https://github.com/trufflesecurity/trufflehog/blob/HEAD/examples/generic_with_filters.yml) مثال على كاشف مخصص يستخدم هذه المرشحات.
**ملاحظة:** هذه الميزة في مرحلة ألفا وقابلة للتغيير.
### مثال على كاشف التعبير العادي
[هنا](https://github.com/trufflesecurity/trufflehog/blob/HEAD/pkg/custom_detectors/CUSTOM_DETECTORS.md) كيفية إعداد كاشف تعبير عادي مخصص مع خادم تحقق.
## كشف JWT العام
يدعم TruffleHog كشف والتحقق من مجموعة فرعية من JWTs العامة التي يجدها. على وجه التحديد، إذا كان JWT يستخدم تشفير المفتاح العام بدلاً من HMAC ويمكن الحصول على المفتاح العام، فيمكن لـ TruffleHog تحديد ما إذا كان JWT حيًا أم لا.
## :mag: تحليل
يدعم TruffleHog تشغيل تحليل أعمق لبيانات الاعتماد لعرض صلاحياتها والموارد التي يمكنها الوصول إليها.```bash
trufflehog analyze
❤️ المساهمون
هذا المشروع موجود بفضل جميع الأشخاص الذين يساهمون. [ساهم].
💻 المساهمة
المساهمات مرحب بها جداً! يرجى الاطلاع على إرشادات المساهمة أولاً.
لم نعد نقبل المساهمات في TruffleHog v2، لكن هذا الكود متاح في فرع v2.
إضافة كاشفات أسرار جديدة
لقد نشرنا بعض الوثائق والأدوات للبدء في إضافة كاشفات أسرار جديدة. دعنا نحسن الكشف معاً!
الاستخدام كمكتبة
حالياً، trufflehog في مرحلة تطوير مكثف ولا يمكن تقديم أي ضمانات بشأن استقرار واجهات برمجة التطبيقات العامة في هذا الوقت.
تغيير الترخيص
منذ v3.0، تم إصدار TruffleHog بموجب ترخيص AGPL 3، المضمن في LICENSE. لا يستخدم TruffleHog v3.0 أيًا من قاعدة الكود السابقة، ولكن تم أخذ الحرص للحفاظ على التوافق العكسي في واجهة سطر الأوامر. العمل السابق لهذا الإصدار لا يزال متاحًا بموجب ترخيص GPL 2.0 في تاريخ هذا المستودع والإصدارات والعلامات السابقة للحزمة. مطلوب اتفاقية ترخيص مساهم (CLA) مكتملة لقبول المساهمات مستقبلاً.