מחבר: רן בר-זיק

הפריצה לשירביט: טרור!!1! הפירצה"ל: *צרצרים*

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

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

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

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

למצולמים אין קשר לכתבה, אבל אולי פרטיהם נחשפו בפירצה 🖼️ david_kochman cc-by-nc-nd

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

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

קוד להורדת רשימת חיילי צה"ל מיישומון הצב"ר הצה"לי
קוד להורדת רשימת חיילי צה"ל מיישומון הצב"ר הצה"לי

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


🎖️ הפירצה"ל: לכו בעקבות הריח

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

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

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

סמס מצה"ל על שימוש באתר הצב"ר
סמס מצה"ל על שימוש באתר הצב"ר

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

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

הצב"ר, אתר דיווחי הקורונה הצה"לי
הצב"ר, אתר דיווחי הקורונה הצה"לי

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

echo $null > log.txt
for i in $(seq 000000000 999999999); do
curl –header "Content-Type: application/json" –request POST –data "{\"personalId\":\"${i}\"}" clearance.medical.idf.il/api/XXX/YYYY >> log.txt
echo >> log.txt
done

קוד להורדת רשימת חיילי צה"ל מיישומון הצב"ר הצה"לי
קוד להורדת רשימת חיילי צה"ל מיישומון הצב"ר הצה"לי

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

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

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

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

____________________________

¹ יש מצב שהסצינה מומצאת וקיבלנו מייל פשוט ואנונימי לתיבת ההדלפות של הבלוג. 

תמונה ראשית: חיילי 8ביט 🖼️ Arrkyre


אפשר את פרטי חשבון הבנק שלך? לא משנה, ניקח כבר מביטוח לאומי

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

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

דף עדכון פרטי חשבון בנק לקבלת מענק 🖼️ אתר המוסד לביטוח לאומי

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

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

למרבה השמחה, היתה CAPTCHA מוטמעת במערכת. לרוע המזל, היא לא היתה מוטמעת מספיק טוב. מנגנון ההגנה של האתר (הנקרא WAF) חסם גישה של headless browsers לאתר, ומנע כרייה נוחה באמצעות שורת פקודה בלבד, אבל לא מנע מכורים אוטומטיים מבוססי דפדפנים לעבוד. לוקאר הכין סקריפט סלניום והפעיל אותו על תעודות הזהות של חברי סייברסייבר. אף מנגנון לא חסם אותו, אפילו שהוא עבד מאותו IP (אבל כן חסם כתובות IP מחו"ל, כי כידוע אין האקרים בישראל, ובוודאי שאין האקרים בחו"ל שיודעים להשתמש בכתובות IP ישראליות).

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

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

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

"נערכו בדיקות חוסן ואבטחה כדי למנוע שימוש לרעה במידע"

תגובת המוסד לביטוח לאומי:

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

(צילום ראשי 🖼️ קובי גדעון, לע"ם)


סייברקורונה: האם להתקין את המגן 2.0?

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

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

יישומון המגן 2 בחנות האפליקציות של גוגל

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

אז מה? להתקין או לא להתקין את המגן? המגן 2.0 עובדת בצורה שונה מהאפליקציות המקובלות בעולם. מהניסיון הפיתוחי שלי? אם עובדים בצורה שונה מה-API הרשמיים זה נגמר לא טוב. אני מקווה שזה לא יהיה גם הפעם. המגן זו החלופה האזרחית היחידה לאיכוני השב״כ הלא יעילים. זו הסיבה שאני מתקין אותה.

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

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