
פורסם: [תאריך היום]
התקפת ערוץ צדדי היא סוג חזק של ניצול אבטחה שבו תוקף מחפש מידע רגיש — לא על ידי פירוק הסכימה הקריפטוגרפית שמיועדת — אלא על ידי לימוד של חפצים מעשיים כמו דפוסי גישה לקאש, תזמון, כוח, פליטות אלקטרומגנטיות (EM) או אפילו קול ורעידות.
בקצרה, ערוצי צדדי הם הדלפות "מקריות" בכל תהליך חישובי: שבילי נתונים קטנים שנותרו על ידי רכיבים פיזיים או לוגיים בעת עיבוד מידע מוגן.
אנלוגיה מעולם האמיתי:
תחשבו על תרחיש של פתיחת מנעול. במקום להשתמש בכוח ברוטלי כדי למצוא את המפתח, אתם מקשיבים בקשב רב כאשר כל פין נכנס למקומו — הצליל והתזמון מסגירים מידע!
ערוצי צדדי נפוצים:
מדוע זה חשוב:
התקפות ערוץ צדדי יכולות להתעלות מעל מערכות קריפטוגרפיות מתמטיות חזקות ביותר, לעיתים ללא צורך בפגיעויות תוכנה — רק בקרבה או גישה למשאבי מחשוב משותפים.
Intel Optane Persistent Memory (PMem) שייך לשכבה חדשה של זיכרון שנקראת זיכרון לא נדיף (NVM). בניגוד ל-DRAM מסורתי, שמאבד את תוכנו כשהוא מבוטל חשמל, Optane שומר את הנתונים — מטשטש את הגבול בין RAM לאחסון.
מאפיינים מרכזיים:
מערכת Optane טיפוסית:
[CPU] <---> [L1/L2/L3 CPU Caches] <---> [Memory Controller] <---> [Optane Persistent Memory (PMem)]
^
[Traditional DRAM] ---------------------------------------/
ההתמשכות, הצפיפות הגבוהה והאינטגרציה הקרובה של Optane PM עם קאש ה-CPU הופכות אותו למטרה מרגשת ועדינה עבור תוקפי ערוץ צדדי.
עד לאחרונה, רוב המחקר על ערוצי צדדי התמקד ב-DRAM או בקאש של ה-CPU, אבל החומרה הייחודית והמבנה הקאש הפנימי החדש של Optane מתארים מסלולי התקפה חדשים.
המאמר "Persistent State Side-channel Attacks on Intel Optane Persistent Memory" מדגיש את האנליזה הראשונה שיטתית על אבטחת צדדי של Optane — חושף שהנחות שמורות פעם אינן תקפות, ומניעים אסטרטגיות הגנה חדשות.
ארכיטקטורות זיכרון מסורתיות מכילות היררכיית קאש מתועדת היטב: L1, L2, L3 ב-CPU, ובמקרים אפשריים בופרים לשורות ושתים ב-DRAM. Optane PM, מצד שני, מציג קאש פנימי בלתי מתועד.
המחקר של USENIX 2023 השתמש במיקרו-בנצ'מרקים כדי לחשוף את ארכיטקטורת הבופר של Optane. היררכיית הקאש הפנימית הינה בקירוב כדלקמן:
| מאפיין | DRAM | Optane PM |
|---|---|---|
| תנודתיות | נדיפי | לא נדיף |
| גודל בופר שורה | ~8KB | קוייפ שורה: עד 256KB (הפוך הנדסה) |
| חיי בופר | מתנקה בכיבוי | מתמשך או חצי-מתמשך |
| פני שטח התקפה | מוגבל ל-DRAM | מוגברת על ידי בופרים גדולים ומתמשכים |
הגודל וההתמשכות של קוייפי השורה של Optane מאפשרים ערוצים צדדיים חדשים, בעלי רזולוציה גבוהה זמנית ומרחבית.
Prime+Probe היא התקפת תזמון קאש נפוצה לשימוש להסיק דפוסי גישה בסביבות זיכרון משותף.
מכיוון שהבופרים הפנימיים של Optane הם גדולים ומתמשכים, Prime+Probe מקבל יכולות חדשות חזקות:
המשמעות המעשית:
תוכנה זדונית או דייר A יכולים לבדוק את צפיפות הבופר של Optane, ללמוד איזה אזורי זיכרון הדייר B ניגש — אפילו לאחר נפילה או אתחול מחדש.
שלב חשוב בהערכת אבטחה הוא הבנת החומרה. המחקר השתמש במיקרו-בנצ'מרקים של תזמון כדי לחשוף אמפירית:
החוקרים יצרו כלים רמת מערכת נמוכה כדי לגשת במהירות (קריאה/כתיבה) לרצפים של כתובות זיכרון ולתעד את התזמונים. שונות בתזמונים מבהירה פגיעות\חטאות קאש\בופר.
import time
import mmap
ADDR = 0x10000000 # כתובת פיזית לדוגמה
with open("/dev/mem", "rb") as f:
mem = mmap.mmap(f.fileno(), 4096, offset=ADDR)
t1 = time.perf_counter_ns()
data = mem.read(64)
t2 = time.perf_counter_ns()
latency = t2 - t1
print(f"Read latency: {latency} ns")
mem.close()
הערה: גישה ל-/dev/mem ולכתובות פיזיות דורשת הרשאות root! השתמש בסביבה מעבדה מבוקרת.
על ידי שינויים בצעדים ומדידות ההשהיות, החוקרים מיפו כמה כתובות מוחזקות במשותף בבופר לפני התחלפות — וכך ביצעו הנדסה הפוכה של הקאש\בופר במידת אסוציאטיביות.
נניח ששני שוכרים חולקים חומרה בסביבת ענן, כל אחד משתמש בזיכרון נתמך ב-Optane. שוכר A מבצע התקפת Prime+Probe על קויישי הבופר של Optane:
נניח שאינו ניתן להשחרר או שהבופר איננו מאופס לאחר אובדן כוח (או חוזר לעבודה מהר מספיק לצורך התמדה):
עבור חוקרים וצוותים אדומים, התנסות בביצוע מיקרו-בנצ'מרקים היא חינוכית. להלן דוגמאות קוד בסיסיות לסריקת בופרים של Optane ופירוש נתוני תזמון ב-Bash וב-Python.
#!/bin/bash
# מדידת זמן קריאת זיכרון באמצעות mmap
FILE="/mnt/pmem0/testfile"
dd if=/dev/zero of=$FILE bs=64K count=1 # הכנת קובץ
for i in {1..1000}; do
t1=$(date +%s%N)
dd if=$FILE of=/dev/null bs=64 count=1 iflag=direct 2>/dev/null
t2=$(date +%s%N)
echo "$(($t2 - $t1))"
done > timings.txt
import matplotlib.pyplot as plt
with open("timings.txt") as f:
times = [int(line.strip()) for line in f]
plt.plot(times)
plt.xlabel("נערך")
plt.ylabel("זמן (ns)")
plt.title("מיקרו-בנצ'מרק השהיית גישה ל-Optane")
plt.show()
מה לחפש:
תבניות חזרתיות — "דחיפה" בזמן גישה בדרך כלל מצביעה על החטאת בופר (החלפה על ידי תהליך אחר).
כלים מתקדמים יותר יקצו מערך גדול ממופה ישירות ל-Optane PM ויגשו אליו בדפוסים מחושבים שמטרתם קווי בופר ספציפיים — ואז ישתמשו בנתוני תזמון כדי לשחזר את המיפוי.
הזהרה:
בעוד שזה מועיל למחקר, פעולות אלה עשויות להפר מדיניות ספק בחומרה ביצור. הגבל לסביבות בחינות ייעודיות, מבודדות.
התנגדות לערוץ צדדי היא רב-פנים, הכוללת חומרה, תוכנת מערכת וביצויי יישומים.
ליישם רוטינות קריפטוגרפיות וגישה לנת
ונים רגישים באופן ללא שינוי בזמן וללא תיקים תלויי דפוס:
כלים ומשאבים:
עם הרחבת טכנולוגיות זיכרון מתמשכות כמו Intel Optane PM במרכזי נתונים, ענן ותשתיות AI, שטח הפנים להתקפות צדדי מתפתח. ארכיטקטורת הבופר הפנימית — שעד כה נזנחה כמסלול התקפה — כעת מצריכה התמקדות שיטתית גם מצד התעשייה וגם מצד המחקר.
נקודות מפתח:
השאר מעודכן:
לעדכן באופן קבוע אזהרות חומרה, מחקרים אבטחתיים, ולפרוס הקלות באופן פרואקטיבי על מנת להקדים תוקפים המנצלים ערוצי צד על טכנולוגיות מתפתחות.
פוסט זה הוא חלק מסדרה בנושא אבטחת חומרה וטכנולוגיות זיכרון מתפתחות. אם ניראה שהיה מועיל, שתף עם הצוות שלך והירשם לקבלת עדכונים על אבטחת סייבר בדור הבא.
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.