- Verschifft
- 23. September 2026 um 11:36 UTC
- Autor
- Kamo
- Ausschuss
- a3d6885
POST /Convert-Vector und WS /ws/pipeline nahmen überhaupt keine Authergrenzung ein - 4820f44 gedeckelte Upload-Größe und Umwandlung Concurrency aber ließ das tatsächliche Loch offen bis zu einer Entscheidung darüber, wie eine Authentifizierung rohe Browser WebSocket, da weder ein Träger-Token noch kamo-internal eigenen X-OTK-Header ist ein Option gibt (eine WebSocket kann keine eigenen Header setzen, und eine einmalige Taste in der WS-Abfrage-String würde in Traefik/Zugriffsprotokollen landen). Traefik Routen /vector-ws/* direkt zu diesem Service, Umgehung Kamo-internal's APIService Gateway komplett, so dass jeder, der diese Hülse erreichen könnte, die pro ************ bedeutete, dass jeder im Internet es aus der CPU/Speicher laufen lassen konnte kostenlos, oder verwenden Sie es als anonymen Bildkonvertierungs-Proxy. Die Lösung: Beide Anrufer sind Browser-Code gleicher Herkunft auf intern.<domain>, so dass der Browser bereits bereits sendet auf jeder Anfrage das *** Session Cookie an diesen Dienst, genauso wie an kamo-interne Dienstleistungen/session_auth.py überprüft dieses Cookie genau so, wie kamo-interne einen überprüft server-Seite (seine app/lib/ksemSessionShared.ts / sessionServer.ts / apiProxy.ts sind sich alle auf die Form): der Cookie-Wert ist die Session-ID, gültig nur bei 128 Hex-Zeichen, und die Sitzung ist gültig, wenn Redis hat etwas bei "***" +, dass id read-only, aus der Replik, mit dem gleichen 5-atm/2s retry kamo-internalen eigenen Routen verwenden, um Replikationsverzögerung zu tolerieren. Ein Redis-Fehler zählt als "nicht gefunden", anstatt den Anrufer durchwinken. - POST /Convert-Vector: 401, bevor der Upload überhaupt gelesen wird. - WS /ws/pipeline: accept() immer noch passiert (uvicorn liefert nur einen echten WS-Schreitcode . Hier 1008, Politikverletzung - sobald der Handschlag begonnen hat; Schließen vor Akzeptieren bricht zu einem bloßen HTTP 403 mit dem verworfenen Code, schließt sich dann sofort, bevor ein Frame gelesen wird. - k8s/configmap.yaml bekommt das gleiche ************ Kamo-internal's configmap trägt - Redis dieses Clusters hat keine ACL, also ist PASSWORD überall leer verbraucht, nicht ein buchstäbliches Einstehen für ein Geheimnis, das nicht existiert. - protokolliert niemals den Cookie-Wert oder die Session-ID (die Redis-Taste ist die ID, nur vorangestellt). /Gesundheit bleibt offen, bewusst - nichts hier ändert es. Tests: test_session_auth.py. Mutation-geprüft durch Umkehrung der beiden Call-Sites von main.py vor Ort: HTTP-Seite Ablehnungstests versagen (der verspottete Konverter wird aufgerufen statt übersprungen) und die WebSocket-Seite Test hängt regelrecht (nichts jemals schließt die Verbindung) - beide bestätigen die Wache ist Tragetragen; nachher restauriert. Bekannte Lücke, außer Reichweite hier: kamo-internal's local-dev path (NEXT_PUBLIC_IMAGE_PIPELINE_URL / localhost:8000) ruft diesen Service Cross-Herorkömmling auf, und weder logoVectorize.ts fetch() noch useImagePipeline.ts WebSocket sendet Anmeldeinformationen Cross-Ursprung standardmäßig, so lokal dev gegen eine Local Vector Service wird nun 401/1008 auf beiden Endpunkten. Die Produktion ist nicht betroffen (gleicher Ursprung).
