ברובוט ההומנואידי Unitree G1 EDU נמצאו שלוש חולשות נפרדות שמצטרפות למתקפה אחת: מי שנמצא ברשת הסמוכה יכול להריץ קוד על הרובוט בהרשאות root, החשבון החזק ביותר במערכת, בלי שם משתמש ובלי סיסמה. הציון הוא 8.7 מתוך 10, והרשומה מתארת קושחה עד גרסה 1.5.2 ואינה מציינת גרסה מתוקנת.

מה החולשה?

הרכיבים השונים של הרובוט מדברים ביניהם דרך מערכת הודעות בשם DDS, ומעליה יושב גשר שמחבר את ערוץ ה-WebRTC אל אותה מערכת. הגשר הזה מאזין בפורט 9991 ואינו מבקש מהפונה להזדהות. כלומר מי שמגיע אל הפורט הזה יכול לשלוח פקודות פנימיות של הרובוט.

הרכיב השני הוא הצפנה שאינה מגינה. יש שם מפתח AES-128 קבוע, והוא שמור בקובץ שכל משתמש במערכת יכול לקרוא. הצפנה שהמפתח שלה פתוח לקריאה היא מנעול שהמפתח שלו תלוי לידו.

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

עכשיו אפשר לראות את הצירוף. התוקף שולח דרך הגשר הודעה שמפעילה מחדש שירות בשם bashrunner, מנצל את המעבר בין תיקיות כדי לשתול קובץ בתיקייה שממנה אותו שירות מריץ סקריפטים, והשירות מריץ אותו בזהות uid 0, כלומר root. כל אחת מהשלוש לבדה היא בעיה. יחד הן שרשרת שלמה.

מי מושפע?

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

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

האם מנוצלת בפועל?

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

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

מה עושים?

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

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

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