En strongSwan, un paquete VPN basado en el protocolo IPSec utilizado en Linux, Android, FreeBSD y macOS, se ha identificado una vulnerabilidad (CVE-2023-41913) que podría ser aprovechada para la ejecución remota de código por un atacante. La vulnerabilidad es causada por un error en el proceso charon-tkm relacionado con la implementación del protocolo de intercambio de claves (IKE) basado en TKMv2 (Trusted Key Manager), lo que lleva a un desbordamiento de búfer al procesar valores de esquema DH (Diffie-Hellman) mal formateados. La vulnerabilidad se manifiesta solo en sistemas que utilizan charon-tkm y en lanzamientos de strongSwan a partir de la versión 5.3.0. El problema se ha solucionado en la actualización strongSwan 5.9.12. También se han preparado parches para corregir la vulnerabilidad en ramas a partir de la 5.3.x.
El error se debe a la falta de verificación del tamaño de los valores públicos de Diffie-Hellman antes de copiarlos en un búfer de tamaño fijo en la pila. El desbordamiento puede ser desencadenado al enviar un mensaje IKE_SA_INIT especialmente diseñado, que se procesa sin autenticación. En versiones anteriores de strongSwan, la verificación del tamaño se realizaba en el manejador KE payload (Intercambio de Claves), pero en la versión 5.3.0 se añadieron cambios que movieron la verificación de los valores públicos al manejador del protocolo DH (Diffie-Hellman) y se añadieron funciones tipo para simplificar la verificación de la corrección de los grupos DH conocidos. Por descuido, se olvidó añadir las nuevas funciones de verificación al proceso charon-tkm, que actúa como un proxy entre el proceso IKE y TKM (Trusted Key Manager), lo que resultó en que valores no verificados llegaran a la función memcpy(), permitiendo escribir hasta 10,000 bytes de datos en un búfer de 512 bytes.
Fuente: opennet.ru
