Se requiere integrar el login de Thuban con OpenID / SAML 2.0 siguiendo los estándares para dichas tecnologías.
Se requiere incorporar las modificaciones necesarias para permitir el uso de Autenticación de 2 factores para autenticarse en Thuban.
Esto debe incorporarse también para la capaz de servicios donde corresponda de ser posible.
Se deja link de librería java que permite cubrir el ciclo de vida de 2FA para ser utilizado con Google Authenticator.
https://github.com/j256/two-factor-auth
Se requiere sumar el idioma portugués al sistema.
Nuevo labels.properties
Registración del doble factor en la pantalla de configuración del usuario, podemos agregar un tab de seguridad:
Mostramos la parte de cambiar contraseñas en caso de que sea usuario de Thuban y el doble factor explicando un poco de que se trata, el texto podría ser:
2FA le agrega una capa extra de seguridad a tu cuenta, reduciendo drásticamente las posibilidades de sufrir un robo de tu información personal. Para penetrar en una cuenta con 2FA un hacker debería tener no solo tu usuario y contraseña, sino tu teléfono móvil.
Al hacer click en proteger mi cuenta se mostraría algo como lo que hizo Santi, pero así:
Está el QR y además el secret que se guarda en Thuban User, en cambio del botón validar, podemos poner “Proteger mi cuenta” y si da ok el token, activamos el doble factor.
Esta misma pantalla podría aplicar cuando el usuario hace el login y aun no tiene registrado el doble factor. Hablamos de que sería un filtro del estilo ResetPassword, primero el usuario hace el login con user y pass, pero si este usuario tiene registrado que tiene que tener doble factor (marca del usuario “SecondFactorIsActive”) y el secret aun no está registrado, se tiene que llevar a una nueva pantalla similar a esta para que registre el token de doble factor.
Cuando está todo ok:
Después en la pantalla de usuario se mostraría:
Sólo podría desactivar el doble factor en caso de que esté permitido para ese usuario. Es la marca en Thuban_user que llamamos “SecondFactorCanConfig”.
Para desactivar el segundo factor será necesario que vuelva a ingresar el segundo factor (esto no está hecho así ahora) mostraríamos algo como esto (ojo puede ser una sola pantalla, no hay drama):
Luego:
Por si sirve como inspiración, al momento del login, podemos sacar ideas de acá para orientar al usuario:
el logo o algo similar.
Tener en cuenta que todos los textos tienen que ser multiidioma.
Vamos a agregar dos opciones en AccessPolicy, con apartado nuevo “Autenticación por Doble Factor” una variable:
AP_SFA_DEFAULT_IS_ACTIVE (valor por defecto 0 o false)
Al crear un nuevo usuario, por default se pedirá doble factor de autenticación.
Si el usuario es de dominio y se crea automáticamente debe tomar esta variable en cuenta para su creación.
Si el usuario se crea manualmente por el administrador de Thuban, aparecerá por default seleccionada o deseleccionada esta nueva opción, sin embargo, el administrador siempre lo podrá cambiar.
y otra:
AP_SFA_DEFAULT_CAN_CONFIG (valor por defecto 1 o true)
Al crear un nuevo usuario, por deafult el usuario podrá activar o no la autenticación por doble factor.
Esta opción la agregamos ya que hay compañía que exigen que sus usuarios tengan doble factor y no puedan quitarlo.
Las opciones van acá:
Luego al crear un usuario en Thuban, agregaremos dos checks que tienen que ver con las dos opciones anteriores y que se almacenarán en la tabla Thuban_User en las columnas:
USER_SFA_IS_ACTIVE (default 0 y not null) y USER_SFA_CAN_CONFIG (default 1 y not null)
Cambiar el nombre de la columna “SECOND_FACTOR_SECRET” por “USER_SFA_SECRET” (default null) y modificar esto en el liqui.
Al crear aparecerán los dos creck tildados o no en función de las dos variables anteriores.
En la edición, mostrar en un label el secret y agregar también un botón reset, que lo que haga es dejar en null el valor de la variable USER_SFA_SECRET. Advertir con un cartel de confirmación que se está eliminando el dispositivo de doble autenticación del usuario, que tendrá que registrar uno nuevo en el caso de que USER_SFA_IS_ACTIVE sea true.
Este botón y secret puede estar también en la creación también con el secret vacío, no hay problema.
Actualmente existe en Thuban un Job que permite descargar archivos desde FTPs, sin embargo, únicamente puede hacerlo mediante la versión no segura del mismo y solo en el puerto por defecto 21.
Se requiere así construir un Job que permita descargar desde la versión segura de FTP mediante ssh, SFTP. Adicionalmente que sea posible indicarle por parámetros el puerto por si no se utiliza el puerto por defecto.
Debe tener las mismas consideraciones de seguridad para tomar archivos que el JOB existente.
Se requiere analizar, diseñar y construir un nuevo Job de Thuban que permita construir y/o enviar en línea templates de mail de tipo Velocity de forma dinámica.
Se cambio el campo ayuda por campo default para agregar valores a ciertos campos por defecto, ejemplo el usuario logueado o la fecha del día o los textArea, evitando usar scripting.
Se requiere realizar la homologación del Tomcat 9 para poder ser utilizado como servidor de aplicaciones de despliegue para Thuban.
La tarea incluye el armado del ambiente de prueba, verificación de requerimientos de despliegue, guía e instalador de Thuban con la nueva versión de Tomcat.
clase documental: 6cero4
Campo: prueba date
campo por defecto: \[Today\]
Al crear un campo se esperaba que con esa configuración, en la pantalla de creación aparezca por defecto seteada la fecha de hoy en el campo prueba date.
El campo aparece en la pantalla de creación pero sin ninguna fecha por default.
Pongo este ejemplo de prueba pero tampoco funciono con las otras palabras clave como [TextArea] y [User]
Se detectó que con algunos servidores de mails es imposible comunicarse, en particular con Excahange 2010 con protocolo imap sobre ssl sin certificado válido.
Que aparezca el captcha en función de una variable en el context
thuban.show.captcha=true en el properties o también la opción de:
thuban.show.captcha=1 el 1 indica la cantidad de intentos inválidos antes que se muestre el captcha.
Permitir ajustar el ancho de las columnas en las bandejas de trabajo de Thuban,
Por ejemplo viendo la captura si vemos la columna de ‘Divisa’ la idea seria poder reducir la longitud de la columna, que actualmente las columnas tienen una longitud fija, de esa forma ver mas datos. Había dado el ejemplo de un excel, donde si te pones en el borde la columna A y B te permite ampliar o reducir el tamaño de la columna.
Se requiere reemplazar toda la capa de servicios de firma digital con la que actualmente interactúa el JWS de Firma Digital de la empresa, dejando de lado la capa SOAP en favor de una capa de tipo REST con JSON y JWT.
A su vez se debe incorporar el servicio web para la solicitud de generación de jnlp de firma para invocar el JWS de firma desde otras aplicaciones.
Por seguridad y performance se requiere mover el nivel de compilación mínimo de java a la versión 1.7. De esta forma se depreca a partir de esta versión la compatibilidad con Java 1.6.
Debe por supuesto funcionar tanto con la versión oficial de Oracle como con OpenJDK.
Se requiere permitir cambiar la URL base para la generación de la Metadata de SAML de Thuban a fin de contemplar escenarios donde la URL generada automáticamente no es correcta o bien Thuban se encuentra tras un proxy reverso o un balanceador de carga.
Se requiere actualizar la versión de JQuery utilizada por Thuban ya que la misma presenta vulnerabilidades de seguridad que fueron detectadas en el Pentest que la empresa solicitó realizar sobre el producto. Se deja a continuación la documentación de la misma.
Versión de JQuery vulnerable a DOM XSS
Descripción:
Se identificó el uso de versiones de librerías JQuery con vulnerabilidades conocidas, entre las vulnerabilidades más comunes se encuentra Cross-Site Scripting \(XSS\) basado en DOM. Un ataque XSS basado en DOM es posible si la aplicación web escribe datos en el Modelo de objetos de documento (DOM) sin la desinfección adecuada. El atacante podría manipular estos datos para incluir, por ejemplo, código JavaScript malicioso.
Evidencia:URL Afectada:
https://thubanweb.vivatia.com/thuban-web/lib/jquery-1.8.0.min.js
Detección de versión de JQuery: El archivo jquery-1.8.0.min.js corresponde a la versión JQuery 1.8.0, esto puede verificarse en base al contenido de dicho archivo. Para esta prueba de concepto se utilizaron dos archivos con código html:
Script HTML utilizado para la prueba de concepto
Ejecución de POC desde el browser:
Targets afectados:
https://thubanweb.vivatia.com
Solución
Actualizar la librería JQuery a su versión más reciente.
Referencias:
https://owasp.org/www-project-top-ten/2017/A9\_2017- Using\_Components\_with\_Known\_Vulnerabilities
Mejorar la estética la de la pantalla.
admin>reportes>nuevo
Se requiere agregar a los zul de bandejas de trabajo y de búsqueda de documentos un id a los botones de apertura de documentos. Esto es para que se pueda manipular por scripting ya que hay ocasiones donde los clientes piden ocultar estos botones para restringir las formas de consultar documentos.
Se debe evaluar, incorporar y probar el correcto funcionamiento de la herramienta incorporando la instrucción disabeURLRewitting para evitar la reescritura de URLs, vulnerabilidad detectada por PenTest.
Eliminar permisos para acceder a los módulos de despliegue de workflow y roles.
Son módulos que no se van a usar mas.
Thuban me permite modificar el valor de un campo de fecha que está como solo lectura. Es un bug que persiste en las versiones.
En el entorno Oracle, da error al indicar en configuracion de Firma Digital la opción Posición Libre. Se adjunta pantalla.
Al intentar firmar digitalmente un documento en la clase doc DOCUMENTO_PCT, al presionar firmar, explota sin poder continuar con la firma.
Pre Requisitos: Contar con un Tomcat instalado como Demonio en una distribución de Linux, como por ejemplo Ubuntu Server 20.04 LTS y Tomcat 8.5.57.
Privilegios: Se configura la instalación para que no se utilicen privilegios de Root sino privilegios de usuario para el dominio con acceso 755 / 777 sobre los directorios de la instalación del ambiente. NO se cuenta con privilegios sobre el / del disco.
Al iniciar el demonio de linux para que levante el Tomcat con un Thuban 7.5.2, se empieza a deployar la aplicación y al momento de generar el archivo de los (thuban-web.log) el sistema arroja el siguiente error y no levanta la aplicación:
java.lang.RuntimeException: java.io.FileNotFoundException: LOGFILE \(Permission denied\)
at com.latintech.thuban.ThubanManager.configureLogger\(ThubanManager.java:166\)
at com.latintech.thuban.ThubanManager.init\(ThubanManager.java:66\)
at com.latintech.thuban.ThubanManager.onApplicationEvent\(ThubanManager.java:48\)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent\(SimpleApplicationEventMulticaster.java:97\)
at org.springframework.context.support.AbstractApplicationContext.publishEvent\(AbstractApplicationContext.java:327\)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh\(AbstractApplicationContext.java:941\)
at org.springframework.context.support.AbstractApplicationContext.refresh\(AbstractApplicationContext.java:475\)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext\(ContextLoader.java:388\)
at org.springframework.web.context.ContextLoader.initWebApplicationContext\(ContextLoader.java:293\)
at org.springframework.web.context.ContextLoaderListener.contextInitialized\(ContextLoaderListener.java:111\)
at org.apache.catalina.core.StandardContext.listenerStart\(StandardContext.java:4689\)
at org.apache.catalina.core.StandardContext.startInternal\(StandardContext.java:5155\)
at org.apache.catalina.util.LifecycleBase.start\(LifecycleBase.java:183\)
at org.apache.catalina.core.ContainerBase.addChildInternal\(ContainerBase.java:743\)
at org.apache.catalina.core.ContainerBase.addChild\(ContainerBase.java:719\)
at org.apache.catalina.core.StandardHost.addChild\(StandardHost.java:705\)
at org.apache.catalina.startup.HostConfig.deployWAR\(HostConfig.java:970\)
at org.apache.catalina.startup.HostConfig$DeployWar.run\(HostConfig.java:1840\)
at java.util.concurrent.Executors$RunnableAdapter.call\(Executors.java:511\)
at java.util.concurrent.FutureTask.run\(FutureTask.java:266\)
at java.util.concurrent.ThreadPoolExecutor.runWorker\(ThreadPoolExecutor.java:1149\)
at java.util.concurrent.ThreadPoolExecutor$Worker.run\(ThreadPoolExecutor.java:624\)
at java.lang.Thread.run\(Thread.java:748\)
Caused by: java.io.FileNotFoundException: LOGFILE \(Permission denied\)
at java.io.FileOutputStream.open0\(Native Method\)
at java.io.FileOutputStream.open\(FileOutputStream.java:270\)
at java.io.FileOutputStream.<init>\(FileOutputStream.java:213\)
at java.io.FileOutputStream.<init>\(FileOutputStream.java:133\)
at org.apache.log4j.FileAppender.setFile\(FileAppender.java:289\)
at org.apache.log4j.RollingFileAppender.setFile\(RollingFileAppender.java:167\)
at org.apache.log4j.FileAppender.<init>\(FileAppender.java:108\)
at org.apache.log4j.FileAppender.<init>\(FileAppender.java:119\)
at org.apache.log4j.RollingFileAppender.<init>\(RollingFileAppender.java:80\)
at com.latintech.thuban.ThubanManager.configureLogger\(ThubanManager.java:154\)
... 22 more
Al ingresar a la Url de login de Thuban, ni bien carga la pantalla el sistema arroja un error, al hacer click en aceptar, permite ingresar y seguir trabajando.
com.latintech.doc.core.exception.UnexpectedErrorException: Error inesperado del servidor. La causa es: java.lang.NoClassDefFoundError . Mensaje: Could not initialize class com.ibm.icu.impl.ICULocaleData
at com.latintech.thuban.ui.LoginUI.loadVersion\(LoginUI.java:110\)
at sun.reflect.NativeMethodAccessorImpl.invoke0\(Native Method\)
at sun.reflect.NativeMethodAccessorImpl.invoke\(NativeMethodAccessorImpl.java:62\)
at sun.reflect.DelegatingMethodAccessorImpl.invoke\(DelegatingMethodAccessorImpl.java:43\)
at java.lang.reflect.Method.invoke\(Method.java:498\)
at bsh.Reflect.invokeMethod\(Unknown Source\)
at bsh.Reflect.invokeObjectMethod\(Unknown Source\)
at bsh.Name.invokeMethod\(Unknown Source\)
at bsh.BSHMethodInvocation.eval\(Unknown Source\)
at bsh.BSHPrimaryExpression.eval\(Unknown Source\)
at bsh.BSHPrimaryExpression.eval\(Unknown Source\)
at bsh.BSHBlock.evalBlock\(Unknown Source\)
at bsh.BSHBlock.eval\(Unknown Source\)
at bsh.BshMethod.invokeImpl\(Unknown Source\)
at bsh.BshMethod.invoke\(Unknown Source\)
at bsh.BshMethod.invoke\(Unknown Source\)
at bsh.Name.invokeLocalMethod\(Unknown Source\)
at bsh.Name.invokeMethod\(Unknown Source\)
at bsh.BSHMethodInvocation.eval\(Unknown Source\)
at bsh.BSHPrimaryExpression.eval\(Unknown Source\)
at bsh.BSHPrimaryExpression.eval\(Unknown Source\)
at bsh.Interpreter.eval\(Unknown Source\)
at bsh.Interpreter.eval\(Unknown Source\)
at org.zkoss.zk.scripting.bsh.BSHInterpreter.exec\(BSHInterpreter.java:119\)
at org.zkoss.zk.scripting.util.GenericInterpreter.interpret\(GenericInterpreter.java:310\)
at org.zkoss.zk.ui.impl.PageImpl.interpret\(PageImpl.java:800\)
at org.zkoss.zk.ui.impl.EventProcessor.process0\(EventProcessor.java:176\)
at org.zkoss.zk.ui.impl.EventProcessor.process\(EventProcessor.java:141\)
at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.process0\(EventProcessingThreadImpl.java:519\)
at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.run\(EventProcessingThreadImpl.java:446\)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.ibm.icu.impl.ICULocaleData
at com.ibm.icu.util.Calendar.setWeekCountData\(Calendar.java:3670\)
at com.ibm.icu.util.Calendar.<init>\(Calendar.java:1504\)
at com.ibm.icu.util.GregorianCalendar.<init>\(GregorianCalendar.java:360\)
at com.ibm.icu.util.Calendar.getInstance\(Calendar.java:1598\)
at com.ibm.icu.util.Calendar.getInstance\(Calendar.java:1538\)
at com.latintech.thuban.ui.LoginUI.loadVersion\(LoginUI.java:80\)
... 29 more
Al dar un error en los servicios http, no se están cerrando los streams y writers, eso producía un error que dejaba sin memoria en Thuban.
En general, no se puede utilizar los métodos:
resp.setStatus y resp.sendError al mismo tiempo, porque eso da error.
En bandejas de WF, un campo entero se muestra con decimales. Thuban V7.5.2 - BBDD Oracle.
Un cliente nos reporta que al crear un checklist y darle a guardar a la clase documental le salta un error. Se deja adjunto al ticket el detalle del error, por ende el checklist no queda guardado. A su vez dado que el error se debe a que le esta pasando NULL a la PK de la tabla THUBAN_FOLDER_CHECKLIST lo que se hizo fue insertar el registro a mano y editarlo desde Thuban, ahi si funcionó.
Al parecer hay algún problema al querer crear el checklist desde Thuban.
Necesitamos enviar en la descripcion de las notas de los mails que envía thuban. Una descripcion mucho más extensa que contenga información pero respetando los saltos de línea que tiene al momento de ser cargado. Adjunto ejemplo de como se ve en el mail la descripción.
Descripción breve:
Al querer activar la autentificación de dos pasos, esta no nos reconoce el codigo que nos da la app de Google descargada con anterioridad en nuestro Móvil.
Pasos a seguir:
1- Iniciar sesión en Thuban y dirigirse "Configuración" y cliquear.
2- Ir a la pestaña de "Seguridad" y activar 2FA, nos aparece un Código QR y nos indica descargar el autentificador de Google. Lo hacemos y escaneamos el Código antes mencionado.
3- Agregamos la cuenta a la app y nos da un código de 6 números para activar en la plataforma.
Resultado esperado:
Reconoce el código dado por la app y activa 2FA.
Resultado obtenido:
No reconoce el Código nunca.
Al abrir la pantalla de políticas de acceso, explota la pantalla.
No se depuran los archivos de las carpetas temporales de Thuban.
En el caso de que se envíe un mail con parte html y txt al mismo tiempo, cuando el cliente lo recibe, se ve el txt en cambio de html.
Creo un campo nuevo en una clase doc, este campo ya existe en la tabla pero pertenece a otra clase doc.
El campo existente es decimal y el campo que quiero agregar es string.
Al guardar explota.
Al modificar el tamaño de una campo de la clase doc que esta relacionado con INDEX_ITEM_ID no puede ser menor a 16 caracteres.
Cuando realizamos una busqueda por el web service de JSON.
Al filtrar por date no trae resultados.
Contenido de documentos PDF no se ven en el visor de Thuban (si se ve la firma), pero al descargarlos si se ve el contenido. Se reenvía descripción y evidencia aportada por el usuario y se adjunta pdf descargado.
Descripción breve:
Al seleccionar “ver” en “Historial de búsqueda” lanza un cartel de “error inesperado”
Pasos a seguir:
1- Realizamos una búsqueda
2- Presionamos en “Historial de búsqueda” la opción de “ver”
3- Seleccionamos uno de los resultados de la grilla.
Resultado esperado:
Nos regresa al elegir una fecha, los valores de esta.
Resultado obtenido:
Error inesperado.
Se adjunta texto del error
Recientemente Microsoft empezó a poner un filtro al uso de los SMTP y está bloqueando el envío de correos si no se utiliza TLS v1.2, esto al principio era aleatorio y el impacto era menor pero ahora son cada vez más los mails rechazados.
En consecuencia es preciso incorporar la siguiente propiedad a la generación del mail session solo cuándo se utilice TLS y sea necesario:
<prop key="mail.smtp.ssl.protocols">TLSv1.2</prop>
Se debe de buscar la forma de que esto quede configurables y no obligatorio.
Buscar documentación
Clase: 6cero4
Nombre: Factura prueba
editar documentación
En este caso los campos están vacíos.
Lleno un campo.
pongo ver campos secundarios
se borra el campo que llene
Resultado esperado: que los datos que ingreso no se borren al apretar una opción que me muestra mas datos.
Resultado obtenido: Ingreso un dato, aprieto un botón para ver mas campos y se borra el dato que ingrese.
El error consiste en que el valor Importe Tipo Dato Decimal tiene inconsistencias con el punto y coma y genera un número mayor que el de la factura.
Este campo se reconoce a través de Captika. En la configuración del campo no vemos ninguna irregularidad. Les dejo prints de pantalla con la evidencia. Pareciera algún tipo de incompatibilidad entre el punto y la coma en el importe de la factura. En la imagen hicimos cambio de formato para ver el comportamiento entre importe neto e importe total, pero aún asi le agrega ceros a la derecha. Cualquier informacion adicional nos avisan.
En todas las pantallas del admin hay un exceso de espacio en blanco entre las secciones de la página. Adjunto imagen (el print tiene zoom out asi entraba todo el scroll de la página)
pantalla: admin> reportes
Resultado obtenido: La lectura es muy cortada y con tanto espacio en blanco parece no haber mas información.
Resultado esperado: que el contenido de la pagina tengo un mejor flujo de lectura y se vea el contenido
pantalla: reportes> reportes
Al crear un reporte html el gráfico de barras que aparece en las opciones pdf o xls esta roto (no se ve)
Resultado esperado: que el reporte html se vea más prolijo.
Nota: Debería tener un botón de descarga? el reporte html ahora es solo para vista.
Pantalla: configuración> seguridad> autenticacion en dos pasos> la pantalla después de aceptar y guardar.
Hay que descargar el autenticador de google en el celular para vincular una cuenta.
En el proceso de vinculación en el celular te dice que podes vincularlo escaneando un QR o poniendo un código de 16 dígitos.
En la pantalla de thuban solo aparece el código.
NO aparece el QR (si hay un lugar en blanco donde debería estar).
Resultado esperado: Que funcionen las dos funciones que me ofrecen para vincular la cuenta.
Resultado obtenido: Sólo funciona la opción del código, que para el usuario es la mas tediosa. Escanear el QR es mas rápido y sencillo.
El comportamiento de este error no es estable ni predecible. Paso varias veces de manera aleatoria y no lo puedo volver a reproducir
Al ingresar a la pantalla de usuarios y pulsar el botón nuevo explota.
Faltaba validar 2 valores booleanos.
Al abrir en admin la pantalla de clases documentales, se genera un error, la clase doc seleccionada tenía vínculo pero había un parámetro mal validado.
admin>usuarios> elijo un usuario con 2fa activo> detalle> reestablecer.
Se llegó a esta pantalla en búsqueda de reestablecer un usuario que tiene 2fa activo pero no tiene el celular con el y no puede entrar a su cuenta.
En la pestaña detalle se apreta el botón reestablecer y aparece un alert con un error (print)
el botón no se puede utilizar.
Recupero de pass desde el login.
No aparece el captcha para poder enviar el mail de recupero.
Se requiere mejorar el formato decimal.
También existen bug en el diálogo de formato decimal en clases doc y Políticas de acceso.
No se visualiza el separador en el menu del admin.
Resolucion de la pantalla 1366\*768 \(notebook\)
No se ve el botón de guardar.
Adjunto img de la pantalla al 100% y con zoom out.