בספטמבר 2014 התברר ש-Bash, ה-shell שרץ מתחת לחלק גדול משרתי לינוקס ויוניקס, מריץ פקודות שהוחבאו בתוך משתנה סביבה רגיל. התיקון הראשון לא סגר את הבעיה, ובעקבותיו נפתחו עוד רשומות על מה שנשאר. זו אחת מהן: לפי הרשומה, Bash עד גרסה 4.3 ועד הטלאי bash43-026 עדיין אינו מפרסר נכון הגדרות של פונקציה בתוך ערך של משתנה סביבה. הציון הוא 8.8 מתוך 10.

מה החולשה?

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

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

הרשומה מנסחת את התנאי המסוכן בצורה מדויקת, והניסוח הזה שווה קריאה: הבעיה מתעוררת בכל מצב שבו משתנה הסביבה נקבע בצד אחד של גבול הרשאות ו-Bash מריץ אותו בצד השני. כדוגמאות היא מונה את המאפיין ForceCommand ב-sshd של OpenSSH, את המודולים mod_cgi ו-mod_cgid בשרת Apache, וסקריפטים שמופעלים בידי חלק מלקוחות DHCP.

החלק האחרון של הרשומה הוא שמסביר למה יש כאן רשומה רביעית בכלל. היא קיימת מפני שהתיקון לשלוש שקדמו לה, CVE-2014-6271, CVE-2014-7169 ו-CVE-2014-6277, היה חלקי. באג בקוד שמפרסר טקסט מתגלה לא פעם כשכבה ולא כנקודה, וכל תיקון חושף את מה שמתחתיו.

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

מי מושפע?

הרשומה מסמנת את GNU Bash עד גרסה 4.3 ועד הטלאי bash43-026, ורשימת הגרסאות המפורטת בה יורדת אחורה עד Bash 1.14. מדובר בקוד שישב שם שנים רבות לפני שמישהו הסתכל עליו.

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

אבל אנחנו ב-2026, ו-2014 רחוקה. כל מערכת שקיבלה עדכוני הפצה בעשור האחרון קיבלה את התיקון הזה מזמן, ורוב מי שקוראים את הדף הזה אינם צריכים לעשות דבר.

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

האם מנוצלת בפועל?

כן. ב-2 באוקטובר 2025 נוספה החולשה לקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, רשימת החולשות שידוע שתוקפים משתמשים בהן בפועל, והמועד שנקבע לגופים הפדרליים האמריקאיים לסיים את הטיפול היה 23 באוקטובר 2025.

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

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

מה עושים?

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

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

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

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

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