יצירת הצהרות VEX

במאמר הזה נסביר איך ליצור הצהרות Vulnerability Exploitability eXchange (VEX).

לכל קובץ אימג' של קונטיינר שנדחף אל Artifact Registry, ‏ Artifact Analysis יכול לאחסן הצהרת VEX משויכת. VEX הוא סוג של ייעוץ בנושא אבטחה שמציין אם מוצר מושפע מנקודת חולשה ידועה.

בכל דף פירוט עסקאות מופיעים הפרטים הבאים:

  • הגורם שפרסם את הצהרת VEX
  • הארטיפקט שלגביו נכתב ההצהרה
  • הערכת נקודות החולשה (סטטוס VEX) לכל נקודות החולשה הידועות

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

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

סטטוס VEX

הסטטוס של VEX מציין אם ארטיפקט מושפע מפגיעות ידועה.

הסטטוס יכול להיות אחד מהבאים:

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

לפני שמתחילים

  1. נכנסים לחשבון Google.

    אם עדיין אין חשבון, יוצרים חשבון חדש.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Container Analysis, Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. התקינו את ה-CLI של Google Cloud.

  6. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  7. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Container Analysis, Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. התקינו את ה-CLI של Google Cloud.

  12. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  13. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  14. תמונות של קונטיינרים מאוחסנות במאגר של Artifact Registry, או יוצרים מאגר ומעבירים אליו את התמונות.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות להעלאת הערכות VEX ולבדיקת סטטוס ה-VEX של נקודות חולשה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

יצירת הצהרות VEX

הכלי Artifact Analysis תומך בתקן Common Security Advisory Format (CSAF) 2.0 בפורמט JSON. כדי ליצור הצהרת VEX חדשה, צריך להשתמש בסכימת CSAF.

בדוגמה הבאה מוצגת הצהרת VEX לגבי אימג' ב-Artifact Registry עם ענף cve אחד של פגיעות ידועה.

צריך להגדיר את הערך של product_status לכל CVE.


{
  "document": {
    "csaf_version": "2.0",
    "lang": "en-US",
    "publisher": {
      "name": "Sample-Company",
      "namespace": "https://sample-company.com"
    },
    "title": "Vex document 1.1"
  },
  "product_tree": {
    "branches": [
      {
        "name": "https://LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME",
        "product": {
          "name": "PRODUCT_NAME",
          "product_id": "IMAGE_NAME"
        }
      }
    ]
  },
  "vulnerabilities": [
    {
      "cve": "CVE_ID",
      "product_status": {
        "PRODUCT_STATUS": [
          "IMAGE_NAME"
        ]
      }
    }
  ]
}

כאשר:

  • PRODUCT_NAME שם המוצר שקריא לבני אדם ומופיע בתמונה. מקבלת ערך מחרוזת. הערך צריך להיות השם הקנוני המלא של המוצר, כולל מספר הגרסה ומאפיינים אחרים.
  • LOCATION הוא האזור או המיקום הרב-אזורי של המאגר.
  • PROJECT_ID הוא המזהה של הפרויקט שמכיל את המאגר.
  • REPO_NAME הוא השם של מאגר Docker ב-Artifact Registry.
  • IMAGE_NAME הוא שם התמונה.
  • CVE_ID: המזהה של הפגיעות, למשל CVE-2017-11164.
  • PRODUCT_STATUS היא הערכת סיכון האבטחה. הכלי Artifact Analysis תומך בארבעה סוגי סטטוס: known_affected,‏ known_not_affected,‏ under_investigation ו-fixed.

לכל פגיעות שרוצים לכלול בהצהרת ה-VEX, צריך ליצור ענף cve ולהגדיר את הערך של product_status.

הערך של השדה name ב-product_tree.branches.name הוא ה-URI של התמונה. הכללת הערך הזה משייכת את הצהרת ה-VEX לתמונה ספציפית של Docker.

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

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