הגליון המאה ושישים של DigitalWhisper שוחרר!

 
   
ברוכים הבאים לדברי הפתיחה של הגליון ה-160 של DigitalWhisper
 
הייתי רוצה להניח שאין אדם שמתעסק באבטחת מידע והיה בהכרה לפחות דקה אחת ב-24 שעות האחרונות ולא שמע על הטירוף שקרה החודש עם liblzma.
 
ב-29 לחודש, מפתח מחברת Microsoft בשם Andres Freund פרסם ב-OSS רשימה עם הכותרת הבאה: "backdoor in upstream xz/liblzma leading to ssh server compromise". לדבריו, במהלך ניסיון לבצע אופטימיזציה לאיזה תהליך שקשור בכלל ל-Postgres, הוא גילה שמישהו דחף דלת-אחורית באחת הבדיקות שרצות בזמן ש-liblzma מתקמפלת במערכת ההפעלה. מבדיקה שערך, הבדיקה מוודאת מספר תנאים על השרת, ואם הם מתקיימים היא מוסיפה לספרייה שאחראית על ביצוע החישוב של CRC אובייקט שיתקמפל לתוכה בשם liblzma_la-crc64-fast כך שירוץ בעת קריאה לפונקציות ()crc64_resolve ו-()crc32_resolve.
 
באובייקט הנ"ל קיימת לוגיקה שמחליפה את ה-Symbol של הפונקציה RSA_public_decrypt בזיכרון של התהליך אליו היא טעונה וכך מבצעת לה Hook. הפונקציה המוחלפת זהה לפונקציה המקורית מלבד מספר בדיקות נוספות שהיא מבצעת. אחת מהן היא בדיקה על המפתח הפומבי שמוגש בעת תהליך ההזדהות לשרת ה-SSH שאליו היא טעונה (כאשר היא טעונה אליו). במידה והמפתח הפומבי עונה למספר קריטריונים נקרא ממנו buffer שמועבר לפונקציה system וכך מתקבלת הרצת קוד על השרת. (אגב, הבדיקה על המפתח מוסיפה 508 מאיות השניה לתהליך ההזדהות, וזה מה שגרם ל- Andres Freund להתחיל לחקור את כל האירוע).
 
ל-liblzma יש שני מתחזקים עיקריים, אחד מהם הוא Lasse Collin שמתחזק את הספריה עוד מלפני 2009 ואחד נוסף, בשם Jia Tan שהתחיל לתרום קוד לספריה מלפני שנתיים וחצי והוא החשוד העיקרי. גם, כמובן, כי דרך החשבון שלו בוצעו ה-Commit-ים הזדוניים, וגם בגלל שבשבועות האחרונים הוא ניסה לדחוף את הגרסה עם הקוד הזדוני לעוד שלל הפצות בטענה שיש בה "great new features". (ומה תגידו, הוא לא שיקר...).
 
כל האירוע הנ"ל לא תקף לכלל ההפצות, ומתרחש רק בגרסאות החדשות של xz (גרסאות 5.6.0 ו-5.6.1). אני ממליץ מאוד לקרוא את הרשימה המקורית ב-OSS, ואת שלל הניתוחים והסיכום שעשו לה באינטרנט, הנה סיכום טוב.
 
כאמור, Jia Tan הוא החשוד העיקרי, ונראה שהקבוצה שמאחורי כל המהלך בנתה אותו לאט לאט ובמהלך של שנים. הרבה Commit-ים "תמימים", גם לפרוייקטים אחרים לטובת צבירת תדמית טובה בקרב הקהילה, יצירת מקרים של לחץ על המתחזק הראשי (Lasse Collin) כך שעם הזמן יבין שהוא צריך מתחזק נוסף (וכך Jia Tan קיבל את הרשאותיו) ועוד.
 
אבל האמת היא שלא Lasse Collin הוא הנושא היום, ואף לא Jia Tan, אלא על שני חבר'ה אחרים, חבר'ה בשם Qiushi Wu ו-Kangjie Lu שבשנת 2021 היו עוד דוקטורנטים למדעי המחשב באוניברסיטת מיניסוטה.
 
בשנת 2021 שני החבר'ה האלה פרסמו מאמר שכותרתו: On the Feasibility of Stealthily Introducing. במסגרת כתיבת המאמר, הם יצרו מספר זהויות, והחלו להציע תיקוני קוד לאיזורים שונים בקרנל של לינוקס. החבר'ה ניצלו באגים אמיתיים שנפתחו ע"י משתמשים תמימים עם הזמן ויצרו להם תיקונים אמיתיים, התיקונים התקבלו, אך אט אט כותבי המאמר החלו לתרום תיקונים שבהם קיימים פרימיטיביים חולשתיים ששילוב שלהם יחד אפשר להנדס חולשת Use After Free בקרנל של לינוקס. התיקונים נבדקו ע"י חברי הקהילה, אך מכיוון שהפרימיטיביים החולשתיים הוחבאו היטב והיו פזורים באיזורים מספיק רחוקים בקוד, היה קשה מאוד לזהותם.
 
אותה חולשת Use After Free לא נכנסה בסופו של דבר לקרנל של לינוקס, וזאת מכיוון שאותם החוקרים פרסמו את המאמר שלהם מספיק בזמן (חיכו שה-Commit האחרון יאושר, אך לא ייכנס לגרסת הקרנל הבאה שמתפרסמת), הם עצרו את התהליך בזמן והסגירו את עצמם. כתבתי על המקרה הזה במעט יותר הרחבה בדברי הפתיחה של הגליון ה-129.
 
קהילת מפתחי הקרנל של לינוקס מאוד לא אהבה את האירוע, הטענה הייתה (ואני מצטט את עצמי, סלחו לי על כך, זה רק מתוך עצלות): "שלמרות שהיא מעודדת את חוקרי האבטחה למצוא כשלים מכל סוג בקרנל של לינוקס, היא אינה מעודדת מחקר בבני אדם מבלי ידיעתם", ולפי תפיסתם - מדובר כאן במחקר מסוג זה. שלא לדבר על בזבוז הזמן היקר של אותם מתחזקים והסכנה שבה העמידו החוקרים את משתמשי הלינוקס בכל העולם בכך שאולי המחקר היה יוצא מכלל שליטה ואכן חולשה כזו הייתה נכנסת לקרנל של לינוקס בסופו של דבר."
 
לא רק זה, כלל ה-Commit-ים, של כלל הסטודנטים מאותה אוניברסיטה, אפילו התמימים שלא כללו פרימיטיביים חולשתיים יצאו מהקרנל, ונחסמה להם האפשרות להציע תיקוני קוד עד שאותם חוקרים יעמדו במספר תנאים. בין התנאים הם אף נדרשו לכתוב מכתב התנצלות בפני קהילת המפתחים של הקרנל של לינוקס וכמובן - להתחייב בו שהם לא יעשו זאת שנית.
 
אני יודע שלא שאלתם אותי, אבל אם תשאלו אותי - התגובה של קהילת מפתחי הקרנל של לינוקס למאמר של Qiushi Wu ו-Kangjie Lu הייתה בזיונית. היא הייתה בזיונית אז, ובדיוק בגלל גישה כזאת, אותה הקבוצה שעומדת מאחורי החשבון של Jia Tan הצליחה להחדיר את הקוד הזדוני.
 
במקרה הזה, לקח "רק" חודש לזהות את אותה דלת-אחורית ("חודש", במונחים של "יש לך גישה לאינספור שרתי SSH שמחוברים לאינטרנט, ומחזיקים קטעי קוד, תעודות TLS, תשתיות קריטיות לאומיות, אימיילים, ועוד שלל מידע רגיש" זה זמן אסטרונומי). וגם, אותה דלת-אחורית התגלתה ממש במקרה וכנראה רק בגלל רשלנות של אותה קבוצה - אם הם היו זהירים מספיק ומבצעים יותר בדיקות על הקוד שלהם, כנראה שהמפתח Andres Freund לא היה עולה על האטה שהם גרמו לתהליך ההזדהות, ומי יודע כמה זמן היה עובר עד שאותה דלת-אחורית הייתה מתגלה. אם בכלל.
 
המקרה הזה, ומאמרים כמו Qiushi Wu ו-Kangjie Lu מוכיחים לנו שישנו צורך בהול להנמיך משמעותית את האגו בקרב קהילת הקוד הפתוח, ולאמץ גישה כזאת שמבינה שאם בשנתיים של יחסית מעט עבודה, ניתן להצליח להשיג בעלות על ספריית קוד שבסופו של דבר תרוץ על כמעט כל שרת בעולם - אז כנראה שאנחנו עושים משהו לא נכון.
 
ושיהיה לכולנו בהצלחה!
  

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

  • חלק ב' - Bytecode and Objects - מאת אלי קסקי
    מאמר זה הינו המאמר השני בסדרת מאמרים שבה אלי מציג אספקטים שונים במימוש של CPython. במאמר הראשון למדנו על תהליך הקומפילציה של קוד Python לפקודות Bytecode. הוספנו אופרטור חדש לשפה שמאפשר להריץ את הקוד "++x". בחרנו אילו פקודות יווצרו כשמשתמשים בו, אך לא נגענו בהגדרת הפקודות האלו או באיך הן רצות בפועל על ידי ה-Interpreter. במאמר זה מסביר אלי איך ה-Interpreter מפרש ומריץ את פקודות ה-Bytecode האלו, נוסיף פקודה חדשה משלנו, ונלמד על אובייקטים ב-CPython - איך הם מוגדרים, אופן השימוש בהם, ואיך הם נראים בזיכרון.

  • על כשלונות ותובנות - הגישה שלי לאתגרים - מאת דניאל איסקוב
    במאמר זה משתף דניאל את תחושותיו ורגשותיו השליליות בעת שניסה - ללא הצלחה - לפתור את אתגרי Flare-On 2023. ושלא כמו בשנה שלפניה, בה הצליח לפתור את כלל האתגרים. דניאל בחר לנצל את תחושות אלו על מנת לנסות ולהתחכות אחר הסיבות לכשליון ולהפיק מהן מאמר המאגד מספר טיפים לכל מי שהרגיש כמוהו בעת ניסיון של פתירת אתגרי CTF למניהם.

  • רשתות שפה - LLM - מאת שלום דימנט
    מאמר זה הינו מאמר המשך בסדרת המאמרים על הבינה המלאכותית של שלום. במאמר הקודם פיתחנו מודל אשר מזהה מספר מתוך תמונה, מודלים דומים יכולים לחלץ אובייקטים נוספים מתוך שלל תמונות. לעומתם ישנם מודלים מייצרים (Generative AI), ישנם מודלים שמייצרים תמונות, וידאו, שירים וספציפית המודלים שנדבר עליהם היום - מודלים שמייצרים טקסט.
  
  • פיצוח סודות ה-NTDS.dit - מאת סמיון וסילויצקי
    אם אי פעם התעסקתם בעולם ה-MS-Domain אז במודע או לא במודע התעסקתם עם קובץ ה-NTDS.dit. מדובר באחד הקבצים החשובים שיש בשרת ה-Domain Controller. במאמר זה צולל סמיון לעומק מבנה הקובץ, ובעיקר על השינוי שנעשה ע"י Microsoft בשנת 2016. המאמר בנוי לכל קורא שמבין מושגים בסיסיים הקשורים לתחום ה-Domain, קצת קוד תכנותי והיכרות עם שמות של הצפנות.

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


 
 
קריאה נעימה,
           אפיק קסטיאל 



תגובות על 'הגליון המאה ושישים של DigitalWhisper שוחרר!':



#1 

דן (אורח):
תודה רבה! גליון טירוף! וכן, יש ביקוש לחלק המשך למאמר של סמיון!
31.03.2024 22:54:33

#2 

ברווז סייבר (אורח):
גיליון נהדר. נהניתי בעיקר לפצח את סודות הntds .dit עם סמיון הנפלא! ההסברים היו פשוט מצוינים ואשמח לחלק 2 מפורט אף יותר.
תפרסמו אותו כל גיליון הוא פשוט זהב!
04.04.2024 22:43:31

#3 

גפן (אורח):
גיליון מעולה!
07.04.2024 11:11:46

#4 

Hex (אורח):
אלופים!
11.04.2024 20:46:15

#5 

דן (אורח):
אהבתי מאוד! כל הכבוד ותודה על התרומה!
המאמר של עוזיאל על חקירת הפוגען עניינה אותי מאוד, למישהו שלא כל כך חזק בעולם ה low level, ורוצה להיכנס אליו יוצר לעומק, איפה היית ממליץ להתחיל?
28.04.2024 20:25:30



הוסף את תגובתך:
כינוי:
תגובה:
קוד אבטחה:
העתק לכאן את הקוד:
 
Digital Whisper © 2009 - 2024 - כל הזכויות שמורות ל-אפיק קסטיאל ול-ניר אדר.