Serverul verify-mcp al Kluster AI are încredere în orice sesiune de browser care poate ajunge la endpointul său /stream.

Când serviciul este expus prin HTTP și legat la 0.0.0.0, un atac de tip DNS rebinding poate transforma browserul unei victime într-un proxy care controlează API-ul din internetul deschis.

În timpul testelor noastre, această tehnică ne-a permis să invocăm instrumentul verify de la distanță și să consumăm creditele Kluster fără consimțământul utilizatorului.

Rezumat

  • Vector de atac: DNS rebinding abuzează modelul de încredere al browserului pentru a redirecționa un nume de domeniu de la gazda atacatorului către 127.0.0.1, ocolind protecțiile Same-Origin Policy.
  • Componentă expusă: Serverul verify-mcp al Kluster expune /stream prin HTTP simplu și acceptă cererile bazându-se exclusiv pe antetele Host furnizate de client.
  • Rezultat observat: După rebinding, cod JavaScript controlat de atacator putea acționa instrumentul verify ca și cum ar fi fost utilizatorul local, consumând credite plătite.

Analiză tehnică

Atacul se desfășoară în două faze DNS, cuplate cu un payload HTML/JavaScript ușor:

  1. Legarea inițială la infrastructura atacatorului. Victima vizitează un site controlat de atacator. Prima interogare DNS se rezolvă către IP-ul public al atacatorului, permițându-ne să servim un script care interoghează endpointul Kluster.
  2. Rebinding către localhost. După ce pagina se încarcă, serverul DNS al atacatorului răspunde interogărilor ulterioare pentru aceeași gazdă cu 127.0.0.1. Browserele reutilizează numele din cache, astfel încât apelurile fetch ulterioare pivotează silențios către interfața loopback a victimei, păstrând în același timp șirul origin original.
  3. Controlarea API-ului verify. Deoarece verify-mcp permite cereri HTTP de la orice origine și nu validează antetele Host sau Origin, scriptul nostru a reușit să trimită (POST) sarcini către /stream, declanșând rulări de verificare care consumă credite.

Acest tipar nu este unic pentru Kluster, dar combinația dintre transportul HTTP și lipsa validării antetelor a făcut exploatarea trivială.

Impact

  • Abuzul serviciului: Actorii de la distanță pot consuma creditele de verificare Kluster sau pot inunda API-ul cu cereri, provocând pierderi financiare sau limitarea ratei (rate limiting) pentru utilizatorii legitimi.

Recomandări

Pentru Kluster AI

  • Validați strict antetele Host și Origin, respingând cererile care nu corespund unei liste de permisiuni explicite (localhost, 127.0.0.1).
  • Introduceți autentificare sau token-uri API chiar și pentru sesiunile locale, pentru a vă asigura că doar apelanții de încredere pot invoca acțiuni care consumă credite.

Pentru operatorii și utilizatorii MCP

  • Presupuneți că serviciile localhost sunt accesibile prin browser în prezența DNS rebinding; monitorizați jurnalele pentru nume de origine neașteptate.
  • Preferați HTTPS (cu certificate corespunzătoare) și validarea explicită a antetelor pentru orice instrument expus dincolo de interfața loopback.
  • Educați dezvoltatorii să închidă agenții locali atunci când navighează pe site-uri nedemne de încredere sau folosiți segmentarea rețelei pentru a izola serviciile de agenți de profilul implicit al browserului.

Gânduri de încheiere

DNS rebinding continuă să estompeze granița dintre „local” și „la distanță” pentru instrumentele MCP.

Prin întărirea transporturilor, validarea metadatelor cererilor și impunerea autentificării, furnizorii de platforme pot ajuta dezvoltatorii să lucreze mai în siguranță.

Cronologie

  • 2025-07-17: Raportul inițial a fost trimis către echipa de securitate Kluster AI.
  • 2025-07-17: Kluster a confirmat primirea în aceeași zi.
  • 2025-08-29: O solicitare de urmărire a fost trimisă către Kluster AI pentru a cere statusul remedierii.
  • 2025-10-16: Buletinul tehnic de securitate a fost publicat pe mcpsec.dev.