- בלוג
- פרצת אבטחה ב-MongoDB יכולה להוביל לגניבת מידע
פרצת אבטחה ב-MongoDB יכולה להוביל לגניבת מידע
פרצת אבטחה ב-MongoDB יכולה להוביל לגניבת מידע
פורסם ב 30-12-2025
MongoDB, מסד הנתונים הפופולרי בשל היותו לא-יחסי, כלומר NoSQL (מאפשר מבני נתונים מגוונים כמו גרפים, מסמכי JSON וכדומה, ולא רק בטבלאות במבנה קבוע), התגלה כבעל פגיעות חמורה הקשורה לפרוטוקול Zlib. הפרצה יכולה להוביל ל”דליפת מידע” ממסד הנתונים, בכך שהיא מאפשרת לגורמים ללא הרשאות לקרוא איזורים שלמים בזיכרון שלו.
הפרצה, שתוייגה כ-CVE-2025-14847, קיבלה דירוג של 8.7 (מתוך 10) בסולם CVSS, כלומר, סיכון גבוה.
הגירסאות של MongoDB בהן קיימת הפרצה:
- 8.2.0 – 8.2.2
- 8.0.0 – 8.0.16
- 7.0.0 – 7.0.27
- 6.0.0 – 6.0.26
- 5.0.0 – 5.0.31
- 4.4.0 – 4.4.29
- כל גירסאות 4.2, 4.0 ו-3.6 של MongoDB Server
לא נמסרה על כך כל הודעה, אבל כדאי לשקול את האפשרות שמערכות אחרות אשר משתמשות ב-Zlib – ספריית קבצים חינמית בקוד פתוח, שמיועדת לדחיסת קבצים ופריסתם ללא איבוד נתונים (בפורמט deflate) – עשויות, במצבים מסוימים, להיות במצב פגיעות דומה.
הנחה זו מבוססת על העובדה ש-Zlib היא ספריית קבצים מאוד פופולרית. חלק גדול ממערכות ההפעלה משתמשות בה, היא מהווה חלק מפורמטי קבצים נפוצים כמו png ו-zip, והיא מוטמעת אפילו במערכות הקבצים של קונסולות משחק כמו הפלייסטיישן 5 והאקס בוקס, לכן, ישנה אפשרות שהפרצה קיימת במערכות נוספות.
Cybersecuritynews.com הזכירו את rsync ככלי שעשוי להיות פגיע לפרצה, אך אין כרגע פרטים נוספים לגבי איך או למה.
איך הפרצה ב-MongoDB עובדת?
החולשה, למעשה, נמצאת בשגיאה בפריסת (decompression) מסרים דרך הרשת, אשר נעשית באמצעות ספריית Zlib. או, יותר נכון, בגלל שהפריסה מתבצעת לפני ביצוע אימות הנתונים (Authentication).
ליתר דיוק, הבעיה נמצאת בחוסר תאימות בין שדות האורך של “כותרות” (headers) הקלט הנדחס והפלט הנפרס, לפני האימות. שדות אורך (או field lengths) הם ההגדרה של הגודל המקסימלי של נתונים הניתן לאחסון בעמודה או בשדה ספציפי במסד נתונים כלשהו (או בקובץ).
ההסבר היותר טכני הוא שכאשר המסר מתקבל, נקרא ונדחס לזיכרון הפנימי של מסד הנתונים (MongoDB), כ-message_compressor_zlib.cpp, נוצרת סתירה בין שדה האורך של המידע הנכנס, לבין האורך האמיתי של המידע הנכנס. סתירה זו יוצרת שגיאה, שכן, היא מחזירה כפלט את אורכו של חוצץ הזיכרון (buffer) של המידע – (()output.length) – במקום את אורכו של המידע כאשר הוא נפרס בחזרה. כתוצאה, חבילות נתונים פגומות או קטנות מדי עשויות לחשוף “ערימות זיכרון” (או memory heaps – איזורים אשר מיועדים להקצאת זיכרון דינמי) שנמצאות בסמוך לחוצץ.

כך השגיאה נראית בפועל. מקור: Github
גורם זדוני יכול להשתמש בשגיאה הזו – כלומר, להזין למערכת מידע שייצור את השגיאה – כדי לחשוף “ערימות זיכרון” שמכילות מידע רגיש, כמו סיסמאות גישה. יתרה מכך, הפרצה ניתנת לניצול בקלות יחסית, דרך הרשת, באופן עצמאי – אין צורך בשימוש כלשהו במשתמשים אחרים במערכת.
אם אתם משתמשים ב-MongoDB, והמערכת הרלוונטית מחוברת לאינטרנט (וגם לרשתות פנימיות), אתם נמצאים בסיכון גבוה.

הדגמה כיצד ניתן לנצל את הפרצה. מקור: DoublePulsar.com
על פי Censys, מעל ל-87,000 שימושים נפרדים ב-MongoDB נמצאים בסיכון התקפה דרך הפרצה, וזה לא מפתיע: המון חברות ענק משתמשות במסד הנתונים.
למעשה, בגלל הקַלּוּת של ניצול הפרצה, ובגלל השימוש הנרחב שנעשה במסד הנתונים ובספריית הקבצים Zlib, סביר מאוד להניח שהפרצה כבר נוצלה לא מעט פעמים, והזרוע עוד נטויה.
איך תתגוננו?
אין כרגע מידע כיצד ניתן לדעת האם הפרצה נוצלה על מערכת ספציפית. אמנם עצם העובדה מקשה על נטרול האיום, אך מצד שני, זה אך מדגיש את הצורך בנקיטת פעולה מהירה.
מפתחי MongoDB לא בזבזו זמן ושחררו עדכונים שמטליאים את הפרצה, כדי שהמערכות שמשתמשות במסד הנתונים לא יהיו פגיעות אליה.
אנו ממליצים לכם לעדכן את המערכות שלכם כמה שיותר מהר לגרסאות המוטלאות, בהתאם לגירסה בה אתם משתמשים. תוכלו להשתמש בטבלה הבאה::
| גירסאות עם הפרצה | גירסה מתוקנת |
| 8.2.0 – 8.2.2 | 8.2.3 |
| 8.0.0 – 8.0.16 | 8.0.17 |
| 7.0.0 – 7.0.27 | 7.0.28 |
| 6.0.0 – 6.0.26 | 6.0.27 |
| 5.0.0 – 5.0.31 | 5.0.32 |
| 4.4.0 – 4.4.29 | 4.4.30 |
הביאו בחשבון כי:
- לא שוחררו עדכונים לגירסאות 4.2.0, 4.0.0 ו-3.6.0. אם אתם משתמשים באחת מהגירסאות האלה, כדאי לשקול לעבור לאחת מהגירסאות המעודכנות.
- אם אתם משתמשים ב-MongoDB Atlas, אין לכם מה לדאוג – המערכות שלכם מתעדכנות באופן אוטומטי.
אם אינכם יכולים, מסיבה כלשהי, לבצע עדכון:
- עצרו את הפעולה של Zlib על שרתים שמשתמשים ב-MongoDB, במיוחד אלה שמשתמשים בדחיסת מסרי רשת (אופציות
networkMessageCompressorsו/אוnet.compression.compressors). - תוכלו להשתמש באמצעי דחיסת מידע אחרים, כמו snappy או zstd, או לוותר על דחיסה לחלוטין (במחיר של חלק מביצועי המערכת).
- השתמשו בחומת-האש שלכם וחסמו פורטים אשר אינם נמצאים בשימוש. כך, תִּמְנְעוּ מתוקפים פוטנציאליים נקודות גישה אפשריות למערכת שלכם.
לעזרה ולכל שאלה או בקשה, אתם מוזמנים ליצור איתנו קשר.
השותפים שלנו