הדפדפן כדלת אחורית: חילוץ סודי של LLM בצד לקוח | B4N1

הדפדפן כדלת אחורית: חילוץ סודי של LLM בצד לקוח

1 month ago · b4n1 Read time: 4 min

הדפדפן כדלת אחורית: חילוץ סודי של LLM בצד לקוח לא מסודר

במשך זמן רב מדי, התייחסנו ל"אזהרות אבטחה של AI" כאל איומים רחוקים או קוריוז אקדמי. שמענו על הזרקה מיידית, פריצות לכלא ודליפת נתונים בטונים שקטים, שלעיתים אחריה משיכת כתפיים ו"נגיע לזה". עם זאת, הפגנות אינטראקטיביות האחרונות ניתצו את האשליה הנוחה הזו. זו כבר לא פגיעות תיאורטית; זהו ניצול חי, מבוסס דפדפן, בצד הלקוח לחילוץ מידע רגיש ממודלים של שפה גדולה (LLMs) [2]. אם אתה פורס יישומים המופעלים על ידי LLM, במיוחד כל מה שפונה לאינטרנט, "הבעיה העתידית" שלך פשוט הפכה לאחריות מאוד נוכחת, מאוד ציבורית ועשויה להיות מאוד מביכה.

זו לא עוד כותרת כללית של "AI זה מסוכן". זוהי הדגמה ספציפית ומוחשית לאופן שבו שחקן זדוני, באמצעות הדפדפן שלו בלבד, יכול להכריח את ה-LLM שלך לחשוף מידע רגיש. תחשוב על זה לרגע. לא מדובר בהתקפות מורכבות בצד השרת או בהתבוננות פנימית של מודלים. מדובר בשכבת האינטראקציה - הדלת הראשית של האפליקציה שלך - המנוצלת עם כמה דמויות מעוצבות בקפידה. זה המקבילה הדיגיטלית למישהו שיוצר את הביטוי הנכון לצ'אטבוט המאובטח שלך כביכול, והוא מוסר בצייתנות נתונים קריטיים, לעתים קרובות טיפין טיפין.

האשליה של אבטחת מודל

ארגונים רבים השקיעו רבות ב-LLM "מאובטח", או בכוונון עדין של מודלים קנייניים או בהסתמכות על ממשקי API ברמה ארגונית עם מעקות בטיחות כביכול. ההנחה הסמויה היא שאם המודל עצמו חזק, האפליקציה שנבנתה עליו תירש את האבטחה הזו. ההפגנות האחרונות חושפות זאת כתפיסה מוטעית מסוכנת. הפגיעות אינה באינטליגנציה הליבה של המודל או בנתוני ההדרכה שלו; זה נמצא בממשק שאנחנו בונים סביבו [1]. זו הבעיה הקלאסית של "כספת חזקה, דלת כניסה דקיקה". אולי יש לך את ה-LLM המתקדם והקשיח ביותר בעולם, אבל אם מנתח הקלט של האפליקציה שלך נאיבי, או שמסנן הפלט שלך לא קיים, אתה בעצם משאיר מידע קריטי חשוף לכל אחד.

טכניקת "הזרקה מהירה" זו מדאיגה במיוחד מכיוון שהיא ממנפת את האופי המובנה של ה-LLM: יכולתו לעקוב אחר הוראות ודפוסים מלאים. על ידי הזרקת קידומת שנבנתה בקפידה לקלט של משתמש, התוקף יכול לתמרן את המצב הפנימי של המודל, ולאלץ אותו לחשוף מידע שמעולם לא נועד [3]. היבט ה"ביט אחד" או האיטרטיבי הוא מכריע כאן. זה מרמז על הסתננות מתודית ומבוקרת, לא רק מזבלה של נתונים כאוטית. תארו לעצמכם תוקף ששואל באופן איטרטיבי, "האם הדמות הראשונה של הסוד היא 'A'?" ואז "האם זה 'B'?" וְכֵן הָלְאָה. זה איטי, כן, אבל זה גם יעיל להפליא וקשה לזהות אם אתה לא מחפש את זה במיוחד.

הדפדפן שלך, הנשק שלהם

העובדה שמדובר בניצול מבוסס דפדפן משנה את המשחק לחלוטין. זה אומר:

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

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

האחריות היא שלך

זו לא בעיה עבור ספקי דגמים כמו OpenAI או Google לתקן בעדכון הדגם הבא שלהם. זוהי בעיית אבטחת יישומים, והאחריות להפחתה נופלת על כתפיהם של מפתחים, צוותי אבטחה ו-CTOs שפורסים מערכות אלו. ה-LLM שלך הוא מנוע חזק, אך בסופו של דבר נאיבי. הוא יעשה את מה שאומרים לו, גם אם ההוראות האלה מוסתרות בתוך קלט משתמש תמים לכאורה.

אז מה אתה עושה עכשיו?

אמצעי נגד מיידיים:

  1. חיטוי קלט אגרסיבי: זה מעבר למניעת הזרקת SQL או XSS. אתה צריך לבחון את כל דמות הנכנסת ללימודי LLM שלך. חפש דפוסים המעידים על הזרקה מיידית, רצפי דמויות יוצאי דופן או ניסיונות לצאת מזרימות שיחה צפויות [4]. לא מדובר בחסימת "מילים רעות"; מדובר בזיהוי הנחיה יריבות. מעבר לניתוח רגקס בסיסי וניתוח היוריסטי, יישם ניתוח סמנטי כדי לזהות כוונות זדוניות. השתמש בניתוח אסימון והטמעה כדי לזהות דפוסי קלט חריגים. שקול להשתמש ב-LLM משני, קטן יותר או מערכת מבוססת כללים שהוכשרה במיוחד לאיתור ניסיונות הזרקה מיידיים. חפש דפוסים כמו הוראות משחק תפקידים, בקשות לחילוץ נתונים מפורשות או ניסיונות לעקוף הוראות קודמות.
  2. סינון ואימות פלט חזקים: לעולם אל תסמוך על הפלט של ה-LLM באופן מרומז. לפני שטקסט שנוצר על ידי LLM מוצג למשתמש או בשימוש על ידי מערכת אחרת, הוא חייב לעבור דרך שכבת אימות קפדנית. האם הוא מכיל מילות מפתח רגישות? האם זה תואם לפורמטים הצפויים? האם הוא מנסה להפעיל קוד או לחשוף הנחיות מערכת פנימיות? אם ה-LLM שלך אמור לסכם מסמך, אבל הוא מתחיל לרשום נתיבי קובץ, יש לך בעיה.
  3. Layered Prompt Engineering: אמנם לא פתרון שלם, אך הנחיות מערכת מתוכננות היטב ודוגמאות מועטות יכולות לעזור לחזק את ההתנהגות הרצויה ולהקשות על התוקף לחטוף את המודל. עם זאת, הבינו שהנדסה מהירה בלבד אינה מספיקה; זו הגנה לעומק, לא מגן ראשוני.
  4. הרשאות המינימליות ביותר לאינטראקציות ב-LLM: האם ה-LLM שלך באמת זקוק לגישה לכל פיסת נתונים שהיא עשויה להתבקש לחשוף? הטמעת בקרות גישה קפדניות. אם ה-LLM אמור לענות רק על שאלות לגבי תיעוד ציבורי, ודא שאין לו גישה פרוגרמטית לבסיסי נתונים פנימיים או ממשקי API רגישים.
  5. ניטור וזיהוי חריגות: עליך לחפש באופן פעיל אחר התנהגות חריגה של LLM. עליות בסוגים ספציפיים של שאילתות, פלטים החורגים מדפוסים רגילים או ניסיונות חוזרים ונשנים לחלץ מידע צריכים להפעיל התראות מיידיות.

זה כבר לא קשור ל"אבטחת AI" רחבה. מדובר באבטחת שכבת האינטראקציה של יישומי ה-LLM שלך כנגד וקטור התקפה ספציפי, מוכח וניתן לניצול מיידי. בנינו את המערכות המדהימות והעוצמתיות הללו, לעתים קרובות עם אמצעי אבטחה לא נאותים בממשק. ההפגנות האחרונות הראו לנו בדיוק כמה קל לנצל את הפערים האלה. הזמן לדיונים תיאורטיים עבר. נדרשת פעולה מיידית לאבטחת יישומי LLM.

מקורות

[1] OWASP Top 10 עבור יישומי מודל שפה גדולים - https://owasp.org/www-project-top-10-for-large-language-model-applications/ [2] Lakera Gandalf: An Interactive Prompt Injection Challenge - https://gandalf.lakera.ai/ [3] התקפות הזרקה מיידיות | האקדמיה לאבטחת אינטרנט - https://portswigger.net/web-security/llm-attacks/prompt-injection [4] מהי הזרקה מהירה וכיצד ניתן למנוע אותה? — https://www.tenable.com/blog/what-is-prompt-injection-and-how-to-prevent-it


Have Questions?

Let's Talk

Contact me on LinkedIn