Վերադառնալ
Պաշտոնական MCP Python SDK-ի խոցելիությունը թույլ է տալիս չարամիտ սերվերներին գողանալ OAuth տվյալները
SiTech AI Team2 წთ. საკითხავი

Պաշտոնական MCP Python SDK-ի խոցելիությունը թույլ է տալիս չարամիտ սերվերներին գողանալ OAuth տվյալները

Պաշտոնական MCP Python SDK-ի խոցելիությունը թույլ էր տալիս չարամիտ MCP սերվերին վերահասցեավորել մուտքը և գողանալ client secret-ը, լիազորման կոդը և PKCE բանալին։ Ուղղումը թողարկվել է 1.30.0 և 2.2.0 տարբերակներում։

Որն է խոցելիությունը

Պաշտոնական MCP Python SDK-ում կա անվտանգության խոցելիություն, որը չարամիտ MCP սերվերին թույլ է տալիս խաբել հավելվածին և ստանալ այն OAuth տվյալները, որոնք այն օգտագործում է իրական ծառայություն մուտք գործելու համար։ Մշակողները խնդիրը նկարագրել են սեպտեմբերի 28-ին հրապարակված անվտանգության տեղեկագրում։ MCP-ն (Model Context Protocol) բաց ստանդարտ է AI հավելվածները արտաքին գործիքներին ու տվյալներին կապելու համար, իսկ այս փաթեթը նրա պաշտոնական Python SDK-ն է։

Խոցված տարբերակներում հաճախորդը MCP սերվերից հարցնում էր, թե որտեղ է իր լիազորման սերվերը, և SDK-ն միշտ չէր ստուգում այդ պատասխանը։ Չարամիտ սերվերը կարող էր հաճախորդին ուղղել հարձակվողի վերահսկած մուտքի ծառայությանը, և հաճախորդն իր client secret-ը, լիազորման կոդը ու PKCE բանալին ուղարկում էր հարձակվողին, այլ ոչ իրական մատակարարին։

Ինչու է վտանգավոր

PKCE բանալին միանգամյա արժեք է, որը պետք է կանխի գողացված կոդի կրկնակի օգտագործումը, ուստի դրա հանձնումը վերացնում է նաև այդ պաշտպանությունը։ Գողացված արժեքներով հարձակվողը կարող է վավեր access token հայցել իրական ծառայությունից։

Cycode ընկերությունը, որը հայտնել է խոցելիության մասին, ամբողջ փոխանակումը ցուցադրել է թեստում և ասել, որ ստացված թոքենը կրում է հավելվածին տրված բոլոր թույլտվությունները։ client secret-ը երկարաժամկետ է, ուստի աշխատում է մինչև փոխվելը։ Խոցելիությունը գնահատվել է բարձր՝ 7,5 առանց մարդու աշխատող երկու մատակարարների համար։ Սեպտեմբերի 29-ի դրությամբ CVE դեռ չէր շնորհվել։

Ով է խոցված

Հավելվածը խոցված է, եթե SDK-ն օգտագործում է որպես MCP հաճախորդ HTTP-ով OAuthClientProvider, ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider կամ հնացած 1.x RFC7523OAuthClientProvider մատակարարով, և կարող է միանալ սերվերի, որը լիովին չի վերահսկում, մինչ իրական մուտքի ծառայության տվյալներ ունի։ 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 տարբերակների release notes-ում հայտնվել են սեպտեմբերի 7-ին՝ որպես վարքագծի փոփոխություններ, ոչ թե անվտանգության ուղղում. տեղեկագիրը հրապարակվել է սեպտեմբերի 28-ին՝ Cycode-ի վերլուծության օրը։ Խոցելիության օգտագործմամբ հարձակումներ չեն հաղորդվել։

SSiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։