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

יא וואראדי, איזה פריצה!
חתיכת באג מצאו לנו. ולא סתם באג – פירצת אבטחה. פירצה חודרת גדר, האמא של כל הפרצות. פירצה קוראת לברדק!
נו, ואם יש באג, ועוד סקיוריטי באג, אז חייבים לתקן, נכון?
אז זהו. שכשהתחלנו לחפור קצת פנימה, גילינו שהבאג האגדי הנ"ל כבר חי איתנו כמה שנים טובות ועד עכשיו לא קרה שום דבר. אז מה הלחץ? אפשר לחכות עם התיקון עוד פרוגרמה או שתיים, לא?
הרי אנחנו כבר מכירים את נביאי הזעם רואי השחורות הללו, הלא הם חברי שבט ארכי-טקטי הסייבר המצויים, שתמיד מהלכים עלינו איימים עם כל מיני התקפות שאף אחד לא מבין ופרצות שאף אחד לא רואה חוץ מהם.
כבר הגדיר זאת היטב פעם מהנדס חכם אחד:
מומחי אבטחת תוכנה עסוקים בלמצוא פתרונות לבעיות שלא יקרו אף פעם. הבעיה היא שהפתרונות האלו מייצרים בעיות שקורות כל הזמן.
אז למי יש עכשיו קוד וכח להתעסק עם הבעיה הזאת, מה גם שזה בכלל לא פשוט לפתור אותה. והנה הרי עד עכשיו לא קרה כלום. זה לא שאנחנו חושבים שלא שצריך לתקן את הבעיה. בוודאי שצריך, אבל לא עכשיו, אחר כך. מתי אחר כך? נראה כבר. כי בינתיים נראה לנו שהבאג הזה נופל תחת ההגדרה של באג מורתע.
באג מורתע
מה זה באג מורתע? לפני כמה שבועות פרסמתי את מגדיר הבאגים המלא. אך מסתבר שהמדריך כלל וכלל לא היה מלא. או שאולי ניתן לסווג באגים לא רק על פי ההתנהגות שלהם עצמם, אלא דווקא על פי איך שצוותי הפיתוח מתייחסים אליהם.
דוגמא לבאג שכזה הוא באג מורתע. זהו באג אמיתי, שזוהה ואף נמצא במעקב על ידי קבוצות הסייבר שלנו, אלא שישנה הסכמה שבשתיקה (או שבצעקה) שאין צורך לתקנו כרגע כי הוא מורתע – כלומר הוא לא באמת הולך להתרחש בעתיד הקרוב, או הרחוק. או לפחות לא בקדנציה שלנו.
במחוזות אחרים קוראים לזה "קונספציה", ובמחוזות הפינה שלי זה נקרא להפעיל את שדה הזבשמ"א – זה בעיה של מישהו אחר.
דחיינות גוררת דאחייה-נות
ולמה אני מעלה שוב נקודה נדושה זו? את חטאי אני מזכיר היום. רק בפוסט הקודם העליתי על נס את שיטת הדחיינות המובנית, ועד כמה היא מֶרְג' לרָגְלַי ונר לקבצי. חביבה עלי עד מאוד העצלנות ואני מרבה לדבר בשבח הבטלה.
אך נראה שחלק מן הקוראות והקוראים לא הפנימו כי הכתוב בפוסטים הפסאודו-שנונים והחצי מצחיקים בפינה נטולת הקפה שלי הינם ציניים וסאטיריים, ואין לקיים את הכתוב בהם מילה במילה. לפחות לא תמיד…
אז הרשו לי להבהיר בָּהוֹר היטב – הדחיינות והבטלה טובים לדברים רבים, אך במצב בו הגיעו באגים עד נפש (על באמת) אין מה לדחות, ועל כך נאמר בכתבי הקוד-אש: "לא תוכל להתעלם"! אסור לדחות. כי אחרת הדחיינות הזאת מובילה לידי חתיכת דאחייה, שאחרי זה נהיה כואב עד למאוד לדבג ולתקן, והמחיר גדול מנשוא.
הבאג הלבנוני
אז אמנם לא נביא אני, ולא בן נביא, ואפילו לא נכד. וככל הנראה גם שוטה לא קטן בכלל, אבל באותו מגדיר באגים המוזכר לעיל כן הזכרתי את הבאג הלבנוני, שזו הגדרתו היבשה:
באג כזה שלאף אחד לא בא להתעסק איתו, למרות שלכולם ברור שצריך. לך תדע מה יהיו התוצאות ברגע שתפתח את קופת השרצים הזו. ישנה נטייה להתעלם מבאגים שכאלה.
ובהערת שוליים נכתב: על באגים מסוג זה נאמר: הבאג להורגך השכם לדבגו, או יותר טוב – השכם להורגו. יש מבין?
תעלומת הבאגים הצולבים
ולסיום, עוד סיבונת מסתורית משהו המסבירה למה למרות הכל לא כדאי לדחות טיפול בבאגים חמורים – תעלומת הבאגים הצולבים. זוהי תיאוריה שטרם הוכחה פרוייקטלית הטוענת כי באגים שנמצאו ותוקנו בזמן מעולם לא היו משתחזרים בעולם האמיתי, ואילו רק באגים שלא נמצאו או תוקנו יכולים להתרחש בפועל.
או במילים אחרות, אנחנו חייבים לתקן את כל הבאגים, אף על פי שאנחנו יודעים שהם לעולם לא ישתחזרו, שכן אם לא נתקן אותם, דווקא אז הם כן ישתחזרו.
ואם למישהו זה מזכיר את ה"הייזנ-באג" הידוע לשימצה, אז הוא לגמרי צודק. נא לעיין במדריך הבאגים המלא.
והמהנדס החכם אומר: חוק התפשטות השגיאה: ככל שחולף זמן רב יותר בו באג אינו מתוקן, כך נזקו מתפשט ועלות תיקונו גדלה.
קרדיט לשני ה "נביאים" – נ.ב.י את י.מ שאכן מצאו איזה סקיוריטי באג, אבל בסוף החלטנו לא לתקן אותו.