Zlonamerni AI server sposoban da izvuče ključeve iz zvaničnog MCP paketa za Python
U zvaničnom Python paketu za MCP, protokol kojim se AI asistenti i agenti povezuju sa spoljnim alatima i servisima, pronađen je propust kroz koji zlonamerni server može da izmami pristupne podatke aplikacije. MCP je napravio Anthropic, a paket koriste programeri koji svoje AI aplikacije povezuju sa drugim MCP serverima. Kad se aplikacija poveže sa serverom koji traži prijavu, ona ga prvo pita gde je služba za prijavu, pa tamo šalje svoje podatke. Propust je u rezervnoj ruti: ako server na prvo pitanje odgovori da ne zna, paket je prihvatao adresu službe za prijavu koju mu server sam ponudi, bez provere da li je prava. Zlonamerni server tako može da uputi aplikaciju na svoju adresu i dobije njen trajni tajni ključ, jednokratni kod za prijavu i dodatni kod koji tu prijavu štiti. Sa njima napadač može da dobije ispravan pristupni token, sa svim ovlašćenjima koja aplikacija ima, a tajni ključ važi dok ga neko ne promeni. Propust je pronašla firma Cycode, pogađa verzije od 1.9.1 do 1.29.1 i od 2.0.0 do 2.1.1, a ocenjen je sa 7,5/10 za aplikacije koje rade bez čoveka i sa 6,5 kad se korisnik prijavljuje sam. Ispravka je bez najave izašla 7. septembra u verzijama 1.30.0 i 2.2.0, a upozorenje tek 28. septembra. Sami MCP serveri, lokalni klijenti i aplikacije koje samostalno upravljaju tokenima nisu pogođeni, a zloupotreba nije prijavljena.
Propust je klasičan: program veruje sagovorniku na reč. U svetu AI agenata to je posebno nezgodno, jer je cela ideja MCP-a da se aplikacija lako povezuje sa serverima koje nije pravio isti tim, a javni spiskovi MCP servera su već bili meta trovanja. U aprilu je Anthropic na prijavu arhitektonske slabosti MCP-a odgovorio da sistem radi kako je zamišljeno. Ovog puta je propust u paketu ispravljen, a upozorenje objavljeno. Tri nedelje između ispravke i upozorenja ipak nisu sitnica. Ko je u međuvremenu ažurirao paket, zatvorio je vrata, ali nije znao da treba da promeni i ključeve koje je možda već predao.
- Ažuriraj Python paket mcp na verziju 1.30.0 ili 2.2.0
- Za ClientCredentialsOAuthProvider i PrivateKeyJWTOAuthProvider dodaj parametar issuer= sa adresom prave službe za prijavu
- Posle nadogradnje obriši sačuvane OAuth registracije klijenta
- Ako se tvoja aplikacija povezivala sa MCP serverima kojima ne veruješ potpuno, promeni client secret i opozovi izdate tokene
- Povezuj agente samo sa MCP serverima čije poreklo znaš, a ne sa prvim koji se pojavi u javnom spisku