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

הדוח שפרסמה Gen Digital ב-10 בספטמבר, בחתימת חוקר האיומים Alexandru-Cristian Bardaș, מתאר חולשה קריטית ב-Sogou Input Method בגרסת Windows, שסומנה CVE-2026-51990. לפי החוקרים, לחיצה אחת על קישור מספיקה כדי לפתוח דלת אחורית על המכונה, בלי הורדה ובלי אישור נוסף מהמשתמש. הם לא מצאו את החולשה במעבדה אלא בתוך פריצה פעילה של קבוצת ריגול סינית.

Sogou Input Method היא מנוע קלט, כלומר התוכנה שממירה הקלדה באותיות לטיניות לסימניות סיניות. היא שייכת ל-Tencent ומותקנת, לפי Gen, על מאות מיליוני מחשבים. כמו הרבה תוכנות שולחן היא לא קובץ הרצה בודד אלא אוסף רכיבים שמדברים ביניהם, כאן דרך scheme ייעודי שהתוכנה רושמת ב-Windows בשם sgbiz. בהמשך נעבור על שלוש הטעויות שמצטרפות יחד ללחיצה אחת, על מה שהתוקפים עשו עם זה בפועל, ועל החלק שהתיקון של Tencent בכלל לא נגע בו.

שלוש טעויות שמצטרפות ללחיצה אחת

כשמשתמש, דף אינטרנט או כל תוכנה אחרת פותחים כתובת שמתחילה ב-sgbiz, Windows מעביר אותה ל-biz_helper.exe, שמפרסר אותה ומחליט איזה חלק של Sogou יטפל בבקשה. בבקשה מסוג sg_process הוא שולף מהכתובת חמישה שדות, ובהם איזה קובץ הרצה של Sogou להפעיל ואילו ארגומנטים להעביר לו.

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

וזה כל מה שצריך כדי להגיע לטעות השנייה. התוקף מכוון את הקישור לאפליקציית ההגדרות של Sogou ומזין לה שני ארגומנטים. הראשון בוחר איזה מסך הגדרות ייפתח, ורובם חלונות Windows רגילים. חוץ מאחד: מסך חנות העיצובים הוא מסלול הקוד היחיד באפליקציה שפותח דפדפן מוטמע. הארגומנט השני נותן לדפדפן הזה כתובת, והקוד פשוט מנווט אליה. "אין בדיקת scheme (http, https, file, data, javascript, הכול מתקבל), אין רשימת דומיינים מותרים, ואין שום ולידציה", כתבו החוקרים.

אז למה דפדפן מ-2020 הוא הבעיה האמיתית?

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

הדפדפן המוטמע ב-Sogou Input Method בנוי על CEF, מסגרת שמאפשרת לתוכנות שולחן לארוז לתוכן את מנוע Chromium. הגרסה שנמצאה בקובץ libcef.dll היא CEF 80.1.16 עם Chromium 80.0.3987.163, כלומר גרסה ממרץ 2020, בערך שישים גרסאות ראשיות מאחורי הערוץ היציב בזמן המחקר. עד כאן זו בעיה מוכרת של תוכנות שמטמיעות דפדפן ושוכחות אותו. מה שהופך אותה לחמורה יותר הן ההגדרות שנצרבו בקוד: הפונקציה שמכינה את הגדרות CEF מסמנת את ה-sandbox ככבוי, ומיד אחריה נוספים לשורת הפקודה של המנוע מתגים שמורידים עוד הגנות, ביניהם ביטול מדיניות ה-same-origin (הכלל שמונע מדף אחד לקרוא תוכן של דומיין אחר) והרשאה לקבצים מקומיים לקרוא זה את זה.

התוצאה היא שכל חולשה במנוע ה-JavaScript של Chromium מששת השנים האחרונות מספיקה. התוקפים בחרו את CVE-2021-38003, בלבול טיפוסים ב-JSON.stringify שמשפיע על Chrome בגרסאות שלפני 95.0.4638.69. CISA הוסיפה אותה לקטלוג החולשות המנוצלות בפועל עוד בנובמבר 2021. כמעט חמש שנים אחרי שסומנה כמנוצלת, היא עדיין עבדה מול הדפדפן הזה.

מה קרה במכונות שנפגעו

בקמפיין שהחוקרים ניתחו, דף הניצול ישב על הדומיין noht1ng[.]top והגיש JavaScript שמנצל את אותה חולשה ב-V8. הקוד משחית מבני נתונים פנימיים של המנוע עד שהוא משיג קריאה וכתיבה לכל מקום בזיכרון, מאתר מופע של WebAssembly (ש-V8 מגבה בזיכרון שהוא גם ניתן לכתיבה וגם להרצה), דורס את הדף הזה ב-shellcode מוטמע וקופץ אליו. משם זו כבר הרצת קוד בהרשאות המשתמש, בלי sandbox שיעצור אותה.

ה-shellcode עצמו קטן, 921 בתים, ותפקידו היחיד הוא להוריד. הוא מאתר את kernel32 בזיכרון לפי גיבוב של שם המודול, ומושך שלושה קבצים משרת ביניים בכתובת 8.218.50[.]207, שרת Alibaba Cloud בהונג קונג. הקבצים נכתבים תחת C:\Users\Public\Documents: קובץ 7-Zip לגיטימי, ספרייה נגועה שנשמרת לצידו תחת שמה של ספריית 7-Zip האמיתית, ובלוב מוצפן.

אחר כך ה-shellcode מפעיל את 7-Zip עם פקודת ארכוב חסרת משמעות. הפקודה לא חשובה: מה שחשוב הוא ש-7-Zip טוען אוטומטית את הספרייה מהתיקייה שלו, וכך קוד התוקף רץ בתוך תהליך של תוכנה לגיטימית לפני ש-7-Zip בכלל הסתכל על הפקודה. לטכניקה הזאת קוראים DLL sideloading.

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

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

GRAYRABBIT, ולמה החוקרים מצביעים על UNC3569

מה שמתפענח בסוף הוא GRAYRABBIT, דלת אחורית קלת משקל בגרסת x64. היא מדברת עם שרת שליטה ובקרה (C2, השרת שממנו התוקף שולח פקודות לתוכנה הזדונית) בכתובת mail.uaiubifas[.]top על פורט 443, אבל לא ב-TLS. זו תעבורת TCP גולמית, שבה כל מסגרת בגודל קבוע מוצפנת ב-RC4 עם מפתח סטטי בן שישה תווים. הבחירה נוחה לתוקף כי היא נראית כמו תעבורה מוצפנת רגילה בפורט הצפוי, והיא גם מה שמאפשר לזהות את המשפחה.

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

את הקישור לקבוצה החוקרים לא בונים על הכתובות בלבד. שמות הפונקציות המיוצאות, מבנה הפרוטוקול מול ה-C2 ופורמט ה-beacon הם, לדבריהם, חתימות הזיהוי של GRAYRABBIT כפי שתועדו בידי Google Threat Intelligence במאמר Down the GRAYRABBIT Hole מכנס Virus Bulletin 2024. UNC3569 היא קבוצה הקשורה לסין, שלפי אותו תיעוד מתמחה בניצול חולשות ידועות בתוכנות נפוצות ופועלת נגד גופי ממשל, חינוך, טכנולוגיה ופיננסים, בעיקר במזרח אסיה. גם התשתית מתאימה: שרתי Alibaba Cloud בהונג קונג ובסינגפור הם העדפה מתועדת של הקבוצה. Gen מוסיפה שייתכנו לקבוצה קשרים עסקיים עם i-SOON, קבלן סייבר סיני פרטי שהתכתובות הפנימיות שלו דלפו ב-2024.

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

התיקון, ומה שנשאר פתוח אחריו

ציר הזמן שפרסמה Gen קצר. החולשה דווחה ל-Tencent ב-9 באפריל 2026, נענתה למחרת, וב-21 באפריל התיקון כבר הותקן אצל כל המשתמשים בעדכון אוטומטי, בגרסה 16.3.0.3498. שנים עשר יום מדיווח לפריסה. מזהה ה-CVE הוקצה רק ב-10 ביולי. החוקרים עצמם מציינים שזו תגובה מהירה באמת.

השאלה היא מה בדיוק תוקן. כל השינוי יושב ברכיב שמטפל בקישורים: הוא מזהה עכשיו את הארגומנטים שנושאים כתובת, דוחה כל דבר שאינו HTTPS, ובודק את שם הדומיין מול רשימה קצרה של סיומות מותרות. מה שלא נגעו בו הוא הדפדפן. גרסת CEF נשארה כשהייתה, ה-sandbox עדיין מסומן ככבוי, והמתגים שמבטלים את ה-same-origin ואת ההפרדה בין קבצים מקומיים עדיין מתווספים בכל הפעלה. הדלת ננעלה, החדר שמאחוריה נשאר כמו שהוא.

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

מה זה אומר בפועל

מי שמשתמש ב-Sogou Input Method צריך לעדכן לגרסה 16.3.0.3498 ומעלה. אבל רוב הקוראים כאן לא מקלידים סינית, והלקח הרלוונטי עבורכם הוא אחר: כל תוכנת שולחן שמגיעה עם מנוע דפדפן משלה היא בפועל עוד דפדפן ברשת שלכם, כזה שאף אחד לא מעדכן בקצב שבו Chrome מתעדכן. שווה לבדוק אילו אפליקציות מבוססות CEF או Electron רצות אצלכם, ובאיזו גרסת מנוע.

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