תיעוד

שטח התקיפה

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

אבטחה → שטח התקיפה מציג את כל הדרכים להגיע לקוד של כל פרויקט: נתיבי HTTP, Webhooks, צרכני תורים ופקודות שורת פקודה. צוות ההתקפה מוצא אותן על ידי קריאת הקוד (ראו צוות כחול וצוות התקפה). אתם קובעים מי יכול להגיע לכל אחת מהן, וזה קובע מה תהיה סדרת הבדיקה של ה בדיקת האבטחה תקרא תחילה.

כיצד המפה נוצרת

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

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

חשיפה

לכל נקודת כניסה יש חשיפה: מי יכול להגיע אליה.

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

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

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

הצעות מתוך קובץ תצורת הפריסה שלכם

כאשר מאגר הפרויקט מכיל את קובץ תצורת הפריסה שלו (Kubernetes Ingress, נתיבי Gateway API או ערכי Helm בצורתם הרגילה), CoRoid קורא לאילו מארחים מנותבים אל איזה שירות. מכך הוא מציע חשיפה לכל נקודת כניסה שעדיין לא נקבעה: אינטרנט עבור שירות מנותב שאינו דורש כניסה למערכת (או רק מפתח API או חתימה של Webhook), משתמשים שנכנסו למערכת עבור שירות שדורש כניסה, ופנימי עבור שירות שאין אליו נתיב. הוא קורא את הקבצים כטקסט; שום דבר אינו מוצג או מופעל. בעלים או מנהל יכולים לקבל את ההצעה או לדחותה, ולבטל את מה שיושם. הצעה אינה משנה חשיפה שאדם קבע, והצעה שנדחתה לא תוצג שוב.

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

הכוונת הבדיקה

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

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

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

הגנת נקודות הכניסה החדשות

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

הגדרתה היא נקודות כניסה חדשות באבטחה → הגדרות, עבור הארגון או כל פרויקט:

מצבpull request שמוסיף נקודת כניסה לא מסודרת
כבויאינו נבדק
דיווחנרשם בדיווח; הבדיקה של CoRoid Security נשארת ניטרלית
חסימהגורם לכישלון בבדיקה של CoRoid Security עד שכל אחת תסודר

אפשרות החסימה זמינה רק לאחר ש־CoRoid הפעיל אותה לאחר בדיקת הכשירות שלה; עד אז ההגדרה היא חסימה, לא זמין כאן, וההגנה מדווחת על כך.

כללי הפעולה שלה:

  • pull request מוסיף נקודת כניסה ללא בדיקת כניסה למערכת;
  • להחשיב "לא נקבע" כחשוף לאינטרנט;
  • להציע חשיפה מתוך קובץ תצורת הפריסה.

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