חדש: רכיב CI לאפליקצית 'המגן' למען שיפור אבטחת המידע שלה
בקצרה: על-מנת לעודד הורדות של אפליקצית 'המגן', בנינו פתרון משלים של Continuous Integration וסריקות קוד למען שיפור אבטחת המידע, הפרטיות וקוד האפליקציה, ואנו גם מזמינים את מפתחי הפרוייקט (וכל המעוניינים) לתרום לזה ולהשתמש בזה באופן חופשי ושוטף.
כידוע, לפני כמה ימים יצאה אפליקצית 'המגן' – שנועדה להתריע על חשיפה לחולי קורונה מאומתים, וזאת בעזרת הצלבת מיקומים של בעל הטלפון הנייד אל מול מיקומים של חולי קורונה (למידע מורחב על אופן הפעולה שלה אפשר להכנס לכתבה שכתב מוביל הפיתוח של האפליקציה – הקישור בסוף מאמר זה).
זו אפליקציה חשובה שגם קיבלה את ברכתה של קהילת הקוד הפתוח.
האפליקציה הורדה כמיליון פעם עד כה – אך זה עדיין לא מספיק (ככל שתהיינה יותר הורדות אזי יותר אנשים יקבלו מידע בזמן אמת על חשיפה שלהם לחולים מאומתים).
מקריאת תגובות באינטרנט ראיתי שהאפליקציה עדיין מתקבלת בחשדנות מטעם קהל המשתמשים המיועד.
חשבנו ב- ALM-Toolbox איך נוכל לעזור להגברת האמון באפליקציה ולתרום להגדלת כמות ההורדות – וראינו שאין סריקת קוד אוטומטית של הקוד ובדיקות security.
סריקה כזו תוכל לגלות פירצות אבטחה ופרטיות, ולהגדיל את האמון באפליקציה (ובתקווה – גם לתרום להורדות נוספות שלה)
לכן החלטנו להקים פתרון משלים של CI הכולל סריקת קוד ומציאת פרצות אבטחה.
החלטנו להשתמש ב- GitLab , ומהסיבות הבאות:
- הכלי מאפשר הרצת אוסף נרחב של כלים לסריקת קוד בהיבטי אבטחה ולגילוי vulnerabilities (ובפרט עבור React – ה- framework שבו נכתבה האפליקציה)
- הואיל וזה קוד פתוח, החלטנו להשתמש בכלי CI שבעצמו מגיע כקוד פתוח
- השימוש בכל כלי ה- security הינו חינמי לפרוייקטים ציבוריים — כך שגם נוכל לתת לאנשים נוספים להצטרף ולתרום לפרוייקט
- ניתן לחבר אותו לפרוייקט ב- GitHub (הואיל ולשניהם בסיס משותף של git)
- ה- CI נגיש בענן כך שנוכל לצרף תורמים נוספים לפרוייקט בקלות וללא צורך להתקין כלים נוספים
- אנחנו מכירים את הכלי היטב (מפרוייקטים קודמים שביצענו וכן הואיל ואנחנו נציגי היצרן בארץ)
בימים האחרונים השקענו זמן בהבנת 'המגן' ובניית פתרון CI (אינטגרציה רציפה) שמותאם לאפליקציה ולשפות הקוד בה נכתבה ונבנתה.
אז מה הפעלנו?
- סריקת קוד סטטית (SAST) על קוד האפליקציה
- סריקת Dependencies לאיתור שימוש בחבילות תוכנה בקוד פתוח שעלולות להיות עם נקודות חולשה ופרצות אבטחה
- דו"חות Security (עם דשבורד נוח לשימוש)
- סריקת קונטיינרים (עבור ה- CI)
- חיבור בין הפרוייקט ב- GitHub לבין ה- CI , כך שירוץ pipeline חדש בכל פעם שנעשה push לקוד האפליקציה (לרוב בהוספת קוד חדש או בעדכון הקוד)
- סריקת "Code Quality" לזיהוי שגיאות תחביר ושגיאות לוגיות
(אפשרי גם היה להריץ בדיקות DAST ובדיקות license אך השארנו זאת בצד כרגע)
חיברנו את זה ל GitHub הואיל והפרוייקט ממשיך להתעדכן שם – למעשה התחברנו ישירות ל- git repo .
למעשה ניתן לומר שהפכנו גם את ה-CI (ופן ה- DevOps) של האפליקציה לקוד פתוח.
אז מה הממצאים שמצאנו?
ראשית אומר, שמטעמים מובנים, הסתדרנו חלק מהתוצאות (ע"מ למנוע שימוש בהן לרעה). בימים הקרובים (לאחר שיתוקנו הממצאים החשובים) נאפשר גישה חופשית להכל.
בהרצת CI pipeline שביצענו במוצ"ש 28.03.2020
התגלו הממצאים הבאים:
25 vulnerabilities ברמת סיכון 'Medium'
115 ברמת סיכון נמוכה:
התגלו 7 נקודות תורפה (vulnerabilities) בהרצת dependency scanning :
התגלו כ- 10 vulnerabilities בהרצת בדיקת קוד סטטי על קוד האפליקציה:
התגלו 252 נושאים של code quality (חלקן חשובות, חלקן קצת פחות):
מסיבות של אבטחת מידע אנו מעדיפים כמובן לא לחשוף את פרטי כל תוצאות הריצה כאן באופן פומבי, ומזמינים את מפתחי הפרוייקט – וכל מי שמעוניין לתרום -לפנות אלינו ואנו ניצור חשבון שיאפשר להם לצפות בהכל ולפרטי פרטים (כולל מידע איזו פירצה יש באיזו קובץ ועל איזו שורת קוד ; המלצות כיצד לתקן פירצות שהתגלו ועוד) – וכן להריץ את הבדיקות בכל עת שירצו – וזאת למען שיפור מתמיד של האפליקציה. לפניה אלינו: hamagen@almtoolbox.com
אנחנו מקווים שה- CI שבנינו אכן יהיה מועיל – וגם מזמינים את כל המעוניינים להסתכל על הגדרות הריצה וגם להציע הצעות לשיפור.
ה- CI שבנינו (עם ה-pipelines) לטובת האפליקציה זמינים בענן הציבורי של GitLab וניתן לצפות בהם כאן:
https://gitlab.com/almtoolbox/hamagen-ci/pipelines
הצעות לשיפור יתקבלו בברכה במייל hamagen@almtoolbox.com .
סרטון שמסכם את הנושא בצורה ויזואלית – כאן:
תודות על הקמת הסביבה וסיוע: אלכס קרנובסקי ונחמיה ליטרט מהצוות שלנו, Xiaogang Wen מחברת GitLab ואלעד כהן מ- GoCode .
מעוניינים לקבל עדכון כאשר נעדכן את המאמר? השאירו כאן מייל
קישורים רלבנטים:
- הורדה של 'המגן' (אתר משרד הבריאות)
- קוד המקור של האפליקציה (אתר GitHub)
- הסבר על אפליקצית 'המגן'' (אתר גיקטיים)
- איטליה פנתה לישראל לסייע בהפעלת אפליקציית המגן (אתר Ynet)
- אתר GitLab בעברית