
مسح. تنقيح. الالتزام نظيف.
ابحث عن السر. أصلحه. ادفع نظيفًا.
أجهزة كشف الأسرار جيدة في إطلاق الإنذار، لكنها لا تساعد كثيرًا في إخماده. تقدم لك قائمة بالأسرار المسربة وتترك التنظيف لك. Credactor يسدّ هذه الفجوة: يجد السر المكتوب بشكل ثابت في الكود ويستبدله في مكانه، ليتحول التسريب من كشف إلى إصلاح بأمر واحد.
الحفاظ على بيانات الاعتماد خارج الكود المصدري هو ممارسة أمنية أساسية، وليست اختيارية. Credactor يجعل هذه الأساسية رخيصة الثمن: على جهازك قبل الـ commit، أو في CI قبل الـ merge. استخدمه لوحده أو جنبًا إلى جنب مع أدوات الكشف التي تثق بها.
# Credactor finds this:
db_password = "h8Tq2vKp9mRz4Wd"
# By default it rewrites the secret as a sentinel that fails loudly at runtime:
db_password = "REDACTED_BY_CREDACTOR"
# With --replace-with env, it writes a reference that reads from the environment:
db_password = os.environ["DB_PASSWORD"]
عملية الاستبدال تعيد كتابة الملفات في شجرة العمل الخاصة بك. إذا تم بالفعل commit لسر ما، فقم بتدوير المفتاح وتنظيف التاريخ أيضًا (مثلاً باستخدام
git filter-repo). إعادة كتابة ملف ليست بديلاً عن إلغاء صلاحية بيانات اعتماد مسربة.
REDACTED_BY_CREDACTOR تفشل في وقت التشغيل افتراضيًا، أو مرجع متغير بيئي مدرك للغة (Python, JavaScript/TypeScript, Go, Java/Kotlin, Ruby, PHP, و shell) مثل os.environ["KEY"]. الاستبدال هو كود صالح. إذا كان الملف لا يتضمن بالفعل الاستيراد المناسب (مثل import os)، قم بإضافته..bak، حواجز ضد الروابط الرمزية وأذونات الملفات، وإخفاء كامل للسر في كل مخرج. إذا تعذرت كتابة نسخة احتياطية آمنة، يتجاوز Credactor الملف بدلاً من إعادة كتابته بشكل أعمى، ويترك التعطل في منتصف الكتابة الملف الأصلي سليمًا.--ci مع أكواد خروج دقيقة، خطاف pre-commit (إصدار تجريبي)، واستيراد تقارير Gitleaks أو TruffleHog (إصدار تجريبي، مع المزيد قيد التطوير). اكتشف مع Gitleaks أو TruffleHog، وعالج مع Credactor.pip install credactor
يتطلب بايثون 3.11+. لا تبعيات أخرى. يعمل على Linux و macOS و Windows (مُختبر CI على Linux و Windows).
من المصدر:
git clone https://github.com/rxb06/credactor.git
cd credactor
pip install -e .
ثم يعمل credactor من أي دليل.
قم بتشغيل
--dry-runأولاً وراجع النتائج قبل الاستبدال. النتائج الإيجابية الكاذبة ممكنة، وتحت--fix-allسيتم إعادة كتابة نتيجة إيجابية كاذبة. قم بإخفاء القيم الآمنة المعروفة باستخدام# credactor:ignoreأو إدخال.credactorignore.
credactor --dry-run . # مسح، لا تغيير
credactor . # مسح، ثم استبدال تفاعلي (نعم/لا لكل نتيجة)
credactor --fix-all . # استبدال كل شيء بعد تأكيد واحد
credactor --fix-all --yes . # استبدال غير تفاعلي (CI / نصوص)
credactor --ci . # بوابة قراءة فقط: خروج 1 عند وجود نتائج
credactor --replace-with env . # استبدال بمراجع متغيرات بيئية بدلاً من الإشارة
تكامل الخطاف في مرحلة تجريبية. قم بتشغيل
credactor --dry-run .يدويًا قبل الاعتماد عليه وحده.
# .pre-commit-config.yaml
repos:
- repo: https://github.com/rxb06/credactor
rev: v2.5.0 # قم بتثبيت أحدث إصدار
hooks:
- id: credactor
يكتشف Credactor أنواع بيانات الاعتماد التي تتسرب في أغلب الأحيان، ويخصص لكل منها مستوى خطورة لتمكين التصنيف في لمحة.
يتم الإبلاغ عن رموز الموفّر المحددة (البادئات أعلاه) بغض النظر عن الإنتروبيا. يجب أن تتجاوز أجهزة الكشف الاستدلالية (JWTs, سلاسل الاتصال, hex, Base64) حدًا أدنى للإنتروبيا. يتم الإبلاغ عن hex أو Base64 المستقل فقط عندما يكون مقتبسًا. يتم اكتشاف القيمة عالية الإنتروبيا غير المقتبسة فقط على متغير باسم بيانات اعتماد، مما يحمي SHAs و checksums الخاصة بـ git. لمزيد من قواعد الكشف والخطورة، راجع الدليل.
مجموعة قواعد Credactor الأصلية أضيق من مجموعة أداة كشف مخصصة، وبعض تنسيقات المزوّدين (مثل SendGrid و Twilio و webhooks Slack) لا يتم اكتشافها. نقاط قوته هي المعالجة: قم بإقرانه مع Gitleaks أو TruffleHog لأوسع نطاق كشف، أو قم بتشغيله بمفرده.
Credactor يقف بمفرده، ويصبح أقوى بالرفقة. هل تشغل بالفعل Gitleaks أو TruffleHog؟ مرر تقريرهم إلى Credactor وسيستبدل المجموعة المدمجة، مع إزالة التكرارات مقابل نتائجه الخاصة (في حالة التداخل، يفوز مستوى الخطورة الأعلى). تمريرة معالجة واحدة تغطي فحصك وفحصهم:
gitleaks dir . -f json -r gitleaks.json
credactor --from-gitleaks gitleaks.json --fix-all --yes .
--from-gitleaks / --from-trufflehog (أو جدول [ingest] في .credactor.toml) يتطلبان هدف دليل. راجع دليل تكامل CI.
--replacement؛ --scan-history لمسح تاريخ commits--secure-delete (الكتابة فوق وإزالة .bak؛ يرفع الحاجز ضد الاسترداد العرضي، وليس ضمانًا جنائيًا) أو --secure-backup-dir لتخزين النسخ الاحتياطية خارج المستودع# credactor:ignore و .credactorignore (أنماط glob, file:line, قيم حرفية).credactor.toml.txt)؛ --scan-json لتضمين JSON؛ --fail-on-error للفشل عند عدم إمكانية قراءة ملف
.py.js.ts.jsx.tsx.sh.bash.env.cfg.ini.toml.yaml.yml.rb.go.java
بالإضافة إلى متغيرات .env.* / .env-* (مثل .env.local, .env.production) وملفات SSH / المفاتيح الخاصة (id_rsa, id_dsa, id_ecdsa, id_ed25519)، وكلها تُطابق بواسطة اسم الملف بدلاً من الامتداد. يتم استبعاد JSON افتراضيًا لأن استجابات API تنتج معدل إيجابية كاذبة مرتفع؛ أضف --scan-json لتضمينه. يتم فحص الملف المذكور مباشرة في سطر الأوامر حتى لو لم يكن امتداده في هذه القائمة.
| الكود | المعنى |
|---|---|
0 | لا نتائج، أو تم حل الكل |
يجب أن تكون أداة الأمان آمنة للتثبيت، وليس فقط آمنة للتشغيل. خط التجميع والإصدار الخاص بـ Credactor مُقوّى من البداية إلى النهاية؛ التفاصيل الكاملة في وثيقة الأمان.
pip install credactor الافتراضية لا تجلب أي حزم طرف ثالث (فقط الإضافي الاختياري [encoding])، لذا لا يوجد شيء لفحصه وقت التثبيت.--require-hashes، بما في ذلك نظام البناء (python -m build --no-isolation ضد setuptools مثبتة)، لذا فإن تبعية معدلة تفشل البناء.scripts/audit_wheel.py بمقارنة wheel و sdist مع المصدر الملتزم بايت ببايت (sha256 مقابل git HEAD)؛ أي ملف مضاف أو مفقود أو معدل يفشل البوابة، لذا لا يمكن لخطوة بناء حقن كود دون أن يُلاحظ.contents: read افتراضيًا، id-token: write فقط لمهمة النشر.Apache 2.0. راجع LICENSE.
| الفئة | الأمثلة | مستوى الخطورة |
|---|
| مفاتيح موفري السحابة | AWS (AKIA…), GCP (AIza…), Stripe (sk_live_…), Slack (xoxb-…) | حرج |
| رموز المنصات | GitHub (ghp_, github_pat_), GitLab (glpat-), npm (npm_), PyPI (pypi-) | حرج |
| المفاتيح الخاصة | كتل PEM (-----BEGIN … PRIVATE KEY-----) | حرج |
| JWTs | رموز eyJ… ثلاثية الأجزاء | مرتفع |
| سلاسل الاتصال | عناوين URL مع بيانات اعتماد مضمنة (scheme://user:pass@host) | مرتفع |
| متغيرات بيانات الاعتماد | password = "…", api_key = "…", secret_key = "…" | مرتفع/متوسط/منخفض |
| سمات XML | <add key="Password" value="…" /> | مرتفع/متوسط/منخفض |
| سلاسل عالية الإنتروبيا | hex مقتبس (32–64 حرفًا) / Base64 (60+ حرفًا) | متوسط/منخفض |
.php.cs.kt.tf.hcl.conf.config.properties.xml.pem.key.crt.txt1 |
| نتائج غير محلولة |
2 | خطأ (مثلاً: مسار خاطئ، --replacement خطير، --ci --fix-all، أو --fail-on-error مع ملف غير قابل للقراءة) |
| المستند | الوصف |
|---|
| دليل الإعداد | التثبيت، التكوين، تكامل CI/CD |
| الدليل | مرجع كامل: كل علامة، وضع، وتركيبة، سلوك الاستبدال والنسخ الاحتياطي، الكشف والخطورة، أكواد الخروج، والقيود (السلوك مُختبر) |
| أمثلة | سير عمل شائعة مع مخرجات |
| تكامل CI | خطافات pre-commit، خطوط CI |
| الأمان | نموذج التهديد، تدابير التقوية، القيود المعروفة |
| سجل التغييرات | تاريخ الإصدارات |
| المساهمة | إعداد التطوير، نمط الكود، عملية PR |
| إخلاء المسؤولية | القيود، الاستخدام الآمن، الضمان |