- Se descapó
- 23 de septiembre de 2026 a las 11:14 UTC
- Autor
- Kamo
- Compromit
- d47b471
/topic/chat/session/-guidá y /topic/webrtc/session/-guid- fueron no custodiados en absoluto: cualquier enchufe autenticado podría SUBSCRIBE a otra sesión en vivo mensajes de chat o WebRTC ofrecen/respuesta/ICE tráfico puramente por saber (o adivinando) su guid - el gemelo vivo del agujero de la lectura de la transcripción MediaController.canReadSession cerró para HTTP (f7b2bd5). Envienen cliente a o bien también estaba abierto; ningún cliente legítimo les envía nunca (todos de verdad uno solo se suscribe), por lo que un Enviado falsificado podría inyectar un mensaje en vivo falso o Marco de señalización en una sesión el falsificador ni siquiera puede leer. WebSocketConfig.preEnviar ahora guarda SUBSCRIBE a ambos prefijos con SessionAccessGuard-canícaro - la misma regla que usa la puerta de la lectura de MediaController, no una cuarta copia de ella - y **************** ahora se niega a ambos directamente, emparendo todos los demás temas en esa lista de lo que permite. canLee necesita un segundo punto de entrada: su firma existente pide a HttpServletSolier pide los derechos del que llaman (SUPPORT-TICKET extra admisión), y un marco STOMP no tiene ninguno - sólo lo que WebSocketAuthInterceptor estampado en la sesión en CONNECT (memberId/orgId/rights, leído el la misma sesión *** una petición HTTP habría resuelto). El nuevo canRead(session, llamar, List-String rights) sobrecarga toma esa forma directamente; ambas sobrecargas ahora delegan en una aplicación privada, por lo que la La regla real todavía está escrita exactamente una vez. Un visitante de chat público no es un miembro en absoluto - PublicChatWebSocketInterceptor sellos esPublicChat/sessionGuid en su lugar, ya resuelto y verificado contra su ficha de la sesión apretón de manos. Su regla de suscripción es una regla directa partido en guid contra eso, nunca SessionAccessGuard-can-Puedes (que requiere un Miembro y rechazaría a un llamante que no tiene ninguno) - confirmado en contra kamo-internal, que sólo se suscribe a estos dos temas y nunca se envía a cualquiera de los dos. Cubierto por ************* (miembro admitido/rechazado por el guardia, un visitante público admitió su propia sesión y se negó a diferentes, temas no relacionados intactos), nuevos casos en SessionAccessGuardTest y StompDestinationAuthzTest para la lista de derechos sobrecarga y la nueva negativa de SEND. Controlado por mutación: dejar caer lo nuevo Comprobación SUBSCRIBE, rompiendo la propia regla de la lista de derechos, y (como a Comprobación de regresión) la afirmación preexistente "sin vigilancia" que esto cierra cada uno girar una aserción específica de rojo; todos restaurados y recorridos verdes.
