# SkillSpector: לסרוק כל סקיל לפני שמתקינים אותו

> SkillSpector הוא סורק אבטחה בקוד פתוח של NVIDIA, שבודק סקילים של סוכני AI לפני שאתם מתקינים אותם. הוא תומך בסקילים של Claude Code, של Codex ושל שרתי MCP, והוא מחפש בהם דפוסים מסוכנים: הזרקת הוראות נסתרות, הדלפת מידע החוצה, הסלמת הרשאות וסיכוני שרשרת אספקה.

מאת קווין ליאקס. פורסם 2026-09-06. נושא: אבטחה ופרטיות.
העמוד המלא: https://kevinliaks.ai/guides/skillspector-scan

## מה זה SkillSpector

SkillSpector הוא סורק אבטחה בקוד פתוח של NVIDIA, שבודק סקילים של סוכני AI לפני שאתם מתקינים אותם. הוא תומך בסקילים של Claude Code, של Codex ושל שרתי MCP, והוא מחפש בהם דפוסים מסוכנים: הזרקת הוראות נסתרות, הדלפת מידע החוצה, הסלמת הרשאות וסיכוני שרשרת אספקה.

הרישיון הוא Apache-2.0, הדרישה היחידה היא Python בגרסה 3.12 ומעלה, וההתקנה היא פקודה אחת.

## למה בכלל צריך את זה

סקיל הוא לא תוסף תמים לדפדפן. זה טקסט והוראות, ולעיתים גם קוד, שהסוכן שלכם מריץ עם ההרשאות שלכם: הקבצים שלכם, שורת הפקודה, הכלים המחוברים והחשבונות שאליהם הסוכן מחובר.

**סוכן עם סקיל זדוני הוא לא צ'אטבוט שנתן תשובה גרועה. הוא סוכן עם הרשאות מלאות.**

המחקר שמצורף לפרויקט של NVIDIA מצא את המספרים הבאים:

- 26.1% מהסקילים שנבדקו הכילו חולשת אבטחה כלשהי
- 5.2% נראו זדוניים ממש
- סקיל שמכיל סקריפט הרצה נוטה להיות פגיע פי 2.12 מסקיל שהוא טקסט בלבד

## איך מתקינים

הדרך הפשוטה, דרך uv. פקודה אחת:

```bash
uv tool install git+https://github.com/NVIDIA/skillspector.git
```

לעדכון גרסה בהמשך:

```bash
uv tool update skillspector
```

אם אתם רוצים גם את תמיכת ה-MCP, התקינו את הגרסה עם התוספת:

```bash
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 מותקנים ומחוברים, אתם מקבלים את הניתוח הסמנטי בלי להוציא מפתח נוסף:**

```bash
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](https://github.com/NVIDIA/SkillSpector)
- התיעוד של NVIDIA: [docs.nvidia.com/skills](https://docs.nvidia.com/skills/scanning-agent-skills.html)
- מסד החולשות שהכלי מתשאל: [osv.dev](https://osv.dev)

---
קווין ליאקס מעביר סדנאות AI, הרצאות והטמעה לארגונים: https://kevinliaks.ai/workshops
