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