מחבר: רן לוקאר

הדואר באג היום 📮 פירצת וורדפרס חמורה ב-PHPMailer

אמ;לק: נחשפה פירצת אבטחה חמורה, CVE-2020-36326, בספריית PHPMailer של וורדפרס. מפעילי וורדפררס נדרשים לעדכן לגירסת 5.7.2, שמטליאה את הפירצה // רן לוקאר ונעם רותם

פירצה חמורה שמשפיעה על אתרי וורדפרס נחשפה בימים האחרונים, וסומנה CVE-2020-36326. הפירצה מאפשרת הרצת קוד זדוני, תוך ניצול באג בגרסאות מסויימות של ספריית שליחת האימיילים PHPMailer, וסווגה בציון 9.8/10) מה שמצביע מחד על קלות ניצול ומאידך על רמת סיכון מאוד גבוהה.

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

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

גירסת וורדפרס בממשק הראשי
גירסת וורדפרס בממשק הראשי

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

רעל במעטפה

כדי להבין קצת יותר לעומק את הבעיה, יש להכיר את הדרך שבה PHP ניגש למשאבים חיצוניים. כמו אצלנו בכלי הסייבר-האקינג המשוכלל דפדפן, גם PHP משתמש ב"מעטפות" על מנת להבין את סוג המשאב אליו הוא אמור לגשת. למשל, כאשר אני מקליד בשורת הכתובת בדפדפן את התחילית http:// – הדפדפן יודע שאני מתכוון לטעון משאב בפרוטוקול HTTP. לעומת זאת, אם אתחיל את הקלדת הכתובת אליה אני מבקש לגשת עם ftp://, הדפדפן ידע להפעיל את מעטפת ה-FTP ולהשתמש בפרוטוקול המתאים לצורך התקשורת עם השרת.

PHP עובד בצורה דומה מאוד. על מנת לדעת איזה "מעטפה" עליו להפעיל (Streamwrapper, בפהפית) הוא מפרש את התחילית של הכתובת שאליה הוא אמור לפנות, ולפיה מחליט איזה קוד להריץ. למשל: התחילית file:// תטען קובץ מקומי (וכן, מערכות רבות שמבקשות מכם להכניס כתובת אינטרנט לא בודקות את התחילית הזו, ולכן אפשר לעשות דברים מעניינים עם משחקים סביב הדברים האלה); התחילית zlib:// תפעיל זרם נתונים דחוס, וכן הלאה. רשימה של התחיליות האלה תוכלו למצוא כאן.

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

include ‘file.php’

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

include ‘phar://my_cool_files.phar’

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

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

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

למפתחות שביניכן, הדרך הטובה ביותר להימנע מחשיפה לחולשה כזו היא, כמו תמיד, בדיקה (וסניטציה) של הקלט, ואכן זו גם מהות התיקון שהוכנס ל-PHPMailer. אם אתן מצפות לקבל כתובת או שם של קובץ, בדקו היטב את הפרוטוקול שלה. אם מצפים לקבל כתובת רשת – בידקו את הקלט באמצעות parse_url, למשל, והביטו בסכמה. אם היא שונה מ-http(s) – שלחו את התוקף לצפות בסרטון חינוכי על הטרלות. גם הפעם – הכרה של התקפות היא הדרך הטובה ביותר להתגונן מפניהן.

כמו נוצלה ברוח

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

חיפוש נוצלה כזאת בגיטהאב אתמול, יומיים אחרי חשיפת הפירצה, הביא את הקוד הזה, שמבטיח לנצל את הפירצה. קריאה זהירה של הקוד כאן מראה שמדובר בעצם במלכודת דבש (honeypot) שקוראת קובץ שמתיימר להיות תמונה מאתר, אבל למעשה מכיל javascript, ודורש הרשאות root. אין כאן נזק ממשי, אבל יש כאן לקח חשוב – לא להריץ קוד שהורדתם מהאינטרנט בלי לקרא ולהבין אותו. באותה מידה הקוד שאתם מריצים (עם הרשאות root!) היה יכול להשמיד את המכונה שלכם, כפי שכתוב בהערות.

הערת הרגעה בקוד של CVE-2020-36326 שיצר JamesGeee
הערת הרגעה בקוד של CVE-2020-36326 שיצר JamesGeee

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

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


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

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

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

אייפון עוגיפלצת 🖼️ Poster Boy cc-by
אייפון עוגיפלצת 🖼️ Poster Boy cc-by

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

החוקרים הצליחו להתאים בין היסטוריית הגלישה בשבוע השני לגולש בשבוע הראשון ב-50% הצלחה כאשר השתמשו בהיסטוריה של 50 אתרים, וב-80% כאשר העלו את מספר האתרים ל-150.

מי צריך את זה? (תעשיית הפרסום)

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

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

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

התוצאה היא שיוסי מזוהה אצל פאטוש כשני פרופילים שונים – 4ebd7c47db מהטלפון ו-c4846013d0 מהמחשב – ולפאטוש אין דרך לדעת שמדובר באותו יוסי.

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

איך מתגוננים?

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

מחסלים את מפלצת הקוקיות 🖼️ James H. cc-by-sa
מחסלים את מפלצת הקוקיות 🖼️ James H. cc-by-sa
  • גלישה במוד אנונימי (Incognito בדפדפן כרום, Private Mode בפיירפוקס וספארי): גלישה כזו אמנם תגן על הזהות שלנו, אבל תהיה מציקה במיוחד ותדרוש הזדהות מחדש מול כל השירותים בכל פתיחת חלון חדש של הדפדפן.
  • שימוש בחוסם פרסומות: רוב חוסמי הפרסומות חוסמים גם טכנולוגיות מעקב; הבעיה היא שהם עצמם חשופים לכל תוכן הגלישה שלנו, שעלול להימכר או לדלוף. בנוסף, יש חוסמי פרסומות שתמורת תשלום יכניסו חברות לרשימה הלבנה שלהם, ויאפשרו להן לעקוב אחרינו.
  • גלישה ב-VPN: יש הסבורים, בטעות, ששימוש ב-VPN שמסתיר את כתובת ה-IP שלהם יעזור להם לשמור על אנונימיות. על אף היתרונות הרבים של VPN, המחקר הזה מראה שגם אם מתעלמים לחלוטין מכתובת ה-IP של המשתמש עדיין ניתן לזהות אותו.
  • דפדפן מגן פרטיות: שימוש בדפדפן שמציע כלים להגנה על הפרטיות שלנו, כמו פיירפוקס של מוזילה! (או ספארי, או אדג', או Brave). הדפדפן חוסם כברירת מחדל קוקיות צד ג' (3rd party cookies), כאלו שלא שייכות לאתר שבו מבקרים כרגע, ומאפשר חסימה בקליק של טכנולוגיות מעקב. חסימה של קוקיות צד ג' תמנע מחברת פאטוש לשים את הקוקית שלה בדפדפן של יוסי כשהוא גולש באתר טמקא. חסימה של טכנולוגיות מעקב תמנע כליל את טעינת הסקריפט שמציג את ההמלצות של פאטוש. כרום, הדפדפן הפופולרי בעולם, התחיל לחסום קוקיות צד ג' בינואר השנה, אבל נותן למפרסמים ולעוקבים תקופת הסתגלות של שנתיים.

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

עוד על אמצעי התגוננות מפני פגיעה בפרטית – בפרק קריפטופארטי של סייברסייבר: