חלק מהמפתחים משבשים תוכנות קוד פתוח

gettyimages-1159346361-malicious-code-skull-crossbones.jpg

גטי אימג'ס

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

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

לאחר מכן מילר הכניס לחבילה קוד זדוני כדי להחליף את מערכות הקבצים של המשתמשים אם למחשב שלהם יש כתובת IP של רוסיה או בלארוס. לאחר מכן הוא הוסיף את זה כתלות בפופולרי שלו node-ipc תוכנית וכאוס מיידי! שרתים ומחשבים רבים נפלו כשהם עדכנו לקוד החדש ביותר ואז הכוננים שלהם נמחקו למערכות שלהם. 

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

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

מילר הוא לא קראנק אקראי. הוא הפיק הרבה קוד טוב, כמו node-ipc, ו שרת HTTP של צומת. אבל, האם אתה יכול לסמוך על כל קוד שלו שלא יהיה זדוני? בעוד שהוא מתאר את זה כ"לא תוכנות זדוניות, [אלא] תוכנות מחאה שמתועדות במלואן", אחרים לא מסכימים בצורה ארסית. 

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

כפי שכתב מפתח אחר של GitHub עם הידית nm17, "ה גורם אמון של קוד פתוח, שהתבסס על רצונם הטוב של המפתחים, נעלם כעת, ועכשיו, יותר ויותר אנשים מבינים שיום אחד, אפשר אולי לנצל את הספרייה/אפליקציה שלהם כדי לעשות/לומר כל מה שמפתח אקראי באינטרנט חשב ' היה הדבר הנכון שהם לעשות'".

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

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

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

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

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

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

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

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

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

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

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

מוקדם יותר השנה, מפתח JavaScript, Marak Squires, חיבל בכוונה בספריות הקוד הפתוח של Javascript המעורפלות, אך החשובות ביותר שלו, 'colors.js' ו-'faker.js'. התוצאה? עשרות אלפי תוכנות JavaScript התפוצצו.

למה? זה עדיין לא לגמרי ברור, אבל בפוסט של GitHub שנמחק מאז, Squires כתב, "בכבוד, אני לא מתכוון יותר לתמוך ב-Fortune 500s (וחברות אחרות בגודל קטן יותר) עם העבודה החופשית שלי. אין עוד הרבה מה לומר. נצל זאת כהזדמנות לשלוח לי חוזה שנתי בן שש ספרות או לחלק את הפרויקט ולגרום למישהו אחר לעבוד עליו". כפי שאתה יכול לדמיין, הניסיון הזה לסחוט את דרכו למשכורת לא כל כך הצליח לו. 

ואז יש אנשים שמכניסים תוכנה זדונית בכוונה לקוד הקוד הפתוח שלהם בשביל הכיף והרווח. לדוגמה, חברת האבטחה DevOps ג'פרוג גילו 17 חבילות זדוניות חדשות של JavaScript במאגר NPM שתוקפות וגונבות בכוונה את אסימוני Discord של משתמש. לאחר מכן ניתן להשתמש בהם ב- פלטפורמת תקשורת דיסקורד והפצה דיגיטלית.

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

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

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

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

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

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

סיפורים קשורים:



מָקוֹר