חדשות היום

יישום אבטחה בדור “האינטרנט של הדברים” (IoT)

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

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

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

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

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

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

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

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

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

מיקרו-בקרים מוטמעים כגון אלה של משפחת Microchip SAM L11 מכילים חומרה אוכפת אבטחה המבוססת על ארכיטקטורת Arm® TrustZone® עם אמצעי הגנה קניינית מפני התקפות תוכנה. חומרת האכיפה ב-SAM L11 מאפשרים לבנות גרעין אמון שישמש להרחבת אמצעי האבטחה לשאר המערכת, המהווה את בסיס של מסגרת אבטחה מקיפה.

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

כדי לשמור על בסיס של אמון, החומרה של SAM L11 מפעילה תהליך אתחול מאובטח. כדי למנוע זאת מפני שימוש לרעה, רצף האתחול הראשוני הוא קוד המוחזק באזור Boot ROM שלא ניתן לשנות לאחר הייצור ולכן לא ניתן עקפו. לאחר סיום האתחול הראשוני, שרותים בקוד ה-Boot ROM בודקים את אותנטיות הקושחה הנותרת הדרושה להשלמת תהליך האתחול. הפעולה נעשית בעזרת מאיץ קריפטוגרפי, על-ידי בדיקה שהגיבוב (hash) המאוחסןi בכל מקטע קושחה הנו מתאים ועקבי עם גיבוב הנחיה המקודד על ידי נתיכים המוגדרים בעת הייצור. אי התאמה בערך תאפס את המכשיר ותפעיל מחדש את תהליך האתחול המאובטח. בדרך זו, גם אם האקר יצליח לבצע שינוי בקושחה המאוחסנת על שבב זיכרון flash, המכשיר לא יאותחל  בהצלחה עד לשיחזור גירסת היצרן.

לאחר שהמכשיר אותחל בהצלחה והוא מפעיל קושחה הידועה כבטוחה, טכנולוגיית Arm TrustZone המוטמעת ב-SAM L11 פועלת כדי לשמור על הפרדה ברורה בין תוכנה מאובטחת לתוכנה שעלולה להיות מסוכנת. טכנולוגיית Arm TrustZone בקוד המעבד Arm Cortex-M23 מציעה סדרה של הוראות מאובטחות, המבטיחות שכל קריאות פונקציה המבוצעות על ידי קוד לא מאובטח הנשלח לתוך התחום המאובטח ניתנות לבדיקה. טכנולוגיית Arm TrustZone מאפשרת יצירה של תחומי תוכנות אבטחה אשר מגבילים את הגישה לזיכרון שנבחר, ציוד היקפי, וקלט/פלט לתוכנה אמינה מבלי להתפשר על ביצועי המערכת. בכך שהיא מאפשרת לאסוף קוד מאובטח ומוגן, טכנולוגיית Arm TrustZone מפשטת במידה ניכרת את הערכת האבטחה של מכשיר מוטבע.

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

לדוגמה, טכנולוגיית ההטמעה של Arm TrustZone שומרת שני אוגרים המפרידים בין ביצוע  מאובטח ושאינו מאובטח ומונעת  מהנתונים במחסנית מצבי סכנה שעשויים להיגרם על ידי מטפלל פסיקה (interrupt handler). במהלך איתור באגים, הטיפול בקוד מאובטח ובקוד שאינו מאובטח נעשה באמצעות רמות גישה לאיתור באגים. מפתח העובד על המקטעים שאינם מאובטחים אינו יכול לשנות קוד מאובטח או לגשת לאתר באגים בו בצורה ישירה. הדבר תומך בהפרדה מוחלטת של תחומי אחריות וכדי שרק מפתחים עם אישורי אבטחה יכולים לעבוד על קוד מוגן.

בדרך כלל, מפתח שהוטל עליו כתיבת יישומים מאובטחים יספק קובצי כותרת ורוטינות ספריה המאפשרים לקוד לא מאובטח לבצע בקשות, כגון הצפנת חבילת רשת אותה ניתן לשלוח דרך האינטרנט. לאחר מכן, היישום המאובטח נטען לזיכרון באזור מוגן. כאשר מפתחים ללא סווג בטחוני המפתחים את קודהרישות, הם ישתמשו בספרייה ובקובצי קישור המסופקים, אך יש להם גישה רק ברמת ה-API: הקוד המאובטח והנתונים שלו יהוו “קופסה שחורה”. נסיונות לשנות את הקוד המאובטח ניתן להחשיל בעת אתחול משום שהגיבוב (hash) שלו אינו תואם בזמן ריצה. הדבר אפשרי באמצעות בדיקות עקביות שנעשות על ידי תהליך האתחול המאובטח והנצחי, המוצע על ידי SAM L11. לדוגמה, מניפולציית מצביעים הפונה למיקום שגוי תגרום לתקלה.

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

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

התוצאה של אמצעי האבטחה המשולבים ב-SAM L11 המשתרעות מהגנה פיזית של זיכרון לטכננולוגיית ההפרדה של Arm TrustZone מספקת ליצרני ציוד מקורי (OEM) את היכולת לבנות אבטחה הוליסטית במכשירים המוטבעים שלהם ולהבטיח שהיישומים אינם החוליה החלשה ב-IoT.

ראמאנוג'ה קונרדי, מהנדס שיווק מוצר בכיר 32-ביט MCU, טכנולוגיית מיקרו-שבבים

תגובות סגורות