
Clinejection: כיצד כותרת Issue הגיעה לטוקן ה-npm של Cline
- OrcaחדשOrcaCyber: GLM 5.3 Abliterated / Uncensored2026-11-04$3.00 / $5.00 לכל 1M טוקנים · 74 tok/s
- OrcaחדשOrcaCyber: Hy4 Abliterated / Uncensored2026-11-04$0.80 / $1.60 לכל 1M טוקנים · 113 tok/s
- OrcaחדשOrcaCyber: Kimi K3.1 Pro Abliterated / Uncensored2026-11-04$4.00 / $20.00 לכל 1M טוקנים · 43 tok/s
- orcaחדשOrca: OrcaC2 1.02026-10-303 tok/s
- OrcaחדשOrcaCyber: MiniMax M3.1 Flash Abliterated / Uncensored2026-10-29$0.80 / $1.60 לכל 1M טוקנים · 100 tok/s
- OrcaחדשOrcaCyber: GLM 5.3 Flash Abliterated / Uncensored2026-10-27$0.80 / $1.60 לכל 1M טוקנים · 101 tok/s
- OrcaחדשOrcaCyber: Qwen3.8 Flash Next Abliterated / Uncensored2026-10-26$0.80 / $1.60 לכל 1M טוקנים · 100 tok/s
- OrcaחדשOrcaCyber: MiMo V2.6 Flash Abliterated / Uncensored2026-10-26$0.80 / $1.60 לכל 1M טוקנים · 49 tok/s
- MoonshotחדשMoonshotAI: Kimi K3.1 Pro2026-10-2447אינטליגנציה
- OrcaחדשOrcaCyber: DeepSeek V4.1 Flash Abliterated / Uncensored2026-10-23$0.80 / $1.60 לכל 1M טוקנים · 76 tok/s
- minimaxMiniMax: M3.1 Flash2026-10-1929אינטליגנציה
- OrcaOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 לכל 1M טוקנים · 111 tok/s
- deepseekDeepSeek: DeepSeek V4.1 Flash 10172026-10-1733אינטליגנציה
- DeepSeekDeepSeek: DeepSeek V4.1 Flash2026-10-1740אינטליגנציה
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 לכל 1M טוקנים · 57 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955אינטליגנציה
- anthropicAnthropic: Claude Sonnet 5.52026-09-2855אינטליגנציה
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 לכל 1M טוקנים · 163 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228אינטליגנציה
- OpenAIOpenAI: GPT-6 Sol2026-09-2244אינטליגנציה
ביום 9 בפברואר 2026 פרסם חוקר האבטחה עדנאן חאן תיאור של פגיעות שהוא דיווח עליה באופן פרטי ל-Cline ב-1 בינואר: עוזר הקידוד בינה מלאכותית בקוד פתוח חיבר ממיין issue אוטומטי, שנבנה על GitHub Action בשם claude-code-action של Anthropic, לפרומפט שהדביק כל כותרת של issue נכנס ב-GitHub ישירות לתוך הוראות המודל. כל חשבון GitHub יכול היה להפעיל אותו על ידי פתיחת issue, ובשחזור של חאן כותרת שנוסחה כהוראה גרמה לסוכן להריץ פקודת shell בתוך ה-workflow. לאחר מכן הוא עקב אחר המסלול מאותה דריסת רגל, דרך הרעלת מטמון של GitHub Actions, אל פרטי הגישה להפצה עבור VS Code Marketplace, OpenVSX ו-npm. שמונה ימים לאחר ש-Cline תיקנה את ה-workflow, נעשה שימוש בטוקן פרסום ל-npm שלדעת Cline כבר הוחלף כדי לפרסם את cline 2.3.0, אשר התקין את OpenClaw בכל מכונה שהתקינה את החבילה. הרשומה המלאה, עם דירוגי החומרה והביטחון שלה, מופיעה ב־Orca AI Incident Archive, לצד רשומות שרשרת האספקה השכנות מאותה תקופה.
שני תאריכים, לא אחד
הארכיון מתארך רשומה זו ל-9 בפברואר 2026, ברמת דיוק של יום, וזהו היום שבו חאן פרסם את הכתיבה שלו ב-adnanthekhan.com. זה אינו היום שבו הופיעה החבילה הזדונית. הפגיעוּת עצמה הוצגה ב-21 בדצמבר 2025, בקומיט שהוסיף את זרימת העבודה של הטריאז' למאגר cline/cline, והיא נשארה פעילה עד ש-Cline מחק את זרימת העבודה ב-9 בפברואר. הפרסום הלא-מורשה ב-npm הגיע ב-17 בפברואר, שמונה ימים לאחר התיקון וארבעים ושבעה ימים לאחר הדיווח הפרטי הראשון של חאן.
חשוב להפריד בין שני התאריכים האלה, משום שהעובדה המשמעותית ביותר בתיק נמצאת ברווח שביניהם: הדלת נסגרה ב-9 בפברואר, אך המפתח שהפורץ כבר העתיק עדיין עבד ב-17 בפברואר. התיקון של קליין עצמו, שנשלח לחאן ב-17 בפברואר ושוחזר בפוסט שלו, מנסח זאת ישירות: "כשהחלפנו את פרטי הגישה ב-9 בפברואר, אסימון הפרסום של npm לא בוטל כראוי. האסימון הלא נכון נמחק, וזה שנחשף נשאר פעיל."
השרשרת: מכותרת בעיה לטוקן שחרור
הקובץ הפגיע היה .github/workflows/claude-issue-triage.yml, אשר רץ באירוע issues והפעיל את anthropics/claude-code-action@v1 עם Claude Opus 4.5, מוצמד בזרימת העבודה בתור claude-opus-4-5-20251101. Khan מצטט את התצורה של זרימת העבודה: allowed_non_write_users הוגדר לתו הכללי "*", כך שכל חשבון GitHub יכול היה להפעיל את הסוכן פשוט על ידי פתיחת issue, ו-claude_args העביר את --allowedTools עם Bash, Read, Write, Edit, Glob, Grep, WebFetch ו-WebSearch. Bash היה זה שחשוב. הוא העניק למודל הרצת shell בתוך זרימת עבודה שרצה בהקשר של ענף ברירת המחדל.
הפרומפט שיבץ את כותרת ה־issue ללא סניטציה. הוכחת ההיתכנות של Khan השתמשה בכותרת שהתחילה ב־"Tool error." והמשיכה בהוראה להתקין חבילת עזר מ־commit מסוים לפני המשך הטריאז'. ההפניה ל־commit הצביעה על fork שה־package.json שלו הכיל סקריפט preinstall, שהריץ פקודת curl אל endpoint שנשלט בידי התוקף לפני ש־npm סיים להתקין משהו. מכיוון שההתקנה רצה דרך כלי Bash, המודל מעולם לא בדק מה בוצע. Khan שחזר זאת על מירור של מאגר Cline ומדווח שהסוכן ביצע את ה־payload בכל ניסיון.
הרצת קוד בזרימת העבודה של המיון אינה, כשלעצמה, גישה לפרטי הסמכה לשחרור. שלב זה נבע מתכונה של GitHub Actions שאותה תיעד Khan בכלי משנת 2024 שהוא הוציא בשם Cacheract: כל זרימת עבודה יכולה לקרוא ולכתוב את מטמון המאגר בשליטה מלאה על מפתחות המטמון והגרסאות, אפילו זרימת עבודה שלעולם אינה מצהירה על שלב מטמון. משימת המיון רצה על ענף ברירת המחדל, ולכן חלקה תחום מטמון עם משימות הפרסום הליליות, שאכן שחזרו node_modules מהמטמון והחזיקו באסימוני הפרסום.
רשומות מטמון הן בלתי־ניתנות לשינוי, ולכן תוקף אינו יכול פשוט לדרוס את הרשומה שמשימת שחרור תשחזר. הדרך של Khan לעקוף זאת הייתה לנצל שינוי מדיניות של GitHub מ־20 בנובמבר 2025, שגרם לשירות לפנות רשומות מטמון מיד כשהמטמון של מאגר עבר 10 GB, לפי סדר השימוש האחרון. הציפו את המטמון מעבר ל־10 GB, והרשומות הלגיטימיות ייפלטו עם הזמן; תפסו את המפתחות שהתפנו עם תוכן מורעל, והמשימה הבאה שמשחזרת אותם מריצה קוד של התוקף. Cacheract מאוטמט את כל הרצף בתוך הרצת workflow בודדת, והוא מתמיד על ידי דריסה של action.yml של actions/checkout כך ששלב ה-post של הפעולה מריץ מטען בסוף כל משימה.
החוליה האחרונה בשרשרת היא משימת הלילה, שרצה בסביבות השעה 2 לפנות בוקר UTC, משחזרת את ה-node_modules המורעל ומתפוצצת. מה שיוצא ממנה הוא VSCE_PAT, OVSX_PAT ו-NPM_RELEASE_TOKEN, אישורי הגישה ל-VS Code Marketplace, ל-OpenVSX ול-npm בהתאמה. האם כל חוליה רצה מול המאגר של Cline עצמו, ובסדר הזה, היא שאלה נפרדת, שנדונה בהמשך.

מדוע אישורי הגישה הליליים היו אישורי גישה לסביבת הייצור
ההתנגדות הברורה היא ששחרורי לילה ושחרורי ייצור אמורים להחזיק בסודות שונים. תשובתו של חאן היא שההפרדה הייתה סמלית בלבד. OpenVSX ו-VS Code Marketplace קושרים אסימון פרסום לזהות של מפרסם, ולא לתוסף בודד, וגם התוסף Cline היציב וגם גרסת הלילה שלו פורסמו תחת אותה זהות, שאותה חאן מזהה ב-OpenVSX בשם saoudrizwan. ב-npm, מודל האסימונים העדינים קשור לחבילה, ו-Cline פרסם את גרסאות ה-CLI היציבות ואת גרסאות הלילה שלו לאותה חבילת cline. לכן אסימון שהונפק עבור משימת הלילה יכול היה לפרסם את ארטיפקט הייצור — וזה בדיוק מה שקרה שמונה ימים לאחר מכן.
ההצגה של חאן עצמו את ההשפעה נשענת על היקף: הוא מצטט את ההכרזה של Cline שלפיה היא עברה 5 מיליון התקנות, ומציין שעדכון תוסף שנדחף באמצעות פרטי התחברות גנובים פועל בהקשר של כל מפתח שהעורך שלו מתעדכן אוטומטית, עם ההרשאות של אותו מפתח וכל מפתחות, אסימונים וקוד מקור שנמצאים על המחשב.
מה פורסם בפועל, ומה הוא עשה
התוצר שפורסם היה Cline 2.3.0, והוא היה קטן. חותמות הזמן של מרשם ה-npm עצמו קובעות את 2.3.0 בשעה 11:26:51 UTC ב-17 בפברואר 2026 ואת 2.4.0 הנקייה בשעה 19:23:08 UTC באותו יום, חשיפה שהייעוץ של Cline מעריך בכ-שמונה שעות, עד ש-2.3.0 הוצא משימוש בשעה 11:30 AM PT. ה-package.json של החבילה הכיל שורה אחת שנוספה, סקריפט postinstall שמכיל את הפקודה npm install -g openclaw@latest. הייעוץ של Cline, GHSA-9ppg-jx86-fqw7, קובע שלא שונו קבצים אחרים בחבילה ושה-dist/cli.mjs זהה בייט-בבייט לבנייה הלגיטימית 2.2.3.
OpenClaw הוא מסגרת סוכני AI אמיתית בקוד פתוח, לא תוכנה זדונית, וההתראה של Cline אומרת זאת במפורש: זהו פרויקט לגיטימי, אך ההתקנה שלו לא אושרה ולא הייתה מכוונת. Endor Labs, שנית�ה את קובץ ה-tarball, העריכה את ההשפעה הכוללת כנמוכה בטענה שההתקנה לא הפעילה את ה-daemon של Gateway של OpenClaw. הניתוח של StepSecurity בוחן את הצד השני של הדברים: התקנה גלובלית משאירה את המסגרת בדיסק עם כל אישורי הגישה והגישה לקבצים שיש למשתמש המתקין, והעיצוב של OpenClaw — gateway מקומי מתמשך עם operator API — הופך אותו לדבר בעל ערך רב להימצא שם. שתי ההערכות אינן סותרות. האחת מתארת מה רץ במהלך חלון הזמן; האחרת מתארת מה נותר מאחור לאחר מכן.
היקף ההורדות הוא המספר היחיד שיש להתייחס אליו בזהירות. StepSecurity דיווחה שהגרסה שנפגעה הורדה בערך 4,000 פעמים לפני שהוצאה משימוש, ו-The Register חזר על הנתון הזה. Endor Labs העריכה את מספר ההורדות החודשי של cline בין 19 בינואר ל-17 בפברואר ב-418,545, מה שמתאר את התעבורה הרגילה של החבילה ולא את הבנייה הזדונית. אף אחד מהנתונים אינו סופר מכונות: ספירת הורדות אינה ספירה של מפתחים שנפגעו, ואף גורם לא פרסם נתון על בסיס ההתקנות של 2.3.0. צוות Threat Intelligence של Microsoft אמר ב-X כי הבחין ב"עלייה קטנה אך מורגשת" בהתקנות של OpenClaw ב-17 בפברואר, שמקורה בסקריפט ההתקנה של Cline, כפי שדווח ב-The Hacker News.
רשומת הייעוץ של GitHub עבור GHSA-9ppg-jx86-fqw7 אינה כוללת CVE ואינה כוללת CWE, וחומרתה היא Low. הדירוג הזה מתייחס למטען הבלתי מזיק, לא לגניבת פרטי הכניסה, והוא עומד באופן מוזר לצד הדירוג הקריטי של הארכיון עבור האירוע עצמו. הייעוץ רושם את 2.3.0 כגרסה המושפעת ואת 2.4.0 כתיקון.
הגילוי ש-Cline לא השיבה עליו
לוח הזמנים שלפני הפרסום של חאן הוא החלק בתיעוד שעסוק הכי פחות במודל והכי הרבה בתהליך. הוא הגיש GHSA דרך דיווח פגיעויות פרטי של GitHub ב-1 בינואר 2026 ושלח דוא"ל לאיש הקשר הביטחוני הרשום בעמוד האמון של Cline באותו יום. הוא שלח הודעת המשך למפתח של Cline ב-8 בינואר. הוא ניסה לשלוח הודעה ישירה למנכ"ל Cline ב-X ב-18 בינואר. הוא כתב שוב ב-7 בפברואר וקיבל רק מספר כרטיס אוטומטי. הוא פרסם ב-9 בפברואר.
Cline מיזג את התיקון, בקשת משיכה 9211, כשלושים דקות עד שעה לאחר מכן. ה-PR מוחק שלושה קובצי זרימת עבודה, claude-issue-triage.yml, claude-pr-review.yml ו-cline-pr-review.yml, ומסיר את המטמון מ-publish.yml, publish-nightly.yml, npm-nightly.yaml ו-npm-main.yaml, שבעה קבצים בסך הכול, כאשר שלבי ההתקנה הפכו לבלתי-מותנים כעת, מאחר שאין פגיעת מטמון שעליה ניתן להסתמך.
תגובתה הפומבית של Cline ב-10 בפברואר, כפי שצוטטה בפוסט של חאן, קיבלה את הממצא ופירטה צעדי מיתון מיידיים: הסרת תהליכי העבודה לסקירת issues ו-PR באמצעות בוט, הסרת actions/cache מתהליכי פרסום שמטפלים באישורי שחרור, והחלפת האישורים הרלוונטיים, כולל טוקנים של בוט, ספק ופרסום. היא גם הודתה בהתנהלות: "אנו מודים שזמן התגובה שלנו לדיווח הראשוני שלך היה בלתי קביל. דיווח שהוגש ב-1 בינואר לא היה אמור לדרוש חשיפה ציבורית ב-9 בפברואר כדי שיטופל."
ב-11 בפברואר מסרה Cline כי השלימה סבב החלפה מלא של VSCE_PAT, OVSX_PAT ו-NPM_RELEASE_TOKEN, וכי ביקורת של כל גרסה שפורסמה בכל שלושת ערוצי ההפצה בין 21 בדצמבר 2025 ל-9 בפברואר 2026 העלתה שכל גרסה ב-Marketplace וב-OpenVSX הותאמה לפרסום GitHub מתויג, ושאר 41 הגרסאות ב-npm היו עקביות עם קוד המקור. היא הסיקה שלא פורסמה שום גרסה בלתי מורשית "בחלון החשיפה הנטען". שישה ימים לאחר מכן היא תיקנה את הדברים, בהודעה המצוטטת לעיל: אסימון ה-npm לא בוטל, וגרסה 2.3.0 פורסמה באמצעותו.

מבוסס, מיוחס, לא פתור
• מבוסס. תצורת זרימת העבודה ציבורית ופורסמה לפני התיקון. חאן שחזר את הזרקת הפרומפט על מראה של המאגר. Cline מיזג את התיקון והוציא ייעוץ המאשר את פרסום 2.3.0, את שורת ה-postinstall שנוספה, את קובץ ה-CLI שלא השתנה, את חלון שמונה השעות ואת כשל הטוקן. חותמות הזמן של מאגר ה-npm עבור 2.3.0 ו-2.4.0 תואמות את הזמנים בייעוץ. הארכיון מדרג את הרשומה כקריטית, ברמת ביטחון A, עם נזק ממשי מתועד וללא דגל מחלוקת.
• מיוחס, אך לא מבוסס. מי פרסם את 2.3.0 נותר ייחוס פתוח. דוח החקירה הפורנזי שפורסמו על ידי Michael Bargury וכלי חקירה אוטומטי בשם Raptor ב-19 בפברואר מזכיר חשבון GitHub בשם glthub-actions, ומדווח בביטחון גבוה שחשבון זה ביצע fork של cline/cline, פתח את issue 8904 ב-28 בינואר 2026 בשעה 03:51 UTC עם הכותרת המוזרקת, והשתמש בקומיט של fork כדי להריץ מטען מ-gist. Khan אישר שהחשבונות gcbrun ו-Dev11940518 הם שלו ושה-glthub-actions אינו. החשבון כבר נמחק או הושעה כאשר פורסם הדוח, ו-Cline לא נקבה בשם איש. יש להתייחס לזהות כממצא של צד שלישי.
• שנוי במחלוקת מבחינת האופי, לא מבחינת העובדות. ברגורי מעריך כי האירוע עולה בקנה אחד עם הדגמת מחקר אבטחה ולא עם קמפיין זדוני, בציינו את המטען הבלתי מזיק ואת ההיסטוריה של השחקן מול מאגר אוטומציה של New Relic. קליין מכנה זאת פרסום לא מורשה, וחאן כותב כי השחקן שפרסם את 2.3.0 הוא "יש להניח" אותו אחד שהרעיל את המטמונים. איש לא הראה כוונה לגרום נזק, ואיש לא הראה שלא הייתה כזו.
• לא נפתר. ההערה של Khan עצמו לפני הפרסום מקפידה בנקודה שדיווחים מאוחרים יותר לעיתים משטחים: בין 31 בינואר ל-3 בפברואר 2026 כמה ריצות ליליות נכשלו בשל שלב Post Checkout שלא הפיק פלט, וזהו אינדיקטור לחדירה של Cacheract, וזרימת עבודת הטריאז' היא המסלול הברור ביותר אך לא הוכח שהייתה נקודת הכניסה לפעילות הזו. גם אף גורם לא פרסם ראיות לכך שנעשה שימוש בטוקנים של Marketplace או OpenVSX; הארטיפקט היחיד שמישהו הציג הוא בניית ה-npm.

מה השתנה לאחר מכן
התיקון יושם בכמה שכבות בעת ובעונה אחת, וכדאי לציין כל אחת מהן משום שהן מתייחסות לחלקים שונים של הכשל. זרימת העבודה שהייתה נגישה לגורם חיצוני נמחקה ולא צומצמה. המטמון הוסר מארבע זרימות העבודה של השחרור שמחזיקות סודות פרסום, ולא מהמאגר כולו, וזה השינוי ששובר את נקודת הציר. אישורי הגישה הוחלפו, ולאחר התיקון של 17 בפברואר אסימון ה-npm הנכון בוטל. התראת האבטחה של Cline מציינת שפרסום ל-npm משתמש כעת ב-OIDC provenance דרך GitHub Actions, וניתוח המטא-נתונים של StepSecurity מראה מדוע זה היה חשוב: הגרסאות הלגיטימיות כבר נשאו אישורי provenance, ו-2.3.0 הייתה החריגה שפורסמה על ידי חשבון אנושי. הפער היה שמסלול האסימון ארוך-הטווח נשאר פתוח לצד פרסום מהימן, וזה בדיוק הדבר שלדברי Endor Labs המתחזקים צריכים לסגור. Cline פרסמה את GHSA-9ppg-jx86-fqw7, סימנה את 2.3.0 כ-deprecated עם ההודעה שאין להתקין אותה, והפנתה משתמשים ל-2.4.0 ואילך.
ההמלצות המבניות של Khan מרחיקות לכת מעבר למה שיושם, וראוי לתעד אותן כשלו, לא כשל Cline: להסיר את Bash, Write ו-Edit מכל זרימת עבודה של טריאז' ולהשאיר לה קריאות קבצים ואת קריאות ה-GitHub CLI הספציפיות שהיא זקוקה להן; לעולם לא לשחזר מטמון במשימה שמחזיקה בסודות פרסום של פרודקשן; ולהעניק למהדורות ה-nightly מרחב שמות משלהן ב-registry וזהות פרסום ייעודית שאינה של פרודקשן, כך שטוקן nightly גנוב לא יוכל לפרסם מהדורה יציבה כלל.
הפער של שמונה ימים בין התיקון לפרסום הזדוני הוא הפרט שהופך את התיעוד הזה לראוי להישמר. כל שלב בשרשרת היה טכניקה מוכרת; חאן פרסם את כלי הרעלת המטמון, ומחקר PromptPwnd של Aikido Security מדצמבר 2025 תיעד את אותו דפוס של תצורת מיון שגויה. מה שהרכיב אותם לכדי תקרית שרשרת אספקה היה תהליך עבודה שאפשר לטקסט של זר להגיע אל מעטפת פקודה, מטמון משותף עם משימות שהחזיקו במפתחות שחרור, ורוטציית אסימון שהחמיצה אישור גישה אחד. כל אחד משלושת התיקונים היה שובר את השרשרת בעצמו; השלישי הגיע באיחור של שמונה ימים.
