אחת ההגדרות השגרתיות בכל מצלמת רשת היא כתובת שרת הזמן שהיא מסתנכרנת איתו. במצלמות PT30X של PTZOptics, בקושחה שלפני 6.3.40, הערך שמוזן בשדה הזה אינו נבדק לפני שהוא נכנס אל פקודה שהמצלמה מריצה בעצמה, וכך הגדרה רגילה הופכת לדרך להריץ פקודות על המכשיר. הציון הוא 7.2 מתוך 10, והחולשה נמצאת בקטלוג החולשות שידוע על ניצולן בפועל.

מה החולשה?

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

מה שקורה עם הערך הזה הוא העניין. לפי הרשומה הוא אינו עובר אימות מספק, והוא נכנס אל פקודה שהמצלמה מריצה כשהרכיב עולה. כלומר מה שהוזן כאילו היה כתובת אינו נשאר נתון בלבד; הוא הופך לחלק מהשורה שמערכת ההפעלה של המצלמה מבצעת. מי שמזין שם ערך שבנוי כפקודה, ולא ככתובת, מריץ אותה. הסוג הזה נקרא OS command injection, הזרקת פקודות למערכת ההפעלה.

ההרצה אינה מיידית, וזה פרט שכדאי להבין. היא מתרחשת כשרכיב ה-ntp_client מופעל, ולכן כתיבת ההגדרה היא הנחת המטען והעלייה של הרכיב היא מה שמפעיל אותו.

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

מי מושפע?

אותן שתי משפחות המוצר, PT30X-SDI ו-PT30X-NDI-xx-G2, בכל קושחה שלפני 6.3.40.

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

בישראל מדובר במצלמות שהותקנו כחלק ממערכת שידור או וידאו, ולא במוצר שאדם קונה לעצמו. במקרים רבים מי שמשתמש בה אינו מי שהתקין אותה, ומי שהתקין אינו מי שמעדכן.

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

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

את העבודה שחשפה את שתיהן פרסמו חוקרי GreyNoise, וההתראה שעוסקת בהזרקת הפקודות עצמה מופיעה בVulnCheck.

מה עושים?

העדכון הוא הדבר היחיד שסוגר את החולשה: קושחה 6.3.40 ומעלה, מיומן הקושחה של PTZOptics.

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

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