
פגיעות ב-MCP Python SDK הרשמי מאפשרת לשרתים זדוניים לגנוב פרטי OAuth
פגיעות ב-MCP Python SDK הרשמי אפשרה לשרת MCP זדוני להפנות את תהליך הכניסה ולגנוב client secret, קוד הרשאה ומפתח PKCE. התיקון שוחרר בגרסאות 1.30.0 ו-2.2.0, וההודעה פורסמה ב-28 בספטמבר.
מהי הפגיעות
ב-MCP Python SDK הרשמי נמצאה פגיעות אבטחה שמאפשרת לשרת MCP זדוני לגרום לאפליקציה למסור את פרטי ה-OAuth שבהם היא משתמשת לכניסה לשירות אמיתי. המתחזקים תיארו את הבעיה בהודעת אבטחה שפורסמה ב-28 בספטמבר. MCP (Model Context Protocol) הוא תקן פתוח לחיבור יישומי AI לכלים ולנתונים חיצוניים, והחבילה הזו היא ה-SDK הרשמי שלו ב-Python.
בגרסאות הפגיעות, לקוח שהיה צריך להתחבר שאל את שרת ה-MCP היכן נמצא שרת ההרשאה שלו, וה-SDK לא תמיד בדק את התשובה. שרת זדוני יכול היה להפנות אותו לשרת כניסה שנשלט בידי התוקף, והלקוח שלח את ה-client secret, את קוד ההרשאה ואת מפתח PKCE לתוקף במקום לספק האמיתי.
מדוע זה מסוכן
מפתח PKCE הוא ערך חד-פעמי שנועד למנוע שימוש חוזר בקוד הרשאה גנוב, ומסירתו מבטלת גם את ההגנה הזו. עם הערכים הגנובים יכול התוקף לבקש access token תקף מהשירות האמיתי.
חברת Cycode, שדיווחה על הפגיעות, הדגימה את ההחלפה המלאה בבדיקה ואמרה שהאסימון שהתקבל נושא את כל ההרשאות שהוענקו לאפליקציה. ה-client secret הוא ארוך טווח, ולכן ממשיך לעבוד עד שיוחלף. הפגיעות דורגה כגבוהה, 7.5, עבור שני הספקים שפועלים בלי נוכחות אדם, ו-6.5 עבור הספק האינטראקטיבי. נכון ל-29 בספטמבר טרם הוקצה מזהה CVE.
מי חשוף
אפליקציה חשופה אם היא משתמשת ב-SDK כלקוח MCP דרך HTTP עם OAuthClientProvider, ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider או הספק המיושן RFC7523OAuthClientProvider בגרסת 1.x, והיא יכולה להתחבר לשרת שאינה שולטת בו לחלוטין בעודה מחזיקה בפרטי התחברות לשירות אמיתי. שרתי MCP שנבנו עם ה-SDK, לקוחות stdio מקומיים ולקוחות עם אסימונים משלהם אינם חשופים.
בענף 1.x הגרסאות 1.9.1 עד 1.29.1 חשופות והתיקון הוא 1.30.0; בענף 2.x הגרסאות 2.0.0 עד 2.1.1 חשופות והתיקון הוא 2.2.0.
מה יש לעשות
יש לשדרג ל-1.30.0 או ל-2.2.0. בגרסאות המתוקנות הלקוח קובע תחילה לאיזה שירות כניסה הוא מצפה ומסרב לכל שירות שמצביע על אחר.
אפליקציות עם ClientCredentialsOAuthProvider או PrivateKeyJWTOAuthProvider חייבות גם להעביר issuer= כדי לציין לאיזה שירות כניסה שייכים הפרטים; שדרוג לבדו אינו משנה דבר בלעדיו. לספק המיושן RFC7523OAuthClientProvider אין כלל אפשרות issuer=, ולכן יש להחליפו. בגרסאות ישנות יש להתחבר רק לשרתי MCP שאתם סומכים עליהם.
בדיקות ה-issuer הופיעו בהערות השחרור של 1.30.0 ו-2.2.0 ב-7 בספטמבר תחת שינויי התנהגות ולא כתיקון אבטחה; ההודעה פורסמה ב-28 בספטמבר, באותו יום שבו פרסמה Cycode את הניתוח שלה. לא דווח על תקיפות שהשתמשו בפגיעות.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.