
أداة تحليل ثابتة تعمل من سطر الأوامر تفحص الكود المولَّد بالذكاء الاصطناعي بحثًا عن الثغرات مثل حقن SQL والانعكاس غير الآمن والأسرار المضمَّنة، مع تصدير SARIF وبوابات CI/CD.
أداة تحليل ثابت سريعة ومستقلة مصممة خصيصًا لاكتشاف الثغرات الأمنية التي تقدمها مساعدات البرمجة بالذكاء الاصطناعي. يقوم CanoP بتحليل قاعدة التعليمات البرمجية الخاصة بك محليًا لتحديد المخاطر الأمنية في التعليمات البرمجية المولّدة بالذكاء الاصطناعي.
fixes.json منظمة. تحتوي هذه على مطالبات محددة مصممة لإعادة تغذيتها في نماذج اللغة الكبيرة (LLMs) للإصلاح الفوري والواعي بالسياق.
يقوم CanoP بتحليل التعليمات البرمجية الخاصة بك محليًا وينتج نتائج أمنية قابلة للتنفيذ مع إرشادات إصلاح جاهزة للذكاء الاصطناعي.
يقوم CanoP بتحميل قواعده المضمّنة من canop/rules/*.yml ويشغّل ماسح الأنماط المدمج محليًا. إذا كان Semgrep CLI مثبتًا، يمكن لـ CanoP أيضًا استخدام نفس القواعد لتحليل قائم على AST. Semgrep اختياري؛ تثبيت الحزمة القياسي لا يقوم بتنزيل أو يتطلب Semgrep CLI.
يتم توزيع CanoP كحزمة Python قياسية عبر PyPI.
على Windows، أو إذا كنت بالفعل داخل بيئة افتراضية نشطة، يمكنك استخدام مثبّت pip القياسي:
pip install canop
غالبًا ما تمنع توزيعات macOS وLinux الحديثة عمليات تثبيت pip العامة لحماية حزم النظام (PEP 668). المعيار المجتمعي لتثبيت أدوات Python CLI في بيئات معزولة هو pipx:
pipx install canop
(ملاحظة: pipx install canop يعمل بشكل مثالي على Windows أيضًا!)
تحقق من التثبيت للتأكد من أن CLI متاح في مسار نظامك:
canop --version
قم بتهيئة ملفات التكوين في مستودعك. ينشئ هذا الأمر ملف سياسة .canop.yml وملف .canopignore لاستبعاد الدلائل المزعجة مثل node_modules أو venv من الفحص:
canop init
قم بتشغيل فحص أمني شامل على دليلك الحالي. يقيّم الماسح الضوئي التعليمات البرمجية الخاصة بك مقابل محرك القواعد الداخلي ويخرج جدولاً مفصلاً مع درجة أمان نهائية:
canop scan .
افحص فقط الملفات التي تم تعديلها في git. هذا يقلل بشكل كبير من وقت الفحص وهو مثالي لخطافات pre-commit، مما يضمن أن التعليمات البرمجية الجديدة آمنة قبل الالتزام بها:
canop scan . --changed
بشكل افتراضي، يحافظ CanoP على نظافة طرفيتك عن طريق تحديد النتائج المعروضة بـ 50. إذا احتجت يومًا للتعمق أكثر أو تعديل هذا:
# No cap, show me every single finding:
canop scan . --all
# Set a custom cap (e.g., if you only want to see the top 10 results):
canop scan . --limit 10
تم بناء CanoP ليعمل كحارس أمني في خطوط أنابيب النشر الآلي (مثل GitHub Actions أو GitLab CI). يمكنك تكوين الماسح الضوئي لإرجاع رمز خروج غير صفري — مما يؤدي تلقائيًا إلى فشل البناء — إذا لم يتم استيفاء معايير أمنية محددة.
# Fail the deployment pipeline if any CRITICAL or HIGH vulnerabilities are found
canop scan . --fail-on HIGH
# Fail the deployment pipeline if the aggregate security score falls below 85
canop scan . --min-score 85
بالنسبة للفرق التي تتطلب التتبع التاريخي أو التدقيق أو التكامل مع الأنظمة الخارجية، يدعم CanoP تنسيقات إخراج متعددة.
# Export the raw native Python dictionary data to a standard JSON file for custom parsing
canop scan . --json-out results.json
# Export to SARIF (Static Analysis Results Interchange Format).
# Uploading this file to GitHub allows GitHub to display the vulnerabilities inline in Pull Requests.
canop scan . --sarif results.sarif
يستخرج CanoP البيانات الوصفية للإصلاح من محرك القواعد الخاص به لإنشاء مطالبات توجّه مساعدات البرمجة بالذكاء الاصطناعي حول كيفية إصلاح الثغرات المكتشفة بالضبط.
# Generate a fixes.json file containing actionable prompts for your LLM
canop scan . --prescriptions fixes.json
يمكن تقنين سلوك CanoP باستخدام ملف .canop.yml موضوع في جذر مشروعك. يعمل هذا الملف كسياسة أمنية مركزية، مما يضمن التزام جميع المطورين وخطوط أنابيب CI/CD بنفس الحدود.
# .canop.yml
# Require a minimum security grade to pass the pipeline
min_grade: B
# Treat these specific severity levels as pipeline failures
fail_on:
- CRITICAL
- HIGH
# Ignore specific paths from being scanned
ignore:
- "tests/**"
- "docs/**"
# Allow a certain number of findings before returning a non-zero exit code (0 = strictly unlimited)
max_findings: 0
يمكنك أيضًا الاعتماد على .canopignore لتحديد ملفات أو دلائل معينة يجب على الماسح الضوئي تخطيها. يستخدم أنماط glob القياسية، ويعمل بشكل مطابق لـ .gitignore.
إذا كنت ترغب في المساهمة في CLI أو اختبار التغييرات محليًا، فاستنسخ المستودع وثبّته في الوضع القابل للتحرير. يربط الوضع القابل للتحرير أمر الطرفية canop مباشرة بالتعليمات البرمجية المصدرية الحية الخاصة بك.
git clone https://github.com/openbreach/CanoP.git canop
cd canop
pip install -e .
قم بتشغيل مجموعة الاختبارات محليًا قبل إرسال التغييرات:
python -m unittest discover -s tests -v
لبناء عناصر التوزيع، قم بتثبيت أدوات الإصدار وتشغيل:
pip install -r requirements-dev.txt
python -m build
يتم تعريف القواعد الأمنية بتنسيق Semgrep YAML القياسي وتقع داخل canop/rules/*.yml. يرجى الاطلاع على CONTRIBUTING.md للحصول على إرشادات شاملة حول كيفية هيكلة واختبار وتقديم قواعد جديدة لتوسيع قدرات الكشف لدى الماسح الضوئي.
إذا وجدت أي أخطاء، أو لديك طلبات ميزات، أو تحتاج إلى مساعدة عامة، يرجى فتح مشكلة على GitHub أو الاتصال بنا مباشرة على [email protected].
هذا المشروع مرخّص بموجب ترخيص MIT - راجع ملف LICENSE للحصول على التفاصيل.