Problema #13 - Permisos de tubería demasiado abiertos en Unix
Versiones afectadas
De la versión 3.5.8 a la versión 3.5.60.
Gravedad
Crítica (si se pasan datos sensibles a través del backend, lo cual es posible desde la versión 3.5.57, y si el backed se establece en PIPE)
Descripción
Al utilizar la propiedad wrapper.backend.type=PIPE, el Wrapper creaba tuberías con nombre con permisos demasiado abiertos. Las ediciones de Windows no se ven afectadas y pueden usar PIPE con seguridad.
Había un problema de seguridad cuando se las propiedades wrapper.app.property para pasar datos confidenciales a través del backend, ya que era posible que cualquier usuario con acceso al servidor viera el contenido de la tubería.
El tipo de transmisión predeterminado utiliza SOCKET, que no tiene este problema.
Actualizar a la versión 3.6.0 (o superior) del Wrapper, que utiliza(n) tuberías anónimas con permisos adecuados.
Problema #12 - Privilegio SeImpersonate habilitado para Servicios de Windows
Versiones afectadas
Todas las versiones anteriores a 3.5.58.
Gravedad
Advertencia
Descripción
Para garantizar la compatibilidad con versiones anteriores de Windows, Microsoft ha decidido habilitar SeImpersonatePrivilege de forma predeterminada para los servicios de Windows. Este privilegio lo añade automáticamente el administrador de control de servicios (SCM) mediante la adición dinámica del grupo SERVICE al iniciar un servicio.
El privilegio SeImpersonatePrivilege permite a un proceso impersonar a otro usuario. Si bien esto puede ser útil para probar el comportamiento del proceso en diferentes contextos de usuario, también puede suponer riesgos de seguridad significativos. De hecho, se puede abusar del privilegio para escalar a la cuenta LocalSystem, que tiene el nivel de privilegios más alto en un sistema Windows.
Este problema de seguridad solo afecta a los servicios configurados para ejecutarse con una cuenta distinta a LocalSystem (de lo contrario, el servicio ya cuenta con los privilegios más altos). Sin embargo, suele ser recomendable ejecutarse con una cuenta de servicio dedicada para restringir el acceso a la aplicación Java en el sistema de alojamiento y, a la vez, evitar que otros procesos de terceros accedan a la aplicación y a los archivos del Wrapper.
A partir de la versión 3.5.58, el Wrapper deshabilitará SeImpersonatePrivilege al ejecutarse como un servicio de Windows con una cuenta distinta a LocalSystem (NT AUTHORITY\SYSTEM). La mayoría de las aplicaciones Java no necesitarán este privilegio, pero, en caso de necesitarlo, se puede usar la propiedad wrapper.ntservice.impersonation para reactivarlo.
Soluciones alternativas
Actualizar a la versión 3.5.58 o superior del Wrapper, o
Configurar los privilegios requeridos para el servicio (requiere la edición Profesional, versión 3.5.57 o superior).
Es posible editar la configuración de la Política de seguridad local, pero existe el riesgo de afectar otros servicios (no se recomienda).
Problema #11 - WrapperManager.log() y signos '%'
Versiones afectadas
Todas las versiones anteriores a 3.5.58.
Gravedad
Alta (si se cumplen las condiciones siguientes).
Descripción
La API del Wrapper proporciona el método WrapperManager.log() para permitir que el código de usuario registre un mensaje en el nivel de registro especificado. Si el segundo argumento (el mensaje a registrar) contiene un carácter "%", el Wrapper podría bloquearse y causar una denegación de servicio.
Su aplicación está en riesgo si utiliza entradas de usuario que al final se pasan al método WrapperManager.log().
Soluciones alternativas
Actualizar a la versión 3.5.58 o superior del Wrapper, o
Asegurarse de eliminar cualquier signo '%' en el mensaje a registrar antes de llamar a WrapperManager.log().
Problema #10 - Binarios de Windows firmados con certificado revocado
Versiones afectadas
3.5.55
Gravedad
Advertencia
Descripción
Binarios de Windows no firmados.
Soluciones alternativas
Por favor, utilize la versión 3.5.56, que está firmada con un certificado EV mejorado.
Problema #9 - Jar firmado con certificado antiguo
Versiones afectadas
Versiones 3.5.44 y 3.5.45.
Gravedad
Advertencia
Descripción
El archivo jar está firmado con un certificado de firma de código antiguo (que vence el 2020-12-15, pero con una marca de tiempo válida hasta 2027-06-27).
El archivo jar se puede ejecutar de forma segura.
Soluciones alternativas
No se requiere ninguna acción especial.
Problema #8 - Binarios de Windows no firmados
Versiones afectadas
Versión 3.5.44.
Gravedad
Mediana
Descripción
Los binarios de Windows (wrapper.exe, wrapperw.exe, wrapper.dll) no están firmados digitalmente.
Aunque la falta de firma no representa en sí misma una amenaza para la seguridad, no es posible verificar la autenticidad e integridad de los binarios sin una firma digital. Por lo tanto, Microsoft Defender SmartScreen podría bloquear la primera ejecución y advertir de un riesgo de seguridad.
Soluciones alternativas
Actualizar a la versión 3.5.45 o superior del Wrapper.
Asegúrese siempre de descargar los binarios de Wrapper del sitio web oficial del Java Service Wrapper y guardarlos en un lugar seguro donde no se puedan alterar.
Problema #7 - Codificación no ANSI y salida JVM que contiene signos '%'
Versiones afectadas
Versiones entre 3.5.35 y 3.5.40.
Gravedad
Alta (cuando se utiliza wrapper.lang.windows.encoding)
Descripción
A partir de la versión 3.5.35, wrapper.lang.windows.encoding permite cambiar la codificación regional utilizada por el proceso Wrapper. Esto es útil, por ejemplo, para imprimir la salida del registro en UTF-8 o con una codificación específica.
Cuando se establece la propiedad wrapper.lang.windows.encodin, el Wrapper lee la salida de la JVM en un modo diferente. Este modo presenta un error: un carácter de porcentaje '%' en la salida de la JVM podría provocar un bloqueo del Wrapper.
Su aplicación está especialmente expuesta si la entrada del usuario del cliente puede aparecer en los registros, lo que la hace vulnerable a ataques de denegación de servicio.
Soluciones alternativas
Actualizar a la versión 3.5.41 o superior del Wrapper, o
Comentar wrapper.lang.windows.encoding o configurar a su valor predeterminado (ANSI).
Problema #6 - Mensajes de salida UTF-8 muy largas en Windows
Versiones afectadas
3.5.35
Gravedad
Alta
Descripción
La propiedad wrapper.lang.windows.encoding permite cambiar la codificación de la configuración regional utilizada por el proceso del Wrapper. Las cadenas UTF-8 se gestionan con una función independiente que utiliza un búfer de tamaño fijo de 4096 caracteres. Una salida de la JVM superior a este ancho provocaría un desbordamiento del búfer.
Su aplicación corre un riesgo especial si las entradas de usuario de gran tamaño pueden acabar en los registros, ya que podrían provocar un bloqueo del Wrapper y una denegación de servicio.
El Wrapper no se ve afectado si wrapper.lang.windows.encoding se mantiene con su valor predeterminado "ANSI" ni si se utiliza una codificación distinta a UTF-8.
Soluciones alternativas
Actualizar a la versión 3.5.41 o superior del Wrapper, o
Configurar wrapper.lang.windows.encoding en un valor diferente de UTF-8.
Problema #5 - umask predeterminado establecido en 0000 para Demonios de Unix
Versiones afectadas
De 3.5.8 a 3.5.11.
Gravedad
Crítica
Descripción
En plataformas UNIX, la máscara de usuario (umask) predeterminada se establece en 0000 en lugar de heredar el valor del proceso principal al ejecutarse como un proceso demonio.
El registro y otros archivos tienen acceso global de lectura y escritura.
La umask predeterminada del proceso Java también sería 0000, y por lo tanto, de cualquier archivo creado por la aplicación Java, a menos que se establezcan nuevos permisos explícitamente.
El archivo de anclaje, si se utiliza, puede ser eliminado por cualquier persona y provocar la detención del Wrapper.
Soluciones alternativas
Actualizar a la versión 3.5.12 o superior del Wrapper, o
Configurar la propiedad wrapper.umask a un valor seguro.
Problema #4 - Fallo con política de seguridad de SELinux estricta
Versiones afectadas
Todas las versiones anteriores a 3.3.7.
Gravedad
Advertencia
Descripción
Una política de seguridad estricta de SELinux podría impedir que el Wrapper cargara la biblioteca libwrapper.so.
Esto solo es un problema cuando se ejecuta en un sistema con SELinux habilitado.
Soluciones alternativas
Actualizar a la versión 3.3.7 o superior del Wrapper.
Problema #3 - Denegación de servicio causada por señales del sistema en Unix
Versiones afectadas
Todas las versiones anteriores a 3.3.0.
Gravedad
Alta
Descripción
Ocasionalmente pueden ocurrir fallas con UNIX de 64 bits causadas por un problema de sincronización nativo cuando las señales del sistema quedan atrapadas. Error #1614010.
Esta vulnerabilidad se podría utiizar por procesos de terceros para intentar ataques de denegación de servicio.
Ni los binarios de 32 bits ni Windows se ven afectados.
Soluciones alternativas
Actualizar a la versión 3.3.0 o superior del Wrapper, o
Problema #2 - wrapper.ntservice.password almacenada en el registro
Versiones afectadas
De 3.0.0 a 3.1.2, y luego de 3.2.2 a 3.2.3.
Gravedad
Alta
Descripción
Los valores de wrapper.ntservice.account y
wrapper.ntservice.password se almacenaban en texto sin formato dentro del registro si se especificaban en la línea de comandos al instalar el Wrapper como un servicio de Windows.
Actualizar a la versión 3.1.2 o superior del Wrapper.
No especifique wrapper.ntservice.account o wrapper.ntservice.password en la línea de comandos al intalar el Wrapper como in servicio de Windows.
Problema #1 - Salida de la JVM y signos '%'
Versiones afectadas
Todas las versiones anteriores a 2.2.6.
Gravedad
Alta
Descripción
Un signo de porcentaje '%' en la salida de la JVM podría provocar que el Wrapper se bloquee.
Su aplicación está especialmente expuesta si la entrada del usuario cliente puede acabar en los registros, haciéndola vulnerable a ataques de denegación de servicio.
Soluciones alternativas
Actualizar a la versión 2.2.6 o superior del Wrapper.