סקירה כללית של CodeMender

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

‫CodeMender הוא סוכן אבטחת קוד מבוסס-AI שיכול למצוא, לאמת ולתקן נקודות חולשה עמוקות בבסיס הקוד. ‫CodeMender עוטף מודל LLM ב-harness שעבר כוונון עדין, ומשתמש בהנחיות, במיומנויות ובלוגיקת תזמור שפותחו על ידי Google DeepMind כדי להפוך את המודל למערכת מבוססת-סוכן שמתמחה באבטחת קוד.

איך זה עובד

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

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

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

ארכיטקטורת המערכת

מנקודת המבט של המשתמש, מערכת CodeMender מורכבת משני רכיבים:

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

שפות ו-frameworks נתמכים

כברירת מחדל, CodeMender תומך בשפות הבאות: C/C++‎, ‏ C#‎ / .NET,‏ Go, ‏ Java, ‏ JavaScript ו-TypeScript, ‏ Kotlin, ‏ Python, ‏ Ruby, ‏ Rust ו-PHP. בנוסף, הוא מספק תמיכה רחבה בספריות סטנדרטיות בשפות האלה, וגם במסגרות ארגוניות נפוצות (כמו HTML/CSS,‏ Django,‏ Flask,‏ React,‏ Spring Boot,‏ ASP.NET ו-Express).

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

סריקה של שפות תכנות נוספות

אתם יכולים להגדיר את CodeMender לסריקה של שפות תכנות שלא נכללות בקבוצת ברירת המחדל שלו באחת מהדרכים הבאות:

  • הגדרה גלובלית: מוסיפים את סיומת הקובץ של שפת התכנות לקטע scan.extensions.include בקובץ ההגדרה הגלובלי של CodeMender ~/.codemender/config.yaml.
  • הגדרה לכל מאגר: מוסיפים את סיומת הקובץ של שפת התכנות לקטע scan.extensions.include בקובץ ההגדרה config.yaml של CodeMender במאגר.

לדוגמה, כדי לסרוק שפות נוספות או פורמטים של תסריטים:

scan:
  extensions:
    include:
      # Default languages
      - .py
      - .java
      - .go
      - .js
      - .jsx
      - .mjs
      - .cjs
      - .ts
      - .tsx
      - .c
      - .cc
      - .cpp
      - .cxx
      - .h
      - .hpp
      - .cs
      - .rs
      - .kt
      - .kts
      - .rb
      - .php
      # Additional / custom languages
      - .swift
      - .scala
      - .sh

  # Exclude build, dependency, cache, and artifact directories
  exclude_dirs:
    - node_modules
    - vendor
    - dist
    - bin
    - target
    - obj
    - build
    - .gradle

מידע נוסף על הגדרת אפשרויות הסריקה זמין במאמר פרמטרים של הגדרה (config.yaml).

הערה לגבי איכות

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

מודלים נתמכים

‫CodeMender תומך במודלים הבאים:

כדי להרחיב את רשימת המודלים הנתמכים, לוחצים כאן

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

אזורים נתמכים

‫CodeMender זמין בכל העולם.

מעקב אחר השימוש בטוקנים

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

שורת סטטוס בזמן אמת

בזמן שהפקודה cm find,‏ cm fix,‏ cm verify או cm session resume פועלת, מעבירים את הדגל --compact כדי להציג שורת סטטוס מתגלגלת שמתעדכנת בזמן שהסוכן פועל:

cm find ./src/auth/ --compact

בשורת הסטטוס מוצגים סכומים מצטברים של סשנים:

Tokens: 40k in / 12k out / 60k total

הספירה של סשנים שהופסקו והופעלו מחדש ממשיכה מהמקום שבו הסתיימה ההרצה הקודמת. יכול להיות שהספירה של total תכלול את טוקני ההסקה הפנימית של המודל, ולכן היא יכולה להיות גבוהה מ-in + out.

יציאה מהסיכום

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

✅ Completed 14 tool steps in 3m 42s | Tokens: 40k in / 12k out / 60k total

השימוש בטוקנים שחויב

כדי לראות את השימוש המצטבר בטוקנים ואת מגמות העלויות בפרויקט Google Cloud , אפשר לעיין במאמר הצגת דוחות החיוב ב-Cloud ומגמות של עלויות.

תחילת העבודה עם ה-CLI

כדי להתחיל בסריקה, צריך להגדיר את כלי ה-CLI ולאתחל את סביבת העבודה.

דרישות מוקדמות

לפני שמפעילים את CodeMender CLI, צריך לוודא שהסביבה מוכנה בצורה נכונה:

  • הגדרת Google Cloud פרויקט: מגדירים את Google Cloud הפרויקט עם ממשקי ה-API והרשאות ה-IAM הנדרשים.
  • מורידים את CodeMender CLI: מורידים ומתקינים את הקובץ הבינארי של CodeMender CLI למערכת ההפעלה שלכם.
  • הגדרת Google Cloud פרטי כניסה: מגדירים את Google Cloud Application Default Credentials ‏ (ADC) כדי לאמת את ה-CLI.
  • הקצאת קוד המקור: משכפלים או מעתיקים את קוד המקור של הפרויקט שרוצים לסרוק אל סביבת העבודה.
  • הגדרת ארגז החול: מגדירים את נקודות הגישה לספריות, את פרופילי הגישה לרשת ואת חריגי האבטחה לסביבת ארגז החול.

ציון המודל

כברירת מחדל, CodeMender משתמש ב-Gemini 3.8 Flash. כדי לבטל את מודל ברירת המחדל, מעבירים את הדגל --model עם מזהה המודל המתאים:

  • ‫Gemini 3.8 Flash (ברירת מחדל): --model gemini-3.8-flash
  • ‫Gemini 3.7 Flash: --model gemini-3.7-flash
  • ‫Gemini 3.6 Flash: --model gemini-3.6-flash
  • ‫Gemini 3.5 Flash: --model gemini-3.5-flash
  • ‫Gemini 3.1 Pro Preview: --model gemini-3.1-pro-preview

הפקודות הבאות תומכות בדגל --model:

  • cm find
  • cm verify
  • cm fix

כדי לציין מודל כשמריצים אחת מהפקודות האלה, משתמשים בתחביר הבא:

cm COMMAND TARGET --model MODEL_NAME

אבטחה ופרטיות נתונים

בקטעים הבאים מפורטים מודל האבטחה, מדיניות שמירת הנתונים ואמצעי בקרת הגישה של CodeMender:

אילו נתונים נשלחים מ-CodeMender לענן?

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

במקום זאת, ממשק ה-CLI ממקם את הנתונים שהוא שולח לסוכן שמתארח ב-Google באופן מקומי בלבד. הנתונים כוללים:

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

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

מהי מדיניות שמירת הנתונים?

‫CodeMender משתמש במדיניות קפדנית לשמירת נתונים לטווח קצר:

  • שמירה למשך 7 ימים לכל היותר: אנחנו שומרים נתוני סשנים, כולל קטעי קוד ומצבי מעקב, למשך 7 ימים לכל היותר באחסון של פלטפורמת הסוכנים של Gemini Enterprise, כדי לאפשר למשתמשים להמשיך בצורה חלקה סריקות שהופסקו. אחרי 7 ימים, המערכת מוחקת אותו באופן אוטומטי (ראו שמירת נתונים למשך אפס ימים).
  • מחיקה מפורשת: הלקוחות לא צריכים לחכות 7 ימים, הם יכולים להפעיל ניקוי מיידי של כל נתוני הסשן על ידי קריאה ל-DeleteInteraction.
  • ממצאים ארעיים: אנחנו לא שומרים ממצאים ותיקונים של נקודות חולשה במסדי נתונים לטווח ארוך. הם מצטברים בזיכרון במהלך הפייפליין.

למי יש גישה לנתונים?

‫CodeMender משתמש בגישה של 'אפס גישה לנתונים' בכל הנוגע לגישה אנושית:

  • אין גישה אנושית: לקבוצות של אנשים או למהנדסי Google אין גישה לקריאת נתוני לקוחות בסביבת הייצור.
  • אין חשיפה לאופרטורים: גם לצורך ניפוי באגים בייצור ומעקב אחר שגיאות, האופרטורים של Google מוגבלים ואין להם חשיפה להקשר של קוד המקור של הלקוח או למצבי סשן זמניים.
  • בידוד קפדני: אנחנו מבצעים בידוד לוגי של כל הנתונים ומגדירים בקרת גישה לפי ארגון ופרויקט לחיוב של לקוח, כדי להגן על הפרטיות של הדיירים בתשתית המשותפת שלנו.
  • ‫VPC Service Controls (VPC-SC): כדי להגן על הסביבה שלכם בצורה טובה יותר, הארכיטקטורה של CodeMender תומכת באופן מלא ב-VPC Service Controls (VPC-SC). כך תוכלו להגדיר מתחם אבטחה היקפית מאובטח מסביב ל Google Cloud משאבים שלכם, ולצמצם את הסיכונים לזליגת נתונים כשנתונים מקומיים נשלחים למנוע ההסקה בענן.

המאמרים הבאים

הוראות מפורטות מופיעות במדריכים הבאים: