מאיפה באות בעיות אבטחה בתוכנה?

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

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

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

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

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

Facebook Comments

8 תגובות בנושא “מאיפה באות בעיות אבטחה בתוכנה?”

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

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

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

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

    Main Frame כנראה באמת בטוח. אבל גם בזה אני לא בטוח. אף אחד כמעט לא מכיר את פרוטוקול SNA וכולם בטוחים שזה הפרוטוקול הכי מאובטח שיש. למה? כי כולם מכירים את הפרצות ב-TCP/IP.

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

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

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

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

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

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

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

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

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

סגור לתגובות.