מדריך: כך תכתבו קוד מאובטח יותר עם היכולות החדשות של GitHub
שפת קוד פתוח חדשה לאיתור חולשות, כלים מתקדמים לסריקת קוד וגם Secret scanning: השירותים החדשים של גיטהאב עושים Shift Left במטרה לאבטח את הקוד כבר בזמן כתיבתו. כך תוכלו להטמיע אותם אצלכם
מאת אדיר רון, CTO, Microsoft for Startups
הקוד הפתוח שינה את העולם. רבים מהיישומים החדשניים ביותר היום בנויים על קוד שכל אחד יכול לגשת אליו באופן ציבורי וחופשי, וכך צוותי פיתוח יכולים לשתף פעולה בפרויקטים גלובליים. המתודולוגיה הזו מחלחלת בשנים האחרונות גם לארגונים וצוותים העובדים על IP פנימי, במטרה לאמץ את הפרקטיקות המוצלחות ביותר של קוד פתוח ולשפר את הפרודוקטיביות, עבודת הצוות ואבטחת המידע. מסטארטאפים קטנים ועד חברות אנטרפרייז ענקיות, הדרך הטובה ביותר להתמודד עם הקצב המהיר, נפחי הקוד העצומים וסוגיית החוב הטכני (Technical Debt) היא באמצעות שימוש בידע הציבורי כקהילה החולקת לקחים, לומדת מחולשות ידועות ומעלה דרכים טובות יותר לפתרון.
אחד האתגרים המשמעותיים נוגע ליכולת לזהות ולתקן בעיות אבטחה בשלב מוקדם של הפיתוח, כדי למנוע מהחוב הטכני להצטבר ולפתוח פתח לתקלות ולחולשות אבטחה בהמשך. הדרך הפשוטה והחסכונית ביותר היא לפתור את העניין בשלב כתיבת הקוד בעזרת למידת מכונה, המלצות ותובנות אבטחת מידע, שיקנו לכל מפתח ומפתחת נגישות לתחום הזה. המשמעות לתעשייה היא שהפתרונות חייבים לצאת מהרובריקה של מומחי סייבר ולעשות Shift Left – לתוך סביבת העבודה ותהליכי ה-DevOps.
לאחרונה נוספו לגיטהאב (GitHub) כלים ושירותים מהעולמות הללו במטרה להכניס את תפיסת ה-Code Security באופן טבעי למערך הפיתוח וה-DevOps, ולאפשר למפתחים לכתוב קוד נקי יותר מאיומים, גם ללא הכשרות משמעותיות בתחום אבטחת המידע. התובנות מתבססות על סריקה רציפה ועל הניסיון המצטבר והנרכש מקהילת הקוד הפתוח של יותר מ-73 מיליון מפתחים וכ-100 מיליון ריפוזיטורים (Repos) ציבוריים, עם שילוב של טכנולוגיות ענן. המטרה היא לאתר תבניות פיתוח שעלולות לייצר חולשה, בין אם זה בקוד הישיר שנכתב ובין אם כתוצאה מחולשות בחבילות שהחבילות שהוריד המפתח משתמשות בהן.
הנה הכלים החדשים של גיטהאב – ואיך תוכלו לנצל אותם לטובתכם.
1. שפת קוד פתוח חדשה – CodeQL
הצעד הראשון הוא מידול של תהליך ה-DevOps בתפיסה של איתור איומים ו-DevSecOps. המודל מאפשר להכניס לגיטהאב את ההגדרות וה-Policies של מרכיבים העלולים לסכן את הארגון בעתיד ואת מיקומם בווקטור חומרת האיומים. הוא מאפשר גם להבין את רמת החשיפה לפגיעויות כאלו ואחרות, המגיעות, בין היתר, כתוצאה משימוש בחבילות קוד פתוח.
כדי לעשות זאת יש צורך בשפה שתדע לנתח את הקוד ולהבין את הלוגיקה ברמת ה-Source וה-API מזווית אבטחת המידע. לשם כך פותחה בגיטהאב שפת קוד פתוח חדשה – CodeQL. זוהי שפה סמנטית הסורקת את הקוד ברציפות, מבצעת על בסיסו את הניתוחים הנדרשים ויוצרת את המידול שיזהה איומים קיימים ופוטנציאליים.
השפה הזאת היא אדפטיבית. כדי להרחיב את היריעה, ללמוד ממקורות חיצוניים ולאתר מודלים משמעותיים יותר, היא עושה שימוש נרחב בלמידת מכונה ובחכמת הקהילה של גיטהאב, המכילה היסטוריה רחבה במיוחד של תיקוני קוד ודפוסים מוכרים מעולם אבטחת המידע.
מיפוי האיומים של מה שכבר נכתב וקיים הוא צעד ראשון והכרחי בדרך לניקוי הקוד, וגם בפרויקטים המבוססים ביותר הוא מאפשר לבנות וקטורי תקיפה וחולשות אפשריות. לאחרונה המידול החדש הורץ על 50 פרויקטי ג'אווה סקריפט פתוחים בגיטהאב ואיתר 118 חולשות מסוגים שונים בפרויקטים הפופולריים ביותר – חולשות שהיו עלולות לאפשר השתלטות מרחוק באמצעות הקוד, לחשוף אותו ל-Injections וכדומה.
למידול איומים והטמעת השימוש ב-CodeQL
2. כלי Code Scanning חדש
עיקרון ה-Shift Left נוגע לא רק לאיתור החולשה, אלא גם למהירות שבה עושים זאת. עם יחס עולמי של 570 מפתחים על כל מומחה אבטחת מידע, ברור שהפער המרכזי ביותר הוא בידע ובהבנת הנושא על ידי המפתחים. כלי ה-Code Scanning מאפשר להשתמש ב-CodeQL בזמן אמת בעת כתיבת הקוד כדי להקדים את איתור האיומים כבר לשלב ה-git-push בכל שינוי בריפוזיטורי. הסריקה מקפיצה את הפגיעויות שהתגלו הישר לתוך ה-IDE של המפתח, על בסיס יותר מ-2,000 סוגי Queries שרצים במקביל ומחפשים דפוסי פיתוח שעלולים לייצר בעיות.
אבל Code Scanning מאפשר לקחת את זה עוד צעד קדימה: הוא מציף את ה-Reasoning של כל אזהרה, בתוספת מקור מעולם הקוד הפתוח שבו אותה תבנית כבר יצרה פגיעות בעבר, וכיצד מומלץ לתקנה. בכך הכלי לא רק מסייע באיתור איומים באופן חי, אלא גם מכשיר מפתחים לתיקון מיידי של הבעיה ולהימנעות מדפוס הקוד הזה בעתיד.
כיוון שמדובר בסביבת קוד פתוח, יכולות ה-Code Scanning מתעדכנות באופן רציף. כך מובטחת דמוקרטיזציה ביכולת לשלב תובנות בתהליך הפיתוח.
3. כלי Dependabot למניעת חולשות
בעולם ה-Open source, נדיר שנכתב קוד מאפס. לרוב נעשה שימוש בקומפוננטות וברכיבים מוכנים למגוון רחב של משימות. המתודולוגיה הזאת אמנם חוסכת זמן עבודה יקר, אבל היא עלולה לחשוף את הארגון שלנו – ואת הלקוחות שלנו – לבעיות אבטחה עקיפות, גם אם הקוד שכתבנו עובר Code Scanning.
השימוש ברכיבי קוד פתוח שכתבו אחרים עלול לפתוח בעקיפין וקטור תקיפה. דוגמה עדכנית טובה היא חולשת Log4j, שחשיפתה חייבה מיפוי לא רק של השימוש הישיר ברכיבים הרלוונטיים, אלא גם של אותו שימוש עקיף שתואר כאן. מכאן הצורך לסרוק בכל רגע נתון Dependencies וליצור גרף השפעה רחב יותר – כזה המתבסס גם על תלות, השפעה נגררת ורכיבים הצורכים רכיבים ומייצרים עץ שלם של קוד פתוח, שלרובו המפתח הבודד כלל אינו חשוף.
את האיום העקיף הזה מבקש לפתור ה-Dependabot – שילוב של Dependency ו-Bot. בניית גרף התלויות, לצד התובנות על המתרחש בעולם הקוד הפתוח, מייצרות קשר סינכרוני בין עדכוני האבטחה ב-Open source לבין הרכיבים שהורדנו לסביבת העבודה. זאת לצד המלצות וחלוקת משימות ותחומי אחריות באופן אוטומטי, בהתאם לסוג החשיפה שאותר.
מבחינה טכנית, הדבר מתבצע דרך יצירת גרף תלות והשוואה שלו ל-GitHub Advisory Database. הכלי מקושר ליכולות ה-Code Scanning, כלומר לסריקה שמתבצעת כל העת. כך ניתן להציף Alert על עצם האיום, יחד עם המלצות לפעולה ועדכון גרסה (Patch).
לעדכון קונפיגורציית Dependabot
4. כלי Secret scanning
פיצ'ר שהוכנס ממש לאחרונה מנסה לאתר Secrets בקוד, שעלולים לפתוח וקטור תקיפה בהינתן גישה לשירותים או דרך API. דפוסים של שימוש לרעה ב-Secrets נצברו בעולם הקוד הפתוח במשך שנים, והם מהווים כיום נדבך משמעותי באיתור Patters במסגרת יכולת ה-Secret Scanning. היכולת הזו מאפשרת לאתר בזמן אמת חולשות אפשריות לא רק בקוד, אלא גם ברמת המידע שהוא מכיל ועלול להיות מנוצל לרעה.
גיטהאב מריצה 27 סוגי Patters לאיתור תבניות, קוד וקבצים המוכרים כווקטורי תקיפה פופולריים בעולם ה-Secrets. גם כאן ניתן לשלב את היכולת הזו בזמן אמת בתהליך כתיבת הקוד, כדי לוודא שלא עולים לפרודקשן אלמנטים העלולים לסייע ל-hijack של השירותים לטובת יישומים אחרים.
להטמעה ושימוש ב-Secret Scanning
הסטנדרט המקובל בתעשייה עומד על 15% סיכוי לאיתור פגיעויות קוד לאחר שבעה ימים, ו-45% לאחר 90 יום. אבל תפיסת ה-Shift Left, יחד עם השירותים החדשים, העלו את שיעור הגילוי ל-72% וכבר ב-Pull Request, כלומר ממש בעת כתיבת הקוד. ההצלחה מגיעה בראש ובראשונה מהכנסת היכולות והדאטה ברמת כלי הפיתוח עצמו, ולא דרך דשבורדים חיצוניים או כלים המיועדים ל-CISO.
זוהי תובנה משמעותית שאנו למדים מקהילת הקוד הפתוח, והיא מהווה בסיס לפיתוחים נוספים בהמשך: מתברר שגם אם המידע קיים, הנגשתו דרך כלי פופולרי לכל מפתח בזמן אמת, עם חיבור להקשר המיידי של כתיבת הקוד באמצעות ניתוח תבנית, רכיבי קוד פתוח או Secret שנותר בקוד – זהו המפתח למניעת פגיעויות עוד לפני שהן נוצרות.

הכתבה בחסות Microsoft
GitHub Enterprise, קרדיטים לענן ה-Azure וכלים נוספים למפתחים המסייעים בקיצור Time to Market ואבטחת הקוד זמינים ללא עלות במסגרת Founders Hub, תוכנית הסטארטאפים החדשה של מיקרוסופט. להרשמה – לחצו כאן.
הגב
5 תגובות על "מדריך: כך תכתבו קוד מאובטח יותר עם היכולות החדשות של GitHub"
* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.
shift-left עושים עם spectralops
cider security עושים אחלה עבודה בתחום הזה
cycode עושה בדיוק את זה והרבה יותר
יש ל jfrog כלי מעולה שעושה משהו דומה מאוד .
bridgecrew has a great tool