Docker Compose Analyzer

בדיקות סטטיות לקובץ docker-compose.yml, בדפדפן שלכם. שום דבר לא יוצא מהעמוד.

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

הדביקו את הקובץ, או בחרו אותו מהמחשב. עד 512 KiB.

מה הוא בודק

  • תחביר YAML, מגבלות parse בטוחות וה-schema הרשמי של Compose Specification.
  • פורטים שמפורסמים על כל הממשקים, פורטים של מסדי נתונים ו-cache, ופורטי מארח כפולים.
  • ה-socket של Docker, נתיבי מארח רגישים ותיקיות הנתונים של PostgreSQL 18.
  • ‏privileged, ‏namespaces של המארח, capabilities שנוספו ופרופילי אבטחה שכובו.
  • סודות שכתובים בקובץ, סיסמאות ברירת מחדל מוכרות ומפתחות פרטיים.
  • מדיניות restart, ‏healthchecks, סדר עלייה וגודל לוגים.

מה הוא לא עושה

  • לא מריץ את הקובץ, לא מושך images ולא בודק שהם קיימים.
  • לא סורק פגיעויות ב-images ולא קורא Dockerfiles.
  • לא טוען קבצים אחרים: ‏include, ‏extends.file, ‏env_file, ‏.env, ו-configs או secrets מקבצים לא נבדקים.
  • לא פותר ${…} מול סביבה אמיתית; הערכים נשארים כפי שנכתבו.
  • לא מכיר את הלוגיקה של האפליקציה, למשל אם משתנה מסוים באמת נדרש.
  • לכן קובץ בלי ממצאים אינו "מאובטח". בדיקה סטטית מצמצמת טעויות נפוצות; היא לא ביקורת אבטחה, ויש בה false positives ו-false negatives.

שאלות

האם הקובץ שלי עולה לשרת כלשהו?
לא. ה-Analyzer רץ בדפדפן שלכם. הקובץ לא נשלח ל-anaroq.com או לאף אחד אחר, ולא נשמר בכתובת או באחסון של הדפדפן.
קובץ בלי ממצאים אומר שההתקנה מאובטחת?
לא. ה-Analyzer קורא את הקובץ באופן סטטי, ולא רואה את ה-images, את השרת, את חומת האש או את קובץ ה-.env. הוא תופס טעויות נפוצות, ויכול לטעות לשני הכיוונים.
למה פורט מפורסם מסומן?
‏Docker מפרסם פורט על כל ממשקי הרשת כשלא מציינים כתובת, ומוסיף כללי חומת אש משלו, כך ש-ufw לא חוסם אותו. פרסום על 127.0.0.1 וגישה דרך reverse proxy או SSH tunnel משאירים אותו פרטי.
מה המשמעות של "ייתכן שלא רלוונטי"?
יש כללים שעלולים לסמן משהו שתקין אצלכם, למשל פורט שאמור להיות ציבורי. ממצאים כאלה מציינים מתי הם אולי לא רלוונטיים, כדי שתחליטו בעצמכם.
לפי איזו גרסה של Compose הוא בודק?
לפי ה-JSON schema הרשמי של Compose Specification, מוצמד ל-commit ידוע, ולפי YAML 1.2, כמו ש-Docker Compose v2 קורא אותו. כל תוצאה מציינת את ערכת הכללים וה-schema שבהם השתמשה.