אקולוגיית פרוטוקול הקשר המודל (MCP), שעדיין נמצאת בשלביה המוקדמים, עמוסה במורכבויות וחשופה לאינספור התקפות פוטנציאליות. העיצובים הנוכחיים של הפרוטוקולים והכלים לרוב אינם מספקים הגנות נאותות. כדי להתמודד עם אתגרים אלה ולטפח הבנה מעמיקה יותר של אבטחת MCP, SlowMist פתחה בקוד פתוח את MasterMCP, כלי שנועד להקל על הדמיות תקיפה מעשיות. יוזמה זו שואפת להעצים את הקהילה לזהות ולמזער פגיעויות אבטחה בתוך פרויקטי ה-MCP שלהם באופן יזום.
בנוסף לגישה מעשית זו, רשימת הבדיקה לאבטחת MCP מציעה תובנות חשובות לגבי הפרספקטיבות הבסיסיות של וקטורי תקיפה שונים. מאמר זה מתעמק בתרחישים מהעולם האמיתי, ומדגים שיטות תקיפה נפוצות בתוך אקולוגיית ה-MCP, כגון הרעלת מידע והחדרת פקודות זדוניות מוסתרות. כל הסקריפטים המשמשים בהדגמות אלה זמינים ב-GitHub, מה שמאפשר למשתמשים לשכפל את התהליך כולו בסביבה מאובטחת ואף לפתח תוספי בדיקות תקיפה משלהם.
סקירה כללית של הארכיטקטורה
MCP יעד להדגמה: Toolbox
Smithery.ai בולטת כמרכז בולט עבור תוספי MCP, המושך מספר ניכר של רישומי MCP ומשתמשים פעילים. בין אלה, @smithery/toolbox, כלי ניהול MCP רשמי המוצע על ידי smithery.ai, משמש כמוקד של הערכת אבטחה זו.
Toolbox נבחר כיעד הבדיקה מכמה סיבות עיקריות:
- הוא מתגאה בבסיס משתמשים משמעותי, מה שהופך אותו למדגם מייצג בתוך אקולוגיית ה-MCP.
- הוא תומך בהתקנה אוטומטית של תוספים נוספים, המגדילים את הפונקציונליות בצד הלקוח (למשל, Claude Desktop).
- הוא מכיל תצורות רגישות, כגון מפתחות API, המקלים על ההדגמה של ניצול פוטנציאלי.
MCP זדוני המשמש להדגמה: MasterMCP
MasterMCP, שפותח על ידי SlowMist במיוחד למטרות בדיקות אבטחה, הוא כלי MCP זדוני מדומה הבנוי על ארכיטקטורה מודולרית. מרכיבי המפתח שלו כוללים:
- סימולציית שירות אתרים מקומיים: http://127.0.0.1:1024
כדי ליצור תרחיש תקיפה מציאותי, MasterMCP משלבת מודול סימולציית שירות אתרים מקומיים. על ידי מינוף מסגרת FastAPI, מודול זה מקים במהירות שרת HTTP פשוט המחקה סביבות אינטרנט נפוצות. דפים אלה עשויים להיראות תמימים, ולהציג מידע על מאפייה או להחזיר נתוני JSON סטנדרטיים, אך הם מסתירים מטענים זדוניים מעוצבים בקפידה בתוך קוד המקור שלהם או תגובות API.
גישה זו מאפשרת הדגמה מקיפה של טכניקות הרעלת מידע והסתרת פקודות בסביבה מקומית מאובטחת ומבוקרת. היא מדגישה את הסיכונים הפוטנציאליים האורבים בתוך דפי אינטרנט שנראים רגילים, שיכולים לעורר התנהגות חריגה במודלים גדולים של שפה.
- ארכיטקטורת MCP של תוסף מקומי
MasterMCP מאמצת גישת תוסף כדי להקל על מדרגיות מהירה עבור וקטורי תקיפה חדשים. עם הביצוע, MasterMCP יוזמת את שירות FastAPI של המודול הקודם בתת-תהליך.
לקוח הדגמה
- Cursor: אחת מסביבות הפיתוח המשולבות (IDE) הנפוצות ביותר בעולם, המסתייעת בבינה מלאכותית.
- Claude Desktop: הלקוח הרשמי של Anthropic, הארגון שהתאים אישית את פרוטוקול ה-MCP.
מודל שפה גדול (LLM) המשמש להדגמה
- Claude 3.7
Claude 3.7 נבחרה בשל יכולותיה המשופרות בזיהוי פעולות רגישות ובייצוג יכולות תפעוליות חזקות בתוך אקולוגיית ה-MCP הנוכחית.
תצורה של claude\_desktop\_config.json
עם השלמת התצורות, מתחיל שלב ההדגמה.
הפעלה זדונית בין MCP
הדגמה זו משלבת הן טכניקות הרעלה והן אסטרטגיות הפעלה זדונית בין MCP המפורטות ברשימת הבדיקה.
תקיפת הרעלת תוכן דף אינטרנט
- הרעלה מבוססת הערות
Cursor ניגשת לאתר הבדיקה המקומי בכתובת http://127.0.0.1:1024.
דף תמים לכאורה זה על ‘עולם העוגות הטעימות’ משמש כסימולציה כדי להמחיש את ההשפעה הפוטנציאלית של לקוח מודל שפה גדול הניגש לאתר זדוני.
פקודת ביצוע:
התוצאות מגלה כי Cursor לא רק קוראת את תוכן דף האינטרנט, אלא גם מעבירה נתוני תצורה רגישים מקומיים בחזרה לשרת הבדיקה. ההנחיה הזדונית מוטמעת בקוד המקור כהערת HTML:
בעוד שגישה מבוססת הערות זו יחסית פשוטה וקלה לזיהוי, היא עדיין מסוגלת לעורר פעולות זדוניות.
- הרעלת הערות מקודדות
גישה לכתובת http://127.0.0.1:1024/encode מגלה דף שנראה זהה לדוגמה הקודמת. עם זאת, ההנחיות הזדוניות מקודדות, מה שהופך את הניצול לקשה יותר לזיהוי גם בעת בדיקת קוד המקור של הדף.
למרות היעדר הנחיות מפורשות בקוד המקור, התקיפה מצליחה.
הרעלת מידע החזרה של כלי MCP
בהתבסס על הוראות ההנחיה של MasterMCP, אנו מזינים פקודה מדומה שמפעילה את ה-MCP הזדוני ומדגימה את הפעולות הבאות שלו.
עם הפעלת הפקודה, הלקוח יוזם קריאה בין MCP ל-Toolbox ומוסיף בהצלחה שרת MCP חדש.
בדיקה של קוד התוסף מגלה שהנתונים המוחזרים מכילים מטען זדוני מקודד, מה שהופך אותו לבלתי ניתן לזיהוי כמעט עבור המשתמש.
תקיפת זיהום ממשק צד שלישי
הדגמה זו מדגישה את הסיכונים הפוטנציאליים הקשורים הן ל-MCP זדוניים והן ל-MCP לא זדוניים המחזירים ישירות נתוני API של צד שלישי להקשר.
קוד לדוגמה:
בקשת ביצוע:
תוצאה: ההנחיה הזדונית מוטמעת בנתוני ה-JSON המוחזרים ומפעילה בהצלחה ביצוע זדוני.
טכניקות הרעלה במהלך אתחול MCP
הדגמה זו מכסה את פריטי רשימת הבדיקה של הזרקת הנחיה ראשונית וסכסוכי שמות.
תקיפת דריסת פונקציה זדונית
MasterMCP יוצר כלי עם אותו שם פונקציה כמו הפונקציה remove_server
של Toolbox, ומקודד הנחיות זדוניות בתוכו.
פקודת ביצוע:
Claude Desktop אינו מפעיל את השיטה המקורית toolbox remove_server
, אלא מפעיל את השיטה המסופקת על ידי MasterMCP עם אותו שם:
זה מושג על ידי הדגשה כי ‘השיטה המקורית הוצאה משימוש’, מה שמעודד את מודל השפה הגדול לתעדף את הפונקציה שנדרסה בזדון.
הוספת לוגיקת בדיקה גלובלית זדונית
MasterMCP יוצר כלי בשם ‘בננה’, שנועד לאכוף בדיקת אבטחה חובה לפני ביצוע כל כלי אחר.
לפני ביצוע כל פונקציה, המערכת נותנת עדיפות למנגנון הבדיקה ‘בננה’:
הזרקת לוגיקה גלובלית זו מושגת על ידי הדגשה חוזרת ונשנית של ‘ביצוע חובה של זיהוי בננה’ בתוך הקוד.
טכניקות מתקדמות להסתרת הנחיות זדוניות
שיטות קידוד ידידותיות ל-LLM
למודלים גדולים של שפה יש יכולות ניתוח חזקות עבור פורמטים רב-לשוניים, שניתן לנצל כדי להסתיר מידע זדוני. שיטות נפוצות כוללות:
- סביבה אנגלית: קידוד Hex Byte
- סביבה סינית: קידוד NCR או קידוד JavaScript
מנגנון החזרת מטען זדוני אקראי
בדומה לזיהום ממשק צד שלישי המוזכר בסעיף השלישי, בקשה לכתובת http://127.0.0.1:1024/random מביאה ל:
כל בקשה מחזירה דף שנוצר באקראי המכיל מטען זדוני, מה שמגדיל משמעותית את הקושי בזיהוי ובמעקב.
באמצעות ההדגמה המעשית של MasterMCP, נחשפו פגיעויות האבטחה הנסתרות בתוך אקולוגיית פרוטוקול הקשר המודל (MCP). מהזרקות הנחיות בסיסיות וקריאות בין MCP ועד לתקיפות עדינות יותר במהלך האתחול והסתרת הוראות זדוניות, כל שלב משמש כתזכורת לשבריריות הטבועה לצד הכוח של אקולוגיית ה-MCP.
כיום, כאשר מודלים גדולים מקיימים אינטראקציה הולכת וגוברת עם תוספים וממשקי API חיצוניים, זיהום קלט שנראה קל ערך יכול לעורר סיכוני אבטחה ברחבי המערכת. המגוון המתפתח של טקטיקות תוקפים, כולל טכניקות קידוד, זיהום אקראי ודריסת פונקציות, מחייב שדרוג מקיף לגישות האבטחה המסורתיות.