ההודעה הגיעה בבוקר ה-17 באוקטובר עם שורת נושא שלא מנסה לרכך כלום: "Action Required: Potential provider key breach". OpenCode, שמפתחת כלי פיתוח מבוסס בינה מלאכותית, הודיעה לחלק ממשתמשיה שמפתחות הגישה שהם שמרו אצלה לשירותים של OpenAI, Anthropic וגוגל עלולים היו להיחשף בפריצה. חלק מהם מדווחים מאז על חיובים שהם לא ביצעו.

מה קרה

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

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

לפי OpenCode מדובר ב-1.4% ממשתמשי Console, כולם כאלה שחיברו ספק חיצוני, וכל מי שלא קיבל מייל אישי אינו מושפע. המפתחות שנשמרים מקומית באפליקציית שורת הפקודה או בגרסת הדסקטופ לא היו שם, ולדברי אחד המייסדים, דקס ראד, הם "מעולם לא מגיעים אלינו".

הסכומים שמסתובבים מגיעים מהמשתמשים עצמם ולא מהחברה. אחד דיווח על 281 דולר שנשרפו במפתח של OpenAI ועוד 168 דולר במפתח של Anthropic, אחר העמיד את ההפסד שלו על 1,700 דולר, ומשתמש ברדיט דיווח על 400 דולר. OpenCode אומרת רק שהמפתחות "עלולים היו להיחשף", ולא אישרה שמפתח כלשהו הועתק או נוצל. היא גם לא פירטה מה הייתה אותה מערכת ותיקה, איך הגיעו אליה וכמה מפתחות היו בה. את האירוע היא קישרה למתקפת distillation, שאיבה של תשובות מודל בהיקף עצום כדי לאמן מודל מתחרה, שדורשת המון חשבונות ומפתחות.

למה זה חשוב לכם

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

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

מה עושים?

קיבלתם את המייל הזה? בטלו את המפתח בממשק של הספק עצמו, ב-OpenAI, ב-Anthropic או בגוגל, והנפיקו חדש במקומו. מחיקה שלו מתוך Console לא מבטלת אותו.

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

בדקו את דוח השימוש והחיובים אצל הספק מה-16 באוקטובר והלאה וחפשו בקשות שלא אתם הרצתם. מצאתם? פנו לספק ובקשו החזר.

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

המפתח שמחקתם מהממשק ממשיך לעבוד. רק מי שהנפיק אותו יכול לכבות אותו.