אבטחת מידע גרועה ב-UEFI

בכל מחשב מה-3 שנים האחרונות (לפחות) ישנו תחליף ל-BIOS שנקרא UEFI. ה-BIOS במחשב הוא דבר עתיק והיסטורי, כתוב באסמבלר וקשה להוסיף לו חלקים שטכנולוגיות חדשות צריכות ו-UEFI בא בעצם לתקן את המצב. עם UEFI למשתמש הקצה יש ממשק נוח עם עכבר, חלק מיצרני הלוחות מוסיפים גם ממשק לאנשים שלא מבינים שום דבר ב-BIOS ורק מעוניינים ב-Boot חד פעמי של DVD או USB חיצוני, ובקיצור -UEFI נוצר כדי להשלים פערים וגם לתת חיים קלים ליצרני הלוחות והן למערכות הפעלה ב"הכרה" ו"איפוס" טכנולוגיות חדשות שיוצאות כל תקופה (דוגמאות פשוטות: כניסת M.2 ל"מקלות" SSD, כניסת SATA Express ועוד) וכמו כן הוא גם יודע לתמוך אחורה בהרצה של ROM שונים מכרטיסי כמו SCSI, HBA, Network וכו'.

ה-UEFI גם תוכנן להיות כלי עזר למשתמשים המתקדמים ובמרבית הלוחות קיים גם EFI Shell, שהוא מעין Command Line פנימי לבצע פעולות שונות וישנה רשימה מכובדת של פקודות שהוא מכבד, וכן, אפשר לכתוב גם סקריפטים משלכם (רק תשמרו אותם עם סיומת nsh על מנת שתוכלו להריץ מ-EFI SHELL במכונות אחרות). משתמשי לינוקס עם קרנל 3.3.0 ומעלה מוזמנים להכיר את EFI Boot Stub שמאפשר להקים מערכת לינוקס מינימלית שתעלה ישירות מה-EFI (ולהרפתקנים מביניכם – אפשר להחליף את ה-EFI Shell שקיים ב-UEFI בגירסת לינוקס הזו, אם כי היא צריכה להיות קטנה וצריך להכיר את ה-UEFI טוב בשביל לא למצוא את עצמכם עם מחשב לא פעיל).

אבל יש משהו אחד מאוד גרוע ב-UEFI וזהו עניין האבטחת מידע. UEFI טכנית תומך בדברים שקשורים באבטחת מידע (כמו Boot רק של מערכות חתומות או עדכון UEFI רק של Image חתום), אבל מבחינת ה-UEFI עצמו – אין בתוכו מחשבה על אבטחת מידע.

קחו סיטואציה דמיונית מפחידה: אפשר לכתוב נוזקה שתרוץ על ה-EFI SHELL והיא תאוכסן על ה-NVRAM (הזכרון הלא-נדיף שעליו יושב ה-UEFI) ולא חשוב כמה פעמים תפרמט את הדיסק הקשיח שלך, הנוזקה תהיה בפנים ולך תגלה שהיא בכלל נמצאת ב-UEFI. אפשר גם להחליף קריאות ב-UEFI כך שאם מערכת ההפעלה תבקש לקרוא/לכתוב קובץ מסויים, הנוזקה תבצע X (אגב – ל-UEFI יש גם גישה לכרטיסי הרשת שלך, הן החוטי והן האלחוטי, תגידו תודה לאינטל עם ה-vPro) וזה ירוץ גם אם הדיסק שלך מוצפן כולו. תאר לך סיטואציה שהנוזקה מתוכנתת לעקוב אחרי קבצי PST במחשב שלך והיא משדרת אותם בחלקים למקום מרוחק. לא נעים.

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

גם גוגל עמדו בפני אותה בעיה שהם התחילו לשחרר את כרום OS. הם לא יכלו לסמוך על BIOS כי הוא ישן מדי ובנוסף כרום OS אינו תלוי מעבד (יש כרומבוקים גם מבוססי מעבדי אינטל וגם מבוססי ARM). את ה-UEFI הם בדקו והחליטו להתעלם ממנו והם לקחו פרויקט צעיר בקוד פתוח שנקרא CoreBoot.

פרויקט Coreboot התחיל את הכל מחדש בעצם. בבסיסו הוא מבצע דברים מועטים ועושה את זה בצורה מאוד מהירה (על מעבד סלרון הכי פשוט כל התהליך POST של Coreboot לוקח פחות מ-0.4 שניות לעבוד):

  • לוודא שה-Coreboot הוא אכן ה-image המקורי שמגיע מגוגל. במידה ולא – יש עותק גיבוי שמועלה מיידית ומוחלף.
  • לאפס את כל הציוד
  • להפעיל Boot ממערכת ההפעלה החתומה בלבד שנמצאת על ה-SSD או את ה-Recovery החתום שהמשתמש צורב על דיסק און קי

זהו, זה הכל. אין למשתמש שום אינטרקציה ושום אפשרות לשנות שום דבר ב-Coreboot שמגיע עם הכרומבוק (וגם אם מישהו יגנוב את ה-SSD של הכרומבוק, הוא לא יוכל לגשת למידע הואיל וכל המידע על ה-SSD מוצפן עם מפתח שיושב ב-Coreboot).

מבחינת PC – ה-Coreboot נשמע כמו מתכון לצרות: מה אם יש לי 2-3 דיסקים קשיחים ואני מעוניין לארגן מי מהם יעלה ראשון, שני וכו'? מה אם אני מעוניין לבצע OverClock, להפעיל או לכבות פונקציונאליות שונה במחשב? לזה יש בהחלט דרישה בעולם ה-PC. לכך ב-Coreboot יש חלק שנקרא Payload, זהו חלק ש"מתלבש" על ה-Coreboot ורץ מיד לאחר איפוס החומרה, ועם Payload מסוים, אפשר להציג למשתמש הוראות ללחוץ על מקש זה לקבל תפריט הגדרות, מקש אחר לקבל Boot menu וכו', כלומר מערכת ה-Coreboot הקטנה – אפשר להגדיל אותה (ואגב, היא לא כזו קטנה שהיא מגיעה עם מחשבי הכרומבוק, הואיל והיא מגיעה עם חלקים בינאריים סגורים של יצרניות החומרה, לכו תשכנעו את Qualcomm, Rockwell או אינטל עצמה – לפחות blob בינאריים שיש ב-Coreboot. הם לא מסכימים לכך, במיוחד לא את החלקים של ה-WIFI ו-HDMI/DisplayPort כי בקוד שלהם יש DRM).

אז כפי שניתן להבין, יש אלטרנטיבה ל-UEFI, רק מה – אי אפשר להחליף UEFI של לוח האם שלך ב-Coreboot (תנסה וסביר להניח שתמצא את לוח האם שלך די .. מת). עכשיו חסרה הדחיפה של אינטל לעבור ל-Coreboot ואמנם – אינטל שחררה לאחרונה קוד חדש ל-Coreboot שיתמוך בארכיטקטורה החדשה שלהם (Skylake) שתוכרז בערך בעוד שבועיים – ב-5 לאוגוסט. זה כמובן לא אומר שמיד יצאו לוחות עם Coreboot, סביר להניח שיקח שנה (אולי פחות) עד שנראה לוחות חדשים עם השבב של אינטל ועם Coreboot, אבל זהו בהחלט הצעד הנכון.

אז מה ניתן לעשות עם בעיות האבטחה של UEFI? מומלץ ראשית להפעיל סיסמא. ב-UEFI, בניגוד ל-BIOS, הוצאת הסוללה לא תשנה כלום (טוב, חוץ מהשעה/תאריך) הואיל והסיסמא מאוחסנת על ה-NVRAM והוא לא נמחק בגלל שאין סוללה. האם זו תהיה הגנה טובה? לא, אבל אין הרבה מה לעשות מעבר לכך. זכור שאפשר תמיד ליצור איזה USB BOOT מבוסס לינוקס וחתום עם Secure Boot ואז כל מה שצריך זה ללחוץ על מקש בהפעלת המחשב וניתן לגרום למחשב לעשות Boot מאותו USB ואז "לחגוג" על המחשב וגם להשתמש בתמיכת ה-EFI SHELL כדי לשתול נוזקות.

זה המחיר של אי חשיבה על אבטחה כשתכננו את ה-UEFI לצערנו.

6 תגובות בנושא “אבטחת מידע גרועה ב-UEFI”

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

  2. אחי ממש תודה רבה על ההסבר הנפלא.
    מאוד מאוד אהבתי את הסגנון כתיבה שלך.
    ועל ההסבר המקיף. ומה הפיתרון הקיים כיום.
    אם יש לך עוד מאמרים ממש אשמח לקרוא.
    תודה רבה על ההשקעה.

  3. מה שאתה אומר זה ממש חידוש לא ידעתי את זה לפני כן. וזה ממש עזר לי
    איך להתקין את המערכת הבאה שלי במחשב. וגם להבין יותר טוב בכלל על efi bios וכו.
    תודה.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *