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

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

יצירת תיקונים לפגיעויות

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

cm fix FINDING_ID

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

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

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

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

  • לספק הקשר לתיקון (-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
    הערה: אפשר גם להשבית את ההנחיות האינטראקטיביות לכתיבה באופן גלובלי על ידי הגדרת confirm_writes: false ב-config.yaml.
  • שליטה בהרצה בארגז חול (--sandbox): הפעלה או השבתה מפורשות של ארגז החול להרצה הזו (לדוגמה, --sandbox=false כדי להשבית):
    cm fix FINDING_ID --sandbox=false
  • עקיפת ארגז החול (--unrestricted): עקיפה זמנית של כל אמצעי ההגנה של ארגז החול בהרצה הזו, השבתה של גבולות מערכת הקבצים ובידוד של מאגרי נתונים ברמת מערכת ההפעלה:
    cm fix FINDING_ID --unrestricted
  • דילוג על מטמון (--no-cache): כדי לאלץ את CodeMender ליצור תיקון חדש:
    cm fix FINDING_ID --no-cache

בדיקה וניהול של הבדלים מקומיים ב-VCS

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

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

    cm vcs status

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

    cm vcs diff

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

    cm vcs stage

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

    cm vcs reset