תיקון נקודות חולשה בקוד וניהול של הבדלים

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

יצירת תיקונים לנקודות חולשה

משתמשים ב-cm fix כדי ליצור תיקון אבטחה מאומת לממצא מאומת:

cm fix FINDING_ID

כשמריצים את cm fix, ‏CodeMender מבצע את שלבי האימות הבאים:

  1. יוצר תיקון פוטנציאלי באמצעות מנוע החשיבה הרציונלית שמתארח בענן.
  2. מחיל את התיקון על עותק של קוד המקור בתוך ארגז החול המקומי.
  3. מבצע קומפילציה ובדיקה של בסיס הקוד על ידי הפעלת build.command שהגדרתם, כדי לוודא שהפרויקט נוצר ושבדיקות היחידה עוברות.
  4. מריץ מחדש את הניצול המאומת של ה-PoC כדי לוודא שאי אפשר יותר לנצל את נקודת החולשה.

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

תיקון סימונים

  • Provide fix context (-c / --context): מספקים אילוצים ארכיטקטוניים או הנחיות לכתיבת קוד:
    cm fix FINDING_ID -c "Use the safe parameterized database helper in src/db/query.go"
  • אישור אוטומטי של הנחיות (-y / --yes): אישור אוטומטי של כל כתיבות הקבצים והנחיות לאישור פקודות במהלך תהליך התיקון:
    cm fix FINDING_ID -y
    הערה: אפשר גם להשבית את בקשות האישור האינטראקטיביות ב-config.yaml על ידי הגדרת tools.confirm_writes: false ו-tools.confirm_commands: false.
  • שליטה בארגז החול (--sandbox): הפעלה או השבתה של ארגז החול ברמת מערכת ההפעלה באופן מפורש להרצה הזו (לדוגמה, --sandbox=false להשבתה):
    cm fix FINDING_ID --sandbox=false
  • מעקף של גבולות הנתיב (--allow-all-paths): השבתת הבדיקה של גבולות הנתיב של סביבת העבודה בהרצה הזו, כדי שכלי הסוכן יוכלו לגשת לנתיבים מחוץ לשורש הפרויקט ול-project_paths שהוגדר (בשילוב עם --sandbox=false כדי לגשת לנתיבי מארח שלא נטענו בתוך ארגז החול):
    cm fix FINDING_ID --allow-all-paths
  • ‫Bypass command policy (--allow-all-commands): השבתת האכיפה של רשימת החסימה של command_policy.yaml בהפעלה הזו:
    cm fix FINDING_ID --allow-all-commands
  • ‫Bypass cache (--no-cache): מאלצים את CodeMender ליצור תיקון חדש:
    cm fix FINDING_ID --no-cache

בדיקה וניהול של השוואות VCS מקומיות

‫CodeMender כולל פקודות VCS מובנות שעוזרות לבדוק, להעביר לשלב הביניים ולנהל את השינויים בקוד שהתיקונים מציגים לפני שמאשרים אותם:

  • הצגת סטטוס המאגר: בודקים אילו קבצים CodeMender שינה או יצר בסביבת העבודה המקומית.

    cm vcs status

  • בדיקת ההבדלים: בודקים את ההבדלים המאוחדים שורה אחר שורה בכל השינויים בקוד שהסוכן יצר ולא בוצע להם commit.

    cm vcs diff

  • העברת השינויים לסביבת Staging: מוסיפים את השינויים המאומתים של התיקון לסביבת ה-Staging המקומית כדי לבדוק ולשמור אותם.

    cm vcs stage

  • ביטול השינויים בסשן: ביטול כל השינויים בקבצים המקומיים ש-CodeMender יצר במהלך הסשן הנוכחי, ושחזור המאגר למצב הבסיסי שלו.

    cm vcs reset