
מחבר: [שמך], מומחה לסייבר
פורסם: 2024
דלתות אחוריות בחומרה הפכו לדאגה דחופה בעולם הסייבר המודרני. מכיוון שהאיומים עוברים את גבולות התוכנה, מוסדות ואנשים פרטיים חייבים להבין מהן דלתות אחוריות בחומרה, מדוע הן מסוכנות כל כך ומה ניתן לעשות כדי לזהות ולמנוע אותן. בפוסט בלוג מקיף זה, נעסוק ב:
בואו נעמיק בעולם הצללים של דלתות אחוריות בחומרה.
דלת אחורית בחומרה היא שינוי זדוני או פונקציונליות מוסתרת שנוספו לרכיב חומרה (כגון מעגלים משולבים, מעבדים, בקרי זיכרון) המעניקים לתוקפים גישה או שליטה סמויה על המערכת. בניגוד לדלתות אחוריות בתוכנה—קוד זדוני שהוכנס לאפליקציות או מערכות הפעלה—דלתות אחוריות בחומרה נמצאות ברמה הפיזית והן קשות מאוד לזיהוי או לנטרול.
מאפיינים מרכזיים של דלתות אחוריות בחומרה כוללים:
לפי הערך בוויקיפדיה על דלתות אחוריות בחומרה:
"דלתות אחוריות בחומרה הן קשות לזיהוי ואי אפשר להסירן באמצעות שיטות קונבנציונליות כמו תוכנת אנטי וירוס. הן גם יכולות לעקוף אמצעי אבטחה אחרים..."
הנקודה הנפוצה ביותר להחדרת דלתות אחוריות בחומרה היא בשלב התכנון או הייצור. עובד סורר, גורם פנימי, או קבלן שנחשף ללחץ עשוי להכניס שערי לוגיקה או מיקרוקוד שנעשה שימוש בהם רק בתנאים מסוימים.
דוגמה:
רבים מהמכשירים בחומרה נשענים על קושחה—סוג של "תוכנת חומרה". פגיעה בשכבה זו מאפשרת לתוק
פים להכניס דלתות אחוריות שממשיכות להישמר מתחת למערכת ההפעלה.
דוגמה:
תוקפים מכוונים לחומרה שהיא עוברת דרך שרשרת האספקה העולמית—מחומרי הגלם ועד ההרכבה. שתלים פיזיים, כגון שבבים נוספים או רכיבים שהשתנו, יכולים להיות מוכנסים בצורה סמויה.
דוגמה:
דלתות אחוריות בחומרה מאיימות על ביטחון לאומי, שלמות התאגידים ואפילו על פרטיות אישית מכמה סיבות:
יתר על כן, הקיום שלהן קשה להוכחה או להזמה. סריקה נקייה של תוכנה אינה אומרת דבר על מה שמסתתר בחומרה.
ה-NSA (הסוכנות לביטחון לאומי של ארה"ב) נחשה זה זמן רב לפעול להשפיע על תכנון שבבים ומאיצי קריפטוגרפיה לכלול "מלכודות" המאפשרות פיקוח ממשלתי. הגנרטור של מספרים אקראיים Dual_EC_DRBG](https://en.wikipedia.org/wiki/Dual_EC_DRBG), למשל, הוטמע בשבבים וחומרה ונמצא לאחר מכן ככולל דלת אחורית סבירה.
ב-2018, בלומברג טען שסין החדירה שבבים ריגול זעירים ללוחות אם של Supermicro שנשלחו גלובלית. אף שהסיפור נשאר שנוי במחלוקת ומוכחש על ידי המעורבים, הוא מדגיש כמה שרשרות אספקה מורכבות הן פגיעות לשתלים פיזיים.
אם כי לא דוגמה לחומרה, התקפת שרשרת האספקה של 2017 נגד Asus Live Update הראתה כיצד תוקפים יכולים לפגוע בתוכנה ברמת הקושחה. אם הייתה מוסתרת לוגיקה דומה בחומרה עצמה, זיהוי היה עוד יותר קשה.
דיונים בפורומים וב-StackExchange הצביעו על כך שיצרני System-on-Chip (SoC)—במיוחד אלו עם תהליכי פיתוח סגורים—יכולים להחדיר דלתות אחוריות "לבדיקה" הנגישות באמצעות פינים או ממשקים מוסתרים.
רבים מהבקרים מיקרו כוללים "מצבי בדיקה" או "מצבים דיבוגיים" שנותרו מהייצור. אם אלה אינם מנוטרלים לפני המשלוח, הם יכולים לספק גישה שלא תועדה—ובכך למעשה פועלים כדלתות אחוריות.
כפי שנדון בנייר של אוניברסיטת קולומביה "השקטת דלתות אחוריות בחומרה"](https://www.cs.columbia.edu/~simha/preprint_oakland11.pdf):
לסיכום, דלתות אחוריות בחומרה הן דוגמה מובהקת ל"מחט בערימה של שחת".
בואו נזוז מהבסיסים למושגים מתקדמים יותר של זיהוי.
הכי טוב עבור: חובבי טכנולוגיה, בודקי חדירות, אנשי מקצוע עם גישה פיזית למכשיר
בדיקה חזותית של לוח מעגלים יכולה לעיתים לגלות חריגות:
מגבלות: שבבים קטנים ושתלים בקנה מידה זעיר לעיתים קרובות מתחמקים מעיניי הנראה בעין בלתי מזוינת.
# השתמש ב-'i2cdetect' כדי לסרוק עבור התקני I2C שלא צפויים (דורש i2c-tools)
sudo apt-get install i2c-tools
sudo i2cdetect -y 1
בדוק את הפלט מול התרשים הרשמי של הלוח שלך.
הכי טוב עבור: מומחי פורנזיקה, משתמשים מתקדמים
במכשירים רבים ניתן להשליך קושחה באמצעות יציאות דיבוג JTAG או UART. ניתוח תמונות קושחה יכול לזהות פונקציונליות לא מורשית (כמו סיסמאות מנהליות מקוריות, פגזים דיבוגיים).
כלים:
# התקן flashrom ו-binwalk
sudo apt-get install flashrom binwalk
# השלכת קושמת BIOS (על מכשיר נתמך)
sudo flashrom -r bios_dump.bin
# נתח עבור מודולים חשודים
binwalk bios_dump.bin
חפש מחרוזות לא רגילות, חלקי קוד מוצפנים או ערכים "קסם" בפלט.
אמנם לא ניתן לזהות דלת אחורית בחומרה ישירות מהתוכנה בלבד, אך ייתכן שתתקבל רמזים על חומרה חשודה או התקנים אנומליים. להלן כמה דוגמאות קוד עבור ספירה בסיסית של חומרה.
# הצג את כל התקני ה-PCI והיצרנים שלהם
lspci -nn
חפש מזהי יצרנים לא ידועים או לא מאומתים.
import subprocess
trusted_vendors = ['Intel', 'AMD', 'NVIDIA']
output = subprocess.check_output(['lspci'], universal_newlines=True)
for line in output.splitlines():
if not any(vendor in line for vendor in trusted_vendors):
print("התקן חשוד: ", line)
lsusb
import subprocess
trusted_vendors = ['Google', 'Apple', 'Realtek']
output = subprocess.check_output(['lsusb'], universal_newlines=True)
for line in output.splitlines():
if not any(vendor in line for vendor in trusted_vendors):
print("התקן USB לא מהימן: ", line)
# בלינוקס מוטבע ARM, בדוק עבור התקני בדיקה/דיבוג
ls /dev | grep -i debug
הכי טוב עבור: מעבדות מתקדמות, מוסדות מחקר
באמצעות מדידת פליטות אלקטרומגנטיות, שימוש בכוח, או וריאציות בזמן, ניתן (בתיאוריה) לזהות את הפעלת דלת האחורית הנסתרת. לדוגמה, שבב שלפתע מוריד יותר חשמל כאשר מעבד אות "קסם" עשוי להפעיל מעגלים זדוניים.
כלים:
הכי טוב עבור: מעבדות לאומיות, ארגונים גדולים, מעצבי שבבים
עלות: מאות אלפי עד מיליוני דולרים ומאמץ של חודשים.
כאשר אפשרי, השתמש בחומרה במקור פתוח ופרסם תרשימים מלאים ושל עיצובים של שבבים לצורך בחינה ברמת עמיתים. אף שאין זו פתרון פלא, חומרה פתוחה מקשה מאוד על החדרת דלתות אחוריות על ידי חשיפתה לביקורת ציבורית.
כאשר מכשירים נעשים מורכבים ומחוברים יותר (IoT, 5G, מחשוב בקצה), פני השטח לאיומים של דלתות אחוריות בחומרה מתרחבות:
לסיכום: ההגנה היחידה הבטוחה היא לא לסמוך על מה שאתה לא יכול לאשר בצורה עצמאית והשקעה בשרשרות אספקה מהימנות, בדיקה חזקה וביקורת שוטפת.
ולומביה (PDF)](https://www.cs.columbia.edu/~simha/preprint_oakland11.pdf) 3. StackExchange: זיהוי דלתות אחוריות בחומרה 4. Binwalk - כלי לניתוח והוצאת קושחה 5. Flashrom - שליטה אוניברסלית ב-flash 6. בלומברג: ההאק הגדול 7. RISC-V International: אקוסיסטם חומרה בקוד פתוח 8. פרויקט מחשוב פתוח
מילות מפתח: דלת אחורית בחומרה, אבטחת חומרה, התקפת שרשרת אספקה, ניתוח קושחה, זיהוי דלתות אחוריות, סייבר, מערכות מוטמעות, שתלים בחומרה
הצהרה: זיהוי והסרה אמיתיים של דלתות אחוריות בחומרה הם מורכבים ואולי בלתי אפשריים ללא משאבים משמעותיים. הפוסט הזה נועד למטרות חינוכיות בלבד.
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.