
מילות מפתח: ערוצי הסתר מיקרוארכיטקטוריים, ערוצי תזמון, אבטחת סייבר, אבטחת מעבדים, AutoCC, התקפות ערוץ צד, ערוצים מבוססי זמן, שיתוף משאבים במעבדים, דוגמאות קוד, סקריפטים לגילוי, דוגמאות מעשיות
ערוצי הסתר מיקרוארכיטקטוריים הם נושא קריטי יותר ויותר בצע אבטחת סייבר מודרנית, שכן הם מייצגים דרכים נסתרות שדרכן תוקפים יכולים להבריח מידע חשוב על ידי מניפולציה של תחרות על משאבי חומרה. התקפות שנעזרות בערוצים אלו התפתחו במורכבותן, והמגינים זקוקים לפתרונות אוטומטיים ומערכתיים לגילוי, גילוי ולבסוף מניעה של ערוצים אלו. AutoCC הוא מערכת חדשנית שמטרתה לאוטומט את גילוי פרצות אלו בקנה מידה ודיוק חסרי תקדים.
מאמר זה מספק הסבר טכני כולל על ערוצי הסתר מיקרוארכיטקטוריים - מה הם, כיצד הם פועלים, ניצולים בעולם האמיתי, וחשוב מכל, כיצד כלים כמו AutoCC יכולים לגלות אותם. בכך שהוא נע מהבסיס אל המקרים המתקדמים ומכיל דוגמאות קוד לסיוע למתעסקים בגילוי, המדריך הזה מיועד הן לחדשים והן לאנשי האבטחה המנוסים.
ערוצי מיקרוארכיטקטורה הם נתיבי תקשורת הקיימים בגלל אינטראקציות לא מכוונת בתוך היישום החומרתי של מערכות מעבדים. ערוצים אלה אינם קיימים במפרט התוכנה או הארכיטקטורה, אלא נובעים מתחרות על משאבי חומרה משותפים.
ערוץ הסתר מאפשר העברת מידע בצורה שאינה מיועדת לתקשורת — לעיתים קרובות בהפרת מדיניות אבטחה, עוקפת את בקרות המערכת על ידי ניצול חומרה משותפת.
ערוץ תזמון מנצל במיוחד את השינויים בעיכובים או בתזמון הנראים על ידי תהליך, על ידי מניפולציה של משאבים משותפים בחומרה. אלה לעיתים קרובות הם הסוגים החזקים והנסתרים ביותר של ערוצי הסתר.
באבטחת סייבר, לעיתים מתבלבלים בין ערוצי צד וערוצי הסתר:
כמצוין במאמר Understanding Microarchitectural Channels, ערוצים מיקרוארכיטקטוריים פועלים בתוך הקשר CPU, תוך שימוש במשאביו, בעוד שערכת ערוצי הסתר רשתית בדרך כלל עוברת על פני רשתות מבוססות (IP, TCP וכו'), לעיתים כוללת סטאקי רשת.
מעבדים מודרניים מתקיימים מאוד ביכולתם לעשות דברים במקביל ומכילים משאבים משותפים כגון:
ותפות המרה בעודות (TLBs)**
אם שני תהליכים (מרגל ויעד) פועלים על אותה מערכת ומשתפים כל אחד מהמשאבים הללו, הם יכולים לתקשר על ידי מודולציה של השימוש שלהם במשאבים אלו.
תוצאה: המקבל יכול "לקרוא" ביטי מידע בהתאם להאם תחרות על משאבים מגדילה או מקטינה את התזמון.
תובנה מרכזית: "הערוץ" הוא האפקט הניתן למדידה על משאבים משותפים.
משתמש במטמון כערוץ:
חוקרים הראו את בריחת VM ודליפת מידע בין תשתיות בענן פומבי, כאשר נעשה שימוש במטמון L3 משותף להברחה של מפתחות הצפנה (Ristenpart et al., 2009).
מנצל שיתוף קווי זיכרון (שכפול זיכרון) כדי למדוד שימוש על ידי תהליך אחר:
clflush)Meltdown/Spectre הם ערוצי צד אבל משתמשים בעקרונות תזמון דומים ומדגישים את הסיכון האמיתי בהתקפות מיקרוארכיטקטוריות.
AutoCC (גילוי אוטומטי של ערוצי הסתר) מאפס את תהליך זיהוי ערוצי הסתר, מתמקד במשאבי מיקרוארכיטקטורה מבוססי זמן.
חיפוש ידני אחר ערוצי הסתר כולל:
ניית משאבי חומרה
זהו תהליך זמן רב, לא ניתן לקנה מידה ויכול להשתנות מהמורכבות של חומרה מודרנית.
AutoCC מדמה ומשכל את תהליך הגילוי:
תוצאה: רשימת ערוצי הסתר מיקרוארכיטקטוריים שניתן לנצל במערכת המטרה.
זיהוי הוא אתגרי בשל ה-"אות" הנמוך (תזמון) והיעדר דליפות קוד או נתונים ברורים.
נניח שאתה חושד בערוץ תזמון מבוסס מטמון בין שני תהליכים.
perf עבור לינוקסהכלי perf יכול לנטר אירועים ברמת החומרה כמו החמצות במטמון, חיזויי ענפים שגויים וכו'.
# נטר החמצות במטמון עבור תהליך 1234 (תהליך יעד) ו-5678 (מרגל)
sudo perf stat -p 1234 -e cache-misses
sudo perf stat -p 5678 -e cache-misses
השווה את הפלט כשהשניים פועלים יחד מול עצמאות.
לניתוח ארוך טווח, אסוף נתונים והצג:
import matplotlib.pyplot as plt
# סימולציה: קרוא את מספר החמצות המטמון מפלט 'perf'
cache_misses = [120, 125, 250, 245, 120, 115, ...] # סדרת זמן
plt.plot(cache_misses)
plt.title("Cache Misses Over Time - PID 1234")
plt.xlabel("Sample")
plt.ylabel("Cache Misses")
plt.show()
דקרות חדות שמתאימות לאינטר
טים של "שידור" או "קבלה" עשויות להצביע על פעילות סתר.
המניעה של ערוצי הסתר מיקרוארכיטקטוריים היא בעיה מחקר פתוח, שכן חיסול מוחלט מאתגר ללא הפסדים משמעותיים בביצועים. עם זאת, מספר אסטרטגיות יכולות להפחית ולהכיל אותם:
השתמש בצביעת מטמון, צביעת דף ומיגרציות חלוקה (Wistoff et al., 2020):
נניח שיש לך PID של שני תהליכים ($PID_VICTIM, $PID_SPY):
#!/bin/bash
# צופה להבדלים בתזמון פשוט באמצעות /proc
PID_VICTIM=1234
PID_SPY=5678
for i in {1..100}; do
TV="$(grep 'voluntary_c
txt_switches' /proc/$PID_VICTIM/status | awk '{print $2}')"
TS="$(grep 'voluntary_ctxt_switches' /proc/$PID_SPY/status | awk '{print $2}')"
echo "$i $TV $TS" >> timing.csv
sleep 0.1
done
פרסם timing.csv ב-Python או הצג ישירות.
נניח שיש לך נתוני סדרת-זמן מתואמים לשני תהליכים ורוצה לחשב מקדם קורלציה, המצביע על ערוץ הסתר אפשרי.
import numpy as np
# סדרות זמן לדוגמה (נאסף מ-perf או /proc)
victim_data = np.array([250, 255, 312, 267, 241, 256, ...])
spy_data = np.array([198, 200, 210, 215, 206, 219, ...])
correlation = np.corrcoef(victim_data, spy_data)[0,1]
print(f"Correlation coefficient: {correlation:.3f}")
if abs(correlation) > 0.5:
print("WARNING: High correlation, possible covert channel activity detected!")
else:
print("No strong evidence of covert channel in timing.")
למרות שה-AutoCC עצמו הוא מורכב, תוכל לדמות סריקה אוטומטית בעזרת shell ו-perf:
#!/bin/bash
# לולאת מבחן אוטומטית לאינדיק
טורים של ערוץ מטמון
for instr in $(cat instruction_list.txt); do
echo "Testing $instr"
perf stat -e cache-misses ./test_sender --instr=$instr &
SPID=$!
perf stat -e cache-misses ./test_receiver --instr=$instr
kill $SPID
# Parse and save stats here
done
הרחב עם יותר כלי מכשור ומדדים כדי להתקדם אל אב-טיפוס מחקר פשוט.
כאשר עיצובים מיקרוארכיטקטוריים מתפתחים במורכבותם, זרימת מידע נסתרת דרך ערוצי הסתר הופכת לדאגה קריטית ברמת אבטחת המערכת, סביבת ענן ואף הגנת נקודות קצה ב-IoT. AutoCC ממחיש דור חדש של ניתוחי אבטחה אוטומטיים, המאפשרים:
קיף של ערוצי הסתר
כיווני עתיד כוללים ניטור בזמן ריצה על בסיס eBPF, אישור פורמלי של זרימת מידע בעיצוב חומרה, ופריסת זיהוי ערוצים אוטונומי ברמת החומרה במעבדים בדור הבא.
הגנה מפני ערוצים אלו היא מירוץ חימוש מתמיד - מירוץ שבו אוטומציה כמו AutoCC היא בלתי נפרדת.
אם מצאתם את המאמר הזה מועיל, עקבו אחרינו לעוד הסברים מעמיקים וכלים מעשיים בנושא אבטחת מיקרוארכיטקטורה, פגיעויות חומרה, וכלי גילוי מעשיים.
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.