Docker Compose Analyzer
בדיקות סטטיות לקובץ docker-compose.yml, בדפדפן שלכם. שום דבר לא יוצא מהעמוד.
הקובץ נשאר בדפדפן הזה. הניתוח רץ בעמוד הזה. הקובץ לא עולה לשום שרת, לא נשמר בכתובת או באחסון של הדפדפן, ולא נשלח ל-analytics. אם אישרתם analytics, אנחנו סופרים רק כמה ממצאים מכל חומרה הבדיקה מצאה.
מה הוא בודק
- תחביר 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 שבהם השתמשה.