KamoCRM

MCP-Konfiguren benötigen MANAGE_AI_SETTINGS, Provider/MCP-urls können das Cluster nicht erreichen, Quotenrichtlinien werden durchgesetzt

FixAIService
Verschifft
23. September 2026 um 01:50 UTC
Autor
Kamo
Ausschuss
9060c7c

Drei unabhängige Befunde, die zusammen festgelegt sind, weil die ersten beiden Dateien und eine Klasse teilen. 1. AiMcpController hatte null richtige Kontrollen auf erstellen/update/löschen/test. die Organisation könnte einen MCP-Server config und mcp-Gateway-Service McpStdioTransport pflanzen läuft config.command mit config.envVars als realen OS-Prozess (neuer ProcessBuilder(...).start()), auf Gateway Start und wieder auf jedem 30er Gesundheitscheck. Das ist nicht authentifizierte RCE gegen mcp-gateway-Service. Jeder Mutating/Testhandler benötigt nun MANAGE_AI_SETTINGS, passend AiProviderController und STDIO wird für eine von Organisation erstellte Konfiguration komplett abgelehnt. Tenant kann nur SSE/HTTP konfigurieren. (ai_mcp_server_configs hat 0 Zeilen; keine Migration erforderlich.) 2. SSRF: **************** schickte den entschlüsselten Provider-Schlüssel einer Organisation was auch immer Host war in baseUrl und spiegelte die Antwort, und OpenAiCompatibleAdapter (die bedient 8 der 12 Anbietertypen) hatte keine Host-Regel auf einem seiner drei ausgehenden Anrufe einschließlich des realen Chat-Pfades, den jede Nachricht nimmt, nicht nur die manuelle Testtaste. Hinzugefügt OutboundUrlGuard, gebaut auf dem bestehenden PublicHostGuard von Kamo-Shared (bereits genutzt von SafeSiteFetcher und SafeImageFetcher von SecurityService für die gleiche Problemklasse: der Gastgeber und verweigert ************ Adressen und Cluster-only-Namen (*.svc, *.cluster.local, dotless), überprüft bei der Zeit in AiProviderController und AiMcpController und wieder unmittelbar vor jedem Anruf OpenAiCompatibleAdapter, da die DNS-Antwort eines Hostnamens im Sparzeitraum nicht für immer seine Antwort ist. Verweigerung ist eine einfache 400 mit unserer eigenen Botschaft - keine rohe Netzwerk-Ausnahme, und keine Verbindung ist jemals versucht, zu einem abgelehnten Ziel. 3. **************** userId) abgefragte Nutzungsdatensätze und dann, bedingungslos, zurückgegeben wahr - jede AiAccessPolicy Anfrage / Zeichen Grenze war dekorativ. Die zwei echte Call-Sites (ChatOrchestrationService Streaming und Sync Chat-Pfade) lösen jetzt jede Rolle, die das Mitglied in der Hand hält und durchsetzt jede Rolle kartiert: eine Rolle ohne kartierte Politikzuschüsse keine eigenen Beschränkungen, aber es kann auch nicht kündigen eine restriktive Politik durch eine eine andere Rolle, die ein Mitglied auch innehat. Die verschwendete 2-Arg-Überlastung ist weg. Tests: AiMcpControllerAuthzTest (Rechte + STDIO Ablehnung + URL Validierung), OutboundUrlGuardTest, AiProviderKeyExposureTest (2 neue SSRF Fälle), ************ AccessPolicyMultiRoleTest. Jeder Fall wurde vor diesem Commit-Code rot gegen den Pre-Fix-Code verifiziert (Fail-open-Rechte, Körper-Vertrauen, No-Op-Wache und immer-true Quoten-Kontrollen jeder wieder eingeführt lokal, ein zu einer Zeit, und nach der Bestätigung der passenden Test fehlgeschlagen wiederhergestellt). mcp-Gateway-Service erhält einen passenden Commit: eine unabhängige STDIO-Genehmigungsliste (Abwehr in der Tiefe, in Falls diese Prüfung jemals umgangen wird) und ihre eigene Vor-Verbindungsprüfung auf einer SSE/HTTP-Konfiguration url.

Alle Änderungen

Wie, was Sie sehen Versand?

Alles kommt in Ihrem Arbeitsbereich für sich. Starten Sie mit dem kostenlosen Plan und lesen Sie diese Seite in einem Monat wieder.

Free Forever startenPreisgestaltung anzeigen