מה זה SkillSpector
SkillSpector הוא סורק אבטחה בקוד פתוח של NVIDIA, שבודק סקילים של סוכני AI לפני שאתם מתקינים אותם. הוא תומך בסקילים של Claude Code, של Codex ושל שרתי MCP, והוא מחפש בהם דפוסים מסוכנים: הזרקת הוראות נסתרות, הדלפת מידע החוצה, הסלמת הרשאות וסיכוני שרשרת אספקה.
הרישיון הוא Apache-2.0, הדרישה היחידה היא Python בגרסה 3.12 ומעלה, וההתקנה היא פקודה אחת.
למה בכלל צריך את זה
סקיל הוא לא תוסף תמים לדפדפן. זה טקסט והוראות, ולעיתים גם קוד, שהסוכן שלכם מריץ עם ההרשאות שלכם: הקבצים שלכם, שורת הפקודה, הכלים המחוברים והחשבונות שאליהם הסוכן מחובר.
סוכן עם סקיל זדוני הוא לא צ’אטבוט שנתן תשובה גרועה. הוא סוכן עם הרשאות מלאות.
המחקר שמצורף לפרויקט של NVIDIA מצא את המספרים הבאים:
- 26.1% מהסקילים שנבדקו הכילו חולשת אבטחה כלשהי
- 5.2% נראו זדוניים ממש
- סקיל שמכיל סקריפט הרצה נוטה להיות פגיע פי 2.12 מסקיל שהוא טקסט בלבד
איך מתקינים
הדרך הפשוטה, דרך uv. פקודה אחת:
uv tool install git+https://github.com/NVIDIA/skillspector.git
לעדכון גרסה בהמשך:
uv tool update skillspector
אם אתם רוצים גם את תמיכת ה-MCP, התקינו את הגרסה עם התוספת:
uv tool install 'skillspector[mcp] @ git+https://github.com/NVIDIA/skillspector.git'
מי שמעדיף pip מהמקור, יכול לשכפל את הריפו ולהריץ make install בתוך סביבה וירטואלית.
איך סורקים: ארבע צורות קלט
זה החלק שהופך את הכלי לשימושי: אתם לא צריכים להוריד קודם ואז לבדוק. אפשר להצביע ישר על הלינק.
ישירות על ריפו ב-GitHub
skillspector scan https://github.com/user/my-skill
על תיקייה מקומית
skillspector scan ./my-skill/
על קובץ ZIP
skillspector scan ./my-skill.zip
על קובץ SKILL.md בודד
skillspector scan ./SKILL.md
איך קוראים את התוצאה
בסוף כל סריקה מקבלים ציון סיכון בין 0 ל-100, דירוג חומרה והמלצה. זו טבלת הספים הרשמית:
| ציון | חומרה | המלצה |
|---|---|---|
| 0-20 | LOW | בטוח להתקין |
| 21-50 | MEDIUM | אפשר, אבל תקראו את הממצאים |
| 51-80 | HIGH | לא מתקינים |
| 81-100 | CRITICAL | לא מתקינים |
הציון עצמו מחושב לפי חומרת הממצאים: ממצא CRITICAL מוסיף 50 נקודות, HIGH מוסיף 25, MEDIUM מוסיף 10 ו-LOW מוסיף 5. אם הסקיל מכיל סקריפט הרצה, הציון כולו מוכפל ב-1.3.
כך נראה דוח בטרמינל:
SkillSpector Security Report
Score 78/100
Severity HIGH
Recommendation DO NOT INSTALL
HIGH: Env Variable Harvesting (E2)
Location: scripts/sync.py:23
Finding: for key, val in os.environ.items():
Confidence: 94%
שימו לב לשורת ה-Location. הכלי לא רק אומר לכם שמשהו מסריח, הוא מצביע על הקובץ ועל השורה.
מה הוא מחפש
הכלי מכיר 71 דפוסי תקיפה, מחולקים ל-17 קטגוריות. אלה העיקריות שכדאי להכיר:
| קטגוריה | מה זה אומר בפועל |
|---|---|
| Prompt Injection | הוראות נסתרות בתוך הסקיל שמשתלטות על הסוכן מבפנים |
| Data Exfiltration | שליחת מידע מהמחשב שלכם לשרת חיצוני |
| Privilege Escalation | הסקיל מנסה להשיג הרשאות שלא ניתנו לו |
| Supply Chain | תלויות בספריות פגיעות או בקוד שנמשך מהאינטרנט בזמן ריצה |
| Memory Poisoning | הרעלת הזיכרון של הסוכן כדי שההשפעה תישאר גם אחרי השיחה |
| Tool Misuse | שימוש בכלים שהסוכן מחזיק בדרך שלא נועדה להם |
| Excessive Agency | הסקיל לוקח לעצמו יותר חופש פעולה ממה שהמשימה דורשת |
| System Prompt Leakage | חשיפת הוראות המערכת של הסוכן |
| MCP Tool Poisoning | הרעלת תיאורי הכלים של שרת MCP |
| MCP Least Privilege | שרת MCP שמבקש הרשאות רחבות מהנדרש |
בנוסף לאלה יש גם Anti-Refusal, Output Handling, Rogue Agent, Trigger Abuse, ניתוח AST התנהגותי, מעקב Taint וחתימות YARA.
שני שלבי הניתוח
שלב ראשון הוא ניתוח סטטי. הוא מהיר, לא דורש מפתח API, ותמיד רץ.
שלב שני הוא ניתוח סמנטי במודל AI, והוא אופציונלי. הוא תופס דברים שדפוס טקסטואלי מפספס, למשל קוד שנראה תמים בשורה אחת אבל הכוונה שלו ברורה בהקשר.
להריץ בלי ה-AI, מהר ובלי מפתחות:
skillspector scan ./my-skill/ --no-llm
להפעיל את הניתוח הסמנטי, בוחרים ספק וקובעים מפתח בסביבה:
| ספק | משתנה סביבה | הערה |
|---|---|---|
| openai | OPENAI_API_KEY | מפתח של OpenAI |
| anthropic | ANTHROPIC_API_KEY | מפתח של Anthropic |
| nv_build | NVIDIA_INFERENCE_KEY | דרך build.nvidia.com |
| bedrock | AWS_PROFILE + AWS_REGION | דרך AWS Bedrock |
| claude_cli | ללא מפתח | משתמש בהתחברות המקומית של Claude Code |
| codex_cli | ללא מפתח | משתמש בהתחברות המקומית של Codex |
שתי השורות האחרונות הן הקיצור הכי נוח: אם כבר יש לכם Claude Code או Codex מותקנים ומחוברים, אתם מקבלים את הניתוח הסמנטי בלי להוציא מפתח נוסף:
export SKILLSPECTOR_PROVIDER=claude_cli
skillspector scan https://github.com/user/my-skill
לשלב את זה בתהליך העבודה
קוד יציאה, בשביל סקריפטים ו-CI
| קוד | משמעות |
|---|---|
| 0 | הסריקה הסתיימה, הציון 50 ומטה, אפשר להמשיך |
| 1 | הסריקה הסתיימה, הציון מעל 50, לא מתקינים |
| 2 | שגיאה: קלט לא תקין, מקור שלא ניתן לקריאה או תקלה פנימית |
כלומר אפשר פשוט לשרשר: אם הסריקה עברה, תתקין.
skillspector scan ./my-skill/ && cp -r ./my-skill ~/.claude/skills/
פורמטים לפלט
ברירת המחדל היא פלט טרמינל צבעוני, אבל אפשר לבקש JSON, Markdown או SARIF. SARIF הוא הפורמט שגיטהאב וה-IDE יודעים להציג כהערות על הקוד:
skillspector scan ./my-skill/ -f sarif -o results.sarif
בייסליין, כדי לא לראות את אותם ממצאים שוב
אם בדקתם ממצא והחלטתם שהוא בסדר, אפשר לקבע אותו בבייסליין. מאותו רגע הציון משקף רק ממצאים חדשים:
skillspector baseline ./my-skill/ -o .skillspector-baseline.yaml
skillspector scan ./my-skill/ --baseline .skillspector-baseline.yaml
ולראות מה הושתק:
skillspector scan ./my-skill/ --baseline .skillspector-baseline.yaml --show-suppressed
בדיקת חולשות חיה מול OSV
אחד הדפוסים, SC4, בודק את התלויות של הסקיל מול מסד הנתונים של OSV.dev, עשרות אלפי התרעות אבטחה על חבילות PyPI ו-npm.
- לא צריך מפתח API
- כל התלויות נבדקות בקריאה אחת
- אם אין אינטרנט, הכלי נופל חזרה לרשימה מובנית
- נשלחים רק שמות וגרסאות של חבילות, לא תוכן הקבצים שלכם
טיפים
- תסרקו לפני ההעתקה לתיקיית הסקילים, לא אחריה. סקיל שכבר במקום כבר יכול לרוץ
- אפשר לסרוק ישר מהלינק, בלי להוריד כלום למחשב
- מעל 50 פשוט לא מתקינים. אל תתווכחו עם הציון בלי לקרוא את הממצאים
- שימו לב במיוחד לסקילים שמכילים סקריפטים. הם פי 2.12 יותר נוטים להיות פגיעים
--no-llmנותן תשובה תוך שניות, מספיק לבדיקה מהירה ראשונה- אם יש לכם Claude Code או Codex מותקן, השתמשו ב-claude_cli או codex_cli ותקבלו ניתוח סמנטי בלי מפתח נוסף
- הריצו סריקה מחדש אחרי כל עדכון של הסקיל. הסקיל שבדקתם אינו בהכרח הסקיל שרץ אצלכם היום
- בפרויקט צוותי, שימו את הסריקה ב-CI עם
-f sarifוהממצאים יופיעו ישר על ה-Pull Request
מגבלות שכדאי להכיר
- ציון נמוך הוא לא אישור. זו בדיקה אוטומטית, לא ביקורת אבטחה מלאה
- הניתוח הסטטי מייצר לפעמים התרעות שווא. בשביל זה יש בייסליין
- הניתוח הסמנטי שולח את תוכן הסקיל לספק המודל שבחרתם. אם זה רגיש, הישארו על
--no-llm - צריך Python 3.12 ומעלה
לינקים
- הריפו הרשמי: github.com/NVIDIA/SkillSpector
- התיעוד של NVIDIA: docs.nvidia.com/skills
- מסד החולשות שהכלי מתשאל: osv.dev