דף הבית   על אודות   צרו קשר   לפני האיתחול  
18 באפריל2019

חברת החשמל המזרח ירושלמית


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

טוב, לא כולכם, רק אם אתם תושבי חלקים מסוימים בגדה המערבית או ממזרח ירושלים שמקבלים את החשמל מ”חברת החשמל המזרח ירושלמית” (JDECO), או בערבית - شركة كهرباء محافظة القدس.

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

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

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

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

http://1.2.3.4 - לא עובד

http://1.2.3.4:82 - עובד

הגנה של אלופים.

וזה מה שהתקבל:

login page

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

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

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

console

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

id

אז מה קרה כאן, בעצם?

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

חלק ראשון - הקוד

פעם פעם, לפני המון שנים, כשהדינוזאורים רעו באחו ולדיסקטים היתה מדבקה קטנה כדי להגן עליהם מכתיבה, מפתחי אתרים בנו אותם עמוד אחרי עמוד. “דף הבית” היה קובץ נפרד שנקרא, נניח, homepage.asp. עמוד משתמש נקרא user.asp, עמוד מתכון נקרא recipe.asp, והקשר בין העמודים היה רופף. כך, למשל, אם עמוד המשתמש היה צריך לבדוק אם הגולש שקורא לו אכן מחובר - הוא היה בודק איזו עוגיה ולפי זה מחליט. פעמים רבות מפתחים התחלפו, או שהיה יום חמישי בערב ואנשים רצו ללכת הביתה להכין את המוץ לשבת או מה שלא עשו אי אז בימים הרחוקים האלה, והעלו עמודים שלא היתה בהם בדיקה כזו. מכיוון שהעמודים היו ממילא “בתוך” המערכת וכדי להגיע אליהם היה צריך להתחבר, למה לבדוק אם מותר לגולש לצפות בהם?

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

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

חלק שני - ההתקנה

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

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

חלק שלישי - מודעות

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

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


הפרק עלה גם כפרק בפודקאסט הפופולרי “סייבר סייבר”