Vulnerabilidades

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.

Soluciones alternativas

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

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

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

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

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

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

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

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

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.

Soluciones alternativas

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