Yii 2 הוא framework לבניית אתרים ב-PHP, שכבת הקוד שמפתחים בונים עליה במקום לכתוב הכול מאפס. לפי הרשומה, בגרסאות שלפני 2.0.52 הוא מטפל לא נכון בצירוף התנהגות שמוגדרת דרך מפתח בשם __class במערך, וזו נסיגה של תיקון קודם שקיבל את המזהה CVE-2024-4990. הרשומה גם קובעת במפורש שהחולשה נוצלה בשטח בין פברואר לאפריל 2025. הציון הוא 9.0.

מה החולשה?

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

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

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

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

מי מושפע?

לפי הרשומה, Yii בכל גרסה שלפני 2.0.52.

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

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

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

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

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

מה עושים?

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

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

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

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