
בנוף המשתנה במהירות של אבטחת סייבר, התקפות חומרה התגלו כוקטור עוין חזק - המסוגל לעקוף אפילו את הגנות התוכנה החזקות ביותר. מבין אלה, התקפות הזרקת פגמים במיקרו-ארכיטקטורה בולטות, מנצלות את מסלולי הפעולה הליבה של מעבדי CPUs ומיקרו-מעבדים מודרניים. בפוסט בלוג טכני זה, נבדוק את הדקויות של הזרקת פגמים במיקרו-ארכיטקטורה, ניסויי קרני אמיתיים ומנגנוני הגנה עדכניים - מתמקדים בפרטים ב- MAFIA ("הגנה על מיקרו-ארכיטקטורה מפני התקפות הזרקת פגמים"), מודל הגנה חלוצי.
נבחן מחקרים מרכזיים, כולל:
תלמדו מהרמה המתחילה עד למתקדמת, עם דוגמאות אמיתיות ואפילו דוגמאות קוד לניסויים מעשיים (במקומות בטוחים וחוקיים).
רוב המעבדים המודרניים הם פלא של מורכבות, בנויים ממיליארדים (אם לא מיליונים) של טרנזיסטורים, מחולקים לשלבי פייפליין, מטמונות, באפרים וקווי בקרה שונים שאינם נראים לתוכנה הרגילה. היכן שהמורכבות גדלה, כך גדלים שטחי ההתקפה.
הזרקת פגמים מתייחסת באופן כללי להחדרה מכוונת (או הדמיה) של פגמים או טעויות במעגל או מערכת כדי ללמוד על מצבי כשל, לאמת טיפול בטעויות, או—מנקודת מבט תוקפנית—כדי לשבש פעולה מכוונת. בהקשר הביטחוני, הזרקת פגמים היא מחלקה של התקפות חומרה שבהן תוקפים גורמים לפגמים כדי לפרוץ הבטחות בטיחותיות (לעקוף אימות, לחשוף מפתחות, לשבור גבולות אמון).
האחרונה מסוכנת מאוד כי היא יכולה לשבש את ההיגיון הליבה של המעבד, לפגוע אפילו בקוד שרץ עם פריבילגיה הגבוהה ביותר האפשרית.
בעוד שהת
קפות תוכנה (תוכנות זדוניות, וירוסים, התפרצויות חיץ) יכולות להיות מתוקנות או מופחות, התקפות מיקרו-ארכיטקטוריות חודרות מתחת לערימת התוכנה, לעיתים ברמה שאינה נראית למערכת ההפעלה—ולעיתים אף לפירמוור של המערכת.
התקפות הזרקת פגמים לוקחות זאת שלב נוסף: השחתת הפעילות הפנימית של מעבד כדי לאלץ אותו, למשל, לדלג על בדיקות פריבילגיה או להפיק תוצאות קריפטוגרפיות שגויות.
נפרט זאת לפי מחלקות התקפה מעשיות:
בהקשרים של מחקר—ולעיתים בהתקפות מדינתיות—שיטות כמו קרני נויטרון, פולסים לייזריים ממוקדים או הפרעה אלקטרומגנטית (EM) מיושמות כדי להפוך ביטים בתוך שבבים.
הפניה: מחקר קרן DSN 2019 (Chatzidimitriou et al.)
| טכניקה | מטרה | כלים נדרשים | תוצאות נפוצות |
|---|---|---|---|
| קרן נויטרון | מרשמים פנימיים | מאיצי חלקיקים | היפוך ביטים יחידים/רבים |
| הזרקת לייזר | מצע סיליקון | לייזר ממוקד, אופטיקה | היפוך ביטים בנקודות ממוקדות |
| פולס EM | משטח השבב | מחולל פולסים, פרובים | טעויות זמניות, תקלות בתהליכים |
טכניקות אלו אינן דורשות תמיד מעבדות יקרות. ניתן לדמות ולנתח אותן באמצעות:
הפניה: הזרקת פגמים דיפרנציאלית על סימולטורים (Clereco et al.)
למה זה חשוב?
התקפות מבוססות סימולציה מאפשרות מחקר, שיחזור וניתוח התקפות ללא פגיעה פיזית או גישה לחומרה—הכרחי למחקר ולעיצוב הגנתי.
עם רקע זה, נפנה למרכז הפוסט שלנ
ו: MAFIA—הגנה שנועדה לחסום באופן פרו-אקטיבי התקפות הזרקת פגמים במיקרו-ארכיטקטורה על ידי הגנת החלקים הפנימיים ביותר של המעבד.
MAFIA מייצג הגנה על מיקרו-ארכיטקטורה מפני התקפות הזרקת פגמים. המטרות העיקריות, כפי שפורטו על ידי Karimi, Akram, Page, ו-Razavi, הן:
תחומים עיקריים שמכסים על ידי MAFIA:
בניגוד לשיטות הגנה קודמות שהתמקדו ב-זיהוי (למשל, ביטי זוגיות, קודים לתיקון שגיאות, חישובים מיותרים), החידוש של MAFIA הוא להגן באופן פעיל על אותות בקרה של צינור במהלך זמן הריצה.
נתבונן בצינור RISC זה: Fetch → Decode → Execute → Memory → Writeback
עבור כל אות בקרה (נגיד, "regWrite"), MAFIA:
ויזואליזציה:
[Fetch] -> [Decode] -> [Execute] -> [Memory] -> [Writeback]
| ^
[MAFIA Encoding]---- |
<--------[MAFIA Decoding + Check]
אם תקלת הזרקה מנסה:
בדיקות MAFIA מופעלות, ושומרות על שלמות הארכיטקטורה.
אם תוקף משתמש בקרן נויטרון כדי להשחית אות בקרה של ALU—בתקווה לשנות "add" ל-"move" (לעקוף בדיקות חתימה), בדיקות הקידוד של האותות יגלו שהתוצאה אינה תואמת לקלט המקודד והפעולה הפגומה נעצרת.
המחקר מראה שהלוגיקה של קידוד/בדיקת MAFIA דורשת 2.1% עומס שטח בלבד ומביאה לפחות מ-0.9% אובדן ביצועים על חבילות מבחן סטנדרטיות (SPEC, PARSEC).
במצבי התקפה מדומים ומעשיים:
// קוד מדומה: קידוד/פענוח אות צינור עם יתירות
module mafia_signal_protect(
input wire [7:0] in_signal,
output wire [7:0] protected_signal,
output wire error_detected);
wire [7:0] encoded_signal;
// Encode with Hamming code
assign encoded_signal = encode_hamming(in_signal);
// At stage output
wire [7:0] decoded_signal;
assign decoded_signal = decode_hamming(encoded_signal);
// Integrity check
assign error_detected = (decoded_signal != in_signal);
assign protected_signal = encoded_signal;
endmodule
כמובן שהמימוש האמיתי קיים ברמות העברת רישום עם אופטימיזציות לעיכוב מינימלי ועומס; האמור כאן הוא רק הדגמה פשוטה.
איפה ניתן להשתמש ב-MAFIA?
עבודה תיאורטית זה נהדר—אבל איך בעצם בודקים פגיעויות פגמים בחומרה? ואיך ניתן לכתוב תסריט/להפוך לבדיקה זו?
ניתן להשתמש בכלים בקוד פתוח כדי להדמות פגמים מיקרו-ארכיטקטוריים ברמה של פקודה או רישום.
נניח שאתה מריץ סשן QEMU עם הזרקת פגמים מופעלת ורוצה לבצע grep כדי למצוא השחתת רשומות:
# Run QEMU with logging
qemu-system-x86_64 -d instr,exec -D qemu-fault.log -machine accel=tcg snapshot.img
# Scan for suspicious register state transitions
grep 'fault_inject' qemu-fault.log | less
import re
def parse_fault_events(log_file):
with open(log_file, 'r') as log:
for line in log:
event = re.search(r'FAULT: (\w+) R(\d+)', line)
if event:
print(f"Fault injection on {event.group(1)} register {event.group(2)}")
ניתן להתאים ניתוח עבור ARM או פורמטים של אירועים לריסק-V.
Gem5 תומך בפגמים הניתנים לתסריט בזיכרון וברשומות:
# gem5-fault-script.py
from m5.util import addToPath
addToPath('./configs')
from common import Options
# Insert fault event
system.cpu.insertFault('int_reg', reg_num=3, tick=100000)
תמיד בצעו בדיקות כאלה על סימולטורים או CPUs בדיקות בסביבת מעבדה חוקית ומאובטחת. לעולם אל תנסו הזרקת פגמים פיזית על חומרה ייצורית.
ספירת מספר כולל של אירועי הזרקת פגמים:
grep -c 'FAULT' qemu-fault.log
import re
fault_addrs = set()
with open('qemu-fault.log') as f:
for line in f:
m = re.search(r'DEBUG: pc=(0x[0-9a-fA-F]+)', line)
if m:
fault_addrs.add(m.group(1))
print("Unique PC addresses with faults:", fault_addrs)
MAFIA מקדימת הגנה הממוקמת במעבד, אך ניתן לשלב את זה עם:
ד-טים
תוקפים מריצים אלגוריתם קריפטוגרפי עם ובלי הפעלות פגמים, ואז משווים את התפוקות כדי להסיק ביטים סודיים. ההגנה של MAFIA גורמת להתקפה כזו לחסרת תועלת בכך שהיא מבטיחה שביצועים המוזרקים בפגם גורמים לחריגה, ולא לתפוקה (שממנה ניתן לחשוף סודיות).
ככל שהמורכבות המיקרו-ארכיטקטורית גדלה, החומרה היא הגבול החדש להגנת סייבר פיזית. התקפות הזרקת פגמים, שהיו בעבר מוגבלות למעבדות ולתוקפים בעלי תקציב גבוה, נעשות יותר ויותר נגישות דרך כלי שיפור ומחקר פתוח.
MAFIA הוא צעד חשוב בהפיכת המעבדים מודעים הגנתית על מסלולי הליבה הלוגיים שלהם ביותר. על ידי קידוד וביצוע בדיקות קבועות של אותות בקרה בצנרת, היא יכולה למנוע אפילו התקפות חומרה מתקדמות ומרכזיות על חומרה עם עלות ביצועים מינימלית—תכונה קריטית לעתיד שמכוון לביטחון.
מסקנות מפתח:
MAFIA: הגנה על המיקרו-ארכיטקטורה של מעבדים מודרניים מפני התקפות הזרקת פגמים
arXiv:2309.02255
M. Karimi, N. Akram, D. Page, K. Razavi, 2023
הזרקת פגמים במיקרו-ארכיטקטורה נגד ניסוי קרני נויטרון
DSN 2019, PDF
Chatzidimitriou et al., 2019
הזרקת פגמים דיפרנציאלית על סימולטורים מיקרו-ארכיטקטוריים
IISWC 2015, PDF
Clérícó et al., 2015
מילות מפתח: MAFIA, הזרקת פגמים מיקרו-ארכיטקטורית, הגנה על אותות בקרה של צנרת, התקפת פגמים במעבד, אבטחת חומרה, קרן נויטרון, ניתוח פגמים דיפרנציאלי, סימולטור להזרקת פגמים, התקפות חומרת אבטחת מחשבים
למטרות לימוד אקדמי ומחקר אבטחת מידע אחראי בלבד.
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.