לדלג לתוכן

8.3 - בידוד וגבולות אמון - תרגול

תרגול - מה הגבול באמת מונע

תרגיל ראשון - מדיניות ופלט

בנו את תוכנית המדיניות מההרצאה ושמרו את פקודת הבנייה, גרסת המהדר וגרסת Windows. פענחו לפחות שני שדות בעלי שם מתוך המבנים שמוחזרים. צרפו גם פלט של dumpbin /loadconfig והסבירו מה כל תצפית מלמדת.

הוסיפו הדפסה של EnableControlFlowGuard במקום להסתפק במספר הביטים הגולמי. השוו לבנייה ללא בקשה מפורשת ל־CFG, בלי להניח מראש שכל ברירות המחדל של סביבתכם כבויות.

תרגיל שני - שתי פתיחות של אותו שם

הרחיבו את opened.cpp כך שאחרי הקריאה דרך ה־handle הישן הוא יפתח שוב את אותו שם וידפיס את התוכן דרך ה־handle החדש. כל פתיחה וכל קריאה חייבת לבדוק שגיאה, וכל handle צריך להיסגר גם בכשל של הפעולה השנייה.

הגישו פלט שמראה את ההבדל לאחר שינוי השם והקובץ. חזרו על הניסוי בלי לבצע החלפה והסבירו למה הפלט הזה לבדו אינו מבחן מספיק.

תרגיל שלישי - תכנון מפענח מבודד

שירות מציע כרגע פקודת IPC בשם open_any_path שמקבלת נתיב והרשאות מבוקשות מהמפענח. הסבירו כיצד הממשק הזה יכול לבטל את מטרת הבידוד גם אם התהליך המפענח מוגבל היטב.

הציעו ממשק חלופי לעיבוד מסמך אחד שנבחר על ידי המשתמש. פרטו את המשאבים שנמסרים למפענח, את מגבלות הכמות והגודל, את סוגי התוצאות ואת ההתנהגות במקרה שהמפענח נתקע או קורס. הוסיפו שלוש בדיקות שלילה שאפשר להריץ במעבדה.