גישה חדשה מאלצת סוכן בדיקת חדירות (pentest) מבוסס LLM להוכיח פריצה במקום רק לטעון לה, באמצעות nonces של אתגר-תגובה (challenge-response) המסירים התראות שווא (false positives). הטכניקה, שהודגמה במסגרת (framework) HALO, הופכת את "נראה שקיבלנו shell" ל-"באמת יש לנו shell".

למה פריצות עם התראות שווא הן בעייתיות

מנועי ניצול (exploitation) אוטומטיים הבנויים על מודלי שפה גדולים יכולים לייצר עשרות פריצות פורטים "מוצלחות" בהרצה אחת. שירותים רבים מחזירים מחרוזות כמו "uid=0" ב-banners, ויעד מתוכנן יכול לחקות את הפלטים הללו מבלי להריץ מעולם את הקוד של התוקף. כאשר הסוכן סומך על ההחזרים הללו, כל החלטה עוקבת – בין אם מדובר בביצוע pivot, חילוץ נתונים (exfiltration) או תנועה רוחבית (lateral movement) – נשענת על שקר. צוותי אבטחה מבזבזים שעות על מרדף אחרי נקודות חדירה רפאים, ומגיבים לאירועים (incident responders) עלולים לתת עדיפות שגויה לאיומים אמיתיים.

הפיכת טענה להוכחה

הפתרון שואב השראה משיטות אימות קלאסיות. לפני השקת ה-exploit, מערכת התוקף מייצרת טוקן ייחודי, או nonce, ומטמיעה אותו בתוך ה-payload. ה-exploit חייב להחזיר את הטוקן המדויק כדי שהבקר (controller) יקבל את התוצאה כפריצה אמיתית. banner מזויף אינו יכול לנחש את ה-nonce; הוא חייב להריץ את הקוד של התוקף כדי להטמיע את הטוקן בתגובה. אם הנתונים המוחזרים אינם כוללים את ה-nonce המתאים, הניסיון נפסל כהתראה שגויה.

שינוי זה משנה את מודל האימות מ-"הפלט נראה תקין" ל-"הפלט מוכיח הרצה". הוא מסיר את הנטייה לאופטימיות (optimism bias) המכה בכלי תקיפה אוטונומיים.

בניית סולם אספקה אמין

הבאת ה-payload ליעד עדיין דורשת שרשרת אספקה מוצקה. HALO מסווגת שלושה נתיבים נפוצים:

  • Reverse shells – המארח שנפרץ יוזם חיבור חזרה ל-listener שהתוקף שולט בו. שימושי כאשר תעבורה נכנסת (inbound) חסומה.
  • Bind shells – התוקף מתחבר ישירות לשירות המאזין (listening service) ביעד. עובד כאשר מסנני תעבורה יוצאת (outbound) הם רפויים.
  • Blind callbacks – אות חד-כיווני (למשל, בקשת DNS) המאשר הרצה בסביבות מוגבלות מאוד שבהן לא ניתן לפתוח ערוץ ישיר.

כל שלב בסולם חייב לשמר את ה-nonce, אחרת שלב ההוכחה ייכשל בשלבים הבאים (downstream).

הבטחת exploits עצמאיים (self-contained)

מקור נוסף לביטחון שווא הוא הסתמכות על ספריות חיצוניות שייתכן ואינן קיימות ביעד. HALO אורזת כל רכיב נדרש לקובץ יחיד לפני המשלוח. החבילה נבדקת לאחר מכן ב-sandbox שחסרות בו במכוון התלויות (dependencies) המקוריות. אם ה-exploit עדיין רץ, ה-artifact הוא אכן עצמאי (self-contained) וניתן לסמוך עליו במערכת נעולה (locked-down).

ניקוי עקבות הפיתוח

במהלך ההכנה לשחרור ציבורי, המחבר גילה כתובות IP אמיתיות שנותרו בהיסטוריית ה-Git. עץ עבודה (working tree) נקי אינו מוחק את הרשומות הללו; Git שומר כל commit. המחבר כתב מחדש את המאגר (repository) לכדי commit נקי יחיד והחליף את הכתובות שדלפו בטווחים המיועדים לתיעוד בלבד כפי שהוגדרו ב-RFC 5737 (למש למשל, 192.0.2.0/24). הדבר מונע חשיפה מקרית של תשתית ייצור (production) כאשר הכלי משותף.

כללים מעשיים לכלי אבטחה

  • השתמש בטווחֵי IP המיועדים לתיעוד בלבד בכל fixture של בדיקה.
  • הסר סודות (secrets) וקבצי הגדרת היקף (scope files) מה-commit הראשוני.
  • החל nonces של אתגר-תגובה כדי לאמת כל טענה לפריצה.
  • אמת את הקובץ המדויק שיישלח, ולא סקריפט הקשור אליו באופן רופף.

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