
Google נאלצה לחכות חודשיים לתיקון פרצה ב-DevSite שאפשרה הרצת קוד ללא אימות
באמצעות מפתח סודי של לקוח OAuth שנחשף, תוקף הצליח לזייף עוגיות סשן של Flask ולהריץ קוד Python על שרתי DevSite, שבהם פועלים developers.google.com ושישה אתרי תיעוד נוספים.
מפתח סודי שנחשף הפך להרצת קוד מרחוק
Google תיקנה פרצת הרצת קוד מרחוק (RCE) ללא אימות ב-DevSite, הפלטפורמה שבה פועלים developers.google.com ועוד מספר אתרי תיעוד. הפרצה, שקיבלה דירוג S0, הרמה הגבוהה ביותר בסולם החומרה, זוהתה על ידי Simon Köck, מהנדס תוכנה ב-Otark GmbH.
הגורם הראשוני היה מפתח סודי של לקוח OAuth שנחשף. DevSite אחסן בעוגיית סשן של Flask אובייקט OAuth2WebServerFlow מסודר של ספריית oauth2client של Google, שהחברה הניחה לטובת google-auth, ובכך חשף את המפתח. אותו מפתח Google השתמשה גם כמפתח חתימת סשן של DevSite, מה ש-Köck אישר באמצעות הכפלה לא מקוונת של חתימת העוגייה.
סשנים מזויפים התקבלו בשבעה דומיינים
Köck אישר שסשנים מזויפים התקבלו בכל שבעת הדומיינים הפגועים, שהסתמכו על שני מפתחות חתימה שונים. הוא הדגים הרצת קוד בשלושה מהם: developers.google.com, docs.partner.android.com ו-web.dev. את ה-RCE ללא אימות בדק באמצעות payload של sleep ב-Python ומדד עיכובי תגובה, אם כי במכוון מנע את עצמו מהרצת פקודות ומגיעה לקבצים, נתונים או שירותים פנימיים.
"הייתי מכנה זאת RCE רציני במיוחד, כי כל אחד יכול היה להשיג זאת ללא חשבון וללא מעורבות הקורבן", אומר Köck ל-The New Stack.
Google שילמה פרס של 90,000 דולר: 75,000 דולר כתשלום בסיסי עבור RCE בדרגה S0, שהחברה מחשיבה כרמה רגילה של אפליקציה, כפול 1.2 עבור חשבון באיכות יוצאת דופן.
שרשרת הדה-סריאליזציה של Pickle הושלמה
callback של OAuth השתמש ב-pickle של Python לדה-סריאליזציה של נתוני הסשן. Köck החליף את אובייקט ה-flow ב-pickle payload זדוני, חתם על העוגייה המזויפת והפעיל את ה-callback. עבור השרשרת נדרשו שלושה פגמים מסודרים: מפתח שנחשף בעוגייה, טעינה כפולה של אותו מפתח כמפתח חתימה ודה-סריאליזציה לא בטוחה של נתוני סשן. תיקון של כל אחד מהם היה שובר את השרשרת.
חודשיים לתיקון, שאלות ללא מענה נותרו
Köck דיווח על הפרצה ב-6 באוגוסט, ו-Google קיבלה אותה ביום שלמחרת. הפרס אושר ב-27 באוגוסט, אך התיקון בוצע רק ב-7 באוקטובר. Google לא הסבירה את המועד של חודשיים, אם נכנסו לתוקף אמצעים זמניים מקלים ואם חודש אחד מהמפתחות הסודיים של לקוחות OAuth שנחשפו ואם בוטלו סשנים קיימים. Köck אומר שמעולם לא קיבל מסקנה פרנזית ולא יודע אם Google מצאה ראיות לניצול לפני התיקון. לבקשת תגובה לעדכון זה, Google לא השיבה.
Arvin Shivram, חוקר מסינגפור, שפועל בשם @brutecat ודיווח על יותר מ-130 פרצות ב-Google בעצמו, מציין שאפליקציות פנימיות של App Engine לעיתים קרובות יש גישה ל-Stubby, מערכת התקשורת הפנימית בין שירותים של Google. Köck מוכר שגישה זו "עשויה להיות חלק משמעותי מההשפעה", אם כי לא בדק מה היה יכול להשיג תהליך ספציפי זה של DevSite. הוא גם לא בדק את הזכות לכתובה על תוכן התיעוד, שם פקודות התקנה שונו או קישורי הורדה שימשו להתקפת שרשרת אספקה. לפי הרישום שלו, ההשפעה שהודגמה היא הרצת קוד בשלושה מארחים וסשנים מזויפים שהתקבלו בשבעה, אך שטח ההשפעה המלא, כולל דרכים לשירותים פנימיים של Google, נותר לא מאושר.
מקורות: Thenewstack
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.