חולשות במעבדים ודרכי התגוננות

בימים האחרונים הרשת סוערת בעקבות פירצת האבטחה שהתגלתה במעבדי Intel, מעבדי AMD ומעבדי ARM השונים וכן מעבדים מסוג Qualcomm, במעבדי אינטל מדובר על פירצה נוספת וחדשה ולא על הפירצה שנחשפה בנובמבר 2017.

פירצת האבטחה אשר התגלתה חושפת את כלל המערכות החל ממערכות מבוססות Microsoft ועד מערכות לינוקס ומערכות אנרואיד למינהם ללא יוצא מן הכלל לתקיפות שונות, כגון גניבת מידע מתוך זכרון המכונה והציוד המותקף.
למרות המידע אשר נחשף עד כה ככל הנראה ישנו מידע נוסף אשר עדיין אינו נחשף ובתקופה הקרובה נוכל לדעת יותר על היקף הבעיה, השלכות ומידת השפעה על המערכות הארגוניות מעבר לקיים כיום. הגורם אשר זיהה את הבעיה הוא Project Zero מתוך Google,
בדוח שפרסמה Google הפרצה משפיעה גם על מוצרים נוספים של Google עצמה, כגון מכשירי אנדרואיד מבוססים ARM, דפדפן כרום וגם מערכת Chrome OS.
מקור הפירצה הוא בארכיטקטורה של מעבדי מסוג x86 ומעבדים מסוג 64 שיוצרו החל משנת 2004 ועדיין נמצאים בשימוש של מעבדים מודרניים אשר יוצרו עד לתקופה האחרונה, הבעיה עצמה היא בתצורת העבודה של יישומים רגילים אשר מתקשרים מול ליבת המערכת והפירצה מאפשרת באמצעות קוד זדוני לקבל מידע רגיש וע"י כך להגיע לזכרון המשמש את ליבת המערכת ללא הרשאות.

למרות שמדובר על פירצה ברמת חומרה ישנם תיקונים ועדכונים ברמת התוכנה אשר יכולים להועיל ולמנוע את הפירצה, התיקונים השונים למעשה מבצעים בידוד טבלאות ליבה (kernel page table isolation)ובניגוד למעבדי אינטל המעבדים של AMD אינם עברו תיקון זהה.

תצורת מעבדים ומושגים

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

  • User Mode – מצב רגיל שבו אפליקציות רצות ופונות למערכת ההפעלה בלבד
  • Protected Mode – מצב שבו אפליקציות מסוימות ניגשות אליו או בקשה של מערכת ההפעלה (בעקבות בקשה של אפליקציה במצב User Mode) למעבד הפועל ב – Protected Mode יש יכולת לגשת לכל הזיכרון במערכת, כולל לזיכרון וירטואלי.

למשל אם נקח פקודות מוגנות אז חלק מפקודות המכונה מותרות רק למערכת ההעפלה כמו גישה לרכיבי קלט או פלט, ושינוי של מבני הנתונים לגישה לזיכרון. הארכיטקטורה תומכת בשני מצבים לפחות כאשר אחד מהם הוא User Mode וכאשר תוכניות משתמש רצות במצב של User Mode מערכת ההפעלה מריצה את הפקודות שלה במצב kernel Mode ולאחר מכן המעבד מבצע פקודות מוגנות Protected Mode.
האופן שבו עובדים המעבדים היא בצורה כזאת שישנן יחידות המבצעות פעולות שונות ועובדים על בסיס Pipeline כאשר כל יחידה עובדת בנפרד על גבי סט של פעולות ופקודות בנושא שכוללות בין היתר:

  • פעולות של חישוב הפקודה הבאה לביצוע וקריאת הפקודה הבאה מהזכרון
  • פענוח הפקודה ושילוב עם רגיסטרים
  • קריאת הפקודה הבאה לביצוע מתוך הזכרון
  • עבודה עם רגיסטרים שמאפשר אחסון של יחידת זיכרון פנימי מהיר ביותר שנמצא בתוך יחידת המעבד
  • ביצוע פעולה לוגית למשל חישובים שונים של הםקודות והפעולות ולצורך הענין חישוב כתובת נתון זכרון וביצוע Branch ובדיוק כאן מתבצע הפעולה של המעבד
  • יחידות Prediction המאפשרות למעבד לבצע "קפיצות" של פעולות שונות שהם לא בהכרח לפי הכתובת הבאה בזכרון ולכן יתבצעו בתנאים מסוימים

הבעיה והפירצה

הדוח אשר פורסם ע"י Project Zero של Google ביצע בדיקות שונות של כלל המעבדים המודרנים הקיימים כיום על סמך חישובים של פעולות במעבד, מעבר וקפיצות של המעבד על סמך תנאים שונים בזכרון ואפילו בדיקות ברמת זכרון מטמון (L0,L1,L2).
מעבדים מודרנים עובדים על בסיס Branch prediction ועל בסיס speculative execution לביצוע פעולות ומקסום הביצועים של המעבד, למשל אם מתבצעת פעולה מסוימת אשר מסתמכת על ערכים ברמת הזכרון אשר נמצא בתהליך, המעבד יבצע פעולת prediction לניחוש הפעולה הבאה שצריכה להתרחש ויבצע את אותה פעולה לאחר בדיקת תנאים מסוימים, כאשר הערך מתוך הזכרון ישתחרר המעבד יבצע לאחר מכן יבצע commit לפעולה או לחלופין יוותר על הערך שהגיע מתוך הזכרון.
ולכן הפירצה היא ברמת ביצוע פעולת speculative execution והסתמכות על הערך והמידע שמגיע מתוך הזכרון, בצורה כזאת התוקף יכול לנצל ולבצע פעולות ברמת זכרון וברמת רגיסטרים.
הפירצה והחולשות הקיימות בתצורה המעבדים מאפשרים לנצל את כל אותן פעולות שמבוצעות על בסיס speculative execution ועל בסיס Branch ולמעשה מאפשרים בכל אותן פעולות ברמת מעבד לנצל את אופן העבודה ולגרום לזליגת מידע והתקיפה היא תקיפה מסוג side-channel.
החולשות הקיימות בפירצת האבטחה מחולקות לשלושה:

  • CVE-2017-5753 מסוג Spectre אשר מבצעת Bounds Check Bypass ומאפשרת גישה לא מורשית למידע בין אפליקציות במכונה, האפליקציה יכולה לבצע קריאה של מידע מתוך אפליקציה אחרת אחרת ולהיות חשופה למידע שקיים בה.
    הפירצה של Spectre מסוג CVE-2017-5753 קיימת במעבדים מסוג ARM,Intel,AMD
  • CVE-2017-5715 מסוג Spectre אשר מבצעת Branch Target Injection ומאפשרת גישה לא מורשית למידע בין אפליקציות במכונה, האפליקציה יכולה לבצע קריאה של מידע מתוך אפליקציה אחרת אחרת ולהיות חשופה למידע שקיים בה.
    הפירצה של Spectre מסוג CVE-2017-5715 קיימת במעבדים מסוג Intel ומסוג ARM
  • CVE-2017-5754 מסוג Meltdown אשר מבצעת Rogue Data Cache Load ומאפשרת נטרול ומפרידה בין אפליקציות המשתמש לבין מערכת ההפעלה וע"י כך מאפשרת גישה לא מורשית לזכרון ולמערכת ההפעלה וכן לאפליקציות הנוספות.
    הפירצה של Meltdown מסוג CVE-2017-5754 קיימת במעבדי Intel בלבד

למרות העדכונים שהוציאו חברות התוכנה השונות ככל הנראה בפירצה מסוג Spectre ייתכן כי יקח זמן רב להוציא תיקון. איזה תקיפות עלולות להתרחש כתוצאה מהחולשות הנ"ל?

  • Bounds Check –החולשה CVE-2017-5753 מסוג Spectre אשר מבצעת Bounds Check Bypass ומאפשרת גישה לא מורשית למידע התוקף יכול לבצע את המתקפה הבאה.
    התוקף ינצל את העובדה שתנאי מסוים לא יתרחש בפעולת העיבוד ולכן ינסה לבצע ניחוש של הפעולה בקוד (בחלק שמבצע Branch שהוא סוג של התסעפות), במידה והפעולה ללא תתרחש או התנאי לא יתקיים על בסיס פעולת speculatively execute התוקף יכול לנצל את התהליך ומכאן לנצל מידע שעבר כולל מידע מתוך מערכת ההפעלה.
  • Rogue Data Cache Load – החולשה CVE-2017-5754 מסוג Meltdown היא שונה מהחולשה של Spectre ואינה מסתמכת על ניחוש הפעולות שיבתצעו על בסיס התהליך, קוד ותנאי. הפעולות שמתבצעות הם בגישה אל זכרון Kernel ולזכרון הפיסי של המחשב ולכן מדובר על privilege escalation.
    Meltdown היא חולשה ברמת ארכיטקטורה של המעבד ולכן מאפשרת נטרול ומפרידה בין אפליקציות המשתמש לבין מערכת ההפעלה.

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

איך לעדכן שרתים ותחנות

שימו לב, Microsoft הוציא הודעה רשמית לפיה היא עוצרת את העדכונים למעבדים מבוססים AMD בגלל תקלות שונות
Windows operating system security update block for some AMD based devices

image

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

מוצרי אנטי וירוס שונים

מוצרי האנטי וירוס השונים מצריכים עדכון אחרון וספציפי ובנוסף מוצרי האנטי וירוס עדיין אינם עובדים באופן מלא עם העדכונים האחרונים של Microsoft ולכן ישנם מוצרי אנטי וירוס אשר דורשים הגדרה של ערך מסוים מול Registry.

image

תאימות של מוצרי אנטי וירוס זמינים בקישור הבא Windows antivirus patch compatibility

תחנות קצה Windows Client

חל על תחנות מבוססות Windows 7 SP1 ומעלה

  • ביצוע עדכוני Microsoft דצמבר וינואר https://portal.msrc.microsoft.com/en-US/security-guidance
  • ביצוע עדכונים ברמת Firmware
  • בדיקת תקינות באמצעות SpeculationControl בממשק PowerShell
  • בתחנות קצה יש לוודא את הערך cadca5fe-87d3-4b96-b7fb-a231484277cc
  • בתחנות קצה אין צורך בערכי רישום נוספים של FeatureSettingsOverride ושל FeatureSettingsOverrideMask

חשוב מאד לוודא שהגדרות SpeculationControl נמצאות במצב True וסטטוס תקין ללא יוצא מכן הכלל
*במערכות וירטואליות יש לוודא שמקבלים סטטוס על העדכונים מכיוון שאין אפשרות לקבל חיווי ברמת BIOS\Firmware.

למשל הדוגמא הנ"ל אינה תקינה כלל!image

המאפיינים המוצגים מתוך SpeculationControl מציגים את החולשות, העדכונים ותתי הרכיבים שנמצאים בסטטוס של המכונה ומהערכיים הנ”ל ניתן ללמוד האם המכונה מעודכנת.

BTI – מייצג את המאפיינים של Branch Target Injection השייכים לחולשה Spectre מסוג CVE-2017-5715

  • BTIHardwarePresent – האם החומרה תומכת בסיכון עצמו (Mitigation)
  • BTIWindowsSupportPresent – האם העדכון הנדרש מותקן במכונה
  • BTIWindowsSupportEnabled – האם עדיין ישנו סיכון ברמת המכונה

KVA – מייצג את המאפיינים של ליבת המערכת (KPTI) ושייכים לחולשה Meltdown מסוג CVE-2017-5754

  • KVAShadowRequired – מיידע האם המכונה עובדת עם מעבד Intel
  • KVAShadowWindowsSupportPresent – האם העדכון קיים במכונה
  • KVAShadowWindowsSupportEnabled – האם ישנה סיכון (בהתאם לעדכון שקיים)
  • KVAShadowPcidEnabled – האם ישנה אופטימיזציה ברמת המכונה

שרתים Windows Servers

חל על שרתים מבוססים Windows Server 2008 ומעלה כאשר ישנם גרסאות שרתים שאין להם עדכון כעת

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization" /v MinVmVersionForCpuBasedMitigations /t REG_SZ /d "1.0" /f

במערכות וירטואליות יש להוריד את השרתים הוירטואליים על מנת לבצע עדכון Firmware, המלצות נוספות במאמר הבא https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002

שרתי SQL

חל על שרתי SQL בגרסאות 2008 ומעלה

*על שרתי SQL ישנה השפעה משמעותית על ביצועים ולכן מומלץ להיערך טרם ביצוע העדכון
*בנוסף ישנה השפעה על אינטגרציה בין SCCM לבין SQL

שירות Azure

בשבועיים האחרונים Microsoft הוציאה מספר עדכונים מול מכונות מבוססות Azure והתריעה לגבי ביצוע עדכונים, זמני Maintenance והנחיות נוספות.
מידע נוסף בקישור הבא
Securing Azure customers from CPU vulnerability

דפדפנים

בדפדפנים מבוססים Chrome\Firefox ישנם הנחיות ועדכונים:

Chrome – עדכון ייצא בסביבות 23 לינואר
הפעלת פיצ’ר Isolation:

Firefox – ביצוע עדכון בגרסה Version 57.0.4

Edge and Internet Explorer – ביצוע עדכון Edge and Internet Explorer KB4056890

מכשירים חכמים

במכשירים חכמים ניתן לבצע עדכון ישירות וישנם דגמים שיש להם עדכונים ודגמים נוספים יקבלו בימים הקרובים, לרשימה הדגמים
Android Security Bulletin—January 2018

ספקים נוספים

מדריכים נוספים

הקישורים הבאים כוללים מדריכים קצרים ליישום העדכונים ודגשים ברמת תחנות קצה, שרתים ומכשירים

מערכות שבהם נמצאו בעיות לאחר ביצוע העדכונים

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

  • שרתי SQL מול SCCM
  • שרתי SQL מול אפליקציות צד שלישי
  • PulseSecure
  • Check Point Mobile VPN Client version E80.70
  • VMware vSphere, Workstation and Fusion
  • Symantec Endpoint Protection
  • Cisco Any Connect

***האפליקציות והמוצרים הרשומים מעלה הם על סמך לקוחות שחוו בעיות ומדובר על לקוחות שחוו בעיה בכל מוצר וכמובן אינו מידע רשמי של הספקים***

לסיכום

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

קצת מהשטח

לאחר בדיקה של העדכונים וההגדרות נמצא כי העדכון גורם לאיטיות לאחר ביצוע ההגדרות, הבדיקה נעשתה בסביבת ייצור וגם בסביבת מעבדה על שרתי Windows Server 2012 ומעלה ועל תחנות קצה מבוססות Windows 10 בגרסה 1607.
ברוב הבדיקות החומרה יחסית חדישה והיא בת שלוש וארבע שנים וגם בבדיקות אלה נוכחנו לדעת שישנו עומס על המעבד ואיטיות במיוחד לאחר הפעלת ערכי הרישום וביצוע העדכונים, העומס מתבטא בין 10% לעד 15%. במקרים בהם ישנם מעבדים ישנים יותר הגענו למצב בו ישנו עומס של עד 35%-40%.
בתחנות קצה לא הורגש שינוי משמעותי והנושא עדיין בבדיקה.

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

המידע המובא בפוסט הנוכחי הוא על סמך מידע מתוך הדוח אשר פורסם ע"י Google בקישור הבא
Reading privileged memory with a side-channel – Project Zero

***עדכונים נוספים ודגשים מהשטח ניתן למצוא בקבוצות השונות של Microsoft Community, פרטים נוספים בדף הקבוצה בפייסבוק בקישור הבא https://www.facebook.com/groups/MVCIL/

מודעות פרסומת


:קטגוריותCyber, Security

תגים: , , , ,

2 תגובות

  1. מאמר מתומצת ענייני כל הכבוד

    אהבתי

  2. הי אלי, מאמר מצויים, הייתי רוצה גם כפתור לייצוא לוורד…

    אהבתי

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת /  לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת /  לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת /  לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת /  לשנות )

מתחבר ל-%s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d בלוגרים אהבו את זה: