על איכות בפיתוח תוכנה, אבטחת מידע ומה שביניהן

פיתוח תוכנה הוא סוג של אומנות. אומנות, כידוע, אינו מדע מדויק. לא מעט כישורים וניסיון נדרשים על מנת להיות מפתח טוב. עם כל זאת, לכל מפתח יש 'באגים' – קוד לא תקין שיגרום לתקלת תוכנה. כמובן שהפתרון הוא בדיקות ועוד בדיקות.

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

סקר קוד בא לתת לנו מענה גם לאיום אחר לגמרי שאינו קשור רק לאיכות, לפונקציונליות וליעילות המערכת. זהו גם אמצעי לבדיקת רמת האבטחה של המערכת, אבטחה במובן של אבטחת מידע. סקר כזה מתבצע על ידי גורם שאינו מעורב בפיתוח עצמו, ומטרתו לבדוק שהפיתוח נעשה בהתאם לכללי פיתוח מאובטח.

נשאלת השאלה: האם יש צורך להשקיע מאמצים כפולים ולבצע שני סקרי קוד?, סקר לאיכות הקוד לסקר לאבטחת מידע? התשובה היא לא. 

ראשית, יש חפיפה בין איכות הקוד לאבטחת המידע. דוגמה: בדיקת אימות הקלט הינה בדיקה ברורה השייכת לאיכות הקוד, אך היא גם בדיקה השייכת לאבטחת מידע ורצוי להתייחס אליה באמצעות סקר קוד. התקפות מסוג Cross-Site Scripting (XSS)  מתרחשות כאשר יישום שולח מידע לא מאומת לדפדפן מבלי לבצע בדיקות אימות למידע. התקפה זו מאפשרת לתוקפים להפעיל תסריט בדפדפן של הקורבן ובכך לחטוף את השיחה של המשתמש, להשחית אתרים או להפנות את המשתמש לאתר זדוני.

מתוך כל האיומים הקיימים באבטחת מידע, אבטחה ברמת הקוד היא אחת הבעייתיות. במערכות רבות בעולם קיימות מיליוני שורות קוד שפותחו בעידן של חוסר מודעות לאבטחת מידע, והינן מקור פוטנציאלי לניצול לרעה של המערכת. המודעות לפיתוח קוד מאובטח עלתה רבות בעשור האחרון, אך עדיין אינה מספיק גבוהה על מנת שנוכל להיות בטוחים שהמערכות שאנו עושים בהן שימוש הן בטוחות. אז מהו פיתוח מאובטח?

כפי שאנו רוצים שהמפתחים של המערכות שלנו יהיו מקצועיים ואיכותיים ויפתחו מערכות איכותיות, אנו גם רוצים שידכו לפתח מערכות מאובטחות. לכן בנוסף לכישורי פיתוח תוכנה, ראוי של כל מפתח ילמד את תחום הפיתוח מאובטח. פיתוח מאובטח בא לקבוע כללי כתיבה נכונה במטרה למנוע חשיפה לסיכונים נפוצים ברמת התוכנה. ארגון OWASP (The Open Web Application Security Project), שהוא למעשה קהילה עולמית גדולה הפעילה ברשת, הוא אחד הגורמים הבולטים המגדיר מתודולוגיות לפיתוח מאובטח ועריכת סקר קוד בהיבטים של אבטחת מידע. אחד הפרסומים המוכרים שלו הוא ה- OWASP Top Ten, המגדיר את עשרת נקודות הפגיעות של פיתוח תוכנה ב-Web ודרכי התמודדות איתן.

הנה דוגמה אחת: סיכון של חשיפת מידע רגיש. כל מערכת עשויה לנהל מידע רגיש כגון כרטיסי אשראי, תעודות זהות, סיסמאות ועוד. אחסון לא נכון של המידע או העברת המידע בין השרת לדפדפן עלולה לחשוף מידע זה. פתרונות של הצפנה נכונה בעת אחסון המידע או בעת העברתו לדפדפן יכולים לשפר את המצב ולמנוע חשיפה של המידע לגורם עוין.

במאמר זה הוצגו שתי דוגמאות מעולם האיכות בפיתוח תוכנה וכנגד גם מעולם אבטחת המידע: 1) ידע בפיתוח תוכנה איכותית לעומת ידע בפיתוח מאובטח,  2) סקר קוד בהיבט של איכות וסקר קוד בהיבט של אבטחת מידע. האם לא ראוי לחבר בין תחומי הידע ואת תהליכי העבודה? התשובה שלי היא שבהחלט הדבר האפשרי. בעולם של ימנו, מערכת ללא אבטחת מידע לא יכולה לקרא מערכת איכותית. אבטחת המידע צריכה להכנס בכל מחזור החיים של פיתוח תוכנה, משלב הדרישות וכלה בשלב ההעברה לייצור ותחזוקת המערכת. ללא תהליך מסודר של ניהול איכות במחזור החיים של פיתוח מערכת, קשה לשלב את אבטחת המידע בפיתוח. שני התחומים חיים זה לצד זה ונפגשים במקומות רבים, תקנים ורגולציות דורשים התערבות התהליך גם בהיבט האיכות וגם בהיבט אבטחת המידע, אז למה לא לאחד מאמצים? 

מומחי מיתווים יכולים לסייע רבות בתהליך אימוץ מתודולוגיות והטמעת הרגלים נכונים של שלבי מחזור חיים של פיתוח. 

נשמע מעניין? הירשמו לקבלת תכנים נוספים

או שתפו לחבריכם ברשתות החברתיות:

Share on facebook
Share on twitter
Share on linkedin

פוסטים נוספים שעשויים לעניין אותך: