
ماسح أمني لمهارات الوكيل
ماسح أمني بأفضل جهد ممكن لمهارات وكلاء الذكاء الاصطناعي يكتشف حقن التعليمات، تسريب البيانات، وأنماط التعليمات البرمجية الخبيثة. يجمع بين الكشف القائم على الأنماط (YAML + YARA)، وLLM كقاضٍ، وتحليل تدفق البيانات السلوكي لتعظيم تغطية الكشف عن التهديدات المحتملة مع تقليل النتائج الإيجابية الزائفة.
هام: يوفر هذا الماسح كشفًا بأفضل جهد ممكن، وليس تغطية شاملة أو كاملة. الفحص الذي لا يُرجع أي نتائج لا يضمن أن المهارة خالية من جميع التهديدات. راجع النطاق والقيود أدناه.
يدعم تنسيقات مهارات OpenAI Codex و مهارات وكيل Cursor وفقًا لـ مواصفات مهارات الوكيل. مع --lenient، يقوم أيضًا بمسح التنسيقات غير القياسية مثل .claude/commands/*.md لـ Claude Code ومستودعات المهارات المسطحة لـ Markdown.
انضم إلى Discord الخاص بـ Cisco AI للمناقشة أو مشاركة الملاحظات أو التواصل مع الفريق.
ماسح المهارات هو أداة كشف. يحدد أنماط المخاطر المعروفة والمحتملة، لكنه لا يشهد على الأمان.
القيود الرئيسية:
المتطلبات الأساسية: 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).
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")
$ 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/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. والشركات التابعة لها
| الدليل | الوصف |
|---|
| بداية سريعة | ابدأ في 5 دقائق |
| الهندسة المعمارية | تصميم النظام والمكونات |
| تصنيف التهديدات | تصنيف تهديدات AITech الكامل مع أمثلة |
| محلل LLM | تكوين واستخدام LLM |
| المحلل الوصفي | تصفية النتائج الإيجابية الزائفة وتحديد الأولويات |
| المحلل السلوكي | تفاصيل تحليل تدفق البيانات |
| سياسة المسح | السياسات المخصصة والإعدادات المسبقة ودليل الضبط |
| مرجع سريع للسياسة | مرجع مضغوط لأقسام السياسة ومقابض التحكم |
| تأليف القواعد | كيفية إضافة قواعد التوقيع وYARA وPython |
| إجراءات GitHub | سير عمل قابل لإعادة الاستخدام لتكامل CI/CD |
| مرجع API | توثيق REST API |
| دليل التطوير | المساهمة وإعداد التطوير |
| المحلل | طريقة الكشف | النطاق | المتطلبات |
|---|
| ثابت | أنماط 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) |