תיעוד

סריקת קוד וסקירת אבטחה

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

שתי שכבות הגנה בוחנות את הקוד עצמו: סריקת קוד מריצה כללים קבועים על כל שינוי ועל הענף המוגדר כברירת מחדל, ו סקירת אבטחה על בקשות משיכה בודקת את בעיות האבטחה שהCoroid Review מעלה לפני שאחת מהן תוכל לגרום לכישלון של pull request.

סריקת קוד

הכללים של Coroid

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

כללמחפש
security.hardcoded-secretפרטי אימות שנכתבו לתוך הקוד. ראה סודות שנחשפו.
security.tls-disabledאימות תעודת TLS כבוי.
security.auth-removedמנגנוני אימות או הרשאות, דקורטורים או מידלווייר שהוסרו או נמחקו מהקוד.
security.cors-wildcard-credentialsאפשרות גישה מכל מקור יחד עם פרטי אימות.
security.sql-concatשאילתות SQL שנוצרו משרשראות תווים משתנות ונמסרו לפונקציית שאילתה.
security.evalקוד שמופעל מתוך קלט: eval, new Function, ללא טיהור dangerouslySetInnerHTML.
security.remote-script-execסקריפטים שנטענו מורצים ישירות לתוך מעטפת או מפרשן.
security.policy-changedשינויים בהגדרות הסורק. ראה אמצעי הגנה ואכיפה.
deps.nonexistentתלויות חדשות שאינן קיימות ברישום שלהן.
deps.known-maliciousתלויות חדשות עם אזהרה על חבילה זדונית.
deps.suspicious-newתלויות חדשות שפורסמו לפני פחות מ-30 יום, עם מספר הורדות נמוך מאוד, ששמן דומה בשלב אחד או שניים לשם של חבילה פופולרית, או שיש להן שינוי לאחרונה במפתחי התחזוקה.
deps.install-scriptתלויות npm חדשות שמריצות סקריפט בעת התקנה.

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

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

פקודת הסריקה שלך

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

תוצאות מכלים חיצוניים כמו SonarQube, Snyk או Semgrep יכולות גם הן להגיע לCoroid כראיות לסקירה. ראה ספקי ראיות לסקירה.

סקירת אבטחה על בקשות משיכה

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

הבדיקה העצמאית

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

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

מה גורם לכישלון הסקירה

התבונןאכוף
טענה מאומתת ברמת חומרה שווה או גבוהה מהסף (גבוהה כברירת מחדל)ניטרלי, "ממצא מאומת"הבדיקה של Coroid Review נכשלת, "ממצא מאומת"
טענה שאינה מאומתתלעולם לא נכשלתלעולם לא נכשלת

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

סקירת האבטחה דורשת שCoroid Review יהיה פעיל עבור הפרויקט. כשCoroid Review כבוי, השורה שלו בקטגוריית אבטחה → הגדרות תציין זאת.

מה מגיע לGitHub

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