CodeMender עוקב אחרי כל סריקה, אימות וניסיון תיקון כסשן עם שמירת מצב, שמגובה במסד נתונים מקומי של SQLite (state.db). אתם יכולים לבדוק סשנים פעילים, להמשיך משימות שהושהו ולייצא דוחות מפורטים של הממצאים.
ניהול הפעלות
ממשק CodeMender CLI שומר את מצב ההפעלה של סשנים באופן מקומי, כך שאפשר לעקוב אחרי משימות פעילות, להמשיך תהליכי עבודה שהופסקו ולייצא דוחות אבטחה.
הצגת סשנים פעילים וסשנים קודמים
מריצים את הפקודה הבאה כדי להציג רשימה של כל הסשנים, הסטטוסים שלהם (RUNNING, WAITING_FOR_TOOL, COMPLETED, FAILED, CANCELLED) ונתיבי היעד:
cm session list
המשך של סשן שהופסק
אם ההפעלה מושהית בגלל הפרעה ברשת או כשל בשלב, אפשר להמשיך אותה מהשלב האחרון של נקודת הבדיקה:
cm session resume SESSION_ID
ביטול סשן פעיל
כדי לסיים סשן פעיל ולהפסיק את ההפעלה של הסוכן בעורף:
cm session cancel SESSION_ID
צפייה בדוחות וייצוא של תיקונים
אפשר להציג את הממצאים של הסשן, את סטטוסי האימות ואת פרטי התיקון באמצעות cm report.
פורמטים של פלט
טבלת מסוף (ברירת מחדל)
רשימה מסוכמת של הממצאים.
cm reportדוח HTML
יצירת דוח HTML מעוצב. משתמשים ב---open (או ב--o) כדי להפעיל אותו אוטומטית בדפדפן ברירת המחדל.
cm report --format html --open
Markdown
יצירת דוח בפורמט Markdown של GitHub.
cm report --format md
JSON
ייצוא כל פרטי הממצאים של הסשן כ-JSON גולמי.
cm report --format json
SARIF
ייצוא הממצאים בפורמט SARIF רגיל (גרסה 2.1.0) לשילוב עם כלי אבטחה אחרים.
cm report --format sarif
סינון ומיון של דגלים
- הצגת תיקוני קוד מוצעים (
--patches): הכללת תיקוני קוד שנוצרו בדוח, עם הבדלים מאוחדים מלאים.bash cm report --patches - סינון לפי חומרה (
--severity): הצגת ממצאים שתואמים לרמה מסוימת (CRITICAL, HIGH, MEDIUM, LOW).bash cm report --severity HIGH - סינון לפי סטטוס (
--status): הצגת ממצאים שתואמים למצב מסוים (OPEN, FIXED, DISMISSED, REOPENED).bash cm report --status OPEN - סינון לפי סשן (
--session): הצגת ממצאים מקידומת ספציפית של מזהה סשן.cm report --session SESSION_ID_PREFIX
- הצגת ארטיפקטים של הסוכן (
--artifacts): כולל נתיבים לארטיפקטים של הפעלה שנוצרו על ידי הסוכן (כמו יומנים, סקריפטים של ניצול לרעה).bash cm report --artifacts - מיון הממצאים (
--sort): מיון התוצאות לפיseverity(ברירת מחדל) אוtime.bash cm report --sort time - סינון לפי מזהה ממצא: מעבירים מזהה ממצא ספציפי (או קידומת) כארגומנט מיקום כדי להציג פרטים של ממצא יחיד.
cm report FINDING_ID_PREFIX
מצבים של ממצאי נקודות חולשה
CodeMender עוקב אחרי הממצאים במצבי הפגיעות הבאים:
OPEN- מה זה אומר: נקודת החולשה זוהתה בהצלחה במהלך סריקה (או יובאה מכלי של צד שלישי), אבל עדיין לא אומתה, תוקנה או סומנה כלא פעילה.
- איך מטפלים בבעיה: זהו המצב ההתחלתי של כל פגם אבטחה חדש שמתגלה. פגיעויות בסטטוס
OPENנמצאות באופן פעיל בתור לאימות (cm verify) או לתיקון (cm fix).
FIXED- מה זה אומר: CodeMender יצר תיקון לנקודת החולשה, החיל את ההשוואה בבסיס הקוד המקומי, והצליח לקמפל ולהריץ בדיקות אימות כדי להוכיח שהניצול כבר לא מצליח.
- איך המערכת מטפלת בבעיה: אחרי שמאשרים שהתיקון פותר את הבעיה בלי לשבש את הלוגיקה הקיימת של הקוד, CodeMender מעביר את הממצא למצב
FIXED. הוא יישאר במצב הזה אלא אם סריקה עתידית תזהה רגרסיה.
DISMISSED- מה זה אומר: נקודת החולשה מסומנת כלא פעילה, כי היא זוהתה כחיובי כוזב או שכבר תוקנה, או כי רמת הסמך בממצא לא מספיקה כדי לאשר שאפשר לנצל אותה (כולל בהשוואה למודל האיומים של הפרויקט, אם סופק במהלך ההצטרפות).
- איך זה קורה: כשמסמנים פריט כ
DISMISSED, ההתראות העתידיות מושתקות והממצא לא נכלל בפלט הפעיל של ה-CLI עםcm report --status OPEN. הרצה מחדש שלcm verifyעל ממצא שנסגר בודקת מחדש או משחזרת פריטים שנסגרו.
REOPENED- המשמעות: נקודת חולשה שסומנה בעבר כ
FIXEDאו כDISMISSEDזוהתה מחדש בסריקה הבאה של בסיס הקוד. - איך המצב הזה מטופל: המצב הזה מציין רגרסיה (למשל מיזוג git לא תקין שביטל את התיקון) או אסטרטגיית צמצום סיכונים שנכשלה. הכלי מסמן את הבעיה לצורך הערכה מחדש מיידית, ומחייב את המפתחים לבדוק את תהליך התיקון.
- המשמעות: נקודת חולשה שסומנה בעבר כ
רמות החומרה של נקודות חולשה
הכלי CodeMender מסווג את הממצאים לרמות החומרה הבאות:
CRITICAL- מה זה אומר: הפגיעות יוצרת סיכון חמור ומיידי לאפליקציה או לתשתית הבסיסית, ועלולה להוביל לפריצה מלאה למערכת.
- למה היא מסווגת כקריטית: היא עומדת בסף של השפעה עם השלכות חמורות (כמו הפעלת קוד מרחוק או כתיבה ברמת הבסיס), אפשר להגיע אליה ישירות מגבולות לא מהימנים ללא תנאים מוקדמים, והיא מגובה בניתוח של זרימת נתונים עם רמת מהימנות גבוהה או בהוכחת קונספט (PoC) מאומתת שהופעלה בארגז החול של CodeMender.
HIGH- מה זה אומר: נקודת החולשה מייצגת פגם חמור באבטחה שעלול להוביל לשליטה לא מורשית במערכת, להסלמת הרשאות (privilege escalation) או לחשיפה משמעותית של נתונים, אבל נדרשים תנאים ספציפיים כדי להפעיל אותה.
- למה הסיווג הוא גבוה: למרות שההשפעה של הניצול גבוהה (לדוגמה, קריאות שרירותיות של מסד נתונים או חטיפה אדמיניסטרטיבית), יכולת הניצול מוגבלת מעט. יכול להיות שהתוקף יצטרך לעבור אימות משתמש רגיל, שהמתקפה תהיה תלויה בהגדרה ספציפית של המערכת או שתדרוש רצף מדויק מאוד של פעולות.
MEDIUM- מה זה אומר: הפגיעות מייצגת סיכון בינוני, בדרך כלל חושפת נתונים מוגבלים או מאפשרת שיבושים מקומיים, אבל היא לא מסכנת את המערכת המארחת.
- למה הסיווג הוא בינוני: הניצול מוגבל מאוד בגלל הנגישות או המורכבות. בדרך כלל נדרשת אינטראקציה פעילה של המשתמש (כמו לחיצה על קישור זדוני), הרשאות עמוקות או תנאים מורכבים כדי לעקוף את שכבות ההגנה, והאזור שמושפע בסופו של דבר מוגבל.
LOW- מה זה אומר: הממצא מייצג סיכון אבטחה קל או היעדר כללי של היגיינת הגנה לעומק, שלא מהווה איום מיידי כשלעצמו.
- למה היא מסווגת כנמוכה: קשה מאוד לנצל אותה או שההשפעה שלה מינימלית. התגלית הזו משמשת בדרך כלל תוקפים לסיור או לזיהוי טביעת אצבע של ההגדרה, ולא לפריצה ישירה. אי אפשר להשתמש בה כדי להריץ קוד שרירותי או כדי לחלץ נתוני אפליקציה רגישים.
תחזוקה של Workspace
כדי לאפס את קובצי המעקב של המצב המקומי ולנקות את מטמון ההרצה הזמני, מריצים את הפקודה:
cm clean