WEBA

קישור בודד בטלגרם לדסקטופ פתח את החשבון כולו להשתלטות

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

598 מילים20 עובדות אומתו

קישור תמים בצ'אט לא אמור לעלות לכם בחשבון שלם. לפי ניתוח אבטחה של beaksec, חולשה ביישום Telegram Desktop אפשרה לתוקפים להשתלט מרחוק על חשבונות ולקרוא קבצים מהדיסק. מדובר בפגיעות שסומנה תחת CVE-2026-107181 עם ציון חומרה של 8.1, שמשפיעה ישירות על מי שמריץ את התוכנה ברקע בסביבת Windows. בלי הרשאות מנהל ובלי אזהרה על המסך, לחיצה בודדת הספיקה כדי להעביר את מפתחות הגישה שלכם לצד שלישי. עוד יום שגרתי בעולם התקשורת המוצפנת.

זה מטריד במיוחד עבור מי שמנהל ערוצים וקבוצות מהמחשב.

נקודה-פסיק שמפרקת את החשבון

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

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

מנגנון הפצה שהפך לדלת אחורית

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

הפונקציה מבצעת פעולה מורשית, קוראת כל קובץ מהדיסק ושולחת אותו לצ'אט, בלי לבקש אישור מאף אחד ובלי לבדוק מי ביקש זאת.ניתוח האבטחה ב-beaksec

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

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

למה אימות דו-שלבי לא עוזר כאן

היכולת לקרוא קבצים שרירותיים הובילה במהירות לגניבת נתוני ההתחברות עצמם. טלגרם שומרת את פרטי החיבור המקומיים בתיקייה בשם tdata תחת מבנה קבוע. הנתונים מוצפנים באמצעות מפתח ייעודי (DEK), אשר מוצפן בעצמו תחת מפתח הצפנה נוסף (KEK). מפתח ה-KEK נגזר ישירות מקוד הנעילה המקומי של המשתמש יחד עם ערך salt שנשמר בקובץ key_datas.

המלכוד הוא שבברירת המחדל של התוכנה אין שום קוד נעילה מקומי פעיל. כאשר השדה הזה ריק, ה-KEK נגזר ממחרוזת ריקה ומה-salt הגלוי שיושב בקובץ key_datas. מי שמשיג גישה לקובץ key_datas מקבל את ה-DEK, ועם שני הקבצים הנוספים מתיקיית הנתונים פותח את החשבון כולו ללא סיסמה. התוקף שאב את הקובץ הזה יחד עם קובץ ההרשאות D877F783D5D3EF8Cs וקובץ האינדקס maps, פיענח את ה-DEK, ופתח את ה-session המלא במופע טלגרם נפרד. מדובר בשכפול של חיבור קיים ולא בהתחברות ממכשיר חדש, ולכן מנגנון האימות הדו-שלבי כלל לא נכנס לפעולה.

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

הפתרון לפגיעות הזו הגיע בקוד הרשמי. לפי ההתחייבות במאגר GitHub, המפתחים מחקו את הטיפול בפרוטוקול interpret והוסיפו פונקציית סינון (EscapeTo7bit) המונעת הזרקת תווים בערוץ ה-IPC החל מגרסה 7.2.9. אם טרם עשיתם זאת, עדכנו את התוכנה מיד.

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

מה לעשות עכשיועדכנו מיד לגרסה 7.2.9 של Telegram Desktop והפעילו קוד נעילה מקומי בהגדרות התוכנה.

מקורות

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

מה שואלים על זה

האם הפעלת אימות דו-שלבי (2FA) בטלגרם הגנה מפני התקיפה הזו?

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

למה נדרש קישור אינטרנט רגיל כדי להפעיל את הקישור הזדוני?

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

האם משתמשי אפליקציית הטלגרם בסמארטפון הושפעו מהפגיעות?

לא. החולשה התבססה על מבנה ערוץ ה-IPC המקומי ועל פרוטוקול פנימי שהיו קיימים ביישום ה-Desktop בלבד, והודגמה בסביבת Windows. אפליקציות המובייל ב-iOS וב-Android אינן כוללות את הרכיבים הללו.