הפירצה של קן ת'ומפסון
הפירצה של קן ת'ומפסון (באנגלית: Thompson hack) היא שמה של דלת אחורית מפורסמת שתיאר קן ת'ומפסון, זוכה פרס טיורינג לשנת 1983, בנאום קבלת הפרס (בשם Reflections on trusting trust) ששתל במהדר שפת C כדי להמחיש נקודה מרכזית שבענייני אבטחה תמיד צריך לבטוח במישהו ואין בד"כ אפשרות ממשית "לעשות הכל לבד כדי להיות בטוח".
ת'ומפסון שתל קוד במהדר שעושה בעיקר שני דברים:
- כאשר המהדר קימפל קוד שאותו זיהה כמבצע לוג-אין, שתל בו דלת אחורית
- כאשר המהדר זיהה שהוא מהדר את עצמו (גם ללא הקוד הזדוני) שתל בו את הקוד הזדוני
מעבר לדלת אחורית שנשתלת בעת קומפילציה של קוד המבצע לוג-אין, אפילו אם מישהו יהדר לפני כן את המהדר עצמו "כדי להיות בטוח" שלא נשתל בקימפולים שלו קוד זדוני, הדבר לא יועיל, כי לפי התכונה השנייה, אפילו מהדר "נקי" (מקוד זדוני), יוזרק בו, במהלך הידור קוד המקור הנקי, הקוד הזדוני.
הנקודה של קן הייתה שאת הרעיון אפשר להרחיב הרבה עם מהדר "ראשוני" שמזהה כל מני תכונות וכאשר מהדרים בו מהדרים אחרים (ולאו דווקא רק הוא עצמו) הקוד הזדוני ישכפל עצמו ויוכל לבצע כל מני פעולות.
באותו זמן, השימוש ב UNIX היה סטנדרט וכמעט כולם קימפלו קוד ולכן השפעת אותו נאום הייתה רחבת היקף עקב הפירצה שלכאורה נחשפה.
כאמור, בדיקת קוד המקור של תוכנית לא מספיק אם כן כדי לוודא שהיא באמת עושה מה שהיא אמורה לעשות באופן מוחלט. אפשר כמובן (רק תיאורטית) לאמת את כל סדר הפעולות של הדוק המהודר ברמת שפת מכונה וכו' אבל כאמור זה לא פרקטי ומעבר לכך ישנם כיום רכיבים רבים ו Drivers המשמשים במרבית האפליקציות כל שלמעשה אין מנוס מלבטוח בצד שלישי כדי שהאפליקציה שלי תעשה מה שתכננתי ובניתי אותה לעשות.
קישורים חיצוניים
- המאמר המקורי של ת'ומפסון באתר אוניברסיטת קרנגי מלון
- אודות המאמר של ת'ומפסון באתר wiki.c2.com