סמכות מוגזמת היא פגיעות שמתרחשת כשמודל גדול של שפה (LLM) מקבל יכולות מיותרות או מתירות מדי לאינטראקציה עם מערכות אחרות. כשמודל LLM יכול להפעיל כלים, תוספים או פונקציות חיצוניים (ה'סוכנות' שלו), הפגיעות הזו מאפשרת לו לבצע פעולות לא מכוונות, לא מורשות ועלולות להיות מזיקות. תוקף יכול לנצל את זה באמצעות הזרקת הנחיות או טכניקות מניפולציה אחרות כדי לגרום למודל ה-LLM להשתמש בסמכות שניתנה לו למטרות תוכנה זדונית. הבעיה המרכזית היא לא רק שמודל ה-LLM יכול לבצע פעולות, אלא שההיקף של הפעולות האלה רחב מדי והשליטה בהן לא מספיק טובה.
למה מפתחי Android צריכים להתעניין בזה
מתן סמכויות מוגזמות למודל שפה גדול (LLM) באפליקציה ל-Android עלול להוביל לאירועי אבטחה חמורים:
- גישה לא מורשית למערכת: תוקף יכול להנחות את ה-LLM לגשת לקבצים במכשיר המקומי עם Android (לדוגמה, מסמכים של המשתמש, נתוני אפליקציות) או למשאבי רשת מחוברים, לשנות אותם או למחוק אותם, אם למודל יש את היכולת וההרשאות המתאימות ב-Android לעשות זאת.
- זליגת נתונים: יכול להיות שמישהו ינסה להערים על מודל ה-LLM כדי שיקרא מידע אישי רגיש ממסדי נתונים מקומיים של אפליקציות (כמו Room), מ-SharedPreferences או מממשקי API פנימיים, ואז יעביר את המידע הזה למקור חיצוני (לדוגמה, ישלח אותו באמצעות קריאה ל-API או פונקציית אימייל). המודל יכול גם לחשוף מידע רגיש שהוא ספג במהלך שלב האימון, או מידע רגיש שהמשתמש מספק בהנחיה.
- פגיעה בפונקציות או במערכות אחרות: אם ל-LLM יש שליטה בפונקציות אחרות (לדוגמה, שליחת SMS, ביצוע שיחות, פרסום ברשתות חברתיות באמצעות כוונות משתמעות, שינוי הגדרות המערכת, ביצוע רכישות בתוך האפליקציה), תוקף יכול להשתלט על הפונקציות האלה כדי לשלוח ספאם, להפיץ מידע כוזב או לבצע עסקאות לא מורשות, מה שיוביל להפסד כספי ישיר או לפגיעה במשתמש.
- מניעת שירות: יכול להיות שיינתנו למודל שפה גדול הוראות לבצע פעולות שדורשות הרבה משאבים שוב ושוב בתוך האפליקציה או מול שירותי בק-אנד, כמו הפעלת שאילתות מורכבות במסד נתונים או קריאה ל-API בלולאה, מה שיוביל לחוסר תגובה של האפליקציה, להתרוקנות הסוללה, לשימוש מוגזם בחבילת הגלישה או אפילו למניעת שירות למערכות בק-אנד.
פתרונות למפתחי אפליקציות ל-Android
השבתה זמנית של אותות אכיפה עבור סמכויות מוגזמות באפליקציות ל-Android מתמקדת בהחלת העקרון של הרשאות מינימליות לכל כלי ופונקציה שלמודל ה-LLM יש גישה אליהם או שהוא יכול להפעיל אותם.
הגבלת ארגז הכלים של ה-AI (פונקציות גרנולריות לעומת פונקציות פתוחות):
- מספקים כלים מינימליים: למודל ה-LLM צריכה להיות גישה רק לכלים הספציפיים (פונקציות, ממשקי API, כוונות) שהוא צריך כדי לבצע את העבודה באפליקציה. אם הוא לא צריך לגשת לאינטרנט או לשלוח אימייל, אל תאפשרו לו את הפעולות האלה.
- שימוש בכלים פשוטים עם מטרה אחת: עדיף לתת ל-LLM כלי שיכול לבצע רק פעולה ספציפית אחת (למשל, 'קריאת סוג ספציפי של הגדרת משתמש') במקום כלי רב-עוצמה ופתוח שיכול לבצע כל פעולה (למשל, 'הפעלת כל פקודת מעטפת').
הגבלת היכולות של ה-AI
- הרשאות Android מפורטות: כשפונקציה שמופעלת על ידי LLM מבצעת אינטראקציה עם משאבי מערכת של Android או עם אפליקציות אחרות, צריך לוודא שהאפליקציה מבקשת ומחזיקה רק את ההרשאות המינימליות הנדרשות של Android.
- הרשאות לכל משתמש: כשמודל ה-LLM מבצע פעולה בשם המשתמש, הוא צריך לעשות זאת עם ההרשאות וההקשר הספציפיים של המשתמש, ולא עם חשבון רחב יותר ברמת האפליקציה, שיכול להיות חשבון אדמין. כך מוודאים שמודל ה-LLM לא יכול לעשות שום דבר שהמשתמש לא יכול לעשות בעצמו.
שומרים על שליטה אנושית (הסכמת משתמש לפעולות קריטיות)
- דרישה לאישור המשתמש: לכל פעולה חשובה או מסוכנת שמודל LLM עשוי להציע או לנסות לבצע (לדוגמה, מחיקת נתונים, ביצוע רכישות בתוך האפליקציה, שליחת הודעות, שינוי הגדרות קריטיות), תמיד צריך לדרוש אישור מפורש של אדם באמצעות תיבת דו-שיח לאישור בממשק המשתמש. אפשר לחשוב על זה כמו על החלטה חשובה שצריך לקבל לגביה אישור מהמנהל.
סומכים אבל בודקים (אימות של קלט/פלט ומערכות עורפיות חזקות)
- אבטחת בק-אנד: אל תסתמכו רק על מודל ה-LLM כדי להחליט אם פעולה מסוימת מותרת. לכל שירותי קצה עורפי או ממשקי API שאליהם מתחברות הפונקציות שהופעלו על ידי מודל שפה גדול (LLM) צריכים להיות מנגנוני אימות, הרשאה ואימות קלט חזקים משלהם, כדי לבדוק כל בקשה ולוודא שהיא לגיטימית ועומדת בפרמטרים הצפויים.
- ניקוי נתונים: כמו במקרים של נקודות חולשה אחרות, חשוב מאוד לבצע סניטציה ואימות של הקלט שמוזן ל-LLM ושל הפרמטרים שנוצרים על ידי ה-LLM עבור קריאות לפונקציות, כדי לזהות הוראות זדוניות או פלט לא צפוי לפני ביצוע פעולה כלשהי.
סיכום
סמכות מוגזמת היא פגיעות קריטית שבה למודל שפה גדול יש הרשאות רחבות מדי לאינטראקציה עם מערכות או פונקציות אחרות, מה שמאפשר להטעות אותו ולגרום לו לבצע פעולות מזיקות. באפליקציות ל-Android, מצב כזה עלול להוביל לגישה לא מורשית לנתונים, לפגיעה במערכת, להפסדים כספיים או לפגיעה במשתמשים. השבתה זמנית של אותות אכיפה מתבססת במידה רבה על העיקרון של הרשאות מינימליות: הגבלה קפדנית של הכלים וההרשאות של Android שזמינים ל-LLM, אימות שלכל כלי יש פונקציונליות מינימלית וספציפית, ודרישה לאישור אנושי לכל הפעולות בעלות ההשפעה הגבוהה.