- Szycy
- 23 września 2026 01:50 UTC
- Autor
- Kamo
- Pochęt się
- 9060c7c
Trzy niezależne ustalenia, ustalone razem, ponieważ dwa pierwsze udostępniają pliki i klasę. 1. AiMcpController miał zerowe kontrole prawej strony w zakresie tworzenia/aktualnia/wyciągania/testowania – dowolnego członka zalogowanego Organizacja może zatrudnić konfiskatę serwera MCP i Mcp-gateway-service's McpStdioTransport działa config.command z config.envVars jako prawdziwy proces operacyjny (nowy ProcessBuilder(...).start()), Na bramie zaczyna się i od nowa na każde 30s kontrola zdrowia. To nie jest nieautenty RCE przeciwko Mcp-gateway-service. Każdy mutating/serwer testowy wymaga teraz MANAGE_AI_SETTINGS, dopasowywanie AiProviderController i STDIO są odmówione bezpośrednio dla utworzonej organizacji powiernicy - a Najemca może skonfigurować tylko SSE/HTTP. (ai_mcp_server_configs ma 0 wierszy; nie jest potrzebna migracja.) 2. SSRF: - wysłało odszyfrowany klucz dostawcy organizacji do Niezależnie od tego, jaki gospodarz był w baseUrl i odzwierciedlał odpowiedź, oraz OpenAiCompatibleAdapter (który obsługuje 8 z 12 typów dostawców) nie miał reguły żywieniowej w żadnym z trzech połączeń wychodzących — Włączenie prawdziwej ścieżki czatu, którą pobiera każda wiadomość, a nie tylko ręczny przycisk Test. Dodano do tego OutboundUrlGuard, zbudowany na istniejącym PublicHostGuard w języku kamo-wspólnie biblioteką (już używany przez SecurityService's SafeSiteFetcher i SafeImageFetcher dla tej samej klasy problemu): rozwiązuje się Gospodarz i odmówi ? adresy i Nazwy tylko kasetowe (.svc, .cluster.local, dotless), sprawdzone w dowolnym momencie AiProviderController i AiMcpController i ponownie bezpośrednio przed każdym połączeniem OpenAiCompatibleAdapter, ponieważ odpowiedź DNS nazwy hosta w dowolnym momencie nie jest jej odpowiedzią na zawsze. Odmowa to prosta 400 z naszym własnym przesłaniem – nie ma surowego wyjątku sieciowego i żadne połączenie nie jest Nigdy nie próbowała odrzucić miejsca przeznaczenia. 3. - userId) zamówione rekordy użytkowania, a następnie, Bezwarunkowo powrócił prawdziwy – każda aiAccessPolicy progawnia / limit tokena była dekoracyjna. Natchęci w zd pospali w zd posdzeniu w zd posą o tym, w tym, w tym, w tym, a w tym, a w tym, pow., w tym, w tym, w tym, że pot Dwie prawdziwe strony połączeń (ChatOrchestrationService's streaming and sync ścieżki) teraz rozwiązują wszystkie Rola, jaką członek sprawuje i egzekwuje zmapowaną politykę każdej roli: rola bez zmapowanych dotacji politycznych Brak ograniczeń własnych, ale nie może również anulować restrykcyjnej polityki przypisanej za pomocą Inna rola, którą odgrywa również członek. Zmarnowane 2-łowe przeciążenie zniknęło. Testy: AiMcpControllerAuthzTest (prawa + odprawa STDIO + walidacja url), OutboundUrlGuardTest, AiProviderKeyExposureTest (2 nowe przypadki SSRF), AccessPolicyMultiRoleTest. Każda sprawa została zweryfikowana na czerwono w stosunku do kodu przedrostka przed tym commitem (prawa awaryjne, organ-zaufanie, kontrola braku opacji i zawsze rzeczywiste kontrole kwot, każda z nich przywrócona lokalnie, Pojedynczo i przywrócony po potwierdzeniu testu pasującego nie powiodło się). mcp-gateway-service otrzymuje dopasowany commit: niezależna lista dopuszczalna STDIO (obrona dogłębnie, in Sprawa ta kontrola jest kiedykolwiek omijana) i własna kontrola przed połączeniem pod adresem konfiguracyjnego protokołu SSE / HTTP.
