Trivy הוא סורק אבטחה. ב-19 במרץ 2026 השתמש תוקף בפרטי אימות שנגנבו כדי לפרסם גרסה נגועה שלו, 0.69.4, ובאותו יום גם דרס את תגיות הגרסה של שני ה-GitHub Actions הרשמיים של הפרויקט והחליף אותן בנוזקה שגונבת פרטי אימות. הציון הוא 9.4 מתוך 10, והמקרה רשום בקטלוג החולשות המנוצלות בפועל.
מה החולשה?
זו אינה חולשה במובן הרגיל. אין כאן באג בקוד של Trivy, יש כאן השתלטות על ערוץ ההפצה שלו. הרשומה מסווגת את המקרה כקוד זדוני מושתל, ואת ההיגיון שלו כדאי להבין, כי הוא חוזר.
מה שקרה, לפי הרשומה: התוקף השיג פרטי אימות של הפרויקט, ואיתם פרסם שחרור נגוע של Trivy בגרסה 0.69.4. במקביל, בשני מאגרי ה-Actions של הפרויקט בגיטהאב, הוא ביצע force push לתגיות הגרסה. במאגר aquasecurity/trivy-action נדרסו 76 מתוך 77 תגיות, ובמאגר aquasecurity/setup-trivy כל שבע התגיות. בכולן הוחלף הקוד בנוזקה שגונבת פרטי אימות.
וכאן הנקודה שהופכת את המקרה למסוכן במיוחד. תגית גרסה בגיטהאב היא מצביע, לא חותם. אפשר להזיז אותה לקומיט אחר בלי שאיש ישים לב, וזו בדיוק הסיבה שההמלצה המקצועית היא לקבע Actions לפי מזהה הקומיט המלא ולא לפי מספר גרסה. ארגון שכתב בקובץ ה-workflow שלו את שם ה-Action ומספר גרסה קיבל באותו יום קוד אחר לגמרי מזה שבדק בעבר.
הרשומה מוסיפה פרק שני, מטריד לא פחות. המתקפה התחילה כבר בסוף פברואר 2026 ונחשפה ב-1 במרץ. אחרי החשיפה הוחלפו פרטי האימות, אבל ההחלפה לא הייתה אטומית, כלומר לא כל הפרטים בוטלו באותו רגע. לפי הרשומה, התוקף יכול היה להשתמש ב-token שעדיין היה תקף כדי לחלץ את פרטי האימות החדשים בזמן ההחלפה עצמה, שנמשכה כמה ימים, וכך לשמור על אחיזה ולבצע את המתקפה של 19 במרץ.
מי מושפע?
לפי הרשומה, שלושה רכיבים. הגרסה 0.69.4 של Trivy עצמו, בין כבינארי Go ובין כ-container image. ה-Action בשם aquasecurity/trivy-action בגרסאות 0.0.1 עד 0.34.2. וה-Action בשם aquasecurity/setup-trivy בגרסאות 0.2.0 עד 0.2.6, לפני שתגית 0.2.6 נוצרה מחדש מקומיט נקי.
הגרסאות שהרשומה מציינת כבטוחות הן Trivy 0.69.2 ו-0.69.3, trivy-action 0.35.0, ו-setup-trivy 0.2.6 בגלגולה החדש. הרשומה מונה גם גרסאות של שתי חבילות אחרות, litellm 1.82.7 ו-1.82.8, ו-telnyx 4.87.1 ו-4.87.2.
המושפעים כאן הם צוותי פיתוח ותשתיות, לא משתמשי קצה. שווה להבין למה זה חמור: ה-pipeline הוא המקום שבו הארגון מחזיק את הסודות שלו, מפתחות לענן, token-ים לגיטהאב, פרטי גישה לרישום קונטיינרים. נוזקה שרצה שם אינה צריכה לפרוץ לשום מקום, היא קוראת את מה שהוגש לה מרצון.
האם מנוצלת בפועל?
כן, וכאן זה מפורש: הרשומה מתעדת מתקפה שכבר קרתה, בתאריך ידוע. ב-26 במרץ 2026 נכנס המקרה לקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, רשימת החולשות שידוע שתוקפים מנצלים אותן בשטח, עם מועד תיקון לגופים הפדרליים עד 9 באפריל 2026. הרשומה פורסמה שלושה ימים קודם, ב-23 במרץ 2026.
מה עושים?
בדקו קודם כול אם הארגון שלכם משך או הריץ את Trivy בגרסה 0.69.4, מכל מקור שהוא, והסירו מיד כל תוצר נגוע.
עברו על כל ה-workflow-ים שמשתמשים ב-aquasecurity/trivy-action או ב-aquasecurity/setup-trivy. אם הם מפנים לתגית גרסה ולא למזהה קומיט מלא, בדקו את יומני ההרצה מ-19 ומ-20 במרץ 2026 וחפשו סימני פגיעה.
חפשו במרחב הארגוני שלכם בגיטהאב מאגר בשם tpcp-docs. לפי הרשומה, קיומו של מאגר כזה עשוי להעיד על כך שמנגנון החילוץ החלופי הופעל ושפרטי האימות אכן נגנבו.
אם קיימת אפשרות כלשהי שגרסה נגועה רצה אצלכם, התייחסו לכל סוד שהיה נגיש ל-pipeline הזה כאל סוד שדלף, והחליפו את כולם. לא רק את מה שנראה קשור.
ולבסוף, השינוי שמונע את הפעם הבאה: קבעו את ה-Actions שלכם לפי מזהה קומיט מלא וקבוע, ולא לפי תגית גרסה שיכולה לזוז מתחת לרגליים.