פגיעות llms.txt: כיצד סוכני AI מתקינים באופן אוטומטי קוד זדוני באמצעות קבצי תיעוד
ביום חמישי, 27 באוגוסט,Ars Technica פרסמה תחקירזה אמור לגרום לכל מפתח המשתמש בסוכני קידוד AI לחשוב מחדש על האבטחה שלהם. חוקרים מחברת סטארט-אפ ישראלית סרקו 6,214 דומיינים השייכים לחברות Fortune 500, קבלני ביטחון וביג טק - ומצאו 120 קבצי llms.txt שגורמים לסוכני בינה מלאכותית להתקין אוטומטית חבילות לא קיימות מ-PyPI ו-npm.
הבעיה פשוטה ומפחידה: llms.txt הוא בעצם "robots.txt עבור AI" - קובץ מפת אתר שמסייע לסוכנים להבין במהירות את מבנה התיעוד. אבל המפרט אינו כולל אימות, אין חתימות, אין בדיקות תקינות. אם קובץ כזה מכיל pip install non-existent-package או npm install non-existent-package, ולסוכן יש הרשאה להפעיל פקודות - הוא פשוט יתקין את כל מה שכתוב שם.
איך זה עובד
החוקרים מצאו 8,265 קבצי llms.txt וllms-full.txt (אתרים רבים מארחים את שניהם). ב-120 מהם - על פני 120 דומיינים שונים - היו הפניות לחבילות או דומיינים שאינם קיימים ברישום. תוקף צריך רק לרשום שם כזה ולהעלות קוד זדוני.
כדי לאמת את המתקפה, החוקרים רשמו בעצמם כמה שמות "חינם" והציבו חבילות לא מזיקות שפשוט פינג לשרת שלהם עם "התחלתי". תוך שעה הם קיבלו תשובה מחברת Fortune 500. עם הזמן הגיעו עוד עשרות תגובות - מענקיות וסטארט-אפים אחרים. טלמטריית תהליך הראתה בדיוק מי התקין את החבילות:קלוד קוד, OpenAI Codex והרמס מ-Nous Research.

המקרה הכי מגעיל - clerk.com
באתר clerk.com הלגיטימי, הקובץ llms.txt הכיל npx clerk-next-fix-auth-protection. שלא כמו npm install רגיל, npx יכול להביא חבילה למטמון של npm ולבצע את הבינארי שלה מבלי להוסיף אותה למניפסט התלות של הפרויקט. מישהו הצליח לתבוע את השם החינמי הזה ולהעלות תוכנות זדוניות ממשיות. הפקיד תיקן את הבעיה, אבל הדפוס כבר בייצור.
למה זה לא רק "באג דגם"
זו לא הזיה או בריחה לארגז חול. הקובץ יושב בדומיין הרשמי של החברה, המוגש באמצעות HTTPS, בפורמט סטנדרטי המיועד לצריכת AI. לסוכן אין סיבה לפקפק בכך - התיקהואהרשות. הבעיה היא שתקן llms.txt (הוצע על ידי ג'רמי הווארד מ-Answer.AI בספטמבר 2024) אינו מכיל הוראות אבטחה כלשהן: אין חתימות, אין אימות מקור, אין אימות חבילה.
שרשרת האמון היא טרנזיטיבית: llms.txt לא חייב לשבת באתר של Fortune 500 עצמו - זה יכול להיות במסמכים של שותף, ב-SDK של ספק, במדריך ההתקנה של פרויקט קהילתי. אם הסוכן סומך על אותו צד שלישי, וצד שלישי זה מצביע על חבילה לא רשומה - הרשת פועלת באותו אופן.
מה לעשות עכשיו
- בְּדִיקָה.בדוק את
llms.txtואתllms-full.txtשלך. ודא שכל חבילה, תחום וכתובת אתר שהוזכרו קיימים, נמצאים בשליטתך ושיש להם מנהל מזוהה. הסר הפניות לתלות שאינך יכול להסביר מהזיכרון. - פרוקסי בין סוכנים ורישום.חסום חבילות חדשות (חבילות סלופסקוואטטיות הן חדשות בהגדרה), אכוף קירור של 24–72 שעות לאחר השחרור הראשון של כל תלות, אמת את
provenance(SLSA/Sigstore) לפני ההתקנה. - אל תיתן לסוכנים
--yolo,--dangerously-skip-permissions,--trust-all-tools.דגלים אלו קיימים כך שהמפתח לוקח אחריות. אם סוכן מתקין חבילות ללא אישורך - מסרת לו את המפתחות לתשתית שלך.
השורה התחתונה
המירוץ להפיכת אתרים קריאים לסוכנים פשוט התנגש במירוץ לניצול שרשרת אספקת התוכנה. זו לא אשמתו של דגם אחד או ספק אחד - זה פגם עיצובי בתקן שאף אחד לא חשב עליו כעל קוד הפעלה. עד שהתעשייה תאכוף אימות של מה שסוכנים קוראים באינטרנט, כל llms.txt גרוע הוא נקודת כניסה פוטנציאלית לרשת שלך.

רוצה לבדוק את זרימות העבודה של AI שלך לאבטחה? NeuralSpace מאפשר לך להפעיל סוכני יצירת קוד ובדיקה בסביבה מבודדת -נסה את הצ'אטאוֹמצב קוד.