291 Intercept: הסריקות אחר מאגרי Git חשופים בתשתית שלנו יותר מהוכפלו
בשבוע שהחל ביום 19 באוקטובר עלה בשיעור של 137% מספר המקורות שסרקו את התשתית שלנו הפונה לאינטרנט בחיפוש אחר מאגרי קוד מקור שנשכחו על השרתים, לעומת הממוצע השבועי בשבועיים שקדמו לו. ראינו גם יותר סורקים שחיפשו קובצי .env בתיקיות משנה, קובצי מפתחות ענן וגיבויים.
היכרות עם 291 Intercept
291 Intercept היא סדרה שבועית חדשה של 291 Group. כמו כל ארגון שפעיל ברשת, גם התשתית שלנו הפונה לאינטרנט נסרקת מדי יום על ידי סורקים אוטומטיים שמחפשים דלתות שנשארו פתוחות: קובצי סיסמאות חשופים, גיבויים שנשכחו, דפי ניהול ללא עדכוני אבטחה. כל גיליון מדווח על מה שהסורקים האלה חיפשו בתשתית שלנו במשך שבוע אחד, כדי שמנהלי מערכות וחברות אחרים יוכלו לבדוק את אותם הדברים במערכות שלהם.
בכל שבוע תמצאו כאן את הדפוסים הבולטים שזיהינו בתשתית שלנו ואת השינוי בהם לעומת השבוע הקודם, את מקורות התעבורה, ורשימה קצרה של דברים שכדאי לבדוק בשרתים שלכם. כל הנתונים מוצגים במצטבר. לעולם איננו מציינים כתובת או מערכת בודדת, ואנחנו כוללים רק דפוסים שנצפו ממקורות נפרדים רבים. כל גיליון עוסק בשבוע שהסתיים לפחות שבעה ימים לפני פרסומו.
בימים 19 עד 25 באוקטובר סרקו את התשתית שלנו הפונה לאינטרנט בערך 240 מקורות בחיפוש אחר מאגרי קוד מקור שנשארו על שרתי אינטרנט. מדובר בגידול של 137% לעומת הממוצע השבועי בשבועיים שקדמו. הם ביקשו קבצים כמו /.git/config, /.git/index וכן /.svn/entries. בתשתית שלנו, רק אתרי WordPress משכו השבוע יותר סורקים מאשר קוד המקור.
במקביל עלו גם חיפושים קשורים מול האתרים שלנו. מספר המקורות שחיפשו קובצי מפתחות ענן עלה בשיעור של 51%, ומספר המקורות שביקשו גיבויים וקובצי dump של מסדי נתונים עלה בשיעור של 75%. ראינו גם סורקים שהתמקדו בקבוצה של קובצי .env בתיקיות משנה, שבעבר עוררו עניין מועט בהרבה. אף אחד מהיעדים האלה אינו באג בתוכנה. כל אחד מהם הוא קובץ שמישהו שכח להסיר משרת ציבורי.
השבוע בקצרה
ראינו בערך 660 מקורות שונים, עלייה של 28% לעומת אותו בסיס השוואה. דפי ההתחברות של WordPress, ממשק XML-RPC ונתיבי התוספים משכו את מירב המקורות: 56% מהם. קובצי סודות וקובצי תצורה משכו 32% מהמקורות. מספר המקורות שחיפשו דפי אבחון כמו /info.php עלה בשיעור של 33%, ומספר המקורות שבדקו רכיבים פנימיים של אפליקציות, כמו /actuator/env, עלה בשיעור של 37%.
מבין המקורות שהגיעו אלינו, 88% השתמשו במחרוזות user agent שמתחזות לדפדפנים רגילים, ואילו 64% הגיעו משרתים שכורים. המדינות הנפוצות ביותר היו ארצות הברית, גרמניה, הולנד, סינגפור והודו.
איך תיקיית .git חשופה מסגירה את האתר
רוב צוותי התוכנה עוקבים אחר השינויים בקוד באמצעות Git, וכל פרויקט Git שומר את ההיסטוריה שלו בתיקייה מוסתרת בשם .git. אם אתר עולה לאוויר על ידי העתקת תיקיית הפרויקט כולה לשרת האינטרנט, גם התיקייה המוסתרת עלולה להיות מועתקת, וכל מי שמבקש את הקבצים שבה יכול לקרוא אותם.
/.git/config היה אחד מנתיבי קוד המקור המבוקשים ביותר מול התשתית שלנו הפונה לאינטרנט. הקובץ הזה מציין את המאגר שממנו הגיע הקוד, ולפעמים הוא מכיל את פרטי ההזדהות ששימשו לפריסתו. הסורקים ביקשו מאיתנו גם את /.git/head, את /.git/logs/head ואת /.git/index, שמהם אפשר להבין אם חלק מספיק גדול מהתיקייה קריא כדי להתקדם הלאה. כשהתיקייה חשופה, תוקפים יכולים לפעמים לשחזר את קוד המקור המלא ואת כל היסטוריית השינויים.
הטעות הזאת נפוצה. מחקר שפורסם בפברואר 2026 מצא בערך 4.96 מיליון שרתי אינטרנט ציבוריים שחושפים מטאדאטה של Git. במקרה של 252,733 מהם, קובץ התצורה הכיל פרטי הזדהות לפריסה, ולפי אותו דוח הם עלולים להוביל להשתלטות על המאגר ולמתקפות על שרשרת האספקה.
סודות בתיקיות לא צפויות
הסורקים ביקשו מהאתרים שלנו את /.env בתיקיית השורש, אבל השבוע רבים מהם חיפשו גם בתיקיות משנה. /mailer/.env משך 40 מקורות, פי 7.8 מהממוצע הקודם שלו. /live/.env, /mail/.env, /v3/.env, /sitemaps/.env, /releases/.env וכן /exapi/.env משכו כל אחד 40 מקורות, בערך פי שש עד שבע מהממוצעים הקודמים שלהם. ארבעה נתיבים הגיעו אלינו לראשונה, וכל אחד מהם נבדק על ידי 10 מקורות בערך: /core/database/.env, /.changeset/config.json, /secrets וכן /settings/credentials.
מבחינת התוקף, הקבצים האלה שווים את המאמץ. אפליקציות אינטרנט שומרות בקובצי .env מפתחות API, סיסמאות למסדי נתונים ומפתחות גישה לענן. תחקיר שפורסם באפריל 2026 על סורק המוני אחד מצא קובצי .env שנגנבו מחברות שנפרצו, שמספרן עולה על 900, ובימים 10 עד 21 באפריל 2026 לבדם נאספו מעל 30,000 שמות שונים של קובצי .env. הסודות הגנובים כללו פרטי גישה לשירותי בינה מלאכותית, ענן, תשלומים והודעות.
ראינו את אותו הדפוס גם בפרטי הזדהות לענן. /application_default_credentials.json משך 40 מקורות, פי 6.2 מהממוצע הקודם שלו. הסורקים ביקשו מאיתנו גם את /service-account.json ואת /.config/gcloud/application_default_credentials.json. התחברות דרך כלי שורת הפקודה של ספק הענן כותבת את הקובץ הזה, וההנחיות של הספק עצמו מציינות שהוא נשמר ללא הצפנה ומאפשר לכל מי שמחזיק בו לבקש אסימוני גישה ללא הגבלת זמן. אם עותק שלו מגיע לתיקיית השורש של שרת האינטרנט, תוקף שמוצא אותו שומר על הגישה עד שההרשאה מבוטלת.
סריקה אחת, יעדים רבים
כמה קבוצות מתואמות של מקורות הריצו את אותן רשימות מול התשתית שלנו הפונה לאינטרנט. באחת מהן, 20 מקורות הפרושים על פני 7 מדינות ביקשו את אותם 8 נתיבים, ובהם /.git/config, /.env, /info.php, /config.json, /actuator/env וכן /server-status. רובם התחילו בהפרש של עד 60 שעות זה מזה. שתי קבוצות קטנות יותר, של 10 מקורות בערך כל אחת, השתמשו ברשימות ארוכות בהרבה: האחת של 210 נתיבים והשנייה של 158. שתיהן כללו את /.git/config, וריאציות של .env כמו /.env.old או /.env.development, וגם קובצי מפתחות ענן.
הנתיב /actuator/env שייך לאותה משפחה. כשנקודת הקצה של Spring Boot Actuator באפליקציית Java נגישה ללא התחברות, היא מחזירה את משתני הסביבה ואת התצורה של האפליקציה, שעשויים לכלול פרטי הזדהות למסדי נתונים ומפתחות ענן. גם דפי phpinfo שנשכחו על השרת עלולים לחשוף משתני סביבה, ובתשתית שלנו מספר המקורות שביקשו את /admin/phpinfo.php גדל פי 5.9 לעומת הממוצע הקודם שלו. באחד המקרים המתועדים, תוסף WordPress הגיע עם קובץ phpinfo.php שכל אחד יכול היה לפתוח.
גם WordPress זכה לקמפיין משלו נגד האתרים שלנו: 20 מקורות הפרושים על פני 7 מדינות ביקשו את /xmlrpc.php יחד עם עותקים של wlwmanifest.xml תחת תיקיות מנוחשות כמו /blog/wp-includes/wlwmanifest.xml וכן /wordpress/wp-includes/wlwmanifest.xml. בקשה של אותו קובץ תחת שמות תיקיות רבים היא דרך מהירה לגלות אם אתר מריץ WordPress, ואם כן, היכן. דרך XML-RPC, תוקף יכול לנסות מאות או אלפי סיסמאות בבקשה אחת.
מה לעשות השבוע
- בדקו מבחוץ. מרשת שאינה שלכם, בקשו את
/.git/configואת/.envבכל אחד מהאתרים שלכם. אם אחד מהם מחזיר תוכן אמיתי, הניחו שמישהו כבר קרא אותו. - פרסו תוצרי בנייה, לא תיקיות עבודה. העלו לשרת רק את הקבצים שהאתר צריך, וחסמו גישה מהרשת אל .git, אל .env ואל שאר הקבצים המוסתרים.
- בצעו רוטציה לכל מה שדלף. אם קובצי .git או .env היו קריאים, החליפו את פרטי ההזדהות והמפתחות שהם הכילו. מחיקת הקובץ לא מבטלת עותק שמישהו כבר הספיק ליצור.
- הרחיקו סודות מתיקיית השורש של האתר. שמרו קובצי .env וקובצי הזדהות לענן מחוץ לכל תיקייה שמפורסמת ברשת. אם קובץ הזדהות נחשף אי פעם, בטלו אותו.
- נקו שאריות. מחקו גיבויים כמו
/wp-config.php.bakוכן/database.sql, והסירו דפי phpinfo ודפי ניפוי באגים. - סגרו נקודות קצה לניהול. הציבו את נקודות הקצה של Actuator מאחורי אימות, והשביתו את XML-RPC באתרי WordPress שאינם משתמשים בו.
על התצפיות האלה
הדוח הזה מופק על ידי 291 Heat Seeker One, מערכת ניטור האבטחה של 291 Group, שפועלת על גבי 291 Crossband, פלטפורמת תפעול האבטחה הקניינית שלנו. הדוח עוסק רק בתעבורה שמגיעה לתשתית של 291 Group הפונה לאינטרנט.
הנתונים מעוגלים, שיעורים ושינויים נמדדים לפי מספר המקורות הנפרדים ולא לפי מספר הבקשות, והדוח כולל רק דפוסים שנצפו מלפחות 20 מקורות נפרדים.