Bezpieczeństwo MCP – materiały

Bezpieczeństwo MCP – materiały

Wstęp

Zacznijmy od tego, czym jest MCP (Model Context Protocol)? Jest to ogłoszony ostatnio przez Claude ustandaryzowany sposób komunikacji modeli AI ze światem zewnętrznym. Szczególnie w kontekście dostępu do danych ze świata zewnętrznego.

Źródło: https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de5b04a-5e6c-47cf-a81e-e332dd3570df_2906x990.png

Powyższa architektura pokazuje, że to interfejs, który jest w stanie połączyć różnego rodzaju API z językiem, który jest znany modelom AI. Wydaje się, że to tylko drobna standaryzacja, jednak uruchomiła ona lawinę tworzenia nowych serwerów do mniej lub bardziej popularnych usług. Jest to na tyle proste, że nikt z dużych graczy nie chce być w tyle i każdy chce udostępnić interfejs do kontaktu pomiędzy AI a swoim systemem.

Widać, jak popularne jest, to gdy przyjrzymy się ilości nowych implementacji tego protokołu.

https://github.com/punkpeye/awesome-mcp-servers

https://mcpservers.org/

https://mcp.ing/explore

https://mcpverse.dev/

Zacznijmy od przyjrzenia się dokładniej, czym jest MCP (Model Contex Protocol).

Koniecznie trzeba zacząć od oficjalnej specyfikacji protokołu MCP – https://modelcontextprotocol.io/specification

Krótkie i proste wytłumaczenie, czym jest MCP: https://read.highgrowthengineer.com/p/mcps-simply-explained

Również ciekawy i bardziej dogłębny opis samego protokołu (MCP), jak i możliwości jego użycia i potencjalnej rozbudowy w przyszłości: https://a16z.com/a-deep-dive-into-mcp-and-the-future-of-ai-tooling

Dużą zaletą tego nowego protokołu, jak i jego szybkiej adopcji jest to, że dzięki temu AI może skorzystać z wyspecjalizowanych narzędzi, aby zwiększyć swoją efektywność. Dobrym przykładem tego jest reverse engineering. Jak dotąd LLMy musiały w tym celu polegać na swoich własnych zdolnościach i analizować kod czysto na warstwie językowej. Dzięki interfejsom takim jak GhidraMCP (https://github.com/LaurieWired/GhidraMCP) mogą skorzystać one z dojrzałych rozwiązań i przetwarzać już wstępnie przetworzone dane.

MCP i bezpieczeństwo

Temat bezpieczeństwa MCP można podsumować jednym zdaniem:

Ładnie podsumowuje to artykuł:

https://elenacross7.medium.com/️-the-s-in-mcp-stands-for-security-91407b33ed6b

Opis zagrożenia Tool Poisoning Attack https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks

Celowo podatny serwer MCP (Built to test SQL Injection (SQLi) and Remote Code Execution (RCE) vulnerabilities via FastAPI, JSON-RPC, and LLM-based decision logic.)

https://github.com/evrenyal/mcpsecurity

https://github.com/harishsg993010/damn-vulnerable-MCP-server

Bardzo usystematyzowane zestawienie zagrożeń dla serwerów MCP wraz z przykładami problematycznych wywołań.

Źródło: https://evren.ninja/mcp-security.html

Kolejna lista zagrożeń związanych z serwerami MCP:

  1. Command Injection Vulnerabilities – uruchomienie złośliwego kodu z parametrów.
  2. Tool Poisoning Attacks – zaszycie złośliwych instrukcji w opisie akcji serwera.
  3. The Rug Pull: Silent Redefinition – możliwość podmiany zachowania serwera.
  4. Cross-Server Tool Shadowing – przysłonienie wyników jednego MCP przez inne.
  5. Context Leakage Risks – długo utrzymywana sesja może powodować wyciek wrażliwych informacji.
  6. Prompt Injection – nadpisanie domyślnego zachowania prompta poprzez odpowiedź z MCP.
  7. Memory Poisoning and Context Corruption – zafałszowanie kontekstu sesji poprzez złośliwą odpowiedź z MCP.

https://elenacross7.medium.com/️-the-s-in-mcp-stands-for-security-91407b33ed6b

https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks

https://medium.com/@sebuzdugan/understanding-the-security-implications-of-using-mcp-9bd3323ad42d

Tu za to mamy bardzo wnikliwą analizę zagrożeń MCP (Model Context Protocol)

  1. Name Collision – podszywanie się pod zaufane serwery.
  2. Installer Spoofing – wstrzyknięcie zainfekowanego serwera.
  3. Code Injection/Backdoor – złośliwy kod w implementacji serwera.
  4. Sandbox Escape – wyjście komendy poza zaufane środowisko i uzyskanie nieautoryzowanego dostępu do systemu operacyjnego.
  5. Slash Command Overlap – konflikt w nazwach metod dostępnych dla AI.

https://arxiv.org/pdf/2503.23278

Jak więc się bronić przed tymi zagrożeniami?

Metod jest wiele, ale daje się je podsumować do prostego podejścia Zero Trust i dbania o klasyczne zasady bezpieczeństwa:

  • zarządzanie sesją,
  • uwierzytelnianie i autoryzacja,
  • szyfrowanie on transit,
  • dobry monitoring.

https://medium.com/@sebuzdugan/understanding-the-security-implications-of-using-mcp-9bd3323ad42d

Dodatkowo mamy dostępnych kilka narzędzi do weryfikacji bezpieczeństwa.

Koncepcja użycia AI do oceny serwerów MCP

https://github.com/JeredBlu/custom-instructions/blob/main/mcpevaluatorv3.md

Ciekawy sposób weryfikowania publicznie dostępnych serwerów MCP od różnych dostawców. Ciekawe jest to, że tej metody możemy również użyć do weryfikowania bezpieczeństwa innych bibliotek lub narzędzi

https://www.youtube.com/watch?v=LYUDUOevtqk

Narzędzie do weryfikacji bezpieczeństwa serwera MCP

https://github.com/invariantlabs-ai/mcp-scan

Z drugiej strony MCP mogą też nam pomóc w codziennym bezpieczeństwie aplikacji.

Końcowe przemyślenia

Dużym problemem w serwerach MCP jest sama ich implementacja. Szczególnie gdy tak łatwo jest stworzyć taki serwer. Tym bardziej w modelu vibe codingu.

Sam protokół nie definiuje żadnych zabezpieczeń, co może prowokować słabą implementację. Jednak przy zachowaniu odpowiedniego podejścia Zero Trust z obu stron. Jako Klient nie wiemy, co zwróci nam MCP i czy to bezpieczne, a jako Serwer MCP również musimy być nieufni względem inputu.

%d bloggers like this: