Table of Contents
התפקיד הקריטי של רשומות חומרה במערכת אבטחה
רשומות חומרה הן הממשק העיקרי שבאמצעותו שולטת התוכנה ומתקשרות עם רכיבי חומרה פיזיים - מעבדים, בקרי זיכרון, מנועי DMA, ממשקי רשת, ו מאיצים קריפטוגרפיים.כל רישום הוא מיקום זיכרון קבוע בעל תצורה, מעמד או ערכי נתונים. כי רישומים אלה משפיעים ישירות על התנהגות חומרה, כל גישה לא מורשית או לא נכונה יכולה להוביל להסלמה, נתונים, או פשרה מתמשכת של קוד אבטחה היא דרישה אבטחה מוטמעת עבור קוד אבטחה אופציונלית, לא מתאימה, או קוד אבטחה, לא מתאימה, או מערכת אבטחה אופציונלית, היא דרישות אבטחה אופציונלית, או קוד אבטחה אופציונלית, כי הוא דרישות אבטחה אופציונלית, כי הוא רישום אבטחה אופציונלית, כי הוא דרישות אבטחה אופציונלית, כי הוא דרישות אבטחה אופציונלית, או קוד אבטחה אופציונלית, כי הוא דרישות אבטחה אופציונלית עבור פונקציות אבטחה אופציונלית, או נתונים של פונקציות אבטחה אופציונלית, או קוד אבטחה אופציונלית, כי הוא רישום אבטחה אופציונלית עבור פונקציות אבטחה אופציונלית של פונקציות אבטחה אופציונלית, או קוד אבטחה אופציונלית, כי הוא אמצעי אבטחה אופציונלית, כי הוא אופציונלית, כי הוא פונקציות אבטחה אופציונלית, כי רישומים, כי הוא
מאמר זה מספק בדיקה מקיפה של שיקולי אבטחה בעת גישה ושינוי רישום חומרה.זה מכסה את הנוף האיום, מודלים פריבילגיה, פרצות בעולם האמיתי, ושיטות הטובות ביותר עבור תכנות מאובטח.עד הסוף, הקוראים יהיו מסגרת להעריך ולהקשות את דפוסי הגישה שלהם.
הבנת רשומות חומרה ותבניות הגישה שלהם
(התרשים של המעבד או גישה באמצעות הוראות ייעודיות I/O. שתי התוכניות הדומיננטיות ממוקמות על מפת הזיכרון של המעבד או גישה אליו באמצעות יישומים ייעודיים (FLT) ו- (FLT:2port-maped-maped I/O (PM)FLT 3: ב-MMIO, רישומים מוקצהים בכתובת הפיזית של מערכת ההפעלה ו-Fled:2port-O (O) באמצעות שימוש ב-fto-fto-fto-fto-O (O) באופן מיוחד ב-DLCI/O (O)
סוגי רישום טיפוסי כוללים:
- (ב) ,0) רשם (FLT) 1 - ניתוח מכשיר קוהנדס (למשל, המאפשר הפרעות, קביעת שיעורי הבזה).
- (ב) ,0) , רשם (ב) , עיין ב-[[1924]], [[1924]], [[1924]], [[1924]], [[1924]]]], [[1924]]]]]]
- (ב) עיין:0) רשם נתונים (משנת 1) - העברת נתונים בין תוכנה וחומרה.
- (ב) ,0) רישום של קונסולת ה-1 (FLT:1), קביעת פרמטרים כמו מצבי חשמל או משימות ערוץ DMA.
מכיוון שלרישום יש לעתים קרובות תופעות לוואי - קריאה עשויה להבהיר דגל להפריע, כתיבה עשויה לגרום לאפסת חומרה - אפילו גישה שפירה לכאורה יכולה להיות בעלת השלכות אבטחה אם לא מנוהלת בקפידה.
האיום על הגישה של הרישום
התוקף מכוון לרשום חומרה כדי להערים על שלמות המערכת.האיומים העיקריים כוללים:
ההסלמה באדיבות: Register Manipulation
(הופנה מהדף ⁇ ) המטרה הקלאסית של ניצולי גרעין היא להשיג את היכולת לכתוב לרישום לרישום אשר מנהל הגנה על זיכרון או מצבי CPU.לדוגמה, ב- x86, את ה-FLT:0Control Register 0 (CR0) מכיל פיסות שליטה וכתובות הגנה ישירה (DMCS) אם תוקף יכול לכתוב ערכים שרירותיים ל-CR0 מהקשר בלתי-פרטי (לדוגמה, דרך קוד זדוני) באמצעות קוד זדוני (Fel) יכול לנהל באופן דומה הגנה ישירה (Ric Defic Defion).
מידע על שחיתות והכחשה של השירות
שינויים ברישום לא נכון יכולים לגרום לתאונות מערכת, אובדן נתונים או שחיתות נתונים שקטה.לדוגמה, כתיבת תצורה לא חוקית לרישום בקר זיכרון עלולה לגרום לשגיאות זיכרון לא ניתנות לתיקון, המשפיעות על כל היישומים. במערכות קריטיות בטיחות (למשל, רפואיות, תעשייתי), שחיתות כזו יש השלכות פיזיות.תוקפים יכולים גם להשתמש ברישום כדי למנוע מזמני שמירה או לאפס לוגיקה, מה שמוביל להכחשה מתמשכת של השירות.
« « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « «
כמה מכשירים מכילים Debug או בדיקת רשומות כי, אם אפשר במהלך ניתוח רגיל, לתת שליטה מוגזמת.דוגמה ידועה היא ממשק JTAG הנוכחי על רבים SoCs. אם הרישום של JTAG אינו נעול במהלך האתחול, תוקף עם גישה פיזית או הגיונית יכול לעצור את ה- CPU, לקרוא זיכרון ולשנות את המדינה.
רמות פרימיטיביות וגישה בקרה על מכניזם
מעבדים מודרניים לאכוף רמות פריבילגיות מרובות כדי לתווך גישה לרישום מידע.הבנת רמות אלה חיונית לתכנון מערכת מאובטח.
x86 טבעות
(ב) מעבדי Intel ו- AMD x86 תומכים בארבע רמות זכות (Ring 0–3), אם כי רוב מערכות ההפעלה משתמשות רק טבעת 0 (הקרנל) ו- Ring 3 (משתמש) הוראות גישה לרישום 4/FLT 3/FLT 3 (FLT 3: 3) ניתן לבצע רק ב-BRAOFLCD (OLT) ל-A) ב-AOLT2 (OLT) ל-RI) ל-RIFLC (OLT) ל-RI) ל-A) ל-A) ולתחילתחילתחילהמפתחות את ה-A) ל-RIFLT2 (OLT2 (OLT2 (OLT2 (OLT2 (OLT) ל-RI) ל-A) ל-A) ל-R.
רמות חריגות ARM
אדריכלות ARMv8-A מגדירה ארבעה רמות חריגות: EL0 (משתמש), אל1 (kernel/OS), EL2 (היפרודור), ו- EL3 (מוניטורים מאובטחים) הן רק נגישות מ- EL1 ומעל.ה- The FLT:0 System Control Register (SCREL3)FLT:1 משמש לקביעת מצב האבטחה (Secure/Non-Secure) כדי למנוע רמות בקרה נמוכות יותר.
המונחים: RISC-V Privilege Modes
RISC-V מפרט שלוש מצבי זכויות: U-mode (user), S-mode (מפקח), ו- M-mode (מכונה) תוכנה-mode תוכנה - באופן חד-מסלול קטן או קושחה של כלב - יש גישה בלתי מוגבלת לכל CSRs (control and Status Indexs) גישה למפקחת מופעלת על ידי ה-F:0mstats (D) כדי לרשום אזורי זיכרון פיזיים של CSR-MA (CDC-MA) ו-C.
החלת העיקרון של לפחות זכות פירושה: (1) לעולם אל תחשוף גישה ישירה לרישום של מקום המשתמש, (2) במצב הקרנל, מגבילה את הכתיבה לרישום שיש לו השלכות אבטחה, ו (3) להשתמש בבידוד של חומרה (למשל, היפרבידור, TrustZone) כדי להפריד את מטוסי הבקרה.
Vulnerabilities and Real-World Exploits
כמה בעיות אבטחה בעלות פרופיל גבוה מעורבים מניפולציה של רישום חומרה.
רומר ו-DRAM רו ובחירת רשומות
רומר מנצל חולשה פיזית ב DRAM על ידי הפעלת שורה כדי לגרום פיסות bit בשורות סמוכים. בעוד וקטור ההתקפה הראשי הוא גישה זיכרון, הפעלה כרוך בכתב לרישום כתובת שורות DRAM. התוקף השתמש בפינוי cache ורצף פיקוד בקר זיכרון כדי להאיץ את הפטישים.
Meltdown ו- Spectre Side-Channel Registers
פרצות מלוטש וספקטרום של ספקולציות CPU ותזמון של רישום קורא / טקסים כדי להדליף זיכרון הקרנל.לדוגמה, Meltdown סמך על ביצוע מחוץ למסדר שעדיין נטען ערכים רשומים גם כאשר הכתובת אינה נגישה.התיקון הנדרש הוספת הוראות מחסום (למשל, FLT5) והחלפת טבלאות לרישום בנפרד לתבניות מיקרו-קלייקטקט (KRA) כדי למפות את ה-CRACRACRA/KRA/KRACNS (לדוגמה, מיפוי).
DMA Attacks באמצעות Endpoint Registers
מנועי גישה ישירה (DMA) נשלטים באמצעות רישומים במכשירים כמו בקרים Thunderbolt או כרטיסי רשת, יכולים לקרוא / לשכת זיכרון מערכת ללא התערבות CPU.אם התוקף יכול לשנות את הרישום DMA - לדוגמה על ידי ניצול פגיעת נהג או נספח מכשיר מחשב זדוני - הם יכולים לעקוף הגנה על מערכת ההפעלה ולגנוב נתונים רגישים.
Best Practices for Secure Register Programming
החלת שיטות מוכחות מפחיתה באופן דרמטי את הסיכון של פרצות הקשורות לרישום.
המונחים: relative Access
ודא כי רישום קריאה / טקס פעולות מבוצעות רק ברמה הגבוהה ביותר של ביצוע תשלומים הנדרשים.הימנע מייצא אזורי זיכרון רשומים לחלל המשתמש באמצעות FLT:6 אלא אם כן הכרחי, וכאשר בלתי נמנע להשתמש בנהג מאובטח המאמת כל גישה.
כל הפוסטים הרשמיים
(הופנה מהדף כל רישום כקלט לא אמין, גם אם המתקשר הוא קוד גרעין.הפעלת בדיקות כדי להבטיח רק תבניות ביט תקפים כתובות.מספר רישומים שמורים כי חייב להיות אפס; כתיבה של שדות שמורה יכול לגרום להתנהגות בלתי מוגדרת או לצבעי אבטחה.
למנוע את השימוש בתנאי גזע
(הנקרא לעתים קרובות לבדוק תנאים לפני כתיבתם של התוקף יכול לנצל זמן-מה-שעה-של שימוש (TOCTOU) גזעים אם אין גישה לאטומית.לדוגמה, בדיקת רישום סטטוס ל"איד" לאחר מכן כתיבת רישום פקודה עשויה לאפשר את המכשיר לעבור בין שני המחאות. השתמש רצף אטומי של שימוש ב- אטומי של שימוש ב-dlock-dow-dow- כגון יחיד-F:9/F10/F:10-x.
השתמש בהגדרות זיכרון וסידור
(הופנה מהדף ה-CPU או האוטובוס עשויים להזמין אותם מחדש לביצועים; מכשיר יכול לקבל כתב לפני שתקראו המלאכה הקודמת, גרימת ספקולציות שגויות (למשל, חסמי הכנסת (FLT:12:12) על ARM; FLT 14, 14, FLT:15 על X86 כדי לאכוף את התוכנית.
ניהול מצב ניהול (SMAP/SMEP)
ב- x86, SMAP מונע קוד ליבה לגשת לזיכרון של סביבת המשתמש, ו- SMEP מונע ביצוע קוד של המשתמש-space במצב הקרנל. בעוד שלא ישירות על רישומים, תכונות אלה חוסמות התקפות שמניחות את הערכים כדי לכפות ביצוע הקרנל של כתובות מבוקרות למשתמש. בדומה לכך, גישה מועדפת של ARM לעולם (PAN) מונעת גישה מ- EL1 מ- ELTO0, אלא אם כן אפשרה במפורש זיכרון.
מנגנונים אבטחה קשיחים להגנה על גישה לרישום
יצרני CPU ומעצבי פלטפורמה הוסיפו תכונות חומרה כדי ליצור נתיבים אמינים למניפולציה.
עקבו אחרי Boot
במהלך מגף מאובטח, כל רכיב קושחה מאמת את הבא לפני מתן היכולת לכתוב רישומים מוגנים.החול ROM בדרך כלל לנעול את JTAG, לרשום bug, וממשקי תכנות מוקדם.מדחול מרחיב את זה על ידי רישום ערכים (למשל, עבור TPM Platform Configuration Registers, PCRs) כי מאוחר יותר ניתן לבדוק מנגנונים אלה למנוע מנגנונים בלתי מורשים משינויים בלתי מורשים משינויים מתמשכת.
בסביבה הקרובה של הוצאות להורג (TEEs)
ARM TrustZone מפריד את העולם למדינות מאובטחות ולא-סודיות.רישוםים קריטיים - כגון אלה השולטים ביחידת הגנת הזיכרון, מפתחות קריפטוגרפיים או הפרעות מאובטחות - נגישים רק מהעולם מאובטח. בדומה לכך, הרחבות של Intel Software Guards (SGX) ו- AMD Secure Encrypt Encryptרישום גישה בתוך מ ⁇ s או מכונות וירטואליות.
מודולים אבטחה קשיחים (HSMs) ו- TPMs
שבבים ייעודיים לעתים קרובות מנהלים רישומים השולטים במפתחים קריפטוגרפיים, עדות ומדינת מחזור חיים.לדוגמה, TPM עשויה לאחסן סוד מתמשך ברשומות הפנימיות שלה, לסרב לשחרר אותו אם הפלטפורמה נמצאת במצב לא מגובש. HSMs לספק גישה פיזית מבודדת לניהול מפתח, להבטיח שגם תוכנה חסויה לא יכולה לקרוא באופן ישיר חומר.
אבטחת תוכנה ופיתוח נהגים
האבטחה של גישה לרישום תלויה בסופו של דבר בקוד שמתכנן אותם.לאחר שיטות פיתוח קפדניות היא חיונית.
קידוד סטנדרטים ו-Static Analysis
השתמש בתקנים כפי MISRA C או CERT C כדי למנוע התנהגות בלתי מוגדרת שיכולה להשחית ערכים של ניתוח סטטי (למשל, כיסוי, PVS-Studio) יכול לזהות מכשולים חסרים, גזעים toCTOU, שגיאות ⁇ . עבור הגדרות הרשמה-map, ממנפיק שפות חישוביות " ⁇ וקובץ ראשי אוטומטי-genateerateer ובדיקה אימות.
בדיקות דינמית ודינמית
נהגים וקושחה על ידי הזרקת ערכים אקראיים לרישום כותב: כלים כמו FLT:0syzkallerFLT 1 עבור לינוקס יכולים לחקור נתיבי קוד הקשורים לרישום ולזהות התנגשויות או שחיתות זיכרון.Harware-in-the-loop fuzzing יכול גם לחשוף את תנאי הגזע כי מודלים תוכנה מתגעגעים.תמיד עם היפר-ביאו חומרה (למשל שינויים לייזרים, אימות) להתקפות נגד תקלות בלתי צפויות.
טיהור פורמלי למרשם קריטי
עבור הרשומות הרגישות ביותר (למשל, תצורה של יחידות הגנה על זיכרון, מדינת מנעול מאובטח), שיטות אימות רשמיות יכולות להוכיח באופן מתמטי כי ערכים לא נכונים מעולם לא נכתבו.כלי כמו FLT:0BedrockirFLT:1 או (FLT:2VoriFLT 3: 3) שימשו לאמת קושחה.
ביקורת ורישום Access
גם עם הגנה חזקה, ניטור זמן ריצה יכול לזהות מניפולציה הרשמה אטומית. רוב המעבדים המודרניים כוללים יחידת מעקב ביצועים (PMU) לרשום אירועים כגון "MMIO כותב למגוון כתובת ספציפי" (למשל, עקבות לינוקס, ARMSight) יכול ללכוד תבניות גישה ודגל לא מורשה כותב, קושחה יכול לשמור על מסלול רחב של שימוש ביקורתי (למשל, רישום של שימוש חוזר על ידי TRMSight) כדי לרשום את הניסיונות אלה.
(הופנה מהדף ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
מסקנה
רשומות חומרה הן גבול אבטחה ברמה נמוכה אך גבוהה-תכליתי.כל קורא או כותב לרישום נושא את הפוטנציאל לערער את השלמות המערכת, סודות דליפות, או להעניק זכויות לא מורשיות. מפתחים ואדריכלי המערכת חייבים להתייחס למניפולציה כמבצע חסוי הדורש תכנון זהיר, אימות, ו ניטור. על ידי הבנת מודל האיום - החל מהסלמה להתקפות ערוץ צד - וליישם את התרגילים הטובים ביותר המתוארים לעיל (כלומר, אטומיות, בדיקות חומרה, אטומיות, יכולות ליישבות, אטומיות, מחסומים).
אבטחה קשה היא אף פעם לא פעילות גמורה; כאשר התוקפים מפתחים טכניקות חדשות כמו הזרקת תקלות או ניתוח תזמון מיקרו-אסטי, האבטחה של גישה להירשם תמשיך להסתמך על שני התקדמות חומרה והנדסה תוכנה ממושמעת. נשארים מודעים על ידי יועצים לאבטחת ספקים ושילוב של ביקורות גישה לכל מחזור קושחה ופיתוח נהג.