בקר Phison PS3111-S11, הרכיב שמנהל את פעולתם של כונני SSD, אמור לוודא שכל קושחה שנטענת אליו נחתמה על ידי היצרן. הבדיקה שהוא עושה בנויה כך שאפשר לעקוף אותה לגמרי: הוא משווה את החתימה מול מפתח ציבורי שנמצא בתוך קובץ הקושחה שהוא בודק, במקום מול מפתח שנצרב מראש בזיכרון קבוע שאי אפשר לשנות.
מה החולשה?
זה כמו שומר שמבקש לראות תעודה מזהה, ואז משווה את התמונה שבתעודה לתמונה שהבאתם איתכם בכיס. שני הפריטים הגיעו מאותו מקור, אז הבדיקה תמיד תעבור.
בפועל זה עובד כך. חתימה דיגיטלית נשענת על זוג מפתחות: מפתח פרטי שרק החותם מחזיק ומפתח ציבורי שכל אחד יכול לאמת מולו. הביטחון של כל המנגנון תלוי בכך שהמפתח הציבורי שמשמש לבדיקה מגיע ממקור שהתוקף לא יכול לגעת בו. כאן הוא מגיע מקובץ הקושחה עצמו. לפי הרשומה, תוקף יכול לייצר זוג מפתחות משלו, לחתום איתו קושחה ששינה, לשתול את המפתח הציבורי התואם בקטע החתימה של אותו קובץ, והבקר יקבל את הקושחה המזויפת כתקינה.
הסיווג הוא CWE-347, אימות שגוי של חתימה קריפטוגרפית. שורש הבעיה הוא לא באלגוריתם החתימה אלא במקום שבו נשמרת נקודת האמון: היא צריכה לשבת בזיכרון בלתי ניתן לשינוי, ולא בקובץ שהתוקף מספק.
מה שהופך את זה לרציני הוא איפה הקושחה יושבת. קושחה של בקר אחסון פועלת מתחת למערכת ההפעלה, ולכן פירמוט או התקנה מחדש של המערכת לא נוגעים בה בכלל. פרופיל הציון, 9.3 מתוך 10, מסמן פגיעה מלאה גם ברכיב עצמו וגם במערכת שסביבו.
מי מושפע?
כוננים שבנויים סביב הבקר Phison PS3111-S11. שימו לב שהרשומה נוקבת בשם הבקר ולא בדגמי הכוננים, ובקר אחסון מגיע לרוב בכוננים שנמכרים תחת מותגים שונים, אז שם היצרן שמודפס על הכונן לא בהכרח יגיד לכם אם הוא רלוונטי. הדרך לדעת היא מפרט הכונן או כלי שמזהה את הבקר שבתוכו.
מצד שני, התנאי להפעלת החולשה מצמצם אותה מאוד. לפי הרשומה התקיפה היא מקומית ודורשת הרשאות גבוהות על המחשב, כלומר תוקף שכבר הגיע לשליטה על המכונה. זו לא חולשה שמישהו יורה בכם מאתר אינטרנט, וזו הסיבה שמשתמש ביתי לא צריך להיבהל ממנה. היא רלוונטית בעיקר למי שמגן על מכונות ספציפיות מפני תוקף ממוקד.
האם מנוצלת בפועל?
החולשה אינה מופיעה בקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, שמרכז חולשות שידוע שתוקפים משתמשים בהן, ולכן אין דיווח מאושר על ניצול שלה.
לעומת זאת, החומר עליה פומבי לגמרי. לרשומה מצורפים דף מחקר שמפרט את הניתוח של הקושחה, מאגר קוד ב-GitHub, והודעה טכנית של VulnCheck. מי שרוצה להבין איך הבדיקה נכשלת יכול פשוט לקרוא.
מה עושים?
הרשומה לא נוקבת בגרסת קושחה מתוקנת, ולכן אין כאן עדכון אחד שסוגר את העניין. מה שכן אפשר לעשות מתחלק לשניים.
הראשון נוגע לתנאי ההפעלה. החולשה דורשת שהתוקף כבר יריץ קוד עם הרשאות גבוהות על המחשב, ולכן ההגנה המעשית היא ההגנה הרגילה על אותן הרשאות: לא לעבוד ביומיום עם חשבון מנהל, לשמור על עדכוני מערכת ההפעלה, ולהגביל מי יכול להתקין תוכנה על מכונות רגישות.
השני נוגע לקושחה עצמה. עדכוני קושחה לכוננים צריכים להגיע רק מאתר התמיכה של יצרן הכונן, אף פעם לא מקישור באתר צד שלישי או מכלי עדכון גנרי. במנגנון שבו הבקר מקבל כל קושחה שנחתמה, המקום שממנו הגיע הקובץ הוא הבדיקה האמיתית היחידה שנשארה, והיא הבדיקה שאתם עושים.
אם אתם מנהלים ציוד בארגון, שווה לרשום את הנקודה הזאת אצלכם: פשרה ברמת הקושחה שורדת התקנה מחדש של המערכת, ולכן מכונה שיש חשד ממשי לגביה לא חוזרת לשירות אחרי פירמוט בלבד.