
skill-scanner v2.0.13
एजेंट स्किल्स के लिए सुरक्षा स्कैनर
स्किल स्कैनर
AI एजेंट स्किल्स के लिए एक बेस्ट-एफर्ट सुरक्षा स्कैनर जो प्रॉम्प्ट इंजेक्शन, डेटा एक्सफ़िलट्रेशन और दुर्भावनापूर्ण कोड पैटर्न का पता लगाता है। यह पैटर्न-आधारित डिटेक्शन (YAML + YARA), LLM-as-a-judge और व्यवहारिक डेटाफ़्लो विश्लेषण को जोड़ता है ताकि संभावित खतरों की डिटेक्शन कवरेज अधिकतम हो और फ़ॉल्स पॉज़िटिव न्यूनतम हों।
महत्वपूर्ण: यह स्कैनर बेस्ट-एफर्ट डिटेक्शन प्रदान करता है, न कि व्यापक या पूर्ण कवरेज। जिस स्कैन में कोई निष्कर्ष नहीं मिलता, वह यह गारंटी नहीं देता कि कोई स्किल सभी खतरों से मुक्त है। नीचे दायरा और सीमाएँ देखें।
OpenAI Codex Skills और Cursor Agent Skills प्रारूपों को Agent Skills specification के अनुसार सपोर्ट करता है। --lenient के साथ, यह गैर-मानक प्रारूपों जैसे Claude Code .claude/commands/*.md और फ्लैट मार्कडाउन स्किल रिपॉज़िटरीज़ को भी स्कैन करता है।
मुख्य विशेषताएँ
- मल्टी-इंजन डिटेक्शन - स्तरित, बेस्ट-एफर्ट कवरेज के लिए स्टैटिक विश्लेषण, व्यवहारिक डेटाफ़्लो, LLM सिमेंटिक विश्लेषण और क्लाउड-आधारित स्कैनिंग
- फ़ॉल्स पॉज़िटिव फ़िल्टरिंग - मेटा-एनालाइज़र डिटेक्शन क्षमता को बनाए रखते हुए शोर को काफी कम करता है
- CI/CD रेडी - GitHub Code Scanning के लिए SARIF आउटपुट, पुन: प्रयोज्य GitHub Actions वर्कफ़्लो, बिल्ड विफलताओं के लिए एग्ज़िट कोड
- प्री-कमिट हुक - हर कमिट से पहले स्किल्स स्कैन करने के लिए Standard pre-commit framework एकीकरण
- एक्सटेंसिबल - कस्टम एनालाइज़र्स के लिए प्लगइन आर्किटेक्चर
चर्चा करने, फ़ीडबैक साझा करने या टीम से जुड़ने के लिए Cisco AI Discord से जुड़ें।
दायरा और सीमाएँ
Skill Scanner एक डिटेक्शन टूल है। यह ज्ञात और संभावित जोखिम पैटर्न की पहचान करता है, लेकिन यह सुरक्षा प्रमाणित नहीं करता है।
मुख्य सीमाएँ:
- कोई निष्कर्ष नहीं ≠ कोई जोखिम नहीं। जो स्कैन "No findings" लौटाता है, वह संकेत देता है कि कोई ज्ञात खतरा पैटर्न नहीं मिला। यह गारंटी नहीं देता कि कोई स्किल सुरक्षित, हानिरहित या कमज़ोरियों से मुक्त है।
- कवरेज स्वाभाविक रूप से अपूर्ण है। स्कैनर सिग्नेचर-आधारित डिटेक्शन, LLM-आधारित सिमेंटिक विश्लेषण, व्यवहारिक डेटाफ़्लो विश्लेषण, वैकल्पिक क्लाउड सेवाओं और कॉन्फ़िगर करने योग्य रूल पैक को जोड़ता है। हालाँकि यह दृष्टिकोण कवरेज में सुधार करता है, कोई भी स्वचालित टूल हर तकनीक का पता नहीं लगा सकता, विशेष रूप से नए या ज़ीरो-डे हमलों का।
- फ़ॉल्स पॉज़िटिव और फ़ॉल्स नेगेटिव हो सकते हैं। कंसेंसस मोड और मेटा-एनालिसिस शोर कम करते हैं, लेकिन कोई भी कॉन्फ़िगरेशन सभी गलत वर्गीकरणों को समाप्त नहीं करता। स्कैन पॉलिसी को अपनी जोखिम सहनशीलता के अनुसार समायोजित करें।
- मानवीय समीक्षा आवश्यक बनी रहती है। स्वचालित स्कैनिंग defense-in-depth रणनीति का एक घटक है। उच्च-जोखिम या प्रोडक्शन डिप्लॉयमेंट में स्कैनर परिणामों के साथ मैनुअल कोड समीक्षा और/या थ्रेट मॉडलिंग भी जोड़ी जानी चाहिए।
दस्तावेज़ीकरण
| गाइड | विवरण |
|---|---|
| त्वरित आरंभ | 5 मिनट में शुरू करें |
| आर्किटेक्चर | सिस्टम डिज़ाइन और घटक |
| थ्रेट टैक्सोनॉमी | उदाहरणों के साथ संपूर्ण AITech थ्रेट टैक्सोनॉमी |
| LLM एनालाइज़र | LLM कॉन्फ़िगरेशन और उपयोग |
| मेटा-एनालाइज़र | फ़ॉल्स पॉज़िटिव फ़िल्टरिंग और प्राथमिकता निर्धारण |
| व्यवहारिक एनालाइज़र | डेटाफ़्लो विश्लेषण विवरण |
| स्कैन पॉलिसी | कस्टम पॉलिसियाँ, प्रीसेट और ट्यूनिंग गाइड |
| पॉलिसी त्वरित संदर्भ | पॉलिसी सेक्शन और नॉब्स के लिए संक्षिप्त संदर्भ |
| रूल लेखन | सिग्नेचर, YARA और Python रूल कैसे जोड़ें |
| GitHub Actions | CI/CD एकीकरण के लिए पुन: प्रयोज्य वर्कफ़्लो |
| API संदर्भ | REST API दस्तावेज़ीकरण |
| डेवलपमेंट गाइड | योगदान और डेवलपमेंट सेटअप |
इंस्टॉलेशन
पूर्वापेक्षाएँ: Python 3.10+ और uv (अनुशंसित) या pip
# Using uv (recommended)
uv pip install cisco-ai-skill-scanner
# Using pip
pip install cisco-ai-skill-scanner
क्लाउड प्रोवाइडर एक्स्ट्रा
# AWS Bedrock support
pip install cisco-ai-skill-scanner[bedrock]
# Google AI Studio / Gemini support
pip install cisco-ai-skill-scanner[google]
# Google Vertex AI support
pip install cisco-ai-skill-scanner[vertex]
# Azure OpenAI support
pip install cisco-ai-skill-scanner[azure]
# All cloud providers
pip install cisco-ai-skill-scanner[all]
त्वरित आरंभ
पर्यावरण सेटअप (वैकल्पिक)
# For LLM analyzer and Meta-analyzer
export SKILL_SCANNER_LLM_API_KEY="your_api_key"
export SKILL_SCANNER_LLM_MODEL="claude-3-5-sonnet-20241022"
# For VirusTotal binary scanning
export VIRUSTOTAL_API_KEY="your_virustotal_api_key"
# For Cisco AI Defense
export AI_DEFENSE_API_KEY="your_aidefense_api_key"
इंटरैक्टिव विज़ार्ड
पता नहीं कौन से फ़्लैग इस्तेमाल करने हैं? इंटरैक्टिव विज़ार्ड लॉन्च करने के लिए बिना किसी आर्ग्युमेंट के skill-scanner चलाएँ:
skill-scanner
विज़ार्ड आपको स्कैन टारगेट, एनालाइज़र्स, पॉलिसी और आउटपुट फ़ॉर्मेट चुनने में मार्गदर्शन करता है, फिर उसे चलाने से पहले तैयार कमांड दिखाता है। CLI सीखने के लिए बढ़िया है।
CLI उपयोग
# Scan a single skill (core analyzers: static + bytecode + pipeline)
skill-scanner scan /path/to/skill
# Scan with behavioral analyzer (dataflow analysis)
skill-scanner scan /path/to/skill --use-behavioral
# Scan with all engines
skill-scanner scan /path/to/skill --use-behavioral --use-llm --use-aidefense
# Scan with meta-analyzer for false positive filtering
skill-scanner scan /path/to/skill --use-llm --enable-meta
# Scan with trigger analyzer for vague description checks
skill-scanner scan /path/to/skill --use-trigger
# Run LLM analyzer multiple times and keep majority-agreed findings
skill-scanner scan /path/to/skill --use-llm --llm-consensus-runs 3
# Scan multiple skills recursively
skill-scanner scan-all /path/to/skills --recursive --use-behavioral
# Scan multiple skills with cross-skill overlap detection
skill-scanner scan-all /path/to/skills --recursive --check-overlap
# Scan a GitHub repository (owner/repo shorthand or full URL)
skill-scanner scan-repo owner/repo
skill-scanner scan-repo https://github.com/owner/repo --use-llm
# Lenient mode: tolerate malformed skills instead of failing
skill-scanner scan /path/to/skill --lenient
skill-scanner scan-all /path/to/skills --recursive --lenient
# Lenient mode with non-standard skill formats (no SKILL.md required)
skill-scanner scan .claude/commands/deploy --lenient
skill-scanner scan-all .claude/commands --recursive --lenient
# Use a custom metadata filename instead of SKILL.md
skill-scanner scan /path/to/skill --skill-file README.md
# CI/CD: Fail build if threats found
skill-scanner scan-all ./skills --fail-on-severity high --format sarif --output results.sarif
# Generate interactive HTML report with attack correlation groups
skill-scanner scan /path/to/skill --use-llm --enable-meta --format html --output report.html
# Use custom YARA rules
skill-scanner scan /path/to/skill --custom-rules /path/to/my-rules/
# Use custom taxonomy + threat mapping profiles (JSON/YAML)
skill-scanner scan /path/to/skill --taxonomy /path/to/taxonomy.json --threat-mapping /path/to/threat_mapping.json
# VirusTotal hash scan with optional unknown-file uploads
skill-scanner scan /path/to/skill --use-virustotal --vt-upload-files
# Use a scan policy preset (strict, balanced, permissive)
skill-scanner scan /path/to/skill --policy strict
# Use a custom org policy file
skill-scanner scan /path/to/skill --policy my_org_policy.yaml
# Generate a policy file to customise
skill-scanner generate-policy -o my_org_policy.yaml
# Interactive policy configurator (TUI)
skill-scanner configure-policy
LLM प्रोवाइडर नोट: --llm-provider वर्तमान में anthropic या openai स्वीकार करता है। Bedrock, Vertex, Azure, Gemini और अन्य LiteLLM बैकएंड के लिए, प्रोवाइडर-विशिष्ट मॉडल स्ट्रिंग्स और एनवायरनमेंट वेरिएबल्स सेट करें (LLM Analyzer docs देखें)।
Python SDK
from skill_scanner import SkillScanner
from skill_scanner.core.analyzers import BehavioralAnalyzer
# Create scanner with analyzers
scanner = SkillScanner(analyzers=[
BehavioralAnalyzer(),
])
# Scan a skill
result = scanner.scan_skill("/path/to/skill")
print(f"Findings: {len(result.findings)}")
print(f"Max severity: {result.max_severity}")
# Note: is_safe indicates no HIGH/CRITICAL findings were detected.
# It does not guarantee the skill is free of all risk.
if not result.is_safe:
print("Issues detected -- review findings before deployment")
सुरक्षा एनालाइज़र्स
| एनालाइज़र | डिटेक्शन विधि | दायरा | आवश्यकताएँ |
|---|---|---|---|
| स्टैटिक | YAML + YARA पैटर्न | सभी फ़ाइलें | कोई नहीं |
| बाइटकोड | .pyc अखंडता सत्यापन | Python बाइटकोड | कोई नहीं |
| पाइपलाइन | कमांड टेंट विश्लेषण | शेल पाइपलाइन | कोई नहीं |
| व्यवहारिक | AST डेटाफ़्लो विश्लेषण | Python फ़ाइलें | कोई नहीं |
| LLM | सिमेंटिक विश्लेषण | SKILL.md + स्क्रिप्ट्स | API कुंजी |
| मेटा | फ़ॉल्स पॉज़िटिव फ़िल्टरिंग | सभी निष्कर्ष | API कुंजी |
| VirusTotal | हैश-आधारित मैलवेयर | बाइनरी फ़ाइलें | API कुंजी |
| AI Defense | क्लाउड-आधारित AI | टेक्स्ट सामग्री | API कुंजी |
CLI विकल्प
| विकल्प | विवरण |
|---|---|
--policy | स्कैन पॉलिसी: प्रीसेट नाम (strict, balanced, permissive) या कस्टम YAML का पथ |
--use-behavioral | व्यवहारिक एनालाइज़र सक्षम करें (डेटाफ़्लो विश्लेषण) |
--use-llm | LLM एनालाइज़र सक्षम करें (API कुंजी आवश्यक) |
--llm-provider | CLI रूटिंग के लिए LLM प्रोवाइडर: anthropic या openai |
--llm-consensus-runs N | LLM विश्लेषण N बार चलाएँ और बहुमत-सहमत निष्कर्ष रखें |
--llm-max-tokens N | LLM प्रतिक्रियाओं के लिए अधिकतम आउटपुट टोकन (डिफ़ॉल्ट: 8192) |
--use-virustotal | VirusTotal बाइनरी स्कैनर सक्षम करें |
--vt-api-key KEY | VirusTotal API कुंजी सीधे प्रदान करें (वैकल्पिक) |
--vt-upload-files | अज्ञात बाइनरी को VirusTotal पर अपलोड करें (वैकल्पिक) |
--use-aidefense | Cisco AI Defense एनालाइज़र सक्षम करें |
--aidefense-api-url URL | AI Defense API URL ओवरराइड करें (वैकल्पिक) |
--use-trigger | ट्रिगर स्पेसिफ़िसिटी एनालाइज़र सक्षम करें |
--enable-meta | फ़ॉल्स पॉज़िटिव फ़िल्टरिंग के लिए मेटा-एनालाइज़र सक्षम करें |
--verbose | प्रति-निष्कर्ष पॉलिसी फ़िंगरप्रिंट, सह-घटना मेटाडेटा शामिल करें, और मेटा-एनालाइज़र फ़ॉल्स पॉज़िटिव रखें |
--format | आउटपुट: summary, json, markdown, table, sarif, html। html फ़ॉर्मेट एक सेल्फ-कंटेन्ड इंटरैक्टिव रिपोर्ट तैयार करता है जिसमें कोलैप्सेबल कोरिलेशन ग्रुप्स, एक्सपैंडेबल कोड स्निपेट्स और पाइपलाइन टेंट फ्लो डायग्राम होते हैं |
--detailed | Markdown आउटपुट में विस्तृत निष्कर्ष शामिल करें |
--compact | कॉम्पैक्ट JSON आउटपुट |
--output PATH | डिफ़ॉल्ट आउटपुट फ़ाइल पथ (--output-<fmt> द्वारा ओवरराइड किया जाता है) |
--fail-on-findings | HIGH/CRITICAL मिलने पर एरर के साथ बाहर निकलें (--fail-on-severity high का शॉर्टहैंड) |
--fail-on-severity LEVEL | LEVEL या उससे ऊपर के निष्कर्ष मौजूद होने पर एरर के साथ बाहर निकलें (critical, high, medium, low, info) |
--custom-rules PATH | डायरेक्टरी से कस्टम YARA रूल का उपयोग करें |
--taxonomy PATH | इस रन के लिए कस्टम टैक्सोनॉमी प्रोफ़ाइल (JSON/YAML) लोड करें |
--threat-mapping PATH | इस रन के लिए कस्टम स्कैनर थ्रेट मैपिंग प्रोफ़ाइल (JSON) लोड करें |
--lenient | खराब फ़ॉर्मेट वाली स्किल्स को विफल करने के बजाय सहन करें (खराब फ़ील्ड ठीक करें, डिफ़ॉल्ट भरें)। जब SKILL.md मौजूद न हो, तो डायरेक्टरी में .md फ़ाइलों को स्कैन करने पर फ़ॉलबैक करता है |
--skill-file FILENAME | SKILL.md के बजाय उपयोग करने के लिए कस्टम मेटाडेटा फ़ाइलनाम (जैसे README.md) |
--check-overlap | (scan-all) क्रॉस-स्किल विवरण ओवरलैप जाँच सक्षम करें |
| कमांड | विवरण |
|---|---|
| (कोई कमांड नहीं) | इंटरैक्टिव स्कैन विज़ार्ड लॉन्च करें (टर्मिनल में चलाने पर) |
interactive | इंटरैक्टिव स्कैन विज़ार्ड लॉन्च करें (स्पष्ट रूप से) |
scan | एकल स्किल डायरेक्टरी स्कैन करें |
scan-all | कई स्किल्स स्कैन करें (--recursive, --check-overlap के साथ) |
generate-policy | कस्टमाइज़ेशन के लिए स्कैन पॉलिसी YAML जनरेट करें |
configure-policy | कस्टम स्कैन पॉलिसी बनाने/संपादित करने के लिए इंटरैक्टिव TUI (--input सपोर्टेड) |
list-analyzers | उपलब्ध एनालाइज़र्स दिखाएँ |
validate-rules | रूल सिग्नेचर मान्य करें (--rules-file सपोर्टेड) |
उदाहरण आउटपुट
$ skill-scanner scan ./my-skill --use-behavioral
============================================================
Skill: my-skill
============================================================
Status: [OK] No findings
Max Severity: NONE
Total Findings: 0
Scan Duration: 0.15s
नोट: "No findings" का अर्थ है कि स्कैनर ने कोई ज्ञात खतरा पैटर्न नहीं पाया -- यह गारंटी नहीं है कि स्किल सभी जोखिमों से मुक्त है। दायरा और सीमाएँ देखें।
GitHub Actions
पुन: प्रयोज्य वर्कफ़्लो का उपयोग करके हर पुश या PR पर स्किल्स को स्वचालित रूप से स्कैन करें:
# .github/workflows/scan-skills.yml
name: Scan Skills
on:
pull_request:
paths: [".cursor/skills/**"]
jobs:
scan:
uses: cisco-ai-defense/skill-scanner/.github/workflows/scan-skills.yml@main
with:
skill_path: .cursor/skills
permissions:
security-events: write
contents: read
परिणाम GitHub Code Scanning के माध्यम से PR में इनलाइन एनोटेशन के रूप में दिखाई देते हैं। LLM एकीकरण, सीक्रेट कॉन्फ़िगरेशन और ब्रांच प्रोटेक्शन सेटअप के लिए पूरी गाइड देखें।
प्री-कमिट हुक
pre-commit फ्रेमवर्क का उपयोग करके हर कमिट से पहले स्किल्स स्कैन करें:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/cisco-ai-defense/skill-scanner
rev: v1.0.0 # use the latest release tag
hooks:
- id: skill-scanner
या बिल्ट-इन हुक सीधे इंस्टॉल करें:
skill-scanner-pre-commit install
हुक स्वचालित रूप से पता लगाता है कि किन स्किल डायरेक्टरीज़ में स्टेज्ड बदलाव हैं और केवल उन्हीं को स्कैन करता है, जिससे कमिट समय तेज़ बना रहता है। सब कुछ स्कैन करने के लिए --all उपयोग करें।
योगदान
हम योगदान का स्वागत करते हैं! दिशानिर्देशों के लिए कृपया CONTRIBUTING.md देखें।
लाइसेंस
Apache 2.0 - विवरण के लिए LICENSE देखें।
कॉपीराइट 2026 Cisco Systems, Inc. और इसके सहयोगी