איור טכני מופשט על רקע אפור-צפחה כהה: עמודת שרת תיעוד צרה בצד שמאל מעבירה כרטיסים מלבניים קטנים לאורך תעלה מוארת לעבר צומת סוכן יחיד בצד ימין, אשר מחזיק טבעת של עצמים קטנים בצורת מפתח. אחד הכרטיסים מסומן בקו מתאר ענבר ונושא צללית מפתח קלושה המשתקפת בטבעת של הסוכן. מאחורי העמודה נמצאת רשת רופפת של רשומות ספרייה, שאחת מהן מוצללת בכהה יותר מהאחרות. קווים דקים בצבע טורקיז מחלקים את התעלה למקטעי מסירה. אין אנשים, אין לוגואים, אין כיתוב מכל סוג. הלוגו של OrcaRouter מורכב בפינה הימנית התחתונה.
AI Safety Incidents

CVE-2026-75130: שרת התיעוד של MCP מבית Context7 מקבל ציון 9.0, והרשומה אינה מציינת גרסה מתוקנת

מחבר

Alistair Wren

תאריך פרסום

מודלים אחרונים · 20צפו בכל המודלים →
בנצ'מרקים: Artificial Analysis · מתעדכן יומית
חזרה לכל הפוסטים

ב-18 באוגוסט 2026 פרסמה VulnCheck את CVE-2026-75130 נגד Context7, שרת תיעוד הספריות ש-Upstash מפעילה עבור Model Context Protocol ושאליו סוכני קוד שולחים שאילתות לקבלת תיעוד מותאם לגרסה. הפגם נמצא בתכונה ש-Upstash מכנה Custom AI Instructions: בעל ספרייה מצרף הנחיות לרשומת תיעוד, Context7 מגישה את ההנחיות הללו אל חלון ההקשר של כל סוכן שמחפש את הספרייה, ושום דבר בנתיב הזה לא מטהר אותן. Noma Security, שחוקר הבכיר שלה לפרצות AI, Eli Ainhorn, מוזכר כמגלה, הדגימה שרשומה מורעלת יכולה לגרום לסוכן מחובר לקרוא .env קבצים בשורש הפרויקט, לשלוח את תוכנם למאגר GitHub שהתוקף שולט בו כבעיה (issue), ולמחוק תיקיות מקומיות באמתלה של “ניקוי” — הכול מבקשת תיעוד שגרתית. לא תועד אף קורבן. שאר תקריות הסוכנים המתועדות, שלכל אחת מהן חומרה, דירוג מהימנות ודגל מחלוקת משלה, נמצאות בתוך ארכיון תקריות ה-AI, שבו אפשר לקרוא את הרשומות השכנות לרשומה הזו לצידה.

השרת של Context7 קטן, וזה החלק שכדאי להבין קודם. הניתוח של Noma מציין שהוא חושף שני כלים, resolve-library-id וquery-docs, ושהוא אינו יכול להריץ קוד, לכתוב קבצים או לגשת לרשת בכוחות עצמו. כל השפעה מתועדת מבוצעת על ידי הסוכן בקצה השני, אשר כן מחזיק בגישה למערכת הקבצים, ל-shell ולרשת במחשב של המפתח. מאגר npm מראה עד כמה בסיס ההתקנות גדול: @upstash/context7-mcp הורד 4,064,176 פעמים בשלושים הימים מ-22 ביולי עד 20 באוגוסט 2026, החלון שסביב הפרסום.

המנגנון: ספרייה מורעלת אחת, כל סוכן שפונה אליה

ההדגמה של Noma, שתוארה במאמר של ContextCrush מ-5 במרץ 2026, התנהלה בשלושה שלבים שהסוכן מבצע ולא השרת. היא רשמה ספרייה במרשם של Context7 עם כללים מורעלים מצורפים. הוראות בכללים אלה הנחו את הסוכן לחפש ולקרוא כל קובץ .env בשורש הפרויקט; הוראות נוספות הנחו אותו לפרסם את התוכן כ-issue במאגר GitHub בשליטת תוקף; קבוצה סופית הורתה לו למחוק תיקיות וקבצים מקומיים למען "ניקוי". הבקשה שמכניסה את כל זה להקשר היא בקשה רגילה — לבקש מעוזר קידוד עזרה עם ספרייה.

הסיבה שזו בעיית שרשרת אספקה ולא הזרקת פרומפט רגילה היא היכן שהמטען נמצא. התוקף לעולם לא מגיע למחשבו של הקורבן ולעולם לא צריך לשתול טקסט במסמך שהמשתמש פותח. ההוראות המורעלות יושבות ברג'יסטרי של Context7 עצמו, מתארחות ומוגשות בתשתית של Context7 עצמו, ומגיעות דרך אותו ערוץ מהימן שבו מגיעה התיעוד הלגיטימי, בלתי ניתנות להבחנה ממנו. Noma מציין שציון האמון של Context7, שמדרג ספריות לפי היסטוריית ה-GitHub שמאחוריהן, אינו מגן מפני זה, מפני שאפשר לקנות, לחטוף או לייצר חשבון ותיק. הסיכום של החברה עצמה את הנקודה המבנית חד וברור: "משטח התקיפה אינו מה ששרת ה-MCP מסוגל לעשות. הוא נמצא במה שהוא יכול לגרום לסוכן ה-AI לעשות."

שני ציונים לבאג אחד

הודעת הייעוץ כוללת CVSS 3.1 9.0 (קריטי) ו-CVSS 4.0 6.4 (בינוני). שני הווקטורים סופקו על ידי VulnCheck בתור ה-CNA המקצה, ו-NVD כולל את שניהם ללא שינוי, ומייחס כל אחד מהם ל-VulnCheck. הפיצול אינו טעות; הוא נובע מכך ששתי המסגרות מונות את אותו נזק מול מכונות שונות. CVSS 3.1 מסמן את Scope כ-Changed — ההזרקה חוצה מהשרת למכונת המפתח ומעבר לה — ולכן מחשיב במלוא המשקל את ההשפעה הגבוהה המלאה על סודיות, שלמות וזמינות של יכולות הסוכן. CVSS 4.0 מחליף את Scope במדדים נפרדים עבור המערכת הפגיעה והמערכת שאחריה: הוא מתעד אפס השפעה על סודיות, שלמות או זמינות עבור Context7 עצמו (VC:N/VI:N/VA:N) והשפעה גבוהה על המערכות במורד הזרם (SC:H/SI:H/SA:H), אשר הנוסחה שלו נותנת להן משקל נמוך יותר. השרת הוא השליח, לא הקורבן.

הפיצול מתפשט לתוך מסדי הנתונים. הודעת הייעוץ של GitHub, GHSA-97r6-3rgm-v39r, פורסמה ב-18 באוגוסט בשעה 18:32 UTC, חצי שעה לאחר ה-CVE, ודרגת החומרה המסוכמת בה מצוינת כבינוני אף על פי שהווקטור CVSS 3.1 באותו רשומה מעניק ציון 9.0. ה-EU Vulnerability Database של ENISA משקף את הרשומה כEUVD-2026-61099 ומאחסן ציון בסיס של 6.4 לפי גרסה 4.0 בלבד. רשומת הארכיון שאליה מתייחס המאמר הזה מדרגת את האירוע כגבוה — שאינו אף אחד משני הציונים שפורסמו — וזהו הדירוג של הארכיון, ולא מדידה משל עצמו.

HTML card titled 'One advisory, two scores', kicked 'OrcaRouter · AI incident archive · 2026-08-18', with the subtitle 'Identical facts, two severity bands apart. Both vectors were supplied by VulnCheck as the assigning CNA; NVD carries both unchanged and attributes each to VulnCheck'. Four chips read CVSS 3.1 9.0 critical, CVSS 4.0 6.4 medium, archive grade high and EPSS 0.49%. Three columns. 'Where the vectors agree' lists attack vector network with low complexity, privileges required low because the attacker needs a registry entry rather than the victim's machine, a routine documentation request as the trigger, and high confidentiality, integrity and availability impact in both frameworks. 'Where they diverge' lists CVSS 3.1 setting Scope to Changed and booking the jump to the developer's machine at full weight, CVSS 4.0 recording the vulnerable system as unharmed at VC:N, VI:N and VA:N, the same harms booked downstream at SC:H, SI:H and SA:H with less weight, and user interaction at required in 3.1 against passive in 4.0. 'How the databases record it' lists NVD keeping both vectors each tagged disclosure@vulncheck.com, GHSA-97r6-3rgm-v39r carrying a summary severity of medium while its own v3 vector reads 9.0, ENISA EUVD-2026-61099 storing 6.4 under version 4.0 only, and the archive grading the record high, which is neither score. A footer reads 'Sources: CVE-2026-75130 in the MITRE CVE Services record, 18 August 2026; NVD API; GitHub Advisory API; ENISA EUVD API. EPSS as recorded in ENISA's mirror.'

CVE שפורסם באוגוסט עבור גילוי ממרץ

מזהה ה-CVE הוקצה ב-17 באוגוסט 2026 ופורסם ב-18:02 UTC ב-18 באוגוסט, وهو התאריך שהרשומה נושאת. מיכל ה-CNA נושא גם תאריך שני שאינו מופיע בדפי האגרגטור: datePublic, 5 במרץ 2026 — חמישה וחצי חודשים לפני שהמזהה היה קיים, ובאותו יום שבו פרסמה Noma את ContextCrush. ההפניה הטכנית היחידה של ההודעה היא אותו מאמר ממרץ, ש-VulnCheck מתייגת עבור תיאור טכני וגם עבור ניצול.

ציר הזמן של Noma לחשיפה מסביר את הפער. הוא מדווח על הפגם ל-Upstash ב-18 בפברואר 2026 עם דוח מלא והוכחת היתכנות, מתעד כי Upstash קיבלה את הממצאים והחלה בתיקון ב-19 בפברואר, מציין כי תיקון "הופץ לפרודקשן עם סניטציה של כללים ומעקות בטיחות" ב-23 בפברואר, ומתאריך את החשיפה הציבורית ואת האימות הסופי על ידי Noma ל-5 במרץ. לפי גרסתה של Noma, הבאג מפברואר נפתר בתוך ימים.

תאריכי רישום ה-npm מתיישבים עם ציר הזמן הזה באופן שגורם לטווח המושפע להיראות מוזר. @upstash/context7-mcp 2.1.2פורסם ב-23 בפברואר 2026 בשעה 10:06 UTC, ביום שבו, לפי נומה, הגיע התיקון לפרודקשן; בשורת יומן השינויים שלו נכתב: "הסרת אזהרה מיותרת ועדכון תיאורי הכלים." 2.1.3בא בעקבותיו ב-4 במרץ 2026, יום לפני המאמר של נומה, עם הערות על דחיית בקשות GET בנקודות קצה של MCP ועל הוספת שדה מקור לתוצאות החיפוש. אף אחת מהערות השחרור לא מזכירה סניטציה, מעקות בטיחות או את ההזרקה. הטווח המושפע של ה-CNA מסתיים ב-2.1.2, מה שהופך את 2.1.3 לגרסה הראשונה מחוץ לו.

שלוש קריאות מתאימות לתאריכים האלה, ולא VulnCheck ולא Noma מציינים איזו מהן נכונה. הראשונה, שנטענה על ידי Digital Applied במאמר שפרסמה ב-18 באוגוסט וחזרה עליה AI Security Wire ב-22 באוגוסט, היא שהתיקון לקה ברגרסיה: הבילד שנשא את הטלאי של פברואר נמצא בתוך טווח הגרסאות המושפעות של אוגוסט. השנייה היא שהטווח פשוט מעוגן לבילד שהחוקר בדק, ושה-2.1.3, שיצא יום לפני החשיפה, הוא הגבול האמיתי — מסקנה שכמה אגרגטורים מסיקים באופן מכני, כולל Feedly, שמפרט "עדכנו לגרסה 2.1.3 או גרסה מאוחרת יותר" כאמצעי מיטיגציה. השלישית היא שתיקון פברואר הוחל במקום שבו הכללים מוגשים ולא בחבילת הלקוח, ובמקרה כזה טווח גרסאות npm כלל לא מתאר את התיקון. תיקון אבטחה שקט נפוץ מספיק כדי שהיעדר רשומת שינוי תואמת ב-changelog לא יכריע דבר לכאן או לכאן.

HTML card titled 'Six months, one affected range', kicked '2026-08-18-context7-mcp-ti-shi-zhu · dates', subtitled 'Times UTC. Noma's disclosure timeline and the npm registry dates do not say what the 23 February fix changed, and no release note mentions sanitisation'. Four chips read 18 Feb 2026 reported to Upstash, 23 Feb 2026 fix live and npm 2.1.2, 5 Mar 2026 datePublic, and 18 Aug 2026 CVE published. Three columns. 'Noma's February timeline' lists 18 February discovery with the report and proof of concept delivered to Upstash, 19 February acceptance and remediation, 23 February deployment of a fix with rule sanitization and guardrails, and 23 February at 10:06 UTC the npm publication of 2.1.2 with a changelog reading 'Remove unnecessary warning and update tool descriptions'. 'The March boundary' lists 4 March at 12:51 UTC the npm publication of 2.1.3 whose changelog covers 405 handling for GET requests and a source field, 5 March publication of Noma's ContextCrush writeup with final verification, 5 March as the CNA's datePublic for the CVE, and the affected range ending at 2.1.2, which makes 2.1.3 the first build outside it. 'The August record' lists 17 August reservation of the identifier, 18 August at 18:02 UTC publication by VulnCheck as CNA, 18 August at 18:32 UTC the appearance of GHSA-97r6-3rgm-v39r with no version ranges, no fixed version in the CVE, the VulnCheck advisory or the GHSA, and NVD last modified 22 October at status Deferred with no CPE configurations. A footer reads 'Sources: MITRE CVE Services record for CVE-2026-75130; Noma Security, ContextCrush, 5 March 2026; npm registry version times; GitHub Advisory API; NVD API, read 29 October 2026.'

מה מבוסס, ומה לא

• נקבע על ידי הרשומה הראשונית. מזהה ה-CVE, פרסומו ב-18 באוגוסט, VulnCheck כ-CNA, הסיווג CWE-1427 לניטרול לא תקין של קלט המשמש להנחיית LLM, הקרדיט לאלי איינהרן מ-Noma Security, וטווח מושפע של Context7 עד 2.1.2.

• נקבע על סמך המחקר של Noma. נתיב ההזרקה דרך Custom AI Instructions, הוכחת ההיתכנות בת שלושה שלבים, התצפית שלפיה השרת חושף רק resolve-library-id ו-query-docs, והקביעה שלא נצפו ראיות לניצול לרעה בשטח בבאג של פברואר.

• נקבע על ידי הרישום. תאריך הפרסום של 2.1.2 הוא 23 בפברואר 2026, תאריך הפרסום של 2.1.3 הוא 4 במרץ 2026, וקו חבילה שמאז עבר את 4.0 והגיע ל-4.4.4 ב-19 באוקטובר 2026.

• לא נקבע: האם הבניות הנוכחיות מושפעות. שום מקור אינו אומר שסדרת 4.x פגיעה, ושום מקור אינו אומר שהיא נקייה. רשומת ה-CVE, ייעוץ VulnCheck וייעוץ GitHub אינם נוקבים בגרסה מתוקנת, ורשימת טווחי הגרסאות הפגיעות בייעוץ GitHub ריקה.

• לא נקבע: כל קורבן או שימוש בשטח. הארכיון מתעד נזק אמיתי ככזב. העשרת הרשומה של CISA ב-19 באוגוסט דירגה את Exploitation כ“none”, את Automatable כ“no” ואת Technical Impact כ“total”; הפגם אינו בקטלוג KEV; המראה של ENISA מתעד EPSS של 0.49 אחוז. המחקר של Noma הוא הדגמה, לא דוח תקרית.

• לא מבוסס: פרשנות הרגרסיה עצמה. היא נשענת על צירוף מקרים בתאריכים בין ציר הזמן של התיקון לבין פרסום ב-npm, ואף מקור ראשוני אינו טוען שאותו נתיב קוד כשל פעמיים.

HTML card titled 'What the record establishes, and what it does not', kicked 'Evidence ledger · CVE-2026-75130', subtitled 'The archive grades this record confidence A, disputed false, real harm false, AI involvement confirmed. Those are its fields; this is what they rest on'. Four chips read confidence A, disputed false, real harm false, AI involvement confirmed. Three columns. 'Established by primary sources' lists CVE-2026-75130 published 18 August 2026 with VulnCheck as CNA and CWE-1427, credit to Eli Ainhorn of Noma Security, an affected range of Context7 through 2.1.2, the injection path and three-step proof of concept as Noma describes them, and npm dates of 2.1.2 on 23 February, 2.1.3 on 4 March and latest 4.4.4 on 19 October 2026. 'Not established' lists whether the 4.x line is vulnerable or clear with no source saying either way, whether February's fix regressed or was never in the client package, any victim or in-the-wild use with CISA's SSVC recording exploitation none and the flaw absent from KEV, and a fixed version, which the CVE, the VulnCheck advisory and the GHSA all leave unnamed. 'What corroborates it' lists VulnCheck's advisory restating the CVE and adding the weakness class and credit, GHSA-97r6-3rgm-v39r as an alias of the same submission thirty minutes later, ENISA EUVD-2026-61099 mirroring the record along with the CVE aggregator pages, and two secondary write-ups restating it with no newsroom coverage found on 29 October 2026. A footer reads 'Sources agree because the GitHub and ENISA entries derive from the same VulnCheck submission, not because a second party measured the flaw.'

אימות: חזרה על הדברים, ושתיקה היכן שזה חשוב

המסמכים שמתיישבים עם הרשומה נגזרים במידה רבה ממנה. ההתראה של VulnCheck משחזרת את טקסט ה-CVE ומוסיפה את סיווג החולשה ואת הקרדיט לחוקר. ההתראה ב-GitHub היא שם נרדף לאותה הגשה, שפורסמה באותו ערב, ללא טווחי גרסאות וללא סקירה בלתי תלויה. הרשומה של ENISA היא העתק מראה. Digital Applied, אחד משני המקורות שהארכיון מצטט, פרסם את הניתוח שלו ב-18 באוגוסט ועדכן אותו ב-22 באוגוסט עם שליפות חדשות מהמרשם; AI Security Wire פרסם כתבה שנייה ב-22 באוגוסט. שניהם משחזרים את ההתראה ומעבירים את הסקת הרגרסיה, ואף אחד מהם לא טוען שאימת אותה באופן בלתי תלוי.

לא מצאנו סיקור חדשותי של ה-CVE ב-29 באוקטובר 2026 — לא פריט ב-BleepingComputer, The Register או SecurityWeek — והתוצאות היו עמודי אגרגטורים של CVE ולא דיווח. היעדרות זו חשובה לאופן שבו יש לקרוא את הרשומה: הארכיון מדרג אותה כ-A, מתועדת היטב עם מקורות ראשוניים שמסכימים, והמקורות הראשוניים אכן מסכימים, אך ההסכמה כאן היא בין רשומת CNA לבין המחקר שהיא מצטטת, ולא בין שתי מדידות בלתי תלויות. כמה מעמודי האגרגטורים מוסיפים טענות שהמקורות שלהם אינם תומכים בהן; הרשומה של Feedly, למשל, קובעת שטלאי זמין ומציינת את 2.1.3, דבר שאף ייעוץ אינו עושה, ואילו העמוד של VulDB החזיר בדיקת בוט במקום תוכן ולא ניתן היה לקרוא אותו כלל.

מה השתנה, ומה לא

בכל הנוגע לבאג של פברואר, Upstash פעלה בתוך ימים: הבאג התקבל ב-19 בפברואר ותוקן ב-23 בפברואר, לפי הדיווח של Noma. לגבי הרשומה של אוגוסט, הצהרת הספק היחידה שאליה מפנה ה-CVE היא פוסט של Upstash ב-LinkedIn, המתויג שם כייעוץ ספק, שתוכנו לא היה ניתן לקריאה ללא סשן. אף ייעוץ אבטחה של GitHub המתייחס למאגר אינו כולל גרסה מתוקנת, והרשומה של NVD נמצאת בסטטוס Deferred ללא תצורות CPE ועם עדכון אחרון ב-22 באוקטובר 2026, ולכן הניתוח של NVD עצמו אינו ברשומה.

החבילה עצמה המשיכה להיות מופצת. בין 20 באפריל 2025 ל-23 באוקטובר 2026 פרסם מאגר upstash/context7 ‏163 גרסאות, ואף אחת מהערותיהן אינה מזכירה את ה-CVE הזה או מתארת ניקוי של ההוראות המותאמות אישית שנושאות את ההזרקה. זהו תיעוד של מה שהמתחזקים בחרו לרשום, ולא הוכחה שדבר לא תוקן.

מה שהרשומה משאירה בידי מפעיל הוא ניהול חשיפה ולא שורת תיקון. ההמלצות של Noma מתמקדות בבדיקת אינטגרציות MCP ובבחינת מה שעובר בין הסוכן לשרת בזמן ריצה; הפעולות המוצעות של OpenCVE הן לשדרג, להשבית או להגביל את התכונה Custom AI Instructions, ולהוסיף אימות קלט לשרת. הגרסה התפעולית של כל זה היא אותן שלוש פעולות: לנעול את גרסת שרת ה-MCP במקום לצוף על הגרסה העדכנית ביותר, להרחיק אישורי ייצור מקבצי סביבה בטקסט גלוי שהסוכן יכול לקרוא, ולהתייחס לתגובות כלים כקלט לא מהימן ולא כתיעוד שהסוכן עשוי לפעול לפיו.

עשרה שבועות לאחר הפרסום, התיעוד הציבורי עדיין נגמר בדיוק במקום שבו נגמר ב-18 באוגוסט: מזהה, שני ציונים המרוחקים זה מזה שתי דרגות, טווח מושפע שגבולו העליון הוא build ששוחרר בפברואר, ושום תיקון שאינו נקוב בשמו. כל מי שממיין את CVE-2026-75130 חייב להחליט לפי מה שהסוכנים שלו יכולים להגיע אליו, כי התיעוד לא אומר להם איזו גרסה להתקין.