מתקפת תלות מאפשרת ביצוע קוד בחברות PayPal, מיקרוסופט, אפל, נטפליקס, אובר ועוד 30 חברות

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

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

השיטה מבוססת על העובדה ש חברות רבות משתמשות בתלות מאגר רגילה של NPM, PyPI ו- RubyGems ביישומים הפנימיים שלהןוכן תלות פנימית שאינה מופצת בפומבי או מורדת ממאגרים משלהם.

הבעיה היא שמנהלי חבילות כמו npm, pip and gem הם מנסים להוריד את התלות הפנימית של החברות, אפילו מהמאגרים הציבוריים. להתקפה, פשוט הגדירו את שמות החבילות עם תלות פנימית וצרו חבילות משלכם עם אותם שמות במאגרים הציבוריים של NPM, PyPI ו- RubyGems.

הבעיה אינה ספציפית ל- NPM, PyPI ו- RubyGems והיא מתבטאת גם במערכות אחרות כמו NuGet, Maven ו- Yarn.

הרעיון לשיטה המוצעת הגיע לאחר שחוקר הבחין בטעות שבקוד הזמין לציבור שפורסם ב- GitHub, חברות רבות אינן מסירות את אזכור התלות הנוספת מקבצי המניפסט שלהן משמש בפרויקטים פנימיים או ביישום פונקציות מורחבות. עקבות דומים נמצאו בקוד JavaScript של שירותי האינטרנט, כמו גם בפרויקטים של Node.JS, Python ו- Ruby של חברות רבות.

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

סריקה של כמה מיליוני דומיינים ארגוניים חשפה כמה אלפי שמות חבילות JavaScript שלא היו במאגר ה- NPM. לאחר שחיבר מאגר של שמות חבילות פנימיים החליט החוקר לערוך ניסוי לפריצת התשתית של חברות המשתתפות בתוכניות Bug Bounty. התוצאות היו אפקטיביות באופן מפתיע והחוקר הצליח להריץ את קודו במחשבי פיתוח ושרתים רבים האחראים לבנייה או בדיקה על בסיס מערכות אינטגרציה רציפות.

בעת הורדת תלות, מנהלי החבילות npm, pip ו- gem התקנו בעיקר חבילות מהמאגרים הציבוריים הראשיים NPM, PyPI ו- RubyGems שנחשבו לעדיפות גבוהה יותר.

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

החוקר הציב חבילות במאגרים של NPM, PyPI ו- RubyGems שחוצים את שמות התלות הפנימית שנמצאו, ומוסיפים קוד לתסריט שרץ לפני ההתקנה (מותקן מראש ב- NPM) כדי לאסוף מידע על המערכת ולשלוח את המידע שהתקבל. למארח החיצוני.

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

75% מכל הביצועים של הקודים שהוקלטו נקשרו להורדות של חבילות NPM, בעיקר בשל העובדה שהיו שם משמעותי יותר של שמות מודול JavaScript פנימיים מאשר שמות תלות של פייתון ורובי.

מקור: https://medium.com/


תוכן המאמר עומד בעקרונותינו של אתיקה עריכתית. כדי לדווח על שגיאה לחץ כאן.

היה הראשון להגיב

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם.

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.