אבטחת סוכנים בקצוות הלקוח של Perplexity באמצעות Numbat

Numbat היא חבילת אבטחת הסוכנים בקוד פתוח של Perplexity עבור קצוות לקוח. היא מזהה, מונעת וחקורת התנהגות זדונית של סוכני בינה מלאכותית ב-macOS, Linux ו-Windows.

מחבריםPerplexity Secure Intelligence Institute

סוכני בינה מלאכותית חייבים להיות מאובטחים כדי להיות שימושיים. ככל ששכלול יכולות המודל והמערכת מתקדם, כך גוברת גם הערנות הנדרשת כדי להגן על המשתמשים.

מחקר אבטחת הסוכנים המוקדם התמקד בהזרקות הנחיות (prompt injections) ובצורות אחרות של קלטים עוינים. עם זאת, התקדמות חדשה באוטונומיה של סוכנים מעוררת אירועי אבטחה שאינם מחייבים קיומם של קלטים עוינים – או יריבים אנושיים כלל.

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

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

מבוא

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

פריסות סוכנים בקצוות לקוח, כגון סוכני קידוד מבוססי CLI או אפליקציית שולחן עבודה, מגיעות עם רמות שונות של ארגז חול ובידוד. משתמשים מנצלים סוכנים אלו עבור אינספור מקרי שימוש, שלכל אחד מהם מרחב פעולה נלווה משל עצמו העשוי להשפיע על נקודת הקצה עצמה או על מערכות אחרות הנגישות מנקודת הקצה. יותר ויותר, מצפים מסוכנים לפעול באופן אוטונומי במשך שעות או אפילו ימים. עבור תהליכי עבודה אלו, משתמשים רבים בוחרים להאציל אישורי פעולות סוכנים לממיינים, או לעקוף אישורי פעולות לחלוטין באמצעות דגלי תצורה בעלי שמות מעוררי דאגה כגון --dangerously-skip-permissions ו---yolo. ריבוי מקרי השימוש והתצורות של הסוכנים, בשילוב עם מגוון הפעולות שסוכני קידוד יכולים לבצע בקצוות בעלי הרשאות, יוצר פרופיל סיכון המחור ניהול יזום על ידי צוותי אבטחה.

היום אנו משיקים את Numbat, חבילת אבטחת סוכנים בקוד פתוח שבנינו כדי לזהות, לחקור ולמנוע פעילות מסוכנת מצד סוכני AI. ככל שיותר חברות מאמצות מוצרי סוכנים מתקדמים, Numbat מעניק לצוותי האבטחה את היכולת לעמוד בקצב אתגרי האבטחה הנובעים מכך. הוא משתלב בכל אחד ממסגרות העבודה של סוכנים בצד הלקוח הנפוצות ביותר, תוך חשיפת ממשק עקבי בכל כולן. Numbat משחרר אפוא את צוותי האבטחה מהנטל של בניית אמצעי הגנה וכלי ניטור מותאמים אישית לכל סוכן בודד שעליו נשענים המשתמשים שלהם. Numbat זמין לאקוסיסטם המגנים במסגרת החברות של Perplexity ב־Open Secure AI Alliance עם NVIDIA וארגונים נוספים.

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

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

מיפוי נוף פגיעות

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

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

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

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

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

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

אבטחת סוכני קידוד באמצעות אינטגרציות מעטפת מקומיות

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

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

נקודות האינטגרציה המרכזיות בין Numbat לבין מעטפת סוכנים הן ווים (hooks), תוצרי הפעלה וטלמטריה של OTLP. נדון בכל אחד מהם בתורו.

ווים (Hooks)

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

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

ברוב סוכני הקידוד, סוגים מסוימים של hooks (שכונו בדרך כלל “hooks טרום־פעולה”) מסוגלים גם לחסום את ביצוע הפעולה הבאה של הסוכן. באמצעות hooks טרום־פעולה אלה, Numbat מסוגל ליישם לא רק לוגיקת זיהוי אלא גם כללי אבטחה מונעים כדי לעצור התמוטטות עוד לפני שהיא מתרחשת.

תוצרי הפעלה

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

תוצרי הפעלה כוללים סוגים רבים של יומנים (logs) ואבחונים. אולי סוג היומן החשוב ביותר הוא תמליל ההפעלה, המתעד את שיחות מודל השפה הגדול (LLM) המכתיבות את רצף הפעולות של הסוכ. משתמשי כוח של סוכני קידוד כבר רגילים לייצא תמלילי הפעלה לצורך ניתוח נוסף באמצעות פקודות המסופקות על ידי המעטפת. אך ייצוא זה הוא בדרך כלל בפורמט טקסט פשוט (plaintext), שאינו מתאים לצוותי אבטחה הדורשים יומנים קריאים למכונה עם סכמה עקבית וצפויה.

Numbat מאחזר כך תוצרי הפעלה ישירות ממערכת הקבצים עצמה. מכיוון שרוב מסגרות העבודה של סוכנים בצד הלקוח מאחסנות את התוצרים המקוריים במערכת הקבצים (בדרך כלל בתוך ספריית נקודה ייעודית לסוכן תחת $HOME), גישה למערכת הקבצים מספקת את הנתיב הישיר ביותר לנתונים אלה, בצורה השימושית והנקייה ביותר שלהם. צוותי אבטחה המשתמשים ב־Numbat יכולים לאסוף תוצרים אלה בפורמט ציר זמן NDJSON מנורמל באמצעות numbat scan, לעיבוד מקומי על נקודת הקצה של הלקוח או לניתוח מרוחק אסינכרוני. מכיוון שתוצרי ההפעלה הם רשומות סטטיות ועצמאיות, Numbat מסוגל לשחזר את צירי הזמן הללו גם עבור הפעלות שהתרחשו זמן רב לפני ש־Numbat הותקן.

טלמטריה של OTLP

רוב מעטפות הסוכנים בצד הלקוח מציעות טלמטריה נרחבת באמצעות פרוטוקול OpenTelemetry (OTLP). טלמטריה זו מספקת בדרך כלל אותות רבים מעבר לאלו הזמינים דרך ווים או תוצרי הפעלה.

Numbat יכולה לתפקד כמקלט OTLP באמצעות הפקודה numbat collect. פקודה זו מפעילה שרת שאליו סוכני קידוד שולחים טלמטריה של OTLP לצורך ניתוח במורד הזרם. חשוב לציין ששרת זה מקומי ומאזין כברירת מחדל אך ורק ל-localhost, כלומר שכל הטלמטריה נשארת במכשיר כברירת מחדל. מנהלי אבטחה יכולים לאחר מכן לקבוע מה לעשות עם הטלמטריה שנרשמה, בין אם הדבר כרוך ביישום עיבוד קל משקל במכשיר, עיבוד מרחוק באמצעות numbat ship, או ניתוח מורכב יותר בפלטפורמות אנליטיקה כגון ClickHouse.

פריסת Numbat בתוך Perplexity

בתוך Perplexity, אנו משתמשים ב-Numbat כדי לאבטח את השימוש של המהנדסים שלנו בסוכני קידוד בצד הלקוח הכוללים את Claude Code, Codex, OpenCode ו-Pi.

גם מאמצי המניעה שלנו וגם מאמצי הזיהוי עושים שימוש נרחב בכללֵי Numbat, הממומשים באמצעות תת־מערכת ה־hook של כל סוכן. גיבשנו כמה כללי לחם־וחמאה לצרכים שלנו, שרבים מהם שחררנו כחלק מ־52 הכללים המובנים של Numbat. כללים אלה מאורגנים ב־11 קטגוריות התנהגות ובקבוצת זיהויי רצף מרובי־שלבים כגון גישה לסודות, חילוץ, הסלמת הרשאות ותנועה רוחבית. כללים משתמשים בביטויי CEL מעל אירועים מנורמלים, ומפעילים יכולים להוסיף כללים ובדיקות משלהם בלי לשנות את הקוד של Numbat.

לדוגמה, הכלל המובנה privilege.sudoers_tamper מזהה כתיבות למדיניות sudoers, שימוש ב־visudo, וניסיונות להתקין הענקות NOPASSWD. אלה פעולות עם אות חזק, שיכולות להפוך תהליך סוכן מוגבל לגישת root מתמשכת.

yaml
# privilege.sudoers_tamper (simplified for readability) id: privilege.sudoers_tamper severity: high expr: | ( event.event_type == "file.write" && event.file_path.matches("(^|/)etc/sudoers$|(^|/)etc/sudoers\\.d/[^/]+$") ) || ( event.event_type == "command.exec" && event.command.matches("\\bvisudo\\b|\\bNOPASSWD\\s*:") )

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

yaml
# chain.secret_manager_read_then_egress (simplified for readability) id: chain.secret_manager_read_then_egress severity: high sequence: within_events: 64 steps: - expr: | event.event_type == "command.exec" && event.command.matches("secretsmanager|get-secret|vault read") - expr: | event.event_type == "command.exec" && event.command.matches("curl.*(--data|--upload-file)|wget.*--post")

ניהול וניטור של Numbats בכל הצי

כמו Bumblebee, הסורק בקוד פתוח שלנו לחשיפת שרשרת אספקה בקצוות לקוח של מפתחים, Numbat פרוסה על פני הצי שלנו באמצעות MDM. כל Numbat מתעד את פעילות הסוכ מקומית ושולח טלמטריה מובנית למערכות האבטחה המרכזיות שלנו.

מנקודה זו ואילך, Perplexity Computer סוקרת ממצאים ויומני ביקורת עדכניים של Numbat בלוח זמנים חוזר עבור פעילות חשודה או זדונית. היא חוקרת זיהויים, משחזרת הפעלות סוכ רלוונטיות ומעניקה בדיקה קפדנית נוספת לפעולות ש-Numbat חסמה.

הצינור הפנימי של Perplexity לניטור טלמטריה של Numbat. משימת Perplexity Computer מתוזמנת סוקרת באופן אסינכרוני אותות והתראות חדשים על פעילות מסוכנת.

Computer מחפשת גם פערים בכיסוי שלנו. היא מנתחת התנהגות חדשה, מציעה שיפורים לזיהויים של Numbat, בודקת שינויים אלו ופותחת בקשות משיכה (pull requests) לבדיקה אנושית. לאחר אישור ופריסה, כללים אלו משפרים את הניטור בכל הצי ומייצרים ראיות טובות יותר לחקירה הבאה.

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

סיכום

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

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

Numbat זמינה היום כ-פרויקט קוד פתוח עבור macOS, Linux ו-Windows. קצוות הלקוח שלנו מאובטחים על ידי Numbat, מה שמאפשר לחברי צוות Perplexity להשתמש בביטחון בסוכנים במשימות בעלות היקף רחב וטווחים ארוכים. אנו מזמינים צוותי אבטחה בכל מקום לנצל את הגישה ברמת המערכת של Numbat לאבטחה והגנה על פריסות הסוכנים שלהם.

ציטוט

BibTeX
@online{perplexity2026SecuringAgentsAcrossPerplexitySClientEndpointsWithNumbat,
  author = {{Perplexity} and Adel Karimishiraz and Bex Brooker and Phi Hoang and Jerry Ma},
  title = {{Securing agents across Perplexity's client endpoints with Numbat}},
  date = {2026-07-29},
  url = {https://perplexity.coolkeypoint.com/hub/blog/securing-agents-across-perplexity-s-client-endpoints-with-numbat}
}