KamoCRM

Las comparaciones secretas internas son de tiempo constante y fracasan cerradas

FixConversionService
Se descapó
23 de septiembre de 2026 a las 10:12 UTC
Autor
Kamo
Compromit
e94af78

TranscripciónController, RecordingIngestController y RecordingProcessController todos comparados X-Internal-Auth con String.equals (un oráculo de sincronización en un secreto compartido) y por defecto **************** a la literal "dev-secret-change-in-prod" - ambos en el Java Anotación de valor y en k8s/configmap.yaml por defecto de posición. El *** secretRef en deployment.yaml es opcional: true, por lo que un ambiente sin ese secreto montado cayó a través de un valor que se envía en este repo, y por lo tanto a la imagen, en lugar de negarse llamadas de servicio a servicio que no pudo verificar. Ahora: MensajeDigest.isEqual para la comparación, y cada default literal eliminado (Java y ConfigMap) por lo que un secreto descompuesta se resuelve en blanco y cada uno de estos controladores rechaza el Llama a ella. Confirmado seguro para la producción antes de eliminar los predeterminados: kubectl muestra el *** k8s Secret existe con un valor real **************** en el espacio de nombre de kamo, y deployment.yaml ya tira de él en via envFDesde/secretRef. Nuevas pruebas **************** ********** ******************* cubrir la negativa en blanco / nen-secreta y, específicamente, el caso que distingue viejo de un nuevo comportamiento: con el secreto en blanco forzado, "...iguels"") es cierto, así que el OLD single "auth" == null ************* chequeo deje que un llamante que envió un EMPTY X-Internal-Auth cabecero directamente a la lógica de negocio. Mutación-comprobada con la controladores pre-fijo: 3 de 13 pruebas (exactamente los tres casos *************) ir rojo sin esta solución.

Todos los cambios

Como lo que ves enviaste?

Todo llega a su espacio de trabajo por sí solo. Comience en el plan gratuito y lea esta página de nuevo en un mes.

Arranzar gratis para siempreVer Precios