- Se descapó
- 23 de septiembre de 2026 a las 11:36 UTC
- Autor
- Kamo
- Compromit
- a3d6885
POST /convert-vector y WS /ws/pipeline no tomó auth en absoluto . 4820f44 tapado de suelto de subir y conversión de concurrencia pero dejó abierto el agujero real a la espera de una decisión sobre cómo autenticar un navegador crudo WebSocket, ya que ni un token de un portador ni la propia cabecera X-OTK de kamo-internal es un opción allí (un WebSocket no puede establecer encabezados personalizados, y una tecla de una sola vez en la cadena de consulta WS aterrizaría en troncos de Traefik/acceso). Rutas de Traefik /vector-ws/* directamente a este servicio, eludiendo Por favor de kamo-internal puerta de entrada totalmente, para que cualquiera que pueda llegar a esta vaina - que por ******************* significaba que cualquiera en el Internet podía ejecutarlo sin CPU/memory de forma gratuita, o úsalo como un representante anónimo de conversión de imagen. La corrección: ambos llamantes son código del navegador del mismo origen en interior..domain, por lo que el navegador ya envía la cookie de sesión de *** en cada solicitud a este servicio, lo mismo que hace a kamo-internal servicios/session-auth.py comprueba que la cookie exactamente de la manera en que kamo-internal comprueba uno lado servidor (su app/lib/ksemSessionShared.ts / sessionServer.ts / apiProxy.ts todos están de acuerdo en el shape): el valor de cookie ES el identificador de sesión, válido sólo en 128 caracteres hex, y la sesión es válido cuando Redis tiene algo en "***" . que id - sólo - de la réplica, con lo mismo 5-a-intid/2s retry kamo-internal's rutas propias utilizan para tolerar la rezago de replicación. Un error de Redis cuenta como "no encontrado" en lugar de agitar a la persona que llama. - POST /convert-vector: 401 antes de que la carga se lea. - WS /ws/pipeline: accept() sigue sucediendo (uvicorn sólo entrega un código cerrado WS de verdad - aquí 1008, violación de la política - una vez que el apretón de manos ha comenzado; cerrando antes de aceptar colapsos a un desnudo HTTP 403 con el código descartado), luego se cierra inmediatamente, antes de que se lea cualquier fotograma. - k8s/configmap.yaml obtiene lo mismo ************* kamo-internal configmap lleva el Redis de este clúmulo no tiene ACL, por lo que PASSWORD está vacío en todas partes. consumido, no un lugar literal parado en un Secreto que no existe. - Nunca registre el valor de cookies o el id de sesión (la tecla Redis ES el identificador, simplemente prefijo). / La salud permanece abierta, deliberadamente nada aquí lo cambia. Pruebas: test-session-auth.py. Mutación-comprobado por revirtiendo main.py es dos sitios de llamadas localmente: el Fallan las pruebas de rechazo del lado HTTP (el convertidor burlado se llama en lugar de saltarse) y el Pruebas de WebSocket-sides cuelgan directamente (nada cierra la conexión) . Ambos confirman que el guardia es carga; restaurado después. Brechate conocida, fuera de alcance aquí: ruta local-dev de kamo-internal (NEXT-PUBLIC-IMAGE-PIPELINE-URL / localhost:8000) llama a este servicio de origen cruzado, y ni logoVectorize.ts's fetch() ni useImagePipeline.ts's WebSocket envía credenciales de origen cruzado por defecto, por lo que dev local contra a vectorial local ahora 401/1008 en ambos endpoints. La producción no se ve afectada (mismo-origen).
