![]() |
|
|||||||||||||
|
חישובים מסוכנים
מסתבר שתקלות מחשב יכולות לגרום לכל מיני סוגים של אסונות. מהתרסקות של חללית ועד למותם של בני אדם. ליאור שמיר סוקר מספר אסונות אלקטרוניים ליאור שמיר לעיתים קורה שמגיע אלינו חשבון מנופח, דרישת תשלום על דבר שמעולם לא נרכש, או כל מסמך לא מעודכן אחר שמסוגל להוציא משלוותו גם את האדם האדיש ביותר. חדורי רוח קרב, אנו מתקשרים כדי לברר את מהות העניין ולרדת לעומקם של הדברים, אך אז קול אדיש מעברו השני של הטלפון עונה "זו תקלת מחשב". בבת אחת יוצאת כל הרוח ממפרשינו. עם זה כבר באמת אי אפשר להתווכח! תקלות מחשב הרי תמיד היו, והנוכחות התמידית שלהן כבר הפכה לדבר מובן מאליו. אבל מה קורה כאשר שגיאת תוכנה יכולה להפיל את מדד המניות בבורסה, להכריע את תוצאות הבחירות, או אף לצאת למסע רצח? כל אלה הם מקרים שכבר התרחשו בעבר בגלל תקלות תוכנה. לפעמים שגיאות התוכנה יכולות להיות מטופשות עד כאב, אבל עד שהן מתגלות יכולות התוכנות להשתולל ולגרום לנזקים עצומים. אחד המקרים הידועים של תקלות תוכנה בתחום הפיננסי הוא המקרה שאירע בבורסה של ונקובר, אשר מדד המניות שלה הושק ב-1982, כשערכו עמד על 1000 נקודות. למרות שמצב מרבית החברות שנסחרו בה היה שפיר, הלך המדד וצנח בעקביות, וכעבור פחות משנה עמד על כמחצית מערכו ההתחלתי. המפולת הבלתי מוסברת הזו עוררה לבסוף את חשדם של מנהלי הבורסה, אשר יזמו בדיקה מקיפה בכדי לרדת לעומקם של הדברים. הסיבה שגילו הייתה פשוטה משחשבו תחילה. מערכת התוכנה של הבורסה חישבה את המדד עד שלוש הספרות שאחרי הנקודה העשרונית. אולם במקום לעגל את הספרות הבאות לספרה הקרובה ביותר, המתכנתים בחרו פשוט להשמיט אותן. כך, למשל, מדד של 892.44875 הפך ל-892.448. אמנם ההפרש בין המספרים הוא קטן מאוד, אך המדד חושב למעלה מאלפיים פעמים בכל יום. בכל חישוב כזה איבד המדד חלק קטן מאוד מערכו, אבל במשך הזמן הצטברה השגיאה המספרית הזאת וגרמה למפולת מדומה של מדד המניות. אבל שגיאות תוכנה פשוטות הן בהחלט לא נחלתן הפרטית של מערכות מידע פיננסיות. עם תחילת המסעות המאוישים והבלתי מאוישים לחלל, החלו המהנדסים להיעזר במחשבים על מנת להפעיל באופן יעיל את רכבי החלל השונים. למרות הסטנדרטים הגבוהים המאפיינים בדרך כלל את הפרויקטים לחקר החלל, גם פרויקטים אלה אינם חסינים כלל וכלל מפני שגיאות תוכנה. שגיאות אלה יכולות לעיתים להיות מגוחכות, אך בעלות פוטנציאל נזק מקסימלי. אחד המקרים הידועים של שגיאת תוכנה אשר פגעה בשיגור לחלל הוא המקרה של החללית האמריקאית מרינר 1, אשר שוגרה ב-22 ביולי 1962 לכיוון כוכב הלכת נוגה. למרבה הצער, המסע הארוך שתוכנן עבורה הסתיים כעבור חמש דקות בלבד, ובאקורד צורם במיוחד. הצרות של מרינר 1 התחילו כבר בשלב השיגור, כאשר אחד מפקחי הבטיחות הבחין שהטיל הנושא את החללית ביצע פניה בלתי מתוכננת. כל הניסיונות להשיב את הטיל אל מסלולו עלו בתוהו, ונראה היה כי מערכת הניווט קיבלה חיים משל עצמה וסירבה להישמע להוראות צוות הקרקע. בלית ברירה נאלצו הפקחים להשמיד את הטיל על מטענו, שניות בודדות לפני הניתוק אשר היה שולח אותו למסע התרסקות לעבר יעד אקראי על פני כדור הארץ. תיאוריות שונות ודיווחים סותרים ניסו להסביר מה גרם למערכת הניווט לצאת מכלל פעולה, אך הדיווחים האחרונים הצביעו על כך שככל הנראה מדובר בתקלת תוכנה פשוטה, שמקורה באחת הנוסחאות אשר שימשו את מערכת הניווט. התוכנה נכתבה במקור בכתב יד על דף נייר, והועברה לידי צוות פיתוח התוכנה על מנת לשלב אותה במערכת הניווט. אולם התוכניתן אשר קודד את הנוסחה שגה בהקלדה, ולא הבחין בסימן שלילה (מקף) שהיה בה. טעות זו גרמה לתוכנה לבצע חישובים שגויים לחלוטין, אשר הכניסו את מערכת הניווט לסחרור וגרמו לבסוף לאובדן מוחלט של פרויקט החלל היקר. בספרו "הבטחת החלל" טען הסופר והמדען ארת'ור סי. קלארק, כי מרינר 1 הושמדה על ידי "המקף היקר ביותר בהיסטוריה". אבל מסתבר ששגיאות תוכנה יכולות להשפיע גם על דברים אשר השפעתם על כלל האזרחים היא משמעותית אף יותר מתקלות במערכות פיננסיות או שיגור חלליות. דוגמא לכך היא מערכת הבחירות שנערכה בשנת 1992 לפרלמנט במחוז שלסוויג-הולסטיין שבגרמניה. על פי החוק הגרמני, מפלגה שאינה עוברת את סף חמשת האחוזים מכלל הקולות אינה זכאית למושב בפרלמנט, וכל הקולות שצברה מתבטלים ומתחלקים בין המפלגות האחרות. ב-5 באפריל 1992 נערכו בחירות במחוז, ומפלגת "הירוקים" הגרמנית נאבקה על מנת לעבור את אחוז החסימה. בסופו של יום נראה היה כי המפלגה הצליחה "לגרד" את אחוז החסימה הגבוה ולהיכנס לפרלמנט, מה שגרם כמובן לשביעות רצון במחנה הירוק. להישג של הירוקים הייתה גם משמעות נוספת, והיא שמפלגת הסוציאל-דמוקרטים לא תזכה ולו במושב אחד במחוז. אולם מעט לאחר חצות, אחרי שתוצאות הבחירות הרשמיות כבר פורסמו, העכירה את מרכז המפלגה הירוקה בשורת איוב אשר קטעה באחת את החגיגות: המפלגה זכתה רק ב- 4.97 אחוזים מהקולות, ולכן לא עברה את אחוז החסימה. הסיבה לטעות המצערת היא שהתוכנה שחישבה את תוצאות הבחירות הציגה רק סיפרה אחת אחרי הנקודה העשרונית, כאשר היא מעגלת את הספרות הבאות. לכן, 4.97 אחוזים מהקולות שבהם זכו הירוקים הפכו ל-5.0 אחוזים בתדפיס הסיכום של התוכנה, והעניקו לירוקים את האשליה שהצליחו לזכות בכניסה הנכספת לבית הנבחרים. יש לציין שאותה תוכנה שימשה את מערכות הבחירות במחוז במשך שנים רבות. תקלות תוכנה הגורמות לקריסת מערכות מידע פיננסיות או משנות תוצאות של בחירות הם אכן אירועים מצערים, אבל בדרך כלל מדובר בנזקים הניתנים לתיקון. אך מה קורה כאשר תוכנת המחשב מחוברת לחומרה המסוגלת לקטול חיי אדם? זה בדיוק מה שקרה באמצע שנות ה-80, כאשר מכשיר רפואי בשם ת'ראק 25 יצא למסע קטל שנמשך שנתיים תמימות, וכל זאת עקב רצף של שגיאות תוכנה פשוטות. הת'ראק 25 שימש בתור מכשיר הקרנות, ותפקידו היה לסייע בטיפול נגד מחלת הסרטן. ברוב המקרים שירת מכשיר ההקרנות את מטופליו בנאמנות, אבל שגיאה תוכנה שקוננה במערכת הבקרה שלו גרמה לו לעיתים "להפציץ" את מטופליו במינון קרינה הגבוה פי כמה מאות מהמינון המבוקש. מכיוון שהתקלה התרחשה רק לעיתים רחוקות, עבר זמן רב עד שהתקבלה המסקנה שבתוך המכשיר הרפואי מסתתר בעצם רוצח רדום. בין השנים 1985 - 1987 הספיק ת'ראק 25 לקטול את חייהם של שלושה אנשים, ומספר מטופלים אחרים הפכו למוגבלים לכל ימי חייהם עקב ספיגת מינוני קרינה עצומים. התקלה התגלתה לבסוף במקרה, כאשר מפעילה נמרצת זיהתה את תבנית הפעולות שביצע המכשיר בשני מקרים של עודף קרינה, אשר באופן חריג התרחשו באותו מקום בהפרש של שלושה שבועות בלבד זה מזה. יחד עם רופא נוסף, הצליחו השניים להסיק שאם הם משנים נתון כלשהו ולאחר מכן מחליפים את מסכי ממשק המשתמש במהירות, ת'ראק 25 מגיב במינון בלתי מבוקר של קרינה. הסיבה לכך היא שלחומרה היו דרושות כ-8 שניות בכדי להתעדכן בנתונים, אולם תוכנת הבקרה לא לקחה נתון זה בחשבון. בדרך כלל השגיאה לא באה לידי ביטוי מכיוון שלמפעיל היו דרושות למעלה מ-8 שניות בכדי להקליד את כל הנתונים. אבל לפעמים המפעיל היה משלים את הקלדת הנתונים ומגיע עד המסך של תחילת ההקרנה עצמה, ואז היה מבחין בנתון שגוי כלשהו וחוזר לתקן את הטעות. מכיוון שכל שאר הנתונים כבר הוקלדו, לאחר תיקון הטעות היה יכול המפעיל לחלוף במהירות על פני מסכי המשתמש (הנתונים במסכים אלה נשארו עוד מהפעם הקודמת) ולחזור למסך הסופי. אם הוא היה מספיק לעשות זאת בפחות מ-8 שניות, נתוני מינון הקרינה לא היו מספיקים להתעדכן, והת'ראק 25 היה מגיב בהקרנת מינון אקראי של קרינה על המטופל. לאחר שהתגלתה התקלה מיהר היצרן, חברת "אטומיק אנרג'י" הקנדית (AECL), לתקן את הטעות ולהחזיר את המכשיר לפעולה, אולם בכך עדיין לא הסתיים סיפור האימה של ת'ראק 25. אחד האלמנטים המוכרים בסרטי האימה הוא שלאחר שכבר נדמה שהמפלצת חוסלה ונוטרלה, היא קמה לפתע מחדש לחיים וחוזרת למסע הבלהות שלה לקראת המערכה האחרונה, שבה היא תושמד באופן סופי. זה בדיוק מה שעשתה תוכנת ההפעלה של הת'ראק 25. לאחר שהתקלה כבר תוקנה והת'ראק 25 חזר לפעול, שב המכשיר לסורו והקרין מינון קטלני של קרינה על מטופל חסר מזל. הפעם, מקור התקלה היה משתנה המשמש לסימון מצב הכנסת הנתונים. אם ערכו של המשתנה היה 0, התוכנה ידעה שהנתונים אומתו מול המכשיר וניתן להמשיך הלאה. כל ערך אחר משמעותו היא שהנתונים אינם עקביים, כאשר כל בדיקת אימות מול המכשיר מעלה את ערכו של המשתנה ב-1.
הבעיה הייתה שהמשתנה הזה היה מסוג "בייט". כלומר, המשתנה היה מסוגל להכיל ערכים שבין 0 ל 255 בלבד. מכיוון שבדיקת האימות נערכה שוב ושוב בתדירות גבוהה, ערכו של המשתנה עלה עד שהגיע ל 255, ואז חזר שוב לאפס. במצב זה, באחד מ 256 מקרים יכלה התוכנה להתקדם הלאה למרות שהנתונים שהוזנו לתוכה אינם תואמים את הנתונים אותם רואה המכשיר עצמו. במקרים מסוימים מצב כזה יכול להביא למינון קרינה בלתי מבוקר, כפי שאכן קרה.
אך האם תקלות תוכנה כגון זו של הת'ראק 25 או תוצאות הבחירות בגרמניה יכולות להתרחש גם היום? התשובה היא בהחלט כן. אמנם בשנים האחרונות פותחו שיטות יעילות יותר לבדיקה ואימות של מערכות תוכנה, אך למרות ההתקדמות המשמעותית עדיין לא נמצאה שיטה אשר יכולה להבטיח הלכה למעשה שמערכת תוכנה מורכבת תפעל ללא תקלות. בנוסף לכך, לעיתים קרובות שיטות נכונות לפיתוח תוכנה מיושמות באופן חלקי בלבד (ולעיתים אף אינן מיושמות כלל) מתוך ניסיון להאיץ את קצב הפיתוח או משיקולי תקציב. התוצאה היא ששגיאות תוכנה ממשיכות לגרום לנזקים משמעותיים, אותם אומד מכון התקנים האמריקאי (NIST) בכ-60 מיליארד דולר לשנה בארצות הברית בלבד.
חזרה |
|||||||||||||