הפרק החדש של סייברסייבר התחיל מ-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