At קסיגני, היינו עסוקים בשנה האחרונה ביישום מערכת מקיפה המנטרת רישומי חבילות ציבוריים בקוד פתוח לאיתור פעילות חשודה או קוד זדוני מטבעו.
תשתית זו מאפשרת לנו לנתח בזמן אמת את כל החבילות המתפרסמות מדי יום. בנוסף, היא מאפשרת לנו לנטר התנהגויות חריגות של משתמשים.
בעוד שנוכחות קוד זדוני ברישומי חבילות ידועה היטבישנן התנהגויות מוזרות או יוצאות דופן אחרות שחולפות לחלוטין מעיני המשתמשים הקבועים של מרשמים אלה. אפילו עבור אלו מאיתנו שעוקבים מקרוב אחריהם, לא קל למצוא סיבה או הסבר להתנהגות כזו.
מה שמאפיין את צוות Xygeni הוא ההתמדה שלנו כשאנחנו מתמודדים עם בעיה, אז חקרנו את זה לעומק.
הכל התחיל עם זינוק בסטטיסטיקות
כפי שציינתי קודם לכן, כחלק מהתשתית שלנו, אנו עוקבים אחר מדדי פעילות רבים במאגרי חבילות קוד פתוח ציבוריים.
בימים האחרונים של מרץ, עמיתתי לעבודה, כרמן, הפעילה אזעקה. התחלנו לראות סטייה משמעותית ב מספר החבילות שפורסמו ב-NPM. לאחר סקירה ראשונית, גילינו כי סטייה זו נבעה בעיקר ממספר קטן יחסית של משתמשים ששיעור פרסום החבילות שלהם זינק לפתע.
זה גרם לנו לבחון מחדש את התהליך שלנו ואת הנתונים הנלווים אליו בתוך הפלטפורמה. למרבה המזל, הבדיקה שלנו קבעה שהנתונים נראו נכונים, אך גם זה היה קצת תמוה!
בבדיקה נוספת, גילינו כי לחבילות אלו מספר מאפיינים משותפים:
- המוציאים לאור היו משתמשים שנוצרו לאחרונה, בני לא יותר מחודש או חודשיים.
- לחבילות היו שמות לכאורה אקראיים, כנראה שנוצרו באמצעות מילון. אנו יכולים למצוא שמות חבילות עם שמות מוזרים כמו enormous_mite-smiletea, erick-mangut94-sukiwir, exotic_reptile-appteadev or obvious_tuna-appteadevנצרף נספח עם כמה דוגמאות לנכסים שמצאנו.
- תוכן החבילות הללו היה דומה מאוד, לעתים קרובות זהה.
בהקשר זה, צפינו שאחת החבילות כללה סקריפט Python, אולי במקרה, אשר ככל הנראה משמש לפרסום החבילות באופן אוטומטי.

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

הנה הנתונים הסטטיסטיים המלאים הקשורים לאירוע זה שאנו יכולים לשתף:

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

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

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

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

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

נראה כי קבצים אלה קשורים ל- פרוטוקול התהאבל מה זה בדיוק? הגענו https://tea.xyz/blog/250k-grant-for-open-source-developers, שמדבר על המטרה:
"תה מטלטלת את העולם הדיגיטלי בכך שהיא מתייחסת לבעיה ארוכת השנים של פיצוי לא מספק למפתחי קוד פתוח. פתרון בעיה זו דחוף מתמיד, ולכן החלטנו לפרוס 250 אלף דולר במענקים לקראת השקת הפרוטוקול. שלב ראשוני זה נועד לתמוך בתחזוקת פרויקטים בקוד פתוח בעלי השפעה מהותית על המערכת האקולוגית של תוכנת קוד פתוח ובדירוג teaRank גבוה מ-30 לפני רשת הבדיקות המועברת לתמריצי פרוטוקול tea."

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

נראה שזה מסביר מה קורה כאן: משתמשים מסוימים מנפחים את פרויקטי הקוד הפתוח שלהם בפופולריות פיקטיבית כדי לחטוף את דירוג התה ולקבל את ההטבות שמספקת איגוד התה. אחרי הכל, כסף הוא הכוח המניע העתיק ביותר, יחד עם מין.
מסקנה ומחשבות אחרונות
למרות שלא נמצאו ראיות לקוד זדוני בחבילות NPM אלו, וסביר להניח שהן לא התכוונו שאף אחד ישתמש בהן, הן עלולות להפר מספר תנאי שירות (TOS) של NPM, GitHub או איגוד התה. עם זאת, זה נופל מחוץ לתחום עבודתנו (הם קיבלו הודעה והפעולות שהם רואים לנכון יינקטו). שימוש לרעה בפלטפורמות אלו ישפיע עלינו ועל הארגונים שלנו בצורה כלשהי.
מה שברור הוא שכל חבילת קוד פתוח שנראית תמימה יכולה להכיל התנהגויות שקשה להבין ללא מידע הקשרי מלא.
כמפתח, אני מוצא את זה מאתגר לשלוט ידנית בכל חבילות הקוד הפתוח המשמשות ביישומים שאנו מפתחים ומתחזקים ברמה מסוימת של ביטחון. ללא עזרת כלי שמאפשר אוטומציה של בקרה זו, המשימה עלולה לגזול שעות רבות מהצוותים שלנו.
תמיד יש את האפשרות להסתכל לצד השני, ולסמוך על כך שתחומי הקוד הפתוח הם מקומות בטוחים. למרבה המזל, אני מאמין שגישה זו אינה נפוצה במיוחד כיום; מקרה זה כמעט ולא היה מזיק, אך לאחרונה חווינו אירוע חמור הרבה יותר עם ה... XZ דלת אחורית, וזה לא היה היחיד.
אם קראתם עד כאן, אני מקווה שנהניתם מכל המורכבויות של אירוע מוזר זה. אל תשכחו להקדיש כמה דקות לסקירת מה Xygeni יכולה לתרום לאבטחת הארגון שלכם.
נספח: רשימת נכסים קשורים שיש לכלול במאמר הסופי
משתמשים רלוונטיים יותר של NPM בהתבסס על מספר החבילות שפורסמו: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17
דוגמה קטנה לחבילות הרלוונטיות שלהם: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.
חלק ממאגרי GitHub הקשורים המכילים קבצי tea.yml:







