אתר מגילת העצמאות חושף את השמות של החותמים לצד חתימתם

יוזמה יפה וציונית חושפת את מאגר החתימות המלא של האזרחים ושמם המלא לכל האקר שעובר בסביבה
אתר חותמים על מגילת העצמאות

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

אתר ׳חותמים על מגילת העצמאות׳ מזמין את כלל האזרחים לחתום על מגילת העצמאות וכך לאשרר אותה. היוזמה יפה וחברתית והאתר מעוצב באופן יפה ומקצועי עם תמונות מרשימות כולל תמונה של המגילה עצמה:

אתר חותמים על מגילת העצמאות
אתר חותמים על מגילת העצמאות

כל אזרח שחפץ בכך יכול להכניס את שמו המלא, כתובת הדואר האלקטרוני שלו וחתימה ידנית נאה:

אפשרות לחתימה על המגילה - שם מלא, דואר אלקטרוני וחתימה
אפשרות לחתימה על המגילה – שם מלא, דואר אלקטרוני וחתימה

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

אישור על החתימה במגילה
אישור על החתימה במגילה

אחרי האישור, ניתן לצפות בכל החתימות בתחתית המגילה:

חתימות בתחתית המגילה
חתימות בתחתית המגילה

טוב ויפה, נכון? גם אין פה סיכון אבטחתי. כי בחתימה בלבד אין שום בעיה. כל עוד היא לא צמודה לשם. וכפי ששרת התרבות מירי רגב אמרה: "נחבר את כולם לסמל המכונן".

הכשל – החתימה חשופה יחד עם השם המלא

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

שם וחתימה
שם וחתימה

יתרה מכך, כל השמות נמצאים במאגר שקל מאוד לשתות את כל תוכנו בקלות רבה. כל מה שצריך זה לשלוח בקשת POST אל הכתובת

https://megila.70.gov.il/src/view/signatureList.php

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

curl -d "page=2" https://megila.70.gov.il/src/view/signatureList.php
פרטי האזרחים כתוצאה מבקשת POST
פרטי האזרחים כתוצאה מבקשת POST

כשל נוסף: אין הגנת brute force וניתן להוריד את כל מאגר החתימות והשמות המלאים

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

בעית האבטחה הקשורה לחתימה

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

הפתרון המוצע

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

אני מודה מאוד למשה דובמן שהסב את תשומת ליבי לבעיה – העיר והאיר 🙂

עדכון

שמות החותמים הוסרו מהמידע המתקבל מהאתר וכרגע מופיעה ב-ALT רק המילה ׳חתימה׳. לפחות עשו את זה מהר…

 

עדכון נוסף

בדיונים שנערכו לאחר מכן בקבוצת DC9723 (קבוצה המוקדשת לדיונים על אבטחת מידע) תומר פינטו, אבי קינן ועידו דיאמנט מאיירוןסורס גילו כמה דברים מעניינים – הדבר הראשון הוא שכל שמות החותמים והמיילים שלהם, בצמוד לחתימות שלהם אוגדו בקובץ אקסל שהיה נגיש מאוד לכל אחד ונמצא על השרת (הקובץ הוסר מהרשת). בנוסף, מסיבה מסוימת על השרת נמצאו גם קבצי git שמאפשרים הצצה מלאה על כל תהליכי הפיתוח של הקוד. מסד הנתונים של האתר היה גם כן חשוף לרשת. חגיגה אמיתית של אבטחת מידע 🙁

קובץ אקסל
קובץ אקסל

פוסטים נוספים שכדאי לקרוא

פתרונות ומאמרים על פיתוח אינטרנט

המנעו מהעלאת source control לשרת פומבי

לא תאמינו כמה אתרים מעלים את ה-source control שלהם לשרת. ככה תמצאו אותם וגם הסבר למה זה רעיון רע.

גלילה לראש העמוד