הטלפון צלצל, איש לא ענה, והחשבון כבר היה בידיים אחרות: התולעת שמתפשטת בשיחות WeChat
מכשיר Pixel 10a מחייג ל-iPhone 17e. הטלפון של הצד השני מצלצל, ובזמן שהוא עדיין מצלצל חשבון ה-WeChat שעליו כבר עובר לידיים אחרות. איש לא ענה לשיחה, ואיש לא לחץ על שום דבר. אחר כך אותו אייפון, שכבר נשלט מרחוק, מחייג ל-Pixel שלישי ועושה לו בדיוק את אותו הדבר.
את ההדגמה הזאת פרסמו ב-8 בספטמבר חוקרי Calif, חברת מחקר התקפי אמריקאית, תחת השם WeWorm. לטענתם זו התולעת הראשונה מסוג zero-click שמתפשטת דרך שיחות WeChat ועוברת בדרך בין אנדרואיד ל-iOS. וזאת לא עוד אפליקציית מסרים: לפי דוח הרבעון השני של Tencent, נכון ל-30 ביוני 2026 היו ל-Weixin ול-WeChat יחד 1.439 מיליארד משתמשים פעילים בחודש. בסין האפליקציה היא גם ארנק, גם רשת חברתית וגם הדרך שבה קובעים תור לרופא.
נעבור על שלושה דברים: למה דווקא שיחה נכנסת היא מקום נוח לתקוף, איך הדבר הזה הופך מחולשה בודדת לתולעת שמעתיקה את עצמה, וכמה זמן לקח לבנות אותה. החלק האחרון הוא כנראה המעניין מכולם.
למה שיחה נכנסת היא מקום נוח לתקוף
כשמישהו מחייג אליכם באפליקציית מסרים, הטלפון שלכם מתחיל לעבוד הרבה לפני שאתם מחליטים משהו. האפליקציה מקבלת מהצד השני חבילות נתונים שמתארות את השיחה המוצעת, מפרסרת אותן, מכינה את ערוץ האודיו ורק אז מתחילה לצלצל. כל זה קורה אוטומטית, כי אחרת לא הייתם שומעים צלצול בכלל. המשמעות היא שיש קוד שמעבד קלט שהגיע מהתוקף בזמן שהמשתמש עדיין לא נגע במסך. למתקפה שלא דורשת שום פעולה מהקורבן קוראים zero-click, וזה בדיוק המקרה כאן.
הרכיב שנשבר הוא, לפי Calif, מערכת ה-VoIP של WeChat, כלומר החלק שאחראי על שיחות הקול והווידאו. סוג הבאג הוא memory corruption, שחיתות זיכרון. בפועל זה אומר שנתונים שהגיעו מהרשת גורמים לתוכנה לכתוב או לקרוא מחוץ לאזור הזיכרון שהוקצה להם, ומי ששולט על מה שנכתב שם יכול בסופו של דבר להשפיע על מה שהמעבד מריץ. מכאן הדרך להרצת קוד על המכשיר.
את הפרטים הטכניים המדויקים החוקרים לא פרסמו. הם כותבים שהם שומרים אותם להצגה מלאה בכנס, ושהם ממשיכים לחקור משטחי תקיפה דומים באפליקציות מסרים אחרות. אז מה שיש בידינו כרגע הוא ההדגמה והתיאור הכללי, לא הניתוח המלא.
ומה אם פשוט לא עונים? זה לא עוזר. לפי החוקרים הקורבן לא צריך לענות לשיחה ולא צריך לגעת בטלפון בכלל, וגם אם הוא כן עונה הוא לא ישמע דבר מהצד השני בזמן שהניצול מצליח. דחייה של השיחה כן עוצרת את הניסיון הספציפי, אבל התוקף יכול לחייג שוב מאוחר יותר. הדוגמה שהחוקרים עצמם נותנים לא נעימה במיוחד: בזמן שהקורבן ישן.
איך זה הופך לתולעת
כאן נכנס לתמונה ההבדל בין חולשה לבין תולעת. חולשה היא באג שמאפשר לתוקף לעשות משהו במכשיר אחד; תולעת היא קוד שמשתמש בחולשה כדי להעתיק את עצמו הלאה בלי שאף אדם יפעיל אותו בכל תחנה. Calif בנתה את ההדגמה עם שלושה מכשירים: Pixel 10a בתפקיד התוקף, iPhone 17e שנפרץ בזמן שהוא מצלצל, ו-Pixel 10a שני שנפרץ אחר כך מתוך האייפון. "התוקף מחייג לקורבן, הקורבן הופך לתוקף, הקורבן מחייג לקורבן הבא", כך מתארים החוקרים את הלולאה.
יש בכל זאת תנאי אחד: התוקף חייב להיות ברשימת החברים של הקורבן. WeChat, כמו אפליקציות רבות אחרות, נותנת לאנשי קשר מוכרים יותר הרשאות מאשר לזרים, וזה הגיוני בפני עצמו. הבעיה היא שברגע שחשבון אחד ברשימה הזאת נפרץ, האמון הזה עובד נגדכם. התוקף לא צריך להגיע אליכם ישירות, הוא צריך להגיע לחבר אחד שלכם. וזה בדיוק מה שהופך את החולשה לתולעת: כל חשבון שנפרץ מגיע עם רשימת חברים משלו, כלומר עם קבוצת יעדים חדשה שכבר עברה את תנאי האמון.
Calif מעריכה שבתרחיש הגרוע אפשר היה להגיע ליותר ממיליארד מכשירים או חשבונות. חשוב לקרוא את המספר הזה נכון: זו הערכה של החוקרים לגבי הפוטנציאל התיאורטי, ולא היקף שנמדד. אף מתקפה כזאת לא התרחשה בפועל, ואין בדיווחים אינדיקציה לכך שגורם אחר מצא את הבאג לפני כן.
מה התוקף מקבל, ומה הוא לא מקבל
השליטה שהחוקרים השיגו היא על חשבון ה-WeChat, לא על הטלפון עצמו, וההבחנה הזאת חשובה. בפועל זה אומר קריאה ושליחה של הודעות, ביצוע שיחות ופעולה בשם בעל החשבון, ודרך זה גם גישה לתשלומים, לחשבונות הרשמיים ולמיני-אפליקציות שרצות בתוך WeChat. עבור אדם שמנהל את החיים הפיננסיים שלו באפליקציה הזאת, וזה המצב של מאות מיליוני אנשים, ההבחנה מנחמת פחות ממה שהיא נשמעת.
שליטה על המכשיר כולו אפשרית, אבל היא דורשת שרשור עם חולשות נוספות. Calif מפנה למחקר אחר שלה מ-31 באוגוסט, OEMpocalypse, שמתאר דרך גנרית להסלמה מאפליקציה לא מהימנה באנדרואיד ועד הרשאות root במכשירי דגל של יצרנים שונים. לדבריהם החולשות הנוספות דווחו ליצרנים והן בתהליך תיקון.
עד כאן מה שהתוקף מקבל. החלק שהחוקרים עצמם מדגישים הוא דווקא כמה מהר כל זה נבנה.
יומיים לאקספלויט, שבוע לתולעת
לפי Calif, מודל AI הוא שמצא את הבאג. "בעבודה עם AI, הצוות שלנו מצא את הבאג וכתב את האקספלויט הראשון להרצת קוד מרחוק תוך יומיים בערך", כותבים החוקרים, "בניית התולעת לקחה עוד שבוע". את התפקיד האנושי הם מתארים בצמצום: שיקול הדעת לגבי מה לתקוף ואיך לבדוק את זה בבטחה.
כדאי לקרוא את זה כטענה של החברה על העבודה של עצמה, בלי גורם חיצוני שאימת את לוח הזמנים. אבל קל להבין למה היא מטרידה. תולעת בסדר גודל כזה, הם כותבים, הייתה פעם משימה שלוקחת לצוות גדול חודשים. המסקנה שלהם היא לא שצריך לבלום את פיתוח ה-AI: לדבריהם החולשות ממילא קיימות שם בחוץ, ומה שהשתנה הוא שאפשר למצוא ולתקן אותן מהר. החשש הקונקרטי שהם כן מעלים הוא שגרסה חצי גמורה של כלי כזה תדלוף החוצה, והם מזכירים את WannaCry כדוגמה למה שקורה כשכלי תקיפה בורח מהמעבדה מוקדם מדי.
מה עשתה Tencent, ומתי
לוח הזמנים שהחוקרים פרסמו מפורט למדי. הבאג נמצא במהלך יולי, ב-23 בחודש הצוות ההנדסי היה מודע אליו, וב-24 בו הוא דווח ל-Tencent. בין 25 ל-28 ביולי חשבונות ה-WeChat של החוקרים נחסמו, וב-29 בו הוחזרו. האקספלויט לאנדרואיד הושלם ב-30 ביולי, זה של iOS ב-2 באוגוסט, וההדגמה המלוטשת של התולעת ב-11 באוגוסט.
ב-21 באוגוסט פרסמה Tencent את גרסה 8.0.77 לאנדרואיד ואת 8.0.76 ל-iOS. שתי הגרסאות אכן מופיעות באותו תאריך ביומן העדכונים הרשמי של WeChat, כך שהתאריך מאושר ממקור של היצרן עצמו ולא רק מהחוקרים. ב-28 באוגוסט אישרו ב-Calif שהניצול נחסם גם בצד השרת, כלומר עבור כלל המשתמשים ולא רק עבור מי שעדכן. ב-3 בספטמבר הם העבירו ל-Tencent את הניתוח הטכני ואת האקספלויטים עצמם, ולמחרת אישרה החברה שהחולשה ניתנת לניצול להרצת פקודות מרחוק.
מה שחסר בסיפור הזה הוא מספר CVE. הדוח של Calif לא מציין אחד, והתיקון יצא כחלק ממחזור הגרסאות הרגיל של האפליקציה ולא כעדכון אבטחה מוכרז. (וזה בדיוק מה שמקשה על ארגון שמנהל מלאי גרסאות להבין שהעדכון הזה שונה מקודמיו.)
מה זה אומר בפועל
אם אתם או אנשים בסביבתכם משתמשים ב-WeChat, ודאו שהאפליקציה מעודכנת לפחות ל-8.0.77 באנדרואיד או ל-8.0.76 ב-iOS. החסימה בצד השרת אמורה להגן גם על מי שלא עדכן, אבל היא נשענת על זיהוי הניצול הספציפי הזה, והעדכון עדיף עליה.
השאלה הרחבה שהמחקר מציב בפני כל מי שמנהל מכשירים בארגון היא איזה קוד באפליקציות שאתם מתירים מעבד תנועה מהרשת עוד לפני שהמשתמש עשה משהו. ערוצי שיחות, תצוגות מקדימות של קישורים ומפרסרים של מדיה נכנסת הם המקומות שבהם הרשאה של איש קשר מוכר הופכת לגישה לקוד. ברשימת האנשים שאתם סומכים עליהם באפליקציה, כל שם הוא גם כתובת שממנה אפשר להגיע אליכם.
תגובות