פתרון מוסרים גרסה שאפשר לחקור¶
פתרון התרגיל הראשון¶
הverifier יפתור כל path ביחס לתיקיית הrelease, ינרמל אותו ויוודא שהוא נשאר תחת הroot המותר לפני פתיחת קובץ. הוא ידחה נתיב מוחלט, traversal וreparse point. בדיקת string שמתחיל בשם תיקייה בלי separator אינה מספיקה, משום ששם תיקייה אחר יכול להתחיל באותו prefix.
לאחר מכן ישווה גודל וSHA256 לכל קובץ צפוי, ויבצע גם inventory של הקבצים בפועל כדי לגלות תוספות. הmanifest עם רשימת קבצים תקינה אך ללא אימות של מקורו יכול להשתנות יחד עם הבינארי; לכן זהו מנגנון שלמות מול baseline מהימן, ולא תחליף לחתימה או provenance.
פתרון התרגיל השני¶
תלות חסרה תתווסף להגדרת toolchain או runtime עם גרסה ודרך השגה מתועדת. אם נדרש קובץ שנוצר בבנייה קודמת, נוסיף את שלב היצירה במקום להעתיק אותו ידנית לVM. אם נדרש secret, נפריד אותו מהartifact ונגדיר כיצד סביבת הבדיקה מקבלת ערך מעבדה מתאים.
נבדוק hash של תוצרים לפני חתימה לפי מדיניות השחזור שבחרנו, ונשמור גם את הפערים. פער מוסבר של timestamp אינו אותו דבר כמו DLL שונה שנקשר בטעות. דוח תקין אינו מעלים פערים, אלא מסביר אילו מהם צפויים ואילו מפרים את התהליך.
פתרון התרגיל השלישי¶
החוקר יתחיל מהbuild ID ומההתאמה של symbols, ינסח השערות ויבחר את המידע שמפריד ביניהן. התיקון יכלול invariant מפורש ובדיקה שמפעילה את הסדר הבעייתי, למשל completion אחרי cancel או נעילות בסדר הפוך.
בבדיקת השדרוג נרשום בנפרד גרסת binaries, גרסת schema ומצב עבודות פעילות. התהליך של rollback שעובר רק כאשר אין נתונים אינו מספיק למוצר שכבר שירת משתמשים. אם נדרשת המרה לאחור, נבדוק גם אותה על נתוני מעבדה מייצגים ונציין אילו שדות אינם ניתנים לשחזור.