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

שיטות חדשות (וגאוניות) של השתלת קוד זדוני לכרית מטבע קריפטוגרפי באתרים ובתוכנות באמצעות תוספים ומודולים
ניצולת גבוהה של CPU לאחר כניסה לאתר

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

חבילות התוכנה האלו נפוצות מאוד בכמעט כל מערכת של קוד פתוח. בוורדפרס הם נקראים תוספים (plugins או פלאגינים). בדרופל הם נקראים מודולים (modules). במערכות מבוססות node הם גם נקראות מודולים וברובי הם נקראים GEM. לכל מערכת/פלטפורמה/פריימוורק שקיים יש את התוספות שלו שמשתמשים בהן על מנת להרחיב את המערכת. באתרי וורדפרס, המהווים את החלק הארי של הרשת בעולם וגם בישראל, התוספים מאפשרים להרחיב את המערכת הבסיסית של וורדפרס. למשל, באתר שלי אני משתמש בתוספים כדי לאפשר למשתמשים להרשם לרשימת תפוצה, אני משתמש בתוספים על מנת ליצור הגנה טובה יותר לבלוג וכך הלאה.

בדרך כלל התוספים נמצאים באתר מסודר שאמור להיות מפוקח. כך למשל התוספים של וורדפרס נמצאים באתר wordpress.org שמפוקח על ידי חברת אוטומאטיק שעומדת מאחורי הפיתוח. המודולים של node נמצאים באתר npm שמפוקח על ידי חברת npm, Inc. בדרך כלל המפתחים שנדרשים לתוספים אלו ואחרים מורידים אותם מהאתרים האלו מתוך מחשבה שתוספים אלו הם בטוחים. על זה נאמר לא מזמן "הו! תמימות קדושה!".

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

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

בחודש האחרון חברת וורדפנס דיווחה על כך שתוסף בשם Animated Weather Widget by weatherfor.us.בעצם יצר iframe ובתוכו נח לו קוד שכרה מונרו. כלומר כל בעל אתר שבתמימותו התקין את התוסף, גרם נזק למשתמשים שלו והסב רווח לבעלי התוסף ללא ידיעתו. התוסף הוסר ממאגר התוספים של אוטומאטיק. החברה הסבירה שהתוסף כלל הפניה לוידג'ט של אתר שבו הושתל קוד כורה ללא הסבר למשתמשי התוסף. התוסף היה פעיל למדי והיו לו אלפי התקנות כולל כאלו שעדיין פעילות ומסיבות רווח משמעותי לבעל האתר.

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

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

איך מגלים השתלה של קוד כרייה באתר שלכם?

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

הכנתי גם סרטון קצר שמסביר את זה:

וככה זה נראה במציאות

ניצולת גבוהה של CPU לאחר כניסה לאתר
ניצולת גבוהה של CPU לאחר כניסה לאתר

איך מתגוננים מפני תופעות כאלו?

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

פוסטים נוספים שכדאי לקרוא

פייתון

קבצי קונפיגורציה בפואטרי

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

יסודות בתכנות

מספרים בינאריים בקוד

איך, ויותר חשוב למה, משתמשים במספרים בינאריים בתכנות? גם בפייתון ובג׳אווהסקריפט?

פיתוח ב-JavaScript

Axios interceptors

תכנון נכון של קריאות AJAX באפליקציה ריאקטית וניהול השגיאות או ההצלחות עם פיצ׳ר נחמד של axios

פתרונות ומאמרים על פיתוח אינטרנט

יישום של nonce על מנת להגן מפני התקפות injection

בפוסט הקודם הסברתי על hash עם CSP על משאבי inline – שזה נחמד ומעולה אבל פחות ישים בעולם האמיתי שבו בדרך כלל התוכן ה-inline (בין

גלילה לראש העמוד