The Jerusalem PostMural of rapper Macklemore painted in Gaza after Sheeran tour furorESPN DeportesLamine Yamal reclama el Balón de Oro y cuenta por qué tiene que ganarloESPNHow and why Missouri is claiming a college football title 66 years laterוואלהנקבע מותו של ילד כבן 7 בעקבות תאונת דרכים ברהטInquirerPalace to Pia Cayetano on fear for her liberty: Is this paranoia? Don’t panicRTP DesportoUEFA e CONCACAF pedem dados à FIFA sobre projeto de privatizar MundiaisDaily MaverickAGE OF ACCOUNTABILITY: Five criminal cases later, Ekurhuleni fires Julius MkhwanaziDeadlineBrad Pitt Reunites With His ‘Riders’ Director Edward Berger On Paramount’s ‘World War Z’ SequelTechCrunchJoby Aviation’s 3,100-mile autonomous flight signals its push beyond electric air taxisسكاي نيوز عربيةمحمد بن زايد ومودي يبحثان العلاقات والتطورات الإقليميةCBS SportsCollege football schedule, games 2026: What to watch in Week 3, TV channels, streaming, kickoff timesIl Sole 24 OreLe immagini come chiave di lettura dell’attualità: al via nuovo programma di Radio24
The Daily Newsstand · Free, Always
Friday, September 18, 2026

החוקרת הישראלית שמצאה חולשה בנאס"א חושפת את 4 הטעויות שנעשו בפיתוח

Translate

פריצה בציון חומרה של 9.4, שרשרת תקיפה מ-4 כשלים בנאליים ופתרון שהגיע בשילוב סוכני AI. חוקרת הסייבר יובל אלבר לוקחת אותנו אל מאחורי הקלעים של גילוי חולשת אבטחה בכלי המבצעי של NASA/JPL

תמונה: NASA


מאת: יובל אלבר

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

במחקר שביצענו לאחרונה התחלנו לחטט בקוד של AIT-GUI – ממשק המשתמש מבוסס הווב של ערכת הכלים AMMOS Instrument Toolkit. מדובר במערכת קוד פתוח שמהנדסים ומפעילים בנאס"א משתמשים בה כדי לתקשר עם ציוד במשימות חלל. לא דמיינו שנגלה שם חולשת אבטחה קריטית (GHSA-p9r8-2q67-fp86) שזכתה לציון חומרה כמעט מקסימלי של CVSS 9.4.

איך 4 פשלות קטנות מייצרות כרטיס טיסה חופשי להרצת פקודות מרחוק?

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

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

host = getattr(self, "host", "localhost") # value is read, then never used
...
gevent.pywsgi.WSGIServer(
    ("0.0.0.0", port), # hardcoded: all interfaces
    App, handler_class=WebSocketHandler,)

התוצאה: השרת נשאר מקובע (Hardcoded) על הכתובת 0.0.0.0. מפעיל המערכת בטוח שהוא מבודד ברשת המקומית, בזמן שהשרת שלו פתוח לרווחה לכל פנייה מכל כתובת IP ברשת.

2. אפס מנגנוני הגנה בסיסיים: במערכת לא הוטמעו מנגנוני התחברות (Login), אסימוני CSRF או הגבלות CORS. גרוע מכך, בקשות השינוי נשלחו בפורמט שהדפדפן מזהה כבקשה "פשוטה" (application/x-www-form-urlencoded), מה שמאפשר שיגור Cross-Origin ללא בדיקה מקדימה. במילים פשוטות: מספיק שמפעיל המערכת יגלוש לאתר תמים למראה בזמן עבודתו, כדי שהאתר ייזום ברקע בקשה שקטה שיכולה להריץ פקודות בשמו.

3. קו פתוח לשידור פקודות (POST /cmd): המערכת חשפה נקודת קצה שאפשרה לשלוח פקודות ישירות לרכיבים המבצעיים. בלי שכבת מגן ובלי פילטרים, הקלט שהגיע בטופס פשוט פורק והועבר ישירות ל-Command Bus של המערכת:

command = bottle.request.forms.get("command").strip()
args = command.split()
name = args[0].upper()
args = [util.toNumber(t, t) for t in args[1:]]
if self.send(name, *args): # the command is relayed to the bus

4. בריחה מהסנדבוקס (Path Traversal): הדובדבן שבקצפת התגלה ברכיב שאחראי על הרצת סקריפטים (POST /seq). הקוד לקח את שם הקובץ שמתקבל מהמשתמש ושרשר אותו לנתיב הראשי ללא בדיקת גבולות:

bn_seqfile = bottle.request.forms.get("seqfile")
seqfile = os.path.join(SEQRoot, bn_seqfile)

# no confinement; only os.path.isfile
gevent.subprocess.Popen(["ait-seq-send", seqfile], ...)

התוצאה: תוקף יכול להזריק נתיב מבוסס ../../../../ ולצאת מגבולות התיקייה המוגדרת כדי להריץ כל קובץ או סקריפט שקיים על השרת:

# sequence outside SEQRoot
curl -i -X POST http://TARGET:8080/seq \
  --data-urlencode 'seqfile=../../../../path/to/any/file'

כשהחוקרת פוגשת סוכני AI

אחד הדברים המרתקים בתהליך הגילוי היה השימוש שעשינו ב-Agentic AI – סוכנים אוטונומיים מבוססי בינה מלאכותית לניתוח קוד. בעוד שעין אנושית נוטה לפספס משתנה קטן שנקרא בקוד אך לא מועבר הלאה (כמו בשרת ה-0.0.0.0), סוכני ה-AI סרקו את תזרימי המידע והצליחו לחבר במהירות בין הקלט הלא-מסונן (Tainted Input) לבין הפעולות הדרמטיות ברכיבי הקצה. השילוב בין האינטואיציה של חוקר סייבר אנושי לבין היכולת של ה-AI לסרוק עומקים של קוד בקנה מידה רחב, הוא בדיוק מה שאיפשר לנו לפענח את שרשרת התקיפה המלאה תוך זמן קצר.

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

תמונה: NASA

אי אפשר לסמוך על סביבה סגורה

עולם ה-Web ועולם ה-OT (מערכות תפעוליות) חופפים היום יותר מתמיד. אם בקשת POST פרוצה באפליקציה רגילה תסתיים במקסימום בשיבוש בסיס הנתונים של האתר, במערכות OT – ובטח ובטח במערכות חלל – מדובר בפקודות שנשלחות לרכיבים פיזיים בשטח, ורדיוס הפיצוץ כאן הוא שונה לחלוטין.

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

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

View the original on גיקטיים

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.