תיקון החירום לפגיעות הידועה לשמצה בספריית Java Log4j אינו חסין תקלות. קרן תוכנת Apache משחררת גרסה חדשה לתיקון הפגיעות אחת ולתמיד.
פגיעות בספרייה פופולרית במיוחד עבור Java מטלטלת את נוף ה-IT העולמי. ההערכה היא שהספרייה קיימת ברוב הסביבות הארגוניות.
Log4j משמש בעיקר לרישום. ניתן לרשום אירועים באפליקציות עם הערות. חשבו על תדפיס של פרטי הכניסה לאחר ניסיון התחברות. או, במקרה של יישום אינטרנט ב-Java, שם הדפדפן שאליו המשתמש מנסה להתחבר.
הדוגמאות האחרונות נפוצות. בשני המקרים, משתמש חיצוני משפיע על היומן שמוציא Log4j. אפשר לנצל את ההשפעה הזו לרעה. היומנים של כל גרסה של Log4j בין ה-13 בספטמבר 2013 ל-5 בדצמבר 2021 יכולים להורות ליישומי Java להפעיל את הקוד משרת מרוחק במכשיר מקומי.
מאז 2013, Log4j מעבד API: JNDI, או Java Naming and Directory Interface. התוספת של JNDI מאפשרת לאפליקציית Java להריץ קוד משרת מרוחק במכשיר מקומי. מתכנתים מורים על ידי הוספת שורה בודדת של פרטים על השרת המרוחק באפליקציה.
הבעיה היא שלא רק מתכנתים מסוגלים להוסיף את הכלל ליישומים. נניח ש-Log4j רושם את שמות המשתמש של ניסיונות הכניסה. כאשר מישהו מזין את השורה האמורה בשדה שם המשתמש, Log4j מריץ את השורה ואפליקציית Java מפרשת פקודה להרצת הקוד בשרת שצוין. כך גם במקרים שבהם Log4j רושם בקשת HTTPS. אם תשנה שם דפדפן לשורה, Log4j מפעיל את השורה, תוך הנחיות עקיפות להריץ קוד כרצונך.
תיקון חירום יכול גם להיות לא בטוח
ב-9 בדצמבר התגלתה הפגיעות בקנה מידה גדול. Apache Software Foundation, מפתחת Log4j, פרסמה תיקון חירום (2.15) כדי לתקן את הפגיעות. מאז, זה היה בראש סדר העדיפויות עבור ספקי תוכנה לעבד את גרסה 2.15 ולספק תיקון לארגונים.
עם זאת, ארגון האבטחה LunaSec קובע כי התיקון אינו אטום לחלוטין למים. זה נשאר אפשרי להתאים הגדרה ולבצע פקודות JNDI מתועדות.
שימו לב: יש להתאים את ההגדרה הרלוונטית באופן ידני, כך שגרסאות ללא שינוי של 2.15 אכן בטוחות. עם זאת, לונה סק ממליצה לספקים ולארגונים לעדכן ל-Log4j 2.16. 2.16 פורסם על ידי Apache Software Foundation בתגובה ל- LunaSec. הגרסה החדשה מסירה לחלוטין את ההגדרה הפגיעה, מה שלא מאפשר ליצור את התנאים לשימוש לרעה.