מי שאינו מזוהה יכול לגרום ל-Craft CMS לשמור תוכן שהוא בחר, למשל קוד PHP, בתוך קובץ סשן במקום ידוע על השרת. לבד זה עוד אינו הרצת קוד, וזו הסיבה שהציון עומד על 6.9 מתוך 10 בלבד. למרות זאת החולשה נכנסה ב-2 ביוני 2025 לקטלוג החולשות שמנוצלות בפועל, והגרסאות שסוגרות אותה הן 4.15.3 ו-5.7.5.

מה החולשה?

כשגולש מבקש עמוד ש-Craft דורש עליו התחברות, המערכת מפנה אותו לעמוד ההתחברות ושומרת בצד את הכתובת שהוא ביקש, כדי להחזיר אותו אליה אחרי שיזדהה. במקביל נפתח לו קובץ סשן על השרת, בתיקייה /var/lib/php/sessions, ושם הקובץ נגזר מהערך שהשרת מחזיר לדפדפן בכותרת Set-Cookie.

שני הפרטים האלה ביחד הם הבעיה. הכתובת שנשמרה נכתבת אל קובץ הסשן בלי שהפרמטרים שבה עוברים סינון, ולכן גולש שאינו מזוהה יכול להכניס לתוכה מה שירצה, כולל קוד PHP. את שם הקובץ שנוצר הוא מקבל בעצמו בכותרת התשובה, כך שהוא גם יודע בדיוק לאיזה נתיב התוכן שלו נחת. לשליטה מרחוק על ערך שהיישום הניח שהוא קבוע קוראים external control of assumed immutable parameter.

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

מי מושפע?

לפי הרשומה, Craft CMS בכל גרסה מתחת ל-4.15.3, וגרסאות הענף החמישי מ-5.0.0 ועד 5.7.5.

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

נקודה שכדאי לשים לב אליה: הרשומה נוקבת בנתיב מדויק, /var/lib/php/sessions. זה הופך את הבדיקה לקונקרטית, כי יש מקום אחד להסתכל בו ולא חיפוש עיוור בכל השרת.

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

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

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

מה עושים?

עדכנו את Craft ל-4.15.3 אם אתם בענף הרביעי, או ל-5.7.5 אם אתם בענף החמישי. אלה הגרסאות הראשונות שכוללות את התיקון, וההודעות שלהן פתוחות בדף השחרור של 4.15.3 ובדף השחרור של 5.7.5.

הסתכלו בתיקיית הסשנים של השרת, /var/lib/php/sessions, וחפשו בקבצים שם תוכן שאינו נראה כמו נתוני סשן, למשל קוד. הקבצים נקראים sess_ ואחריו מזהה, והם נוצרים גם בגלישה רגילה, כך שהמטרה אינה נוכחות של קבצים אלא מה שכתוב בתוכם.

מי שרוצה לראות מה בדיוק תוקן ימצא את השינוי בבקשת המשיכה 17220 במאגר של Craft.

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