
स्टैटिक विश्लेषण CLI जो AI-जनित कोड को SQL इंजेक्शन, असुरक्षित रिफ्लेक्शन, और हार्डकोडेड सीक्रेट्स जैसी कमजोरियों के लिए स्कैन करता है, SARIF एक्सपोर्ट और CI/CD गेटिंग के साथ।
एक तेज़, स्टैंडअलोन स्टैटिक विश्लेषण उपकरण जिसे विशेष रूप से AI कोडिंग सहायकों द्वारा पेश की गई कमजोरियों का पता लगाने के लिए डिज़ाइन किया गया है। CanoP AI-जनित कोड में सुरक्षा जोखिमों की पहचान करने के लिए आपके कोडबेस का स्थानीय रूप से विश्लेषण करता है।
fixes.json पेलोड उत्पन्न करता है। इनमें विशिष्ट प्रॉम्प्ट होते हैं जिन्हें तत्काल, संदर्भ-जागरूक उपचार के लिए लार्ज लैंग्वेज मॉडल (LLMs) में वापस फीड करने के लिए डिज़ाइन किया गया है।
CanoP आपके कोड का स्थानीय रूप से विश्लेषण करता है और AI-तैयार उपचार मार्गदर्शन के साथ कार्रवाई योग्य सुरक्षा निष्कर्ष उत्पन्न करता है।
CanoP अपने बंडल किए गए नियमों को canop/rules/*.yml से लोड करता है और अपने अंतर्निहित पैटर्न स्कैनर को स्थानीय रूप से चलाता है। यदि Semgrep CLI इंस्टॉल है, तो CanoP AST-आधारित विश्लेषण के लिए समान नियमों का भी उपयोग कर सकता है। Semgrep वैकल्पिक है; मानक पैकेज इंस्टॉलेशन Semgrep CLI को डाउनलोड या आवश्यक नहीं करता है।
CanoP को PyPI के माध्यम से एक मानक Python पैकेज के रूप में वितरित किया जाता है।
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 में संशोधित किया गया है। यह स्कैन समय को नाटकीय रूप से कम करता है और प्री-कमिट हुक के लिए आदर्श है, जिससे यह सुनिश्चित होता है कि नया कोड कमिट होने से पहले सुरक्षित है:
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 अपने नियम इंजन से उपचार मेटाडेटा निकालता है ताकि ऐसे प्रॉम्प्ट उत्पन्न किए जा सकें जो AI कोडिंग सहायकों को निर्देश देते हैं कि पाई गई कमजोरियों को ठीक कैसे करना है।
# 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