Zaštitite svoj MCP sistem: 11 uobičajenih rizika i kako se zaštititi od njih

Ovaj vodič objašnjava MCP bezbednost i obuhvata 11 uobičajenih rizika za MCP sisteme, od indirektnog ubacivanja promptova do kompromitovanja lokalnog servera, kao i praktične korake koji pomažu u zaštiti od svakog od njih.

Diagram of how MCP works: the MCP host (the AI app) sends tool requests through an MCP client to an MCP server, which offers its tools and returns results to the host.

MCP rizici generalno spadaju u tri kategorije: manipulacija LLM-om, bezbednost podataka i pristupa i ranjivosti infrastrukture.

Budući da MCP serveri često pružaju pristup velikom broju internih sistema, potencijalni bezbednosni rizik je visok. Međutim, verovatnoća u velikoj meri zavisi od podešavanja.

Pojedinci i preduzeća mogu preduzeti brojne korake kako bi osigurali zaštitu svojih sistema, a protokoli uvek treba da budu srazmerni mogućnostima i podacima koje povezani MCP serveri mogu da izlože.

Šta je MCP i šta je MCP bezbednost?

Model Context Protocol (MCP) je otvoreni standard koji je kreirala kompanija Anthropic za povezivanje aplikacija zasnovanih na LLM-ovima (ili hostova) sa eksternim sistemima.

Postoje tri osnovne komponente MCP sistema: host, klijent i server. Host, koji je često AI asistent, povezuje se sa eksternim MCP serverom preko klijenta. Zatim može da šalje zahteve za pokretanje eksternih funkcionalnosti (alata) ili preuzimanje podataka (resursa) ili promptova koji se dodaju u kontekstni prozor LLM-a.

MCP bezbednost se odnosi na protokole koji štite veze i komponente u MCP sistemu. Postoji nekoliko ključnih izazova jedinstvenih za MCP, uključujući činjenicu da AI aplikacije često imaju agentske mogućnosti i da se zlonamerna uputstva mogu ugraditi u poruke.

Poznati problemi koji nisu specifični za MCP, kao što su ubacivanje promptova, slaba autentifikacija i nebezbedne integracije trećih strana, takođe predstavljaju problem. Kao i svaki računarski sistem, MCP se za zaštitu oslanja na kombinaciju proceduralnih protokola, poput korišćenja isključivo pouzdanih servera, i tehničkih kontrola, poput API mrežnih prolaza.

Koliko su ozbiljne MCP pretnje?

MCP je brzo postao popularna LLM tehnologija i koriste ga mnoge organizacije i aplikacije namenjene potrošačima. Budući da su MCP serveri programi napisani u kodu, oni imaju ranjivosti kao i svaka druga aplikacija.

Međutim, kada organizacije koriste MCP u kontrolisanim implementacijama, on je generalno bezbedan. Postoji značajna razlika između izgradnje sistema sa pouzdanim serverima i proverenim dozvolama i povezivanja autonomnog agenta sa desetak neproverenih servera.

Pretnja br. 1: Indirektno ubacivanje promptova

Napadač može da postavi uputstva namenjena LLM-u unutar dokumenta, veb-stranice ili izlaza alata koji MCP server vraća. Ako host doda ovaj materijal u kontekstni prozor, postoji mogućnost da LLM to pogrešno protumači kao prava uputstva.

Štaviše, ova uputstva na prvi pogled mogu delovati prikladno. Na primer, preuzeti tiket za podršku može da naloži LLM-u da izveze osetljive evidencije o klijentima pre generisanja odgovora.

Kako se zaštititi od indirektnog ubacivanja promptova

Ubacivanje promptova obično treba rešavati na nivou hosta. Eksterni sadržaj treba označiti kao nepouzdan, a zahtevi za osetljive informacije treba da zahtevaju informisano odobrenje čoveka uključenog u proces. Može biti korisno i bezbednosno testiranje koje podrazumeva pozivanje zlonamernih dokumenata ili podataka kako bi se videlo kako host i LLM reaguju.

Pretnja br. 2: Trovanje alata i rug pull napadi

U napadu trovanja alata, zlonamerni kod se dodaje u opis ili šemu MCP alata. To može da utiče na LLM u fazi otkrivanja, kada MCP prvi put izlaže dostupne alate.

Rug pull je posebna vrsta trovanja alata u kojoj se menjaju odobreni metapodaci. Ovaj oblik trovanja alata može da promeni način na koji model koristi pouzdane alate, umesto da direktno pokrene zlonamerni alat.

Kako se zaštititi od trovanja alata i rug pull napada

Host treba da pregleda kompletnu definiciju svakog alata pre korišćenja i uporedi je sa listom odobrenih pouzdanih alata, čime otkriva sve promene. Provere parametara mogu pomoći u prepoznavanju potencijalno opasnih mogućnosti i njihovom označavanju.

Pretnja br. 3: Prekomerne dozvole

Uobičajeno je da korisnici MCP serverima i povezanim LLM-ovima (preko hosta) dodele više dozvola nego što je potrebno za zadatak. Na primer, dozvole za pisanje kada bi bile dovoljne dozvole samo za čitanje, ili potpun pristup internom sistemu datoteka (kao što je Google Drive).

Ovo opsežno postepeno širenje dozvola može da poveća radijus štete drugih ranjivosti, poput zlonamernih poziva alata. Uobičajeno je da se dozvole „nagomilavaju“ dok korisnici dodeljuju privilegije tokom svakodnevnog rada sa AI alatima u preduzeću (gomilanje privilegija).

Kako se zaštititi od prekomernih dozvola

Najdirektniji način zaštite od ovog problema je ograničavanje dozvola i OAuth opsega (čitanje, pisanje, potpun pristup itd.). Odobrenja korisnika, posebno za osetljive operacije, važan su deo toga, ali dozvole treba kontrolisati i na nivou sistema (operativni sistem, MCP host i server).

Pretnja br. 4: Slaba autentifikacija i autorizacija

Autentifikacija potvrđuje identitet korisnika ili aplikacija koji se povezuju sa MCP serverom. Autorizacija određuje kojim alatima i resursima mogu da pristupe.

Loše konfigurisani MCP serveri mogu da prihvate zahteve ili tokene bez pravilne autentifikacije korisnika ili primene ograničenja pristupa. Pored toga, ukradeni akreditivi mogu zlonamernim akterima omogućiti pristup ako je validacija slaba.

Kako se zaštititi od slabe autentifikacije i autorizacije

Autentifikacija zasnovana na OAuth-u za udaljene MCP servere, kratkotrajni tokeni i kontrola pristupa zasnovana na ulogama (RBAS) mere su koje pomažu u ublažavanju slabe autorizacije. Pristup zasnovan na ulogama je koristan jer sprečava korisnike da pristupaju podacima i alatima izvan svojih dozvola, čak i ako sam server ima pristup.

Pretnja br. 5: Curenje i zloupotreba akreditiva

MCP serveri rutinski koriste akreditive kao što su API ključevi i OAuth pristupni tokeni za povezivanje sa eksternim uslugama. Ako su oni izloženi ili zloupotrebljeni, napadači mogu dobiti pristup osetljivim podacima i funkcionalnostima.

Jedan primer je prosleđivanje tokena (token passthrough), kada MCP server prosleđuje pristupni token drugoj usluzi bez provere da li je on zaista namenjen usluzi koja ga prima. To zauzvrat može dovesti do curenja ako usluga koja ga prima nema odgovarajuću zaštitu.

Kako se zaštititi od curenja i zloupotrebe akreditiva

Kratkotrajni tokeni uskog opsega i rotacija akreditiva efikasno ograničavaju meru u kojoj zlonamerni akteri mogu da iskoriste procurele podatke. API ključeve i akreditive uvek treba bezbedno čuvati pomoću menadžera tajni.

Pretnja br. 6: Napadi zbunjenog zastupnika

Napad zbunjenog zastupnika nastaje kada napadač prevari pouzdanu aplikaciju da iskoristi svoje dozvole za izvršavanje radnje koju legitimni korisnik nije autorizovao. U ovom slučaju, MCP server je zastupnik.

Napadač će iskoristiti ranjivost MCP servera (kao što su slabe OAuth provere) da izvrši zlonameran proces, kao što je poziv alata ili preuzimanje podataka.

Kako se zaštititi od napada zbunjenog zastupnika

Validacija autorizacije, pri kojoj se za svaki poziv alata proverava da li pripada određenom korisniku, pomaže u ograničavanju napada zbunjenog zastupnika. Pored toga, osetljive radnje, kao što je izvoz podataka, treba da zahtevaju izričitu autorizaciju.

Pretnja br. 7: Zlonamerni serveri i kompromitovane zavisnosti

MCP serveri mogu da sadrže zlonamerni kod (oni su u suštini eksterni programi) ili da se oslanjaju na kompromitovane zavisnosti, kao što su biblioteke trećih strana. Ovo je problem lanca snabdevanja softverom, a ne problem jedinstven za MCP.

Jedan jednostavan način na koji se to može dogoditi jeste da napadač distribuira integraciju koja deluje legitimno. Kada se podesi, ona može da krade i ponovo koristi akreditive, pristupa osetljivim podacima i izvršava neovlašćene operacije.

Kako se zaštititi od zlonamernih servera i kompromitovanih zavisnosti

Instalirajte MCP servere samo iz pouzdanih i proverenih izvora. Ako je moguće, pregledajte njihov kod i uvek proverite sve spoljne zavisnosti. Postarajte se da se serveri redovno ažuriraju i zakrpe.

Pretnja br. 8: Falsifikovanje zahteva na strani servera (SSRF)

Falsifikovanje zahteva na strani servera (SSRF) nastaje kada napadač prevari MCP server da šalje mrežne zahteve ka internim adresama kojima korisnik nije nameravao da pristupi.

Ovo se može dogoditi kada MCP server izlaže alat koji preuzima informacije sa URL adrese. Ako napadač može da utiče na URL parametar, može da ga promeni u željenu mrežnu adresu, kao što je interni API ili usluga u oblaku. To može dovesti do preuzimanja osetljivih podataka i njihovog potencijalnog izlaganja

Kako se zaštititi od falsifikovanja zahteva na strani servera (SSRF)

MCP serveri uvek treba da validiraju URL adrese, blokiraju pristup ograničenim internim mrežnim adresama i sprečavaju odlazni mrežni pristup. Preusmeravanja takođe treba da poštuju ovaj protokol.

Pretnja br. 9: Otmica sesije

Otmica sesije podrazumeva da napadač preuzme kontrolu nad aktivnom vezom između MCP klijenta i servera.

Na primer, napadač može da ukrade identifikator sesije iz loše zaštićene MCP aplikacije (npr. hosta ili servera). Ako MCP server prihvati ovaj identifikator, napadač potencijalno može da poziva alate sa legitimnim dozvolama korisnika.

Kako se zaštititi od

Rizik od otmice sesije može se smanjiti strogom proverom identiteta u svim aplikacijama u MCP sistemu. Šifrovanje između MCP klijenata i udaljenih servera takođe je neophodno kako bi se sprečilo otkrivanje identifikatora sesije.

Pretnja br. 10: Mix-up napadi

U mix-up napadu, napadač navodi MCP klijenta da pošalje autorizacioni kod zlonamernom serveru za autorizaciju koji se nalazi između klijenta i MCP servera. Server za autorizaciju je aplikacija koja izdaje OAuth pristupne tokene nakon što proveri da li je traženi pristup autorizovan.

Ako se MCP host povezuje sa više usluga, od kojih svaka koristi drugačiji server za autorizaciju, napadač potencijalno može da preuzme kontrolu nad jednim od njih (na primer, registrovanjem zlonamerne usluge) i navede klijenta da autorizacioni kod koji je izdao legitimni server pošalje zlonamernom serveru. Ova zamena može napadaču omogućiti da se lažno predstavi kao autorizovana aplikacija i dobije pristup zaštićenim uslugama.

Kako se zaštititi od mix-up napada

MCP klijenti treba da proveravaju identitet servera za autorizaciju tokom celog OAuth procesa. Konkretno, treba da uporede identifikator izdavaoca servera (iss) sa očekivanim identitetom i odbace neusklađenosti.

Pretnja br. 11: Kompromitovanje lokalnog MCP servera

Mnogi MCP serveri rade na lokalnom računaru korisnika. Korisnik može da instalira server od treće strane ili da ga sam napravi. Ako napadač uspe da kompromituje ovaj lokalni MCP server, potencijalno može da dobije pristup velikim delovima lokalnog sistema.

Napadač može da dobije pristup na različite načine. Može da distribuira zlonamerni server prerušen u legitimnu integraciju, da izmeni konfiguraciju MCP hosta tako da on izda zlonamernu komandu ili da pristupi MCP serveru koji radi u okruženju sa nedovoljnim bezbednosnim kontrolama, na primer putem DNS rebindinga, koji navodi pregledač da šalje zahteve localhost usluzi.

Kako se zaštititi od kompromitovanja lokalnog MCP servera

Izolacija u sandbox okruženju i strogi protokoli saglasnosti važni su pri korišćenju lokalnih MCP servera. MCP servere treba instalirati isključivo od pouzdanih dobavljača, a dozvole operativnog sistema treba da ograniče kojim direktorijumima mogu da pristupe.

MCP ranjivosti su često stare pretnje u novom ruhu

MCP ranjivosti često potiču od nove primene poznatih rizika i metodologija napada. MCP napadačima donosi nove načine da iskoriste ove ranjivosti kroz interakcije LLM-ova, MCP servera i eksternih usluga.

Naravno, pretnje specifične za MCP postoje. Međutim, vredi imati na umu da će standardni bezbednosni protokoli, kao što su primena stroge autorizacije, korišćenje pouzdanih dobavljača i zaštita od ubacivanja promptova, u velikoj meri doprineti zaštiti svake MCP implementacije.