עד כמה Java מאובטחת בהשוואה לשפות אחרות?

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

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

[גם ב- JavaWorld: ישנם כמה סימנים לכך שמפתחי Java משתפרים באבטחה.] 

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

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

עד כמה Java מאובטחת?

מחקר שנערך לאחרונה על נקודות התורפה של שפות התכנות הנפוצות ביותר הגיע מ- WhiteSource, פלטפורמת אבטחת קוד פתוח ותאימות לרישיון. WhiteSource בדק שבע משפות תכנות קוד הפתוח הפופולריות ביותר: C, Java, JavaScript, Python, Ruby, PHP ו- C ++. אנליסטים השתמשו אז במגוון מקורות כדי לדרג את השפות לפי מספר הפגיעויות שזוהו.

מדוע קוד פתוח?

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

בהתבסס על מחקר WhiteSource, שפת התכנות הפגיעה ביותר הייתה C, עם 47% מכלל הפגיעות המדווחות . דירוג זה לא יפתיע מתכנתים מנוסים, אך תוצאות אחרות עשויות. PHP הגיעה לשנייה רחוקה, עם 17%, ואחריה ג'אווה עם 12%, ו- JavaScript מעוגל את ארבע הראשונות עם 11%. בעקבות "המנהיגים" האלה היו פייתון, C ++ ורובי. 

הבנת אבטחת שפת תכנות

לאחר מכן, עלינו לשאול מדוע שפות תכנות מסוימות פגיעות יותר מאחרות. על סמך המחקר שציטטתי, אתה עלול להסיק ש- C מייצג איום ביטחוני עצום. אך קחו בחשבון ש- C היה בשימוש הרבה יותר זמן מכל שפה אחרת ברשימה. כפי שמנסח זאת סטיבן טרנר, שכתב בכתב העת Journal of Technology Research, "שפות התכנות הן כמו גנטיקה, בכך שיש כמה אבות עם תכונות שכיחות שהתרבו." 

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

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

שנית, ג'אווה חשופה במיוחד לנצלני אמון העוקבים אחר פרצות בקרת גישה. למרות שתהליכי ההסמכה השתפרו מאז 2013, מפתחים רבים מסתמכים על אישורים של רשויות שאינם מהימנים. אפשר לקבל אישור פחות מחמיר ממה שהוא אמור להיות. US-CERT, שצוטט בכתב העת Journal of Technology Research, מזהיר מפני דלת פתוחה זו לתוקפים מרוחקים המבצעים קוד שרירותי.

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

פרצות האבטחה גוברות - בערך

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

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

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

כיצד להימנע מפגיעות אבטחה בג'אווה

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

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

עבור לתהליך עבודה של DevSecOps

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

הערך את אבטחת זרימת העבודה

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

סיכום

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

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

סיפור זה, "עד כמה Java מאובטחת בהשוואה לשפות אחרות?" פורסם במקור על ידי JavaWorld.