GiveWP, תוסף התרומות ל-WordPress המפעיל מיליוני אתרי צדקה, מתמודד לפתע עם פרצת הרצת קוד מרחוק (RCE) קריטית. CVE-2026-82222 קיבל ציון מושלם של 10.0 ב-CVSS ומאפשר לכל אחד באינטרנט להריץ פקודות שרירותיות על שרת פגיע. התיקון זמין בגרסה 4.16.7.2.
למה הבאג הזה חשוב
GiveWP נמצא בלב אינספור דפי גיוס תרומות. בעלי אתרים מסתמכים עליו לניהול נתוני תורמים, עיבוד תשלומים ואחסון מידע על סשנים (sessions). תוקף שמצליח להריץ קוד בשרת שבבסיס המערכת יכול לגנוב פרטי גישה, להשחית את האתר או להשתמש בו כנקודת זינוק (pivot) לחלקים אחרים ברשת. מכיוון שהפגיעות פועלת ללא צורך בהתחברות (login), כל האינטרנט הציבורי הופך למשטח תקיפה.
איך הניצול (exploit) עובד
הפגם אינו שגיאת קוד בודדת; מדובר בשרשרת של שלוש בעיות נפרדות שביחד פותחות דלת אחורית.
- Unsafe deserialization (דה-סריאליזציה לא בטוחה) – הפונקציה העזר של התוסף
safeUnserializeממירה אובייקטים מסריאליים למצבי עזר (placeholders) במקום להסיר אותם, מה שמשאיר את נתוני האובייקט המקוריים ללא שינוי. - Blind re-deserialization (דה-סריאליזציה עיוורת מחדש) – נתונים שנשלפים מהדאטה-בייס מוזנים חזרה ל-
unserializeללא אימות, כך שניתן "להחיות" אובייקטים שעוצבו במיוחד. - TCPDF gadget chain (שרשרת gadget של TCPDF) – GiveWP כולל את ספריית יצירת ה-PDF בשם TCPDF, המכילה שרשרת מחלקות (class chain) שיכולה להפעיל פקודות מערכת ברגע שאובייקט זדוני עובר unserialize.
תוקף פועל לפי תהליך בן ארבעה שלבים שאינו דורש חשבון מוקדם:
- Registration (הרשמה) – באמצעות חיבור (hooking) לפעולת
user_register, התוקף יוצר משתמש WordPress גם כאשר הרשמה לאתר מבוטלת. - Planting (שתילה) – התוקף שומר מטען (payload) מסריאלי בשדה
last_nameשל הפרופיל החדש. - Poisoning (הרעלה) – שליחת תרומה מאלצת את התוסף לכתוב את המטען הזה לטבלת
wp_give_sessions. - Execution (הרצה) – כאשר דף ציבורי כלשהו קורא מאוחר יותר את הסשן, האובייקט הזדוני עובר unserialize, שרשרת ה-gadget של TCPDF מופעלת, והפקודה שסופקה על ידי התוקף רצה על השרת.
התיקון (the patch)
מפתחי GiveWP שחררו את גרסה 4.16.7.2 כדי לשבור את השרשרת בכל שלב:
- תרומות המכילות נתונים מסריאליים נדחות באופן מיידי.
- כל פונקציות קריאת הנתונים אוכפות כעת בדיקות סוג ותוכן קפדניות.
- שרשרת ה-gadget של TCPDF נחסמת במפורש, מה שמונע קריאות למתודות לא מורשות.
- שדות מטא (Meta fields), כולל
last_name, עוברים ניקוי (sanitization) לפני האחסון. - מיגרציה של בסיס הנתונים רצה באופן אוטומטי כדי לנקות מטענים זדוניים קיימים.
עדכון התוסף הוא הצעד הראשון; עליכם לוודא שמיגרציית הניקוי רצה כדי להסיר מטענים שכבר נמצאים בבסיס הנתונים שלכם.
מי נמצא בסיכון
כל אתר WordPress המריץ את גרסה 4.16.7.1 של GiveWP או גרסאות מוקדמות יותר פגיע, ללא קשר לשאלה אם הרשמה לאתר מופעלת. ארגונים ללא מטרות רווח גדולים, ארגוני צדקה קטנים ודפי גיוס תרומות אישיים עלולים להיות בסכנה. המתקפה אינה תלויה בהגדרת שרת ספציפית; כל סביבת PHP התומכת בספריית TCPDF המצורפת חשופה לכך.
נקודת מבט נגדית
חלק מבעלי האתרים טוענים שהניצול דורש מתורם לבצע תשלום, מה שהם רואים כאירוע בעל סבירות נמוכה. הפגיעות מפריכה תפיסה זו: המטען הזדוני נשמר במהלך שלב התרומה, אך ההרצה מתרחשת בכל טעינת דף עוקבת, גם ללא תשלום שהושלם. האופי הלא-מאומת (unauthenticated) וציון ה-CVSS של 10.0 הופכים את הסיכון לגבוה מדי מכדי להתייחס אליו כאל חשש תיאורטי בלבד.
שורה תחתונה
CVE-2026-82222 של GiveWP מראה כיצד סדרה של קיצורי דרך בקוד שנראים תמים יכולים להצטבר לפריצה קטסטרופלית. התיקון מוכן. על מנהלי אתרים לשדרג לגרסה 4.16.7.2 באופן מיידי, לוודא שהמיגרציה ניקתה מטענים קיימים, ולנטר את הלוגים (logs) לאיתור סימנים לפעילות שלאחר הניצול. התעלמות מהתיקון עלולה להשאיר את הנוכחות המקוונת של ארגון צדקה – ואת נתוני התורמים שלו – חשופים לגורם זדוני בעל שליטה מלאה בשרת.
