פגיעות ה-Log4j- הסבר פשוט ללא מתכנתים
נביאי זעם, תופעת 2012 וסרטי ארמגדון- אם יש משהו שהאנושות אוהבת זה סיפורים על סוף העולם. אבל אם פעם יום הדין כלל אסטרואיד בגודל של פריז הנע לעבר כדור הארץ, מאז באג 2000 נדמה שסוף העולם הוא פחות פיזי ויותר וירטואלי.
הפגיעות בספריית ה-Log4j (יוסבר בהמשך) שפרץ לחיינו כמו בריטני ספירס אחרי עשור, היוותה תזכורת נוספת לכך שלמרות הרצון העז להימנע מהנושא, המרחב הווירטואלי פורץ לתוך חיינו.
אבל חלקנו, כלומר רובנו, חוטפים חום ממושגים טכניים. עשרות פוסטים בלינקדין ניסו, ללא הצלחה מרובה, להסביר ל"יוזרים" מבינינו מה היא רעידת האדמה שהתרחשה בשבועות האחרונים בעזרת משל.
התמונה נלקחה מארץ נהדרת
מה זה Zero day vulnerability?
כאשר מדברים על פגיעות אפס ימים, חשוב להבחין בין כמה מושגים:
- פגיעות אפס ימים- מדובר בחולשה שהתגלתה במערכת או במכשיר על ידי האקרים, אך הספקים של המערכת עדיין לא מודעים אליה והסיכוי לניצולה על ידי גורמים זדוניים גבוהה. לעיתים חולשות אלה מוצעות למכירה ב-Dark web למרבה במחיר, ולפעמים החולשה מפורסמת בקהילות האקרים כדי שכולם יוכלו להנות מהגילוי. מי אמר שאין הוגנות בין גנבים? כאשר החולשה מתגלה על ידי הספקים, יש להם אפס ימים לתקן אותה, או בשפה המקצועית- לייצר פא'ץ. מדובר בשליחת עדכון לכל המשתמשים במערכת שמטרתו למנוע את ניצול החולשה.
- ניצול אפס ימים- גילוי החולשה אינה מספיקה, האקרים צריכים למצוא את הדרך שבה ניתן לנצל אותה. כל עוד הפגיעות עוד לא התגלתה, האקרים יכולים לכתוב קוד ניצול שיאפשר להם להשתמש בחולשה כדי לחדור למערכת.
- מתקפת אפס ימים- אם הפגיעוית של המערכת היא מנעול דלת שלא מתפקד כראוי, והניצול הוא לדוגמא הוצאת המנעול ופתיחת הדלת, אז המתקפה היא גניבת החפציפם שלנו מהבית. מתקפות אפס ימים הן גניבה של מידע במהמערכת או גרימת נזק, על ידי שימוש בקוד הניצול שנכתב במיוחד.
Created with Freepik
למה פגיעות אפס ימים היא קריטית?
בתוכנה תמיד יש בעיות ובאגים, ולכן המפתחים תמיד מחפשים אותם. אך כאשר פגיעויות מתגלות על ידי האקרים לפני שהם מתגלות על ידי מפתחים, ההאקרים ממהרים לנצל אותה ולהזריק קוד ניצול (שורות קוד שנכתבו במטרה לנצל את הפגיעות), מה שיכול להוביל לפגיעה במשתמשי התוכנה, פעמים רבות בצורה של גניבת זהות. כאשר הדבר מתגלה על ידי המפתחים, הם ממהרים להוציא עדכון לתיקן וחסימת הפגיעות.
אז ממה נובע העיכוב אתם שואלים? טוב, זה לא כל כך פשוט למצוא את החולשות האלה, לפעמים עוברים חודשים מהרגע שהיא מתגלה על ידי האקרים עד לרגע שהספקים מבחינים בה. אחד מהדרכים המקובלות למציאת וירוסים למשל היא שימוש במאגר מידע של כל הוירוסים הידועים, וכך המערכת מחפשת קודים שנראות דומות למאגר מידע. אולם מתקפות אפס יום הן בהגדרה מתקפות חדשות, ולכן אין רפרנס אליהן.
לאחר פיתוח ושחרור העדכון, הרבה משתמשי קצה לא ממהרים לעדכן את המערכות הלאה, לרוב מאי הבנה של חומרת הסיטואציה הנובע ממחסור בבעלי תפקידים כמו CISO (ראש מערך אבטחת המידע של ארגון).
גם הגיוון במטרות הופך את הבעיה הזו לחמורה במיוחד. פגיעויות אלה יכולות להתגלות במרכיבי מערכת רבים לרבות:
מערכות הפעלה
דפדפנים
אפליקציות
מרכיבים שהם OPEN SOURCE (קוד פתוח- מודל לפיתוח תוכנה באופן המוני. הקוד נגיש ופתוח לכולם)
מרכיבי אינטרנט- IoT (כל המרכיבים הפיזיים בעלי יכולת התחברות לאינטרנט, כמו טךוויזיה חכמה, בית חכם וכדומה)
לכן כולם הם מטרות פוטנציאליות, החל מאנשים אינדיבידואליים המשתמשים במערכות פגיעות ובעלי גישה למידע רגיש ועד לארגונים גלובליים.
גילוי Zero day attacks
כפי שנאמר, לעיתים לוקח זמן רב עד שפגיעויות אלה מתגלות, וזאת בגלל הדרכים הרבות בהן הן יכולות להתבטא. ארגונים יכולים להיוודא לקיום חולשה שכזו כאשר יש תנועה רבה במערכת או סריקות חריגות שמתבצעות.
בנוסף, ישנן מערכות הסורקות תנועות ובקשות, ומנסות להבין האם אלה נובעים מפעולות חשודות.
ואיך אפשר ללא AI- אינטיליגציה מלאכותית, שמנסה ליצור כמו במערכות אנטי וירוס מאגר נתונים, רק שבמקום לחפש רצפי קוד הידועים כזדוניים, המערכת תוכל ללמוד ולאתר אינטראקציות חשודות.
הסבר פשוט על Log4j
ספריית ה- Log4j היא ספרייה האוספת לוגים (נתונים על כל תנועה ובקשה שמתבצעת במערכת עליה היא מותקנת), כמו יומן, ומאפשרת למפתחי תוכנה לעקוב אחר הנתונים. בעזרת הנתונים שנאספים, מפתחי התוכנה יכולים לנתח את תנועות המשתמשים ולחפש באגים.
ה- Log4j תוכנת על ידי חברת Apache, שהיא חברת Open Source האחראית על שליחת בקשות של משתמשי אינטרנט (בשמם המקצועי- בקשות HTTP). הספרייה תוכנתה בשפת Java- שפת תכנות שהייתה פופלרית מאוד בשנות התשעים, ומהווה הבסיס למערכות רבות. במקור היא תוכננה כדי לרוץ על פלטפורמות כמו תוכנת עיצוב גרפי macOS, ווינדוס ולינוקס (מערכת הפעלה כמו ווינדוס, רק שהיא מוגדרת כקוד פתוח).
העובדה ש-Log4j היא Open Source הפכה אותה לפופולרית במיוחד, ומערכת זו מוטמעת בכמעט גל פינה ברשת הגלובלית- ממשחקי מחשב, לאתרי קנייה גדולים ועד למערכות חיוניות כמו מערכות אספקת מים, אנרגיה, חשמל ועוד. במילים אחרות, כולם בבעיה.
ההתראה הראשונה על פוטנציאל לפגיעות הגיע לצוות המפתחים של APACHE בנובמבר 24 על ידי צוות אבטחת המידע של ALIBABA, אתר הקניות הסיני הענק.
אולם הציבור הרחב נודע לבעיה המשמעותית הזו בדצמבר 9, לאחר שצוות אבטחת המידע של משחק המחשב SandBox מבית מיינקראפט (כן, מבית היוצר של הריקוד הידוע לשמצה) פרסם פוסט בבלוג שלהם שמזהיר את כל משתמשי המשחק מהפגיעות. הצוות פרסם גם פא'ץ (עדכון), אך מהר מאוד התגלה שהבעיה נמצאת לא רק במערכות הרלוונטיות למשחק הספציפי, אלא ב-Log4j הפופולרי.
הפגיעות קיבלה את השם CVE-2021-44228 (כי תמיד חייב שם ארוך), או בשמה הנוח יותר Log4j, והיא מנצל פרוטוקל הנקרא JNDI.
פרוטוקל ה-JNDI של java מאפשר שליפת מידע משרת אחר, שעוזר בתהליך אסיפת הלוגים ושיוכם למערכת המתאימה. הדבר אינו דבר מסוכן בהכרח, מפני שלרוב הספקים קובעים מאיזה שרת יש להביא את המידע. אולם התגלה שניתן לשלוח בקשה ל-JNDI לגשת לכל שרת בעולם ולשלוף פריט לבחירתי.
כך לדוגמא, האקרים יכלו לשלוח בקשת HTTP שמנתב את הפרוטוקול לגשת לאתר אישי שלי ולהוריד תוכנת Malware. במקרה זה, נוצל פרוטקול ה-JNDI בעזרת פרוטוקול אחר ששמו LDAP. אולם הבעייתיות הרבה בפגיעות זו היא המגוון הרב של הדרכים בהם ניתן לנצל את ה-JNDI, בין היתר בעזרת פרוטוקלים נוספים ששמם DNS ו-RMI.
במידה ונמצאתם חשופים לפגיעות ה-LOG4J או אתם חוששים, פנו לחברת אבטחת מידע לייעוץ מקצועי ומהיר.