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

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

קוד פתוח.

במשך שנים רבות תעשיית התוכנה המסחרית סלדה משימוש בתוכנות קוד פתוח מאחר שלמרות שתוכנות אלו חופשיות לשימוש הן מגיעות תחת רישיון, וחלק מרישיונות אלו קשים להבנה וליישום. אך ככל שהשימוש בשורות קוד גדל, כך גם חלחלה ההבנה שמרבית שורות הקוד כבר נכתבו וזמינות תחת רישיון קוד פתוח וחבל לא לעשות בהן שימוש. אם להקביל לעולם המשחק של ילדים, השימוש ברכיבי קוד פתוח מאפשר לבנות תוכנה מסחרית מחלקי לגו גדולים יותר (פונקציות קיימות), דבר המאפשר להביא מוצר מוגמר לשוק מהר יותר ובעלות נמוכה יותר. הבנה זו הביאה לאימוץ מואץ של קוד פתוח על ידי חברות מסחריות, בעיקר ב-5 השנים האחרונות, וכיום אחוז רכיבי הקוד הפתוח בממוצע בתוכנה מסחרית עולה על 75% מכלל המוצר. אחרי הכל, תוכנות קוד פתוח זמינות לכל אחד, והשימוש בהן אינו מותנה בתשלום למפתחים שכתבו את התוכנה, ופה בדיוק גם נעוצה הבעיה!

המקרה

לפני כשבוע, ב-8.1.2022, מפתח קוד פתוח בשם מאראק סקוויירס השחית, ככל הנראה במתכוון, שתי ספריות קוד פתוח שיצר, שיש להן מיליוני הורדות שבועיות, וכתוצאה מכך כל פרויקט שעשה בהן שימוש הפסיק לעבוד. ספריית colors (מפורסמת תחת השם "colors.js" בגיטהאב) עם למעלה מ-20 מיליון הורדות שבועיות ב NPM בלבד, ואשר מהווה תלות בקרוב ל-19,000 פרויקטים שונים, וספרית faker (המפורסמת תחת השם "faker.js" בגיטהאב) עם כ-2.8 מיליון הורדות שבועיות ב NPM, ואשר מהווה תלות ביותר מ-2,500 פרויקטים. על פי דיווחים של אתר Bleeping Computer, הספריות בגרסתן ה"ממאירה" מריצות קוד בלולאה אינסופית, הגורם לפלט של המילים "LIBERTY LIBERTY LIBERTY" ולאחריהן רצף סימנים.

הסיבה לפעולה זו של סקוויירס נעוצה בתסכול של המפתח מכך שחברות מסחריות עושות שימוש בפרויקטים של קוד פתוח ללא כל תרומה חזרה לקהילה המפתחת. רמז לכך ניתן היה לראות כבר באמירה של מאראק מנובמבר 2020, שבה ציין, כי אינו מתכוון להמשיך ולתמוך בחברות ענק בחינם: "No more free work from Marak – Pay Me or Fork This".

 איך כל זה קשור ל-Log4j

התזמון של סקוויירס אינו מקרי. לפני כחודש, ב-9 בדצמבר 2021, התגלתה חולשת אבטחה ברמת החומרה הגבוהה ביותר בספריית קוד פתוח בשם Log4j, הנמצאת כמעט בכל מקום ברשת. מומחי סייבר רבים כתבו על חולשה זו, ונכון ליום כתיבת שורות אלו, חיפוש אחר מספר החולשה "CVE-2021-44228" בגוגל מעלה כ-3,910,000 תוצאות, וסביר להניח כי את תוצאותיה של חולשה זו נראה עוד חודשים רבים. אחד הדברים המעניינים במקרה של Log4j הינו, שספריית קוד פתוח זו קיימת מאז 2001, מתוחזקת על ידי ארבעה מפתחים בלבד, ובכל התקופה מאז היווסדה התרומה הגדולה ביותר שהפרויקט קיבל הייתה לאחר גילוי החולשה, על סך 5,000 דולר מחברת פרופרו הישראלית, חברת סייבר שכלל אינה עושה שימוש בספרייה. על פי פרופרו, התרומה הגדולה ביותר שקיבל הפרויקט עד אותה תקופה הייתה על סך 500 דולר, תרומה המגלמת שכר ממוצע של כ-0.5 דולר לחודש בעבור ספריית קוד פתוח, הנמצאת בשימוש בכשליש משרתי הרשת בעולם. חוסר הפרופורציה בין היקף השימוש בספרייה, המאמץ של המפתחים לתקן את הפרצה במהלך סוף השבוע והתמורה שקיבלו בלט במקרה הזה באופן יוצא דופן. הדבר עורר כעס בקרב מפתחים רבים התורמים לפרויקטים של קוד פתוח, שסקוויירס כנראה נמנה עימם, אשר החליט לעשות מעשה.

האם אנו בפתחו של גל?

עייפות של מפתחים המתחזקים ספריות קוד פתוח ללא תמורה, כמו במקרה של סקוויירס, אינה בעיה חדשה. ב-2018 היה זה מפתח ניו זילנדי בשם דומיניק טאר, ש"התעייף" מלתמוך בספריית הקוד הפתוח הפופולרית שלו "Event-Stream". טאר מסר את המפתחות לפרויקט למפתח שהתנדב לעזור, אלא שהמפתח ה"נחמד" החליט לעזור בעיקר לעצמו ושתל באחת מתלויות הפרויקט קוד זדוני, שהביא לגניבה של כ 7,000 מטבעות ביטקוין. כאשר נשאל מדוע מסר את התמיכה לפרויקט למפתח אחר השיב טאר: "הוא שלח לי מייל והציע לתחזק את המודול, אז נתתי לו אותו. לא יוצא לי דבר מלתחזק את המודול הזה, ואני אפילו לא עושה בו שימוש מזה שנים".

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

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

 

הכותב הינו מנכ"ל ושותף מייסד, פוסאוור.

תגובות

(2)

כתיבת תגובה

האימייל לא יוצג באתר.

אין לשלוח תגובות הכוללות דברי הסתה, דיבה, וסגנון החורג מהטעם הטוב

    1. אאג

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

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

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

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

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

אירועים קרובים