GPT
C

codebert-base-finetuned-detect-insecure-code

קוד פתוח

mrm8488רישיון לא דווח2022-03-02

  • transformers
  • pytorch
  • jax
  • roberta
  • text-classification

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

  • 514טוקנים בהקשר
  • 952 MBמשקל הקבצים
  • 1,554הורדות בחודש
  • 37לייקים

מה זה

מדובר בהתאמה של CodeBERT למשימת סיווג בינארי של קוד, שמחזירה 1 לקוד פגיע ו־0 לקוד תקין. הוא אומן על מאגר Devign מתוך CodeXGLUE, שכולל בעיות כמו דליפות משאבים, שימוש בזיכרון אחרי שחרור והתקפות מניעת שירות, עם 21,854 דוגמאות אימון.

במבחן התוצאה הוא מציג דיוק של 65.30 אחוזים על סט הבדיקה של 2,732 דוגמאות. זה אמנם גבוה יותר מ־CodeBERT הבסיסי שהגיע ל־62.08 או מ־RoBERTa שהגיעה ל־61.05, אבל בפועל מדובר על מודל שטועה ביותר משליש מהמקרים, כך שאי אפשר להסתמך עליו כסורק יחיד.

מתאים ל

  • סינון ראשוני בבדיקות קוד

    זיהוי חשדות מוקדמים לחולשות נפוצות בפונקציות קצרות לפני בדיקה ידנית.

  • מחקר על סיווג חולשות

    נקודת השוואה מקומית מול מודלים אחרים על מאגר Devign.

  • סריקה מקומית לא מקוונת

    הרצה על מכונה מבודדת בלי להוציא קוד החוצה דרך רשת חיצונית.

איפה זה נופל

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

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

שאלות
נפוצות

האם המודל מסביר איפה נמצאת החולשה בקוד?

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

האם אפשר להשתמש בו ישירות בפרודקשן?

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

איך מריצים

המשקל הכולל עומד על 952 מגה בייט בתשעה קבצים, והוא מבוסס על ארכיטקטורת RobertaForSequenceClassification עם 12 שכבות. אתם מריצים אותו ישירות עם ספריית transformers ו־PyTorch, והוא עולה ונבדק בקלות על כל מעבד מודרני בלי חובה בכרטיס מסך ייעודי.

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

from transformers import pipeline

pipe = pipeline("text-classification", model="mrm8488/codebert-base-finetuned-detect-insecure-code")
print(pipe("שלום"))

הרישיון

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

הרישיון המלא בעמוד המודל ↗