תוקף שאין לו חשבון יכול לבקש מ-BioTime של ZKTeco קבצים שאינם אמורים להיות נגישים לו, ולקבל אותם. החולשה אינה מאפשרת לו לשנות דבר, רק לקרוא, ולכן הציון הוא 7.5 מתוך 10. ב-19 במאי 2025 היא נכנסה לקטלוג החולשות שמנוצלות בפועל, כמעט שנתיים אחרי שהתפרסמה.

מה החולשה?

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

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

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

מי מושפע?

כאן הרשומה מעט מבלבלת, וכדאי לקרוא אותה לאט. היא מתארת את החולשה בגרסה 8.5.5 של ZKTeco BioTime, מסמנת כחשוף כל מה שמתחת ל-9.0.1, ומציינת שהתיקון נכנס בגרסה 9.0.120240617.19506 של ZKBioTime. המספר הארוך הוא המדויק, ומי שמשווה מול 9.0.1 בלבד עלול לחשוב שהוא מעודכן כשהוא אינו.

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

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

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

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

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

הרשומה מפנה גם לדף החשיפה של Claroty ולדוח תגובה לאירועים של Fortinet, ושם נמצא הצד המחקרי למי שרוצה להעמיק.

מה עושים?

עדכנו את BioTime לגרסה 9.0.120240617.19506 או חדשה ממנה. אל תסתפקו בבדיקה שהגרסה מתחילה ב-9, המספר המלא הוא מה שמפריד בין מתוקן לחשוף.

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

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

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