חבילה זדונית rustdecimal זוהתה במאגר Rust crates.io

מפתחי שפת Rust הזהירו כי חבילת rustdecimal המכילה קוד זדוני זוהתה במאגר crates.io. החבילה התבססה על החבילה הלגיטימית rust_decimal והופצה באמצעות דמיון בשם (typesquatting) מתוך ציפייה שהמשתמש לא יבחין בהיעדר קו תחתון בעת ​​חיפוש או בחירת מודול מרשימה.

ראוי לציין שהאסטרטגיה הזו התבררה כמוצלחת ומבחינת מספר ההורדות, החבילה הפיקטיבית הייתה רק מעט מאחורי המקור (~111 אלף הורדות של rustdecimal 1.23.1 ו-113 אלף של rust_decimal המקורי 1.23.1) . יחד עם זאת, רוב ההורדות היו של שיבוט לא מזיק שלא הכיל קוד זדוני. השינויים הזדוניים נוספו ב-25 במרץ בגרסה rustdecimal 1.23.5, שהורדה כ-500 פעמים לפני זיהוי הבעיה והחבילה נחסמה (ההנחה היא שרוב ההורדות של הגרסה הזדונית נעשו על ידי בוטים) וכן לא שימש כתלות בחבילות אחרות הקיימות במאגר (ייתכן שהחבילה הזדונית הייתה תלות באפליקציות הקצה).

השינויים הזדוניים כללו הוספת פונקציה חדשה, Decimal::new, שהיישום שלה הכיל קוד מעורפל להורדה משרת חיצוני והשקת קובץ הפעלה. בעת קריאה לפונקציה, משתנה הסביבה GITLAB_CI נבדק, ואם הוגדר, הקובץ /tmp/git-updater.bin הורד מהשרת החיצוני. המטפל הזדוני הניתן להורדה תמך בעבודה על לינוקס ו-macOS (פלטפורמת Windows לא נתמכה).

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

מקור: OpenNet.ru

הוספת תגובה