
תוכן העניינים
עם התקדמות האדריכלות של מחשבים, מעבדים מודרניים נהיו פגיעים למגוון רחב של התקפות המנצלות את תכונות החומרה ברמה נמוכה. ערוצים מיקרוארכיטקטוניים—כולל ערוצי צד וערוצי כיסוי—השתנו ממקרי סקרנות תיאורטיים למספר סכנות אבטחה מעשיות, המאפשרות לתוקפים לדלוף מידע רגיש מבלי לעורר התראות אבטחה קלאסיות.
מקרה שימוש מדאיג במיוחד הוא יצירת ערוצי כיסוי בתכולה גבוהה, שמסוגלים להעביר כמויות גדולות של מידע סודי בצורה מהימנה בין שני תהליכים משתפי פעולה, גם מעבר לגבולות תהליך או אבטחה. כפי שגולו ונבדקו בהבנת ושיפור ערוצי כיסוי בתכולה גבוהה באמצעות הנדסה של ערוצים מיקרוארכיטקטוניים (HPCA 2015) ומחקרים לאחר מכן, וקטורי תקיפה אלו מושפעים בעולם האמיתי ודורשים בדיקות קפדניות.
פוסט זה מסביר את הערוצים המיקרוארכיטקטוניים מרמה בסיסית לרמה מתקדמת, מתאר כיצד ערוצים בתכולה גבוהה מהונדסים, מספק דוגמאות קוד לזיהוי ומדידה, סוקר נתוניו הקיימים ומתאר את החשיבות של נושא זה בתוך הביטחון המודרני.
ערוצים מיקרוארכיטקטוניים נובעים מהיישום הפיזי של האדריכלות של המעבד—הקרויה "מיקרוארכיטקטורה". בעוד שהאדריכלות מתארת מה המעבד עושה (סט הפקודות), המיקרוארכיטקטורה מתארת איך היא משיגה זאת (צינורות, קישרות, מאגרים, טבלאות ניבוי וכו').
מעבדים מתוכננים לביצועים—לא לבידוד אבטחה ברמה המיקרוארכיטקטונית. שיתוף משאבים מוביל לשינויים בתזמונים, זמינות או התנהגות הנראית על ידי תוכנה אחרת, שיכולה לשמש לדלף סודיות.
רעיון עיקרי: גם אם לשני תהליכים אין זיכרון משותף, הם עשויים לשתף חומרה—ומאפשרים תקשורת.
דולציה של שימוש בקו קישרה משותף או מנבא סניפים.
ההבדל:
ערוצי צד מדליפים סודות שלא במכוון; ערוצי כיסוי נבנים דווקא לצורך תקשורת בין משתפי פעולה על פני גבולות אבטחה.
ערוצי כיסוי מודרניים יכולים להיות מהונדסים בשביל אמינות ותכולה גבוהה (רוחב פס), המסוגלים לדלוף כמויות משמעותיות של נתונים בפרקי זמן קצרים. נשבור כיצד תוקפים משיגים זאת.
כדי שערוצי כיסוי יעבדו, משאבים מיקרוארכיטקטוניים משותפים הם חיוניים. כפי שמוצג על ידי AutoCC: גילוי אוטומטי של ערוצי כיסוי במעבדים עם חלקי זמן (פרינסטון, 2023):
| סוג משאב | מנגנון דוגמא | וקטור תקיפה |
|---|---|---|
| קישרות | קישרות נתונים ותוכנה L1/L2/L3 | Prime+Probe, Flush+Reload |
| מנבא סניפים | טבלאות היסטוריה של כיוונים, BTB, RSB | BranchShadowing |
| TLBs | מתורגמים משותפים | TLBleed-style attacks |
| אוטובוסי זיכרון | בנקי DRAM, מאגרי שורות | DRAM row channeling |
| מאגרי חיזוי | חלקי חיזוי חומרה, חיזוי קורבני | Spectre variants |
תהליך שולח יכול למלא סט קישרה (לזרוק כתובות מסוימות לזיכרון). המקבל, הפועל מאוחר יותר, בודק את זמן הגישה לאותן כתובות:
תיאור:
השולח ממלא (Prime) סט קישרה. אם הסקרנות של המקבל מציגה קריאות איטיות, הוא מזהה שהקישרה הוצאה בין הסריקות (מציינת ביט מסויים).
משמש עבור:
דליפת נתונים מסביבות מוגנות או מפוקזות (למשל, JavaScript בדפדפנים) לתהליכים לא מהוגנים.
רוחב פס:
בהתאם לחומרה, מאות קילו ביט לשנייה אפשרי כמו שמוצג ב-HPCA 2015.
תיאור:
נשען על זיכרון משותף, כגון ספריות קוד ממופות באותו מיקום בתהליכים מרובים (למשל, באמצעות ספריות משותפות בלינוקס).
זיהוי משימה היא מאתגרת מכיוון שפעולות ערוץ כיסוי מחקות דפוסי גישה למשאבים תמימים. עם זאת, עם מדידה זהירה, ערוצים יכולים להיתגלות ולהתאפיין.
rdtsc על x86).נבחן צעדים מעשיים עבור חוקרי אבטחה.
hwloc, lscpu, dmidecode# הדפס טופולוגיית קישרה ו-CPU
lscpu
hwloc-ls
dmidecode --type cache
import time
start = time.perf_counter_ns()
# גישה לזיכרון/קריאה לפונקציה
end = time.perf_counter_ns()
print(f"זמן שחלף (ns): {end - start}")
שימוש ב-rdtsc למדידת זמנים גישות.
#include <stdio.h>
#include <x86intrin.h>
int main() {
volatile int data = 0;
unsigned long t1, t2;
int iterations = 1000;
for (int i = 0; i < iterations; i++) {
t1 = __rdtsc();
data += i; // גישה לזיכרון
t2 = __rdtsc();
printf("%lu\n", t2 - t1); // הדפס את מספר המחזורים שנדרשו לגישה
}
return 0;
}
נניח שיש לך קובץ timings.txt (מהדוגמה המשומשת ב-C):
# הדפס זמנים מינימליים, מקסימליים, ממוצעים
awk '{sum+=$1; if(min==""||$1<min) min=$1; if($1>max) max=$1} END {print "Min:", min, "Max:", max, "Avg:", sum/NR}' timings.txt
# שימוש ב-perf לניטור אירועים בקישרה (דורש הרשאות root)
sudo perf stat -e cache-misses,cache-references -p <pid>
כפי שנדון ב-מניעה של ערוצי כיסוי מיקרוארכיטקטוניים על SoC (וייסטוף ואח, 2020):
perf, מנתחי מצב סטטי, ותכונות אבטחה ספציפיות ליצרן (למשל, Intel CAT, AMD SEV).ערוצי כיסוי מיקרוארכיטקטוניים מייצגים מחלקה מתוחכמת ועדיין מתפתחת של ודוקטורים מאיימים בהביטחון הקיברנטי. ככל שתוקפים מפתחים ערוצי מאמינים ותכולה גבוהה מנצלים את שיתוף משאבי החומרה, מגנים נדרשים לשלב אסטרטגיות חומרה, מערכת הפעלה ותוכנה כדי למזער את ערוצים אלו.
הבנת האיך והלמה מאחורי פגיעויות אלו מעצימות את המומחים לזהות, למנוע ולצמצם את הסיכון. עם מחקר מתמשך, מ-HPCA 2015 ועד כלים כמו AutoCC ועבודות עכשוויות, המאבק בין תוקפים ומגנים נמשך ברמות הנמוכות ביותר של חישובים.
בפיתוח [שם המזין], חוקר אבטחת סייבר — [האתר או הקשר שלך]
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.