אפאצ'י תיקנה ב-Tomcat חולשה שמקבלת ציון 9.8 ומאפשרת, בהגדרות מסוימות, הרצת קוד על השרת או חשיפה של קבצים רגישים. היא נמצאת ברשימת החולשות המנוצלות בפועל. הגרסאות המתקנות הן 11.0.3, 10.1.35 ו-9.0.99.

התוספת "בהגדרות מסוימות" אינה זניחה כאן, והיא מה שהופך את הדף הזה לשימושי יותר מהציון לבדו.

מה החולשה?

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

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

מה שהופך את המקרה הזה לנוח במיוחד לקבלת החלטות הוא שהתיאור הרשמי מפרט בדיוק מתי החולשה עובדת.

כדי לחשוף קבצים רגישים או להזריק לתוכם תוכן צריך שכל אלה יתקיימו יחד: כתיבה מופעלת ב-servlet הדיפולטי, תמיכה ב-partial PUT פעילה, יעד ההעלאה של הקבצים הרגישים יושב בתת-תיקייה של יעד ההעלאה הציבורי, התוקף יודע את שמות הקבצים הרגישים, והם עצמם מועלים ב-partial PUT.

כדי להגיע להרצת קוד צריך: כתיבה מופעלת ב-servlet הדיפולטי, תמיכה ב-partial PUT פעילה, שמירת sessions לקבצים במיקום ברירת המחדל, וספרייה בפרויקט שאפשר לנצל אותה להתקפת deserialization.

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

מי מושפע?

Tomcat בגרסאות 9.0.0.M1 עד 9.0.98, 10.1.0-M1 עד 10.1.34, ו-11.0.0-M1 עד 11.0.2. התיאור מציין גם שגרסאות 8.5.0 עד 8.5.100 מושפעות אף שכבר יצאו משירות כשהרשומה נוצרה, ושייתכן שגם גרסאות ישנות יותר מושפעות. דביאן פרסמה עדכון משלה לחבילה שהיא מפיצה.

Tomcat הוא מהשרתים הנפוצים להרצת יישומי Java, ובישראל הוא מופיע בעיקר במערכות פנים-ארגוניות ולא באתרים שהציבור הרחב נכנס אליהם ישירות.

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

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

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

מה עושים?

עדכנו לגרסה 11.0.3, 10.1.35 או 9.0.99, לפי קו הגרסאות שאתם מריצים. ההודעה המקורית נמצאת ברשימת הדיוור של אפאצ'י.

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

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

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