איך לפתח תוכנה מאובטחת וחסינה יותר?
כתב: מייק אמדי, מנהל אבטחת מערכות קריטיות, קבוצת Software Integrity Group, סינופסיס
בעולם משופע באפשרויות, צרכני ויצרני המוצרים המשמשים אותנו בחיי היומיום צריכים לקבל באופן שוטף החלטות איכות. יצרני רכב למשל, ממנים עובד או שניים בפס ההרכבה, שיבטיחו שכל שלב הרכבה עובר בדיקת איכות לפני שעוברים לשלב הבא. בדרך כלל, עובדים אלה נעזרים בכמות גדולה של תוכנות מגוונות ושל כלי חומרה, שמסייעים להם להגדיר איזה פריט עובר את הבדיקה ואיזה פריט נכשל. כללית, ארגונים שמשקיעים יותר מאמץ ב"שערי איכות" אלה, מייצרים מוצרים איכותיים יותר מאלה שמשקיעים פחות מאמץ כזה.
מגמה זו מתפשטת גם בתחום הצרכני. צרכנים נבונים בודקים את איכות המוצרים שהם רוכשים בכדי להבטיח שהם מקבלים את החלטת הקנייה הנכונה. עם הזמן, מוצרים מפתחים מוניטין בתחומי האיכות והאמינות, דבר שמסייע לצרכן לקבל החלטות טובות יותר. הצרכן אף לומד מה עליו לחפש כשהמוצר צריך לעבור בשערי האיכות.
מבחינה פונקציונלית, כך היה בתעשיית התוכנה מימי פיתוח התוכנות הראשונות. תוכנה טובה יותר היתה (ועדיין) התוצאה של מערך שערי איכות ושל תהליך Sign Off
טוב יותר, שמבטיח שהמוצר הסופי מתפקד כצפוי. הפיתוח לא תמיד היה פשוט, אבל הקריטריונים של עובר\נכשל המבוססים על פונקציונליות הם בדרך כלל ברורים למדי.
אתגרי אבטחת סייבר הכניסו לאבטחת איכות התוכנה מימד חדש לחלוטין, מכיוון שבעיות סייבר הן לרוב לא בעיות של פונקציונליות. הדרישות הפונקציונליות אמנם מבוססות על תסריטי שימוש (use cases), אבל הדרישות הלא פונקציונליות הן מטבען אינסופיות ומבוססות על תסריטי שימוש לרעה (misuse cases). תעשיית התוכנה פשוט אינה מוכנה לפרט את כל מקרי הכשל שנובעים משימוש לרעה בתוכנה. למעשה, אף אחד לא מוכן לקחת על עצמו את האתגר הזה.
לזהות את שיטות הבדיקה האפקטיביות
מצב זה מצריך יצירת שערי איכות בפיתוח תוכנה. השערים יאפשרו למפתח התוכנה לחוש את אופני השימוש, עם סיכון הכשלים הגבוה ביותר על בסיס הפגיעויות והחולשות המזוהות שלהם, ולקבל אינדיקציה על מידת החומרה שלהם. מפתחי תוכנה מיומנים מאוד ביצירת מיטב הפרקטיקות לפיתוח קוד מאובטח יותר. אך מה שהיה חסר הוא יצירת תקנים לבדיקות שישמשו כשערי איכות שיבצעו Sign Off לרמת האבטחה והחוסן של תוכנות.
חברות לבדיקות תוכנה הכירו בצורך הזה והחלו לפתח כלים ותהליכי עבודה משולבים לבדיקות. אלה מאפשרים לארגונים להבין טוב יותר מתי סביר לבצע Sign Off שקובע שתוכנה מספיק מאובטחת ואיכותית. המתודולוגיות כוללות ניתוח קוד סטטי (static code analysis), ניתוח הרכב תוכנה (software composition analysis), בדיקת קלטים פגומים (malformed input testing) וניתוח התנהגותי (behavioral testing).
מתודולוגיות לבדיקות אבטחת סייבר קפדניות מאפשרות לארגונים לזהות את שיטות הבדיקה האפקטיביות. הארגונים יכולים להתקדם לתהליך עקבי שבו כל הקוד בשרשרת האספקה המורחבת נבדק ברמת קפדנות משמעותית. ניתן למנף את העבודה שבוצעה כבר על ידי מומחי אבטחה וחברות המתמחות בבדיקות.
תשומת לב נכונה תיצור תהליך בדיקת אבטחה משמעותי. כל הנוגעים בדבר יוכלו אז לבצע Sign Off לתוכנה שאותה מממשים ולעשות זאת מתוך ביטחון שבדיקות האבטחה והחוסן בוצעו ברמה משמעותית של קפדנות.
קבוצת Software Integrity Group בסינופסיס מארחת אירוע למנהלים בכירים בתל אביב ב-2 בנובמבר 2015. בכנס זה, נדון במורכבות ובאיומים המתפתחים בתחום פיתוח התוכנה. נדון גם בפתרונות ובמיטב הפרקטיקות שיכולים לצמצם את הסיכון ובחשיבות של שילוב בדיקות תוכנה במחזור חיי הפיתוח בלי להקריב את הפונקציונליות או את הזמן לשיווק.