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

ב-27 באוגוסט פרסמה PaperCut בולטין אבטחה דחוף ובו הודיעה שהיא חוקרת ניצול פעיל של חולשה במוצרי ניהול ההדפסה שלה, PaperCut NG ו-PaperCut MF, ושיש בידיה אירועי לקוחות מאומתים. למחרת פרסמו ג'ון האמונד ואנדרו ברנדט מ-Huntress ניתוח שבו הם משחזרים את שרשרת ההרצה המלאה מול התקנה נקייה, ומתארים שני אירועים אצל לקוחות שלהם. נעבור על שתי החולשות שמרכיבות את השרשרת, על מה שהתוקפים עשו בפועל בשרתים שנפרצו, ועל הסיבה שהטלאי הראשון של PaperCut לא הספיק.

למה דווקא שרת הדפסות

PaperCut NG ו-MF הן תוכנות לניהול הדפסה בארגונים: הן סופרות כמה עמודים כל משתמש הדפיס, גובות תשלום, ומאפשרות לשלוח מסמך למדפסת אחת ולאסוף אותו מאחרת. הלקוחות הטיפוסיים הם אוניברסיטאות, בתי ספר, בתי חולים, עיריות ומשרדי עורכי דין. השרת המרכזי, ה-Application Server, יושב עמוק ברשת הפנימית, מחזיק ממשק ניהול web, ומדבר גם עם ספריית המשתמשים הארגונית וגם עם המדפסות עצמן. זה שילוב מפתה מנקודת המבט של תוקף: הרשאות גבוהות, מיקום פנימי, ולא מעט ארגונים שחשפו את ממשק הניהול לאינטרנט כדי שסניפים או סטודנטים יוכלו להדפיס מרחוק.

זו גם לא ההיכרות הראשונה של המוצר עם תוקפים. חולשה אחרת ב-PaperCut, CVE-2023-27350 בציון 9.8, נוספה לרשימת החולשות המנוצלות של CISA ב-21 באפריל 2023, ומסומנת שם כמי שנוצלה בקמפייני כופרה. לפי דיווח של BleepingComputer, מיקרוסופט ייחסה אז חלק מהתקיפות לשחקן שהיא מסמנת Lace Tempest, שמזוהה עם קבוצת הכופר Clop, וראתה גם חדירות שהובילו ל-LockBit. תוך שבועות עברה החולשה ההיא מניצול ממוקד לכלי עבודה של כמה קבוצות.

הבקשה שמבלבלת בין הדף שמוצג לדף שפועל

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

לחולשה הזאת ניתן המזהה CVE-2026-81578. PaperCut מדרגת אותה 8.8 בסולם CVSS 4.0 ומסווגת אותה CWE-306, כלומר היעדר אימות בפונקציה קריטית. בניסוח של החברה עצמה בבולטין, "בתנאים מסוימים, בקשות מרוחקות לא מאומתות שמכוונות לפונקציות ניהוליות עשויות להפעיל פעולות בצד השרת עוד לפני שבדיקות ההרשאה הושלמו". זו לא עקיפה של סיסמה. זו בדיקת הרשאה שנעשית על האובייקט הלא נכון.

ומה עושים עם היכולת לכתוב להגדרות?

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

זו CVE-2026-82078, מדורגת 9.4 ומסווגת CWE-470, טעינת מחלקות לפי קלט שנשלט מבחוץ. שימו לב לווקטור ש-PaperCut פרסמה עבורה: הוא מניח PR:H, כלומר הרשאות גבוהות. לבד, זו בעיה של מנהל מערכת שכבר נמצא בפנים. החולשה הראשונה מספקת בדיוק את החלק החסר, כתיבה להגדרות בלי להתחבר, והשתיים יחד נותנות הרצת קוד מרחוק לפני אימות, בהקשר האבטחה של תהליך השרת. בהוכחת ההיתכנות שלהם, כותבים ב-Huntress, ההרצה הולידה תהליך charmap.exe שרץ כ-SYSTEM תחת pc-app.exe, התהליך של שרת PaperCut.

מה התוקפים עשו בפועל

ב-Huntress ראו ניצול בשתי סביבות לקוח בלבד. באירוע הראשון, ב-26 באוגוסט, נמצאו בקובץ server.log מחרוזות מקודדות ב-base64 שפוענחו לשתי פקודות משורשרות, whoami ו-ver, שמזהות את חשבון המשתמש ואת גרסת Windows. באירוע השני, למחרת, נוספה להן הפקודה tasklist, כדי לראות אילו תהליכים רצים.

באותו לוג נמצא גם גוש ארוך של קידוד הקסדצימלי, שהתברר כקובץ Java מסוג class. הוא נכתב לתיקיית lib תחת ספריית ההתקנה של השרת בשם Udydn.class, ועותק נוסף נמצא בשם Moo97.class. החוקרים חילצו אותו מהלוג ופירקו אותו בעזרת הכלי Fernflower. מה שהתגלה היה רכיב קטן וקר רוח: הוא קורא נתונים מנתיב יחסי תחת data/content, מריץ אותם כפקודה, כותב את הפלט לקובץ, ואז מוחק את קובץ הפלט, את עצמו ואת server.log.

ודווקא הניקיון הזה השאיר סימן. הקוד הותיר בלוג שורה עם מחרוזת החיבור jdbc:derby:memory:pwn, וקובץ derby.log, שלא נמחק, רשם עלייה של מסד נתונים בשם pwn תחת ספריית ההתקנה של PaperCut. ב-Huntress מגדירים את השורה השנייה כסימן בעל רמת ודאות גבוהה מאוד לפריצה. מי שרוצה לבדוק אצלו יחפש גם את שתי שורות השגיאה ש-PaperCut פרסמה בבולטין, אחת על דרייבר שלא נמצא ואחת על שגיאת מסד נתונים בשליפת מספר כרטיס, וכן קבצי server.log חסרים או קטועים.

מה שלא נמצא חשוב לא פחות. ב-Huntress כותבים שהם לא ראו נוזקה משנית, לא תעבורה נוספת לשרת שליטה ובקרה (C2, השרת שדרכו תוקף שולח פקודות לקוד שהשתיל), ולא ניסיון לשמר אחיזה בשרת אחרי אתחול. הפעילות שתועדה נראתה כמו מיפוי של המערכת ותו לא. PaperCut מצדה מסרה ל-BleepingComputer שהתקיפות נראות מצומצמות וממוקדות, ושהיא נמנעת בשלב הזה מפרסום פרטים על מה שקורה אחרי הפריצה כדי לא לשבש את התגובה של לקוחות שנפגעו. אף אחד מהשניים לא ייחס את הפעילות לגורם מסוים.

הטלאי שהצריך טלאי, והפער שנשאר פתוח

הטלאי הראשון יצא ב-28 באוגוסט, לגרסאות 25 ו-26 בלבד. הוא לא החזיק. חברת המחקר watchTowr, שעבדה מול PaperCut במהלך האירוע, מסרה ל-BleepingComputer שחוקריה שחזרו את החולשות במלואן, מצאו כמה דרכים לעקוף את התיקון המקורי, ואיתרו חולשת עקיפת אימות נוספת. באותו ערב פרסמה PaperCut את Emergency Patch Release 2, שכולל הקשחות נוספות שפותחו יחד עם Huntress ועם watchTowr, וקראה לכל הלקוחות להתקין אותו גם אם כבר התקינו את הראשון. Release 2 מכסה את גרסאות 24, 25 ו-26 ב-Windows, ב-Linux וב-macOS.

גם הוא לא סוף הסיפור. ב-29 באוגוסט הוסיפה החברה לבולטין הערה שלפיה התקבלו דיווחים על תקלות אחרי התיקון בשתי יכולות, שליפת מספרי כרטיס ממסד נתונים חיצוני ו-SAML, ושהיא בודקת אותן. (הבולטין עודכן תשע פעמים בשלושה ימים.)

והחור הגדול נשאר פתוח. לגרסה 23 ומטה אין טלאי בכלל, וההמלצה של PaperCut היא לשדרג לגרסה עדכנית ולא לחכות לתיקון. לפי הטלמטריה של Huntress, 47 אחוז מכ-2,500 התקנות PaperCut שהחברה עוקבת אחריהן רצות על גרסה 23 או ישנה יותר. אחת משתי הסביבות שנפרצו רצה על MF בגרסה 24.1.5, ונתקפה עוד לפני ש-Release 2 היה זמין.

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

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

מה זה אומר בפועל

אם יש אצלכם PaperCut NG או MF, ההתקנה של Release 2 היא הפעולה הראשונה, גם אם כבר הותקן הטלאי המקורי, וגם על Site Servers ועל שרתי הדפסה משניים ולא רק על ה-Application Server (Print Deploy ו-Mobility Print אינם מושפעים ולא דורשים עדכון). מיד אחרי זה, ולמעשה עוד לפני, הוציאו את ממשק הניהול מהאינטרנט הפתוח והגבילו אותו לכתובות מהימנות בלבד. אם השרת היה חשוף, שמרו עותק של תיקיית הלוגים לפני השדרוג או האתחול: התוקף מוחק את server.log בעצמו, ואתחול או שדרוג יכולים למחוק את מה שנשאר. ולמי שרץ על גרסה 23 או ישנה יותר, בידוד רשתי הוא כרגע ההגנה היחידה שיש.