Poslužitelj verify-mcp tvrtke Kluster AI vjeruje svakoj sesiji preglednika koja može doseći njegovu krajnju točku /stream.

Kada je servis izložen putem HTTP-a i vezan na 0.0.0.0, napad DNS rebindinga može pretvoriti žrtvin preglednik u proxy koji upravlja API-jem iz otvorenog interneta.

Tijekom našeg testiranja ova nam je tehnika omogućila udaljeno pozivanje verify alata i trošenje Klusterovih kredita bez korisnikova pristanka.

Sažetak

  • Vektor napada: DNS rebinding zloupotrebljava model povjerenja preglednika kako bi preusmjerio naziv domene s napadačevog hosta na 127.0.0.1, zaobilazeći zaštite pravila istog izvora (Same-Origin Policy).
  • Izložena komponenta: Kluster verify-mcp poslužitelj izlaže /stream putem običnog HTTP-a i prihvaća zahtjeve isključivo na temelju Host zaglavlja koja isporučuje klijent.
  • Uočeni rezultat: Nakon rebindinga, JavaScript pod kontrolom napadača mogao je upravljati verify alatom kao da je riječ o lokalnom korisniku, trošeći plaćene kredite.

Tehnička analiza

Napad se odvija u dvije DNS faze uz jednostavan HTML/JavaScript payload:

  1. Početno vezivanje na napadačevu infrastrukturu. Žrtva posjeti stranicu pod napadačevom kontrolom. Prvo DNS razrješenje pokazuje na napadačevu javnu IP adresu, što nam omogućuje da poslužimo skriptu koja povremeno provjerava Kluster krajnju točku.
  2. Rebinding na localhost. Nakon što se stranica učita, napadačev DNS poslužitelj na sljedeće upite za isti host odgovara s 127.0.0.1. Preglednici ponovno koriste keširani naziv, pa se naknadni fetch pozivi tiho preusmjeravaju na žrtvino loopback sučelje, zadržavajući izvorni niz izvora (origin).
  3. Upravljanje verify API-jem. Budući da verify-mcp dopušta HTTP zahtjeve s bilo kojeg izvora i ne provjerava Host ni Origin zaglavlja, naša je skripta uspješno slala POST zadatke na /stream, pokrećući izvođenja verifikacije koja troše kredite.

Ovaj obrazac nije jedinstven za Kluster, ali kombinacija HTTP transporta i izostanka provjere zaglavlja učinila je iskorištavanje trivijalnim.

Utjecaj

  • Zloupotreba servisa: Udaljeni akteri mogu trošiti Klusterove kredite za verifikaciju ili preplaviti API, uzrokujući financijski gubitak ili ograničavanje brzine za legitimne korisnike.

Preporuke

Za Kluster AI

  • Strogo provjeravajte Host i Origin zaglavlja, odbijajući zahtjeve koji se ne podudaraju s eksplicitnim popisom dopuštenih (localhost, 127.0.0.1).
  • Uvedite autentifikaciju ili API tokene čak i za lokalne sesije kako bi samo pouzdani pozivatelji mogli pokretati radnje koje troše kredite.

Za MCP operatore i korisnike

  • Pretpostavite da su localhost servisi dostupni putem preglednika u prisutnosti DNS rebindinga; pratite neočekivane nazive izvora u zapisnicima.
  • Preferirajte HTTPS (s ispravnim certifikatima) i eksplicitnu provjeru zaglavlja za svaki alat izložen izvan loopback sučelja.
  • Educirajte razvojne inženjere da zatvore lokalne agente pri pregledavanju nepouzdanih stranica, ili koristite segmentaciju mreže za izolaciju agentskih servisa od zadanog profila preglednika.

Završne misli

DNS rebinding i dalje zamućuje granicu između “lokalnog” i “udaljenog” za MCP alate.

Otvrdnjavanjem transporta, provjerom metapodataka zahtjeva i zahtijevanjem autentifikacije, dobavljači platformi mogu pomoći razvojnim inženjerima da budu sigurniji.

Vremenski slijed

  • 2025-07-17: Početna prijava poslana sigurnosnom timu Kluster AI.
  • 2025-07-17: Kluster je potvrdio primitak istog dana.
  • 2025-08-29: Naknadni upit poslan Kluster AI-ju sa zahtjevom za status otklanjanja.
  • 2025-10-16: Tehnička obavijest objavljena na mcpsec.dev.