
מכשירים משובצים מודרניים—ממכשירי IoT ועד בקרי רכב—מתבססים על מיקרוארכיטקטורות מורכבות המשלבות ביצועים, יעילות ועלות. ככל שמכשירים אלו מתרבים ביישומים קריטיים, ההבנה ואבטחת ההתנהגויות המיקרוארכיטקטורית שלהם כנגד תקיפות מתקדמות היא קריטית. מבין התקיפניות הדקות והמשבשות ביותר הן תקיפות הזרקת תקלות, המסוגלות להפריע בדרכים בלתי נראות להתנהגות החומרה, לחטוף חישובים או לחשוף סודות קריפטוגרפיים.
פוסט זה בוחן מחקר עדכני בנושא הזרקת תקלות משובצת בזמן אמת עם מודעות לאירועים מיקרוארכיטקטוריים, פתרונות כמו MAFIA לצינורות מאובטחים, והדקויות של מודלים לתקלות עם מודעות למיקרוארכיטקטורה. נבחן ניטור מעשי, יישומים באבטחה ואפילו ניתוח מעשי באמצעות לינוקס וכתיבה.
מערכות משובצות הן מחשבים ייעודיים שנבנו לבצע פונקציות מוגדרות, לעיתים קרובות עם אילוצים קפדניים של זמן אמת, כוח וגודל. הם מפעילים:
איומים: בעוד התקיפות בתוכנה שכיחות, ההתקפות הפיזיות והמיקרוארכיטקטוריות מושכות יותר ויותר תוקפים מיומנים, במיוחד על מכשירים המעבדים מידע יקר ערך או קריפטוגרפיה.
הזרקת תקלות זו טכניקה שקיימת זמן רב באימות חומרה וגם באבטחת סייבר. במקרה השני, היא מהווה את הבסיס להתקפות חומרה/תוכנה מתקדמות.
מעבר לשינויים לוגיים גסים, תוקפים כיום מכוונים למיקרוארכיטקטורה—המכונה הפנימית של מעבדים, כמו צינורות, קשים, TLBs, ואותות בקרה. הצלחה כאן פירושה:
ניטור אירועים מיקרוארכיטקטוריים הוא קריטי הן לזיהוי חדירות והן להזרקת תקלות. האירועים מציעים תובנות על:
| סוג האירוע | תיאור | השלכות אבטחה |
|---|---|---|
| הסטיות תחזיות הסתעפויות | פקודות טועות מבוצעות ספקולטיבית | ערוץ-צד למפתחות, התקפות על זרימת שליטה |
| חמצות קש | גישות שאינן ב-L1/L2, גורמות לעיכובים/תקלות | דליפות תזמון, תקלות בסגנון Rowhammer |
| מחזורי שסתום | הצינורות ממתינים למשאבים/נתונים | תקלות עשויות להתפשט או להתחזק |
| נסיעות פקודות | פקודות הושלמו | חריגות מצביעות על זרימות חריגות |
| תחרות על האוטובוס | מספר אדונים מתחרים על IO בזיכרון | תקלות שהוזרקו עשויות ליצור/לנצל רעב |
ניטור מדויק בזמן אמת מאפשר גילוי, קורלציה ותגובה הן לחריגות טובות (לדוגמה, חישוב כבד) והן לתקריות מזיקות (לדוגמה, התנהגות שהוזרקה כתוצאה מגליץ').
מקור מאמר: מזריק תקלות משובץ בזמן אמת עם מודעות לאירועים מיקרוארכיטקטוריים
המאמר המוזכר מציג מזריק תקלות בזמן אמת שתוכנן במיוחד ל:
תדמיין מכשיר קריפטוגרפי משובץ: המזריק תקלות יכול להיות מוגדר רק כדי להפוך סיבית בקרת ייחודית לאחר למשל תקופה ארוכה של תחזיות הסתעפות שגויות, בבדיקת יכולת המכשיר לזהות התקפות שהוזרקו במיוחד או שעלולות לעבור ערוץ צד.
תזרים לוגי:
סקירה ארכיטקטורית:
[מקור האירוע] → [מוניטור אירועים] → [גלאי דפוסים] → [בקרת הזרקת תקלות] → [יומן אירועים/אחסון]
מקור מאמר: MAFIA - הגנה מיקרוארכיטקטורית מפני תקיפות הזרקת תקלות
מגינים מתקדמים חייבים להרחיב את הפעולה מעבר לזיהוי לקבלת מניעה או הקטנה בתוך המיקרוארכיטקטורה עצמה. MAFIA הינו פתרון ברמת החומרה שתוכנן:
התקפת דילוג פקודות מסורתית (כאשר תקלה גורמת למעבד לדלג על פקודת אבטחה) תידלק ותהסס על ידי בדיקת קווי הבקרה של MAFIA, מכוון שהדילוג יפגע בזרימות האותות והקודים המצופים.
מקור מאמר: מודלים מבוססי מיקרוארכיטקטורה לתקלות: הערכה ניסיונית והשלכות אבטחה
מודלים לתקלות מסורתיים "כקופסה שחורה" (כגון היפותפת ביט אקראית) מעריכים כיום מאוד את הדקויות והיעילות של התקפות ממוקדות, מודעות למיקרוארכיטקטורה. כקשרים מצביעים:
לתקפיץ דילוגים בנקודות תחזויות.
קטע קוד נתון:
if (user_is_admin) {
grant_access();
}
תוקף, באמצעות ניטור אירועים מיקרוארכיטקטוריים, מזהה תקופה של מאמץ גבוה (תחרויות תחזיות הסתעפות/צינור עסוק), ומתזמן גליץ לדלג על בדיקת grant_access.
לינוקס והרבה מהפלטפורמות המשובצות המודרניות חושפים פורצי ביצועים לחומרה שיכולים לשימוש לאבטחה ולטיפול בתקלות.
# ניטור כל ההסתעפויות וחמצות הקש למשך 5 שניות על תהליך עם מזהה תהליך 1234
perf stat -e branches,branch-misses,cache-misses -p 1234 sleep 5
תצוגת דוגמה:
102,365 הסתעפויות
1,235 הסטיות תחזיות הסתעפות
20,570 חמצות קש
perf record -e cache-misses,branch-misses -a -- sleep 10
# לאחר מכן, צפה עם:
perf report
נניח שאתה רוצה להוציא רק את ספירת חמצות הקש מתוך perf stat:
perf stat -e cache-misses -p 1234 sleep 2 2>&1 | grep "cache-misses"
תצוגת דוגמה:
12,345 חמצות קש
ניתוח נוסף תוך שימוש ב-Bash:
misses=$(perf stat -e cache-misses -p 1234 sleep 2 2>&1 | grep cache-misses | awk '{print $1}' | tr -d ',')
echo "סך החמצות הקש: $missis"
בואו נשלוף נתוני אירועים בזמן אמת (באמצעות subprocess) ונתריע על קפיצות חריגות:
import subprocess
def get_cache_misses(pid):
cmd = ["perf", "stat", "-e", "cache-misses", "-p", str(pid), "sleep", "1"]
result = subprocess.run(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
# Perf פלט מותקן ברירת מחדל ל-stderr
for line in result.stderr.splitlines():
if "cache-misses" in line:
count = int(line.strip().split()[0].replace(',', ''))
return count
return 0
# דוגמה: ניטור והטרעת במידה החמצות > סף
PID = 1234 # החלף עם מזהה תהליך אמיתי
WARNING_THRESHOLD = 10000
misses = get_cache_misses(PID)
if misses > WARNING_THRESHOLD:
print("התרעת: זוהתה כמות חמצות קש גבוהה! ({})".format(misses))
else:
print("נורמלי: חמצות קש = {}".format(misses))
אפשר לשלב את הסקריפט הזה במערכת גילוי חדירות בזמן אמת לסביבות משובצות/תעשייתיות.
ניתן להרחיב את רשימת האירועים (למשל, events = ['cache-misses', 'branch-misses']) ולצבור ערכים, או להתחיל לרשום אותם לגילוי אנומליות ML.
perf עם אירועים של ARM.ניטור אירועים מיקרוארכיטקטוריים והזרקת תקלות ממוקדות נמצאות בגבול המחקר והפרקטיקה של אבטחת מערכות משובצות. החידושים שנידונו מעלים הן את כוחם של תוקפים והן את החדשנות של המגינים. פתרונות כמו מזריקי תקלות עם מודעות לאירועים והגנות בעומק המיקרוארכיטקטורה (כגון MAFIA) מספקים לאנשי אבטחה ומהנדסים את:
תקלות שינחו תוכנות גילוי, תכנון ואסטרטגיות המעטה.
תובנות מרכזיות:
מזריק תקלות משובץ בזמן אמת עם מודעות לאירועים מיקרוארכיטקטוריים
arXiv:2401.08397
MAFIA: הגנה מיקרוארכיטקטורית מפני תקיפות הזרקת תקלות
מאמר IEEE TCAD
מודלים מבוססי מיקרוארכיטקטורה לתקלות: הערכה ניסיונית והשלכות אבטחה
IEEE Xplore
perf: כלים לניתוח ביצועי לינוקס
perf Wiki
ARM DS-5 Development Studio
Arm Developer
פוסט הבלוג הזה אופטימלי עבור המילים הבאות: אירועים מיקרוארכיטקטוריים, הזרקת תקלות, אבטחת מערכות משובצות, מודלים בעלי מודעות למיקרוארכיטקטורה, שלמות צינורות, ניטור בזמן אמת, אבטחת סייבר משובצת.
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.