Zum Inhalt

MCP – Audit-Inhalte begrenzen

Status: produktiv seit 08.09.2026. Diese Stufe begrenzt, welche Daten der MCP überhaupt an das Audit übergibt. Die später installierte Audit-Integrität ergänzt darauf aufbauend den root-eigenen Writer und verhindert direkte Änderungen der Audit-Dateien durch den Benutzer mcp.

Ziel

Das Audit soll nachvollziehbar machen, welches Werkzeug wann aufgerufen wurde und ob es erfolgreich war, ohne dafür vollständige Befehle, Datei-/Wiki-Inhalte, freie Fehlertexte oder Home-Assistant-Antworten dauerhaft zu speichern.

Die Reduktion erfolgt vor dem Schreiben. Die Admin-Oberfläche blendet also nicht nur Inhalte aus; unerwünschte Rohdaten werden im Audit-v2-Ereignis gar nicht erst vorgesehen.

Audit-v2

Jeder neue Eintrag enthält eine Ereignis-ID und ein streng begrenztes Schema. Typische Felder sind:

  • Zeitstempel;
  • Toolname;
  • Status und Laufzeit;
  • kategorisierte Caller-/Client-Metadaten;
  • ausgewählte, formal begrenzte Argument-Metadaten;
  • feste Ergebnis- und Fehlerkategorien;
  • bei Prozesswerkzeugen nur intern nachgewiesene Prozessmetadaten.

Nicht gespeichert werden insbesondere:

  • vollständige Shell- oder RouterOS-Befehle;
  • stdout/stderr als Freitext;
  • gelesene Datei- oder Wiki-Inhalte;
  • übergebene Wiki-Inhalte;
  • freie Stacktraces und beliebige Fehlertexte;
  • HA-MCP-Argumente oder HA-Antworten aus der Bridge.

Beispiele

Vorgang Audit-Inhalt
Datei/Wiki lesen Werkzeug, sicherer Zielpfad, Status, Laufzeit; kein gelesener Inhalt
Datei/Wiki schreiben Zielpfad, Bytezahl, Status; gegebenenfalls Commit-ID
Shell/RouterOS Status und strukturierte Prozessmetadaten; kein Befehl, keine Roh-Ausgabe
Fehler feste Fehlerkategorie statt freiem Fehlertext
Audit abrufen Zeilenzahl; keine Kopie der gelesenen Audit-Einträge
HA-Bridge Bridge-Tool, Status, Laufzeit, Caller/Client; keine HA-Argumente/Antworten
neues Tool ohne eigenes Profil minimale Ereignisdaten

Technische Komponenten

/opt/mcp-shell/lib/audit-safe.js
/opt/mcp-shell/lib/core.js
/opt/mcp-admin/server.js
/opt/mcp-admin/policy-client.js

audit-safe.js projiziert Rohereignisse auf das erlaubte Audit-v2-Schema. core.js bindet diese Projektion an die normalen MCP-Tools an. Die Admin-Oberfläche kann alte und neue Einträge unterscheiden.

Die Home-Assistant-Bridge verwendet ebenfalls das begrenzte Audit-v2-Format; die fünf Bridge-Toolnamen sind zusätzlich in der Allowlist des Root-Writers hinterlegt.

Nachgelagerte Härtungen

Seit der ursprünglichen Audit-v2-Installation wurden zwei damals noch offene Punkte separat abgeschlossen:

  1. Befehlsfehler und Exitcodes: run() wurde durch die strukturierte Fehlerweitergabe ersetzt. Siehe Befehlsfehler und Exitcodes.
  2. Manipulationsschutz der Audit-Dateien: Das Schreiben erfolgt heute über mcp-audit-writer als root; mcp kann die Tagesdateien nicht direkt verändern oder löschen. Siehe Audit-Integrität.

Damit sind frühere Formulierungen, wonach run() oder der direkte Schreibzugriff von mcp noch offen seien, nur noch historische Zwischenstände.

Produktiver Nachweis

Nach den Deployments wurden reale Tool-Aufrufe geprüft:

  • Wiki-Lesen und -Schreiben ohne Inhaltskopie im Audit;
  • Dienststatus mit begrenzten Prozessmetadaten;
  • absichtliche Fehler mit fester Fehlerkategorie;
  • shell_execute-Fehler mit beobachtetem Exitcode, aber ohne Befehl im Audit;
  • HA-Bridge-Aufrufe mit Caller/Client/IP/cf_ray, aber ohne HA-Inhalte.

Grenzen

Das Audit ist kein kryptografisch unveränderbares externes Archiv. Root auf CT 108 bleibt außerhalb der Schutzgrenze. Ein kompromittierter MCP-Prozess kann gültig aussehende neue Ereignisse an den lokalen Writer senden, aber vorhandene root-eigene Tagesdateien nicht direkt bearbeiten.

Die 7-Tage-Aufbewahrung bleibt aktiv. Alte Logeinträge aus der Zeit vor Audit-v2 werden nicht rückwirkend umgeschrieben.

Historische Installationsunterlagen

Die ursprüngliche Audit-v2-Installation vom 08.09.2026 ist weiterhin über folgende Unterlagen nachvollziehbar:

/root/mcp-audit-hardening-20260908.tar.gz
/root/mcp-audit-backup-20260908T061743Z.XhsPep/rollback.sh
/root/mcp-audit-hardening-20260908.NEoFkA
/tmp/mcp-audit-install-test.2Hm4ol

Diese Pfade dokumentieren den damaligen Deployment-Stand; für einen vollständigen Neuaufbau ist die aktuelle Installationsseite maßgeblich.