הרעלת חפצים בפעולות GitHub מייבאת תוכנה זדונית דרך צינורות תוכנה

צומת המקור: 1769941

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

כך לפי חברת אבטחת שרשרת אספקת התוכנה Legit Security, שאמרה בייעוץ שפורסם ב-1 בדצמבר כי חולשת "הרעלת חפץ" זו עלולה להשפיע על פרויקטי תוכנה המשתמשים ב-GitHub Actions - שירות לאוטומציה של צינורות פיתוח - על ידי הפעלת תהליך הבנייה כאשר מזוהה שינוי בתלות בתוכנה. 

הפגיעות אינה תיאורטית: Legit Security דימה התקפה על הפרויקט המנהל את Rust, מה שגרם לפרויקט להידור מחדש באמצעות גרסה מותאמת - וזדונית - של ספריית התוכנה הפופולרית GCC, כך ציינה החברה בייעוץ.

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

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

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

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

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

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

GitHub אישר את הבעיה ושילם פרס עבור המידע, בעוד Rust תיקנה את הצינור הפגיע שלה, קבעה Legit Security.

מקור: Legit Security

שרשרת אספקת התוכנה זקוקה לאבטחה

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

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

הגיוני, אבל פגיע

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

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

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

GitHub הכיר בבעיה והרחיב את הדרכים להחריג הגשות של משתפי פעולה חיצוניים מלהיות מוכנס אוטומטית לצינור הפעולות. החברה עדכן את ממשקי ה-API של GetArtifact ו-ListArtifacts במטרה לספק מידע נוסף כדי לעזור לקבוע אם ניתן לסמוך על חפץ.

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

בול זמן:

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