השדה שבו קונה כותב הערה להזמנה אינו נראה כמו משטח תקיפה. בתוסף PDF Invoice for WooCommerce, בכל הגרסאות עד 7.1.1 כולל, מה שנכתב בשדה הזה עובר כמו שהוא אל תוך החשבונית שהתוסף מייצר, ובסוף הדרך מגיע לפונקציה שבונה ממנו אובייקט. הציון הוא 9.8, ולפי הרשומה תוקף בלי חשבון יכול להריץ כך קוד על השרת.

מה החולשה?

הנתיב כאן עובר ארבעה רכיבים, וכל אחד מהם עושה בדיוק את תפקידו. ההערה שהקונה הקליד מוטמעת בתוך ה-HTML של החשבונית בלי סינון. אחר כך simplehtmldom, הרכיב שמפרסר את אותו HTML, מפענח ישויות HTML בחזרה, כך שמה שהיה טקסט הופך לתג אמיתי. mPDF, הרכיב שמייצר את קובץ ה-PDF, מרכיב את זה חזרה לרצף בתים גולמי. ושם, בפונקציה _getObjAttr, הרצף מועבר אל unserialize בלי בדיקה, כלומר נבנה ממנו אובייקט PHP לפי מה שכתוב בו.

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

והחלק שהופך את זה למעשי הוא איך מפעילים את הנתיב. לפי הרשומה, בהתקנת ברירת מחדל מספיקה קנייה אנונימית דרך ה-Store API הציבורי של WooCommerce, בקשת POST לכתובת /wc/store/v1/checkout, עם אמצעי תשלום של העברה בנקאית ישירה או צ'ק. אמצעי תשלום כזה מעביר את ההזמנה אוטומטית למצב on-hold, הזמנה שממתינה לתשלום, וזה בדיוק מה שמפעיל את יצירת החשבונית. בלי חשבון, בלי אישור של אף אחד, ובלי שהקנייה תצטרך להיות אמיתית.

מי מושפע?

מושפעות חנויות WooCommerce שמותקן בהן התוסף PDF Invoice for WooCommerce + Drag and Drop Template Builder בגרסה 7.1.1 או קודמת.

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

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

האם מנוצלת בפועל?

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

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

מה עושים?

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

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

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