הפקודה ב-Docker שרצה אצלכם, לא אצלם
יש פקודה ב-Docker שרצה אוטומטית בזמן ה-build שלכם. אתם לא יודעים שהיא שם. והיא יכולה לגנוב לכם את כל הסודות.
הפקודה נקראת ONBUILD. רוב המפתחים מעולם לא שמעו עליה. וזה בדיוק מה שהופך אותה למסוכנת.
אז מה זה בכלל?
כשמישהו בונה Docker image ושם בתוכו פקודת ONBUILD, הפקודה הזאת לא רצה אצלו. היא רצה אצלכם. ברגע שאתם עושים FROM לאותו image, הפקודה מתעוררת לחיים ורצה ב-build שלכם. בשקט. בלי שום סימן. בלי שום שורה ב-Dockerfile שלכם.
עכשיו תחשבו על זה רגע.
מישהו שאתם לא מכירים העלה image ל-Docker Hub. אתם עשיתם לו FROM כי הוא נראה נוח. וברגע ה-build הוא הריץ אצלכם סקריפט שלקח את כל ה-environment variables: טוקנים של GitHub, מפתחות AWS, סודות של CI/CD. הכל.
אתם יודעים מה קורה כשמישהו מקבל את ה-GitHub token שלכם? הוא נכנס ל-repo. משנה קוד. מזריק backdoor. דוחף לפרודקשן.
זה לא תיאוריה. זה supply chain attack קלאסי, ואחד הכי פשוטים לביצוע.
הדבר הכי מטורף? שרוב הצוותים עושים docker pull לאיזה image פופולרי ופשוט סומכים עליו. בלי לבדוק מה יש בפנים. בלי לקרוא את ה-Dockerfile המקורי. בלי לחפש פקודות ONBUILD. זה כמו להכניס קבלן זר למשרד, לתת לו את כל המפתחות, ולצאת הביתה – ואז להתפלא שמשהו נגנב.
אז מה עושים?
- בודקים כל base image לפני שמשתמשים בו. עושים docker inspect ומחפשים ONBUILD triggers. אם יש שם משהו שאתם לא מבינים למה הוא שם – הוא לא צריך להיות שם.
- עוברים לעבוד עם image pinning לפי SHA256 ולא לפי tag. תגית latest יכולה להשתנות בכל רגע, ומישהו יכול לדרוס אותה עם גרסה זדונית. hash של SHA256 הוא בלתי ניתן לזיוף.
- בונים base images פנימיים משלכם. כן, זו עבודה. אבל זו עבודה שחוסכת לכם את השיחה עם עורכי הדין אחרי דליפת מידע.
אני רואה את זה אצל לקוחות כל הזמן. צוותי פיתוח שרצים מהר, עושים copy-paste ל-Dockerfile מ-Stack Overflow, ואף אחד לא עוצר לשאלה הבסיסית: מה בעצם רץ פה?
פוסט זה פורסם לראשונה בלינקדאין בתאריך 2026-06-09. — ארז מטולה
