ברשומה של Telegram נפתחה חולשה שמאפשרת לתוקף להריץ קוד על המכשיר של מי שפתח אצלו קובץ שהוכן במיוחד או נכנס לעמוד נגוע. הכשל אינו בקוד של Telegram עצמה אלא בספרייה בשם rlottie שהיא משתמשת בה. הציון הוא 7.0, ואין דיווח על ניצול בשטח.
מה החולשה?
כשתוכנה מקבלת קובץ, היא מקצה לו מראש אזור בזיכרון ומעתיקה את התוכן אל תוך האזור הזה. כל הגבולות של הפעולה הזאת תלויים בחישוב אחד: כמה מקום צריך, ומאיפה בדיוק מתחילים לכתוב. אם החישוב יוצא שגוי, הכתיבה יוצאת מהאזור שהוקצה אל זיכרון שמחזיק משהו אחר.
לפי הרשומה זה בדיוק מה שקורה כאן. הנתונים שמגיעים מבחוץ אינם נבדקים כראוי, והתוצאה היא כתיבה שנופלת לפני תחילת האזור שהוקצה. תוקף שמעצב את הנתונים שלו בקפידה מנצל את הכתיבה הזאת כדי להשתלט על מה שהתוכנה עושה בהמשך, עד הרצת קוד משלו.
מקור הטעות בחישוב מופיע בכינוי שהרשומה נותנת לחולשה: קיצוץ ערך מספרי, בסיווג CWE-197. מצב כזה נוצר כשמספר מועבר אל משתנה קטן מכדי להחזיק אותו. הספרות העליונות נופלות, ומה שנשאר הוא ערך קטן מהאמיתי. קוד שמקבל אורך מקוצץ כזה מחשב לפיו את המקום והגודל, ומגיע למקום הלא נכון בזיכרון.
ושווה לדייק מה התוקף מקבל. הרשומה אומרת שהקוד רץ בהקשר של התהליך הקיים, כלומר בהרשאות של האפליקציה עצמה ולא בהרשאות של המערכת כולה. זה אינו מעט, כי ההרשאות של אפליקציית מסרים הן הגישה להתכתבויות שבה, אבל זה גם אינו השתלטות על המכשיר.
פרופיל ה-CVSS מרסן את התמונה עוד קצת. הוא מסמן מורכבות תקיפה גבוהה, כלומר הניצול אינו עובד בכל פעם, ומסמן שנדרשת פעולה של המשתמש. בלי שמישהו יפתח את הקובץ או ייכנס לעמוד, אין כאן כלום.
מי מושפע?
כאן הרשומה חסכנית בצורה שחשוב לומר אותה בפירוש. היא מצביעה על Telegram ועל הספרייה rlottie, אבל רשימת הגרסאות המושפעות בה ריקה ואין בה מספר גרסה שסוגרת. אי אפשר להסיק ממנה איזו גרסה שרצה אצלכם בטווח ואיזו מחוצה לו. הפירוט המלא נמצא בהודעה של Zero Day Initiative, הגוף שדרכו החולשה דווחה.
מה שכן ברור הוא גודל הקהל. בישראל Telegram מותקנת על חלק גדול מהטלפונים, בין היתר בגלל ערוצי החדשות והקבוצות שרצים בה, ולכן מדובר באחת הרשומות בעמודים האלה שנוגעת לקהל רחב ולא לקבוצה מקצועית מצומצמת. מצד שני, התנאי שהניצול דורש מצמצם אותו חזרה: צריך שמישהו יפתח קובץ שנשלח אליו.
האם מנוצלת בפועל?
אין דיווח על ניצול. החולשה אינה מופיעה בקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, הקטלוג שמרכז חולשות שיש עליהן ראיות לשימוש של תוקפים בשטח, וזה המצב לפי העדכון האחרון של הרשומה.
הדרך שבה החולשה הגיעה לאוויר מוסיפה הקשר. הרשומה מציינת שהיא נושאת גם את המזהה הפנימי ZDI-CAN-30207, כלומר היא עברה דרך תוכנית הדיווח של Zero Day Initiative ולא נחשפה אחרי תקיפה שנתפסה. מי שמעדכן בשבועות הקרובים עושה זאת לפני שיש דיווח על ניצול, ולא אחריו.
מה עושים?
1. עדכנו את Telegram מהחנות שממנה היא הותקנה. בטלפון זה Google Play או App Store: חפשו את Telegram, ואם מופיע כפתור עדכון, הפעילו אותו. במחשב עדכנו דרך אותו מקום שממנו התקנתם.
2. בדקו איזו גרסה מותקנת אצלכם. המספר מופיע במסך ההגדרות של האפליקציה, בתחתית המסך שמציג את פרטי הגרסה. ההודעה של Zero Day Initiative היא המקום שבו מתפרסמים פרטי התיקון, מפני שרשומת NVD אינה נוקבת בגרסה שסוגרת.
3. עד שהעדכון נכנס, התנאי שהניצול דורש הוא גם ההגנה הפשוטה: אל תפתחו קבצים שהגיעו ממי שאינכם מכירים, גם כשהם נראים כמו קובץ תמונה תמים. הקובץ צריך להיפתח כדי שמשהו יקרה.
4. אם האפליקציה קרסה אצלכם יותר מפעם אחת בסמוך לפתיחת קובץ שקיבלתם מגורם לא מזוהה, שווה לשמור את ההתכתבות ולדווח. קריסה חוזרת בנקודה מסוימת היא בדיוק מה שעיבוד קובץ שבנוי לא כשורה נראה כמותו מבחוץ.