האם אנחנו מוכנים לקוד שנוצר בינה מלאכותית? PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

האם אנחנו מוכנים לקוד שנוצר בינה מלאכותית?

בחודשים האחרונים התפעלנו מהאיכות של פרצופים שנוצרו על ידי מחשב, תמונות חתולים, סרטונים, חיבורים ואפילו אמנות. בינה מלאכותית (AI) ולמידת מכונה (ML) גלשו בשקט לפיתוח תוכנה, עם כלים כמו GitHub Copilot, Tabnine, Polycode, ואחרים לוקח את הצעד הבא ההגיוני של הצבת פונקציונליות השלמה אוטומטית של קוד קיימת על סטרואידי AI. עם זאת, בניגוד לתמונות חתולים, למקור, לאיכות והאבטחה של קוד האפליקציה יכולות להיות השלכות נרחבות - ולפחות לגבי האבטחה, מחקר מראה שהסיכון הוא אמיתי.

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

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

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

תסמונת סאטנב

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

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

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

בעיות אבטחת שרשרת האספקה

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

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

מלכודות רישוי וייחוס

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

שוב, מה אם יש לך קוד שנוצר ב-AI באפליקציה שלך שזהה במקרה לקוד הקוד הפתוח הקיים? אם הייתה לך ביקורת, האם היא תגלה שאתה משתמש בקוד ללא הייחוס הנדרש? או אולי אתה צריך לפתוח חלק מהקוד המסחרי שלך כדי להישאר תואם? אולי זה עדיין לא סיכון ריאלי עם הכלים הנוכחיים, אבל אלו סוג השאלות שכולנו צריכים לשאול היום, לא בעוד 10 שנים. (וכדי להיות ברור, ל-GitHub Copilot יש מסנן אופציונלי לחסום הצעות התואמות את הקוד הקיים כדי למזער את הסיכונים בשרשרת האספקה).

השלכות אבטחה עמוקות יותר

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

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

ומה לגבי מונו-תרבות? אם יישומים מרובים ישתמשו בסופו של דבר באותה הצעה פגיעה מאוד, לא משנה מה מקורה, אנו יכולים להסתכל על מגפות פגיעות או אולי אפילו פרצות ספציפיות לבינה מלאכותית.

לפקוח עין על AI

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

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

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

בול זמן:

עוד מ קריאה אפלה