מדריך: כך תכתבו קוד מאובטח יותר עם היכולות החדשות של GitHub

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

לאפשר למפתחים לכתוב קוד נקי מאיומים, גם ללא הכשרה באבטחת מידע (צילום: Dreamstime)

מאת אדיר רון, 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 מתעדכנות באופן רציף. כך מובטחת דמוקרטיזציה ביכולת לשלב תובנות בתהליך הפיתוח.

להטמעה ושימוש ב-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"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
wolf
Guest

shift-left עושים עם spectralops

סייבר
Guest

cider security עושים אחלה עבודה בתחום הזה

פרינג
Guest

cycode עושה בדיוק את זה והרבה יותר

global
Guest

יש ל jfrog כלי מעולה שעושה משהו דומה מאוד .

איתן
Guest

bridgecrew has a great tool

wpDiscuz

תגיות לכתבה: