
skill-scanner v2.0.13
ماسح أمني لمهارات الوكيل
ماسح المهارات
ماسح أمني بأفضل جهد ممكن لمهارات وكلاء الذكاء الاصطناعي يكتشف حقن التعليمات، تسريب البيانات، وأنماط التعليمات البرمجية الخبيثة. يجمع بين الكشف القائم على الأنماط (YAML + YARA)، وLLM كقاضٍ، وتحليل تدفق البيانات السلوكي لتعظيم تغطية الكشف عن التهديدات المحتملة مع تقليل النتائج الإيجابية الزائفة.
هام: يوفر هذا الماسح كشفًا بأفضل جهد ممكن، وليس تغطية شاملة أو كاملة. الفحص الذي لا يُرجع أي نتائج لا يضمن أن المهارة خالية من جميع التهديدات. راجع النطاق والقيود أدناه.
يدعم تنسيقات مهارات OpenAI Codex و مهارات وكيل Cursor وفقًا لـ مواصفات مهارات الوكيل. مع --lenient، يقوم أيضًا بمسح التنسيقات غير القياسية مثل .claude/commands/*.md لـ Claude Code ومستودعات المهارات المسطحة لـ Markdown.
النقاط البارزة
- كشف متعدد المحركات - تحليل ثابت، تدفق بيانات سلوكي، تحليل دلالي بواسطة LLM، ومسح سحابي لتغطية متعددة الطبقات بأفضل جهد
- تصفية النتائج الإيجابية الزائفة - المحلل الوصفي يقلل الضوضاء بشكل كبير مع الحفاظ على قدرة الكشف
- جاهز للتكامل المستمر/النشر المستمر - مخرجات SARIF لمسح رموز GitHub، سير عمل قابل لإعادة الاستخدام لـ GitHub Actions، رموز خروج لفشل البناء
- خطاف ما قبل الالتزام - تكامل إطار العمل القياسي pre-commit لمسح المهارات قبل كل التزام
- قابل للتوسيع - بنية إضافات للمحللين المخصصين
انضم إلى Discord الخاص بـ Cisco AI للمناقشة أو مشاركة الملاحظات أو التواصل مع الفريق.
النطاق والقيود
ماسح المهارات هو أداة كشف. يحدد أنماط المخاطر المعروفة والمحتملة، لكنه لا يشهد على الأمان.
القيود الرئيسية:
- لا توجد نتائج ≠ لا خطر. الفحص الذي يُرجع 'لا توجد نتائج' يشير إلى أنه لم يتم اكتشاف أي أنماط تهديد معروفة. لا يضمن أن المهارة آمنة أو غير ضارة أو خالية من الثغرات.
- التغطية غير كاملة بطبيعتها. يجمع الماسح بين الكشف القائم على التوقيعات، والتحليل الدلالي بواسطة LLM، وتحليل تدفق البيانات السلوكي، والخدمات السحابية الاختيارية، وحزم القواعد القابلة للتكوين. بينما يعزز هذا النهج التغطية، لا يمكن لأي أداة آلية اكتشاف كل أسلوب، خاصة الهجمات الجديدة أو هجمات اليوم الصفري.
- يمكن أن تحدث نتائج إيجابية زائفة وسلبية زائفة. أوضاع الإجماع والتحليل الوصفي تقلل الضوضاء، لكن لا يوجد تكوين يلغي جميع التصنيفات الخاطئة. قم بضبط سياسة المسح وفقًا لتحملك للمخاطر.
- تبقى المراجعة البشرية ضرورية. المسح الآلي هو أحد مكونات استراتيجية الدفاع في العمق. يجب أن تقترن عمليات النشر عالية المخاطر أو الإنتاجية بنتائج الماسح مع مراجعة يدوية للكود و/أو نمذجة التهديدات.
الوثائق
| الدليل | الوصف |
|---|---|
| بداية سريعة | ابدأ في 5 دقائق |
| الهندسة المعمارية | تصميم النظام والمكونات |
| تصنيف التهديدات | تصنيف تهديدات AITech الكامل مع أمثلة |
| محلل LLM | تكوين واستخدام LLM |
| المحلل الوصفي | تصفية النتائج الإيجابية الزائفة وتحديد الأولويات |
| المحلل السلوكي | تفاصيل تحليل تدفق البيانات |
| سياسة المسح | السياسات المخصصة والإعدادات المسبقة ودليل الضبط |
| مرجع سريع للسياسة | مرجع مضغوط لأقسام السياسة ومقابض التحكم |
| تأليف القواعد | كيفية إضافة قواعد التوقيع وYARA وPython |
| إجراءات GitHub | سير عمل قابل لإعادة الاستخدام لتكامل 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
يأخذك المعالج خلال اختيار هدف المسح والمحللين والسياسة وتنسيق الإخراج، ثم يعرض الأمر المجمع قبل تشغيله. رائع لتعلم واجهة سطر الأوامر.
استخدام سطر الأوامر
# 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).
مجموعة تطوير البرامج الخاصة بـ Python
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 | جميع الملفات | لا يوجد |
| Bytecode | التحقق من سلامة .pyc | bytecode Python | لا يوجد |
| خط الأنابيب | تحليل تلوث الأوامر | خطوط أنابيب shell | لا يوجد |
| سلوكي | تحليل تدفق بيانات AST | ملفات Python | لا يوجد |
| LLM | تحليل دلالي | SKILL.md + البرامج النصية | مفتاح API |
| وصفي | تصفية النتائج الإيجابية الزائفة | جميع النتائج | مفتاح API |
| VirusTotal | البرامج الضارة القائمة على التجزئة | الملفات الثنائية | مفتاح API |
| AI Defense | الذكاء الاصطناعي السحابي | المحتوى النصي | مفتاح API |
خيارات سطر الأوامر
| الخيار | الوصف |
|---|---|
--policy | سياسة المسح: اسم الإعداد المسبق (strict, balanced, permissive) أو مسار إلى YAML مخصص |
--use-behavioral | تمكين المحلل السلوكي (تحليل تدفق البيانات) |
--use-llm | تمكين محلل LLM (يتطلب مفتاح API) |
--llm-provider | موفر LLM لتوجيه سطر الأوامر: anthropic أو openai |
--llm-consensus-runs N | تشغيل تحليل LLM N مرة والاحتفاظ بالنتائج المتفق عليها بالأغلبية |
--llm-max-tokens N | الحد الأقصى لرموز الإخراج لاستجابات LLM (الافتراضي: 8192) |
--use-virustotal | تمكين ماسح VirusTotal الثنائي |
--vt-api-key KEY | توفير مفتاح API VirusTotal مباشرة (اختياري) |
--vt-upload-files | تحميل الملفات الثنائية غير المعروفة إلى VirusTotal (اختياري) |
--use-aidefense | تمكين محلل Cisco AI Defense |
--aidefense-api-url URL | تجاوز عنوان URL لواجهة API الخاصة بـ AI Defense (اختياري) |
--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 | واجهة مستخدم نصية تفاعلية لبناء/تحرير سياسة مسح مخصصة (يدعم --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
ملاحظة: 'لا توجد نتائج' يعني أن الماسح لم يكتشف أي أنماط تهديد معروفة - وهو ليس ضمانًا بأن المهارة خالية من جميع المخاطر. راجع النطاق والقيود.
إجراءات GitHub
قم بمسح المهارات تلقائيًا عند كل دفع أو طلب سحب باستخدام سير العمل القابل لإعادة الاستخدام:
# .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. راجع الدليل الكامل لتكامل 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. والشركات التابعة لها