Software afectado

AXESS versiones 4.x y 5.0. 0 están afectadas por una posible vulnerabilidad de omisión del esquema de autenticación
. (Otros productos Axiros no están afectados).

Fecha de detección: 18 de marzo de 2024 (créditos a nsideattacklogic)
Contacto:
[email protected]

Descripción

Las versiones de AXESS mencionadas son vulnerables a la omisión del esquema de autenticación.  

Aunque Axiros no puede hacer declaraciones generales sobre el impacto de las vulnerabilidades mencionadas en los sistemas desplegados, Axiros recomienda aplicar la corrección descrita lo antes posible. Las futuras versiones de AXESS incluirán un parche para esta vulnerabilidad.

Mitigación y reparación

Para parchear la vulnerabilidad se debe reemplazar un fichero dentro del AXUserManager y añadir un nuevo permiso en la configuración RBAC.

Proceso de actualización de Ansible

Por favor, lea los procedimientos de parche Ansible antes de aplicar el parche.
https://docs.axiros.com/axess-documentation/install/latest/ansible_playbook_reference/utilities/distribute_patches/index.html
Tenga en cuenta que este procedimiento debe repetirse en todos los entornos (p. ej., laboratorio, montaje, producción).


Descargue el archivo de parche según la versión AXESS

4.0.0 AXESS_4_0_0__LegacyAXUserManager.py /opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager/LegacyAXUserManager.py

4.1.0 AXESS_4_1_0__AXUserManager.py /opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager/AXUserManager.py

4.2.0 AXESS_4_2_0__AXUserManager.py /opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager/AXUserManager.py

4.3.0 + 4.3.1 AXESS_4_3_0__AXUserManager.py /opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager/AXUserManager.py

5.0.0 AXESS_5_0_0__AXUserManager.py /opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager/AXUserManager.py


Coloque el archivo dentro de la máquina de control de Ansible 

Por favor, copie el archivo de parche de arriba dentro de su máquina de control Ansible chroot.

Tenga en cuenta que puede que necesite crear la estructura de carpetas dentro del directorio de parches (por defecto está vacío). Elimine el prefijo de versión del archivo antes de colocarlo en la carpeta de parches (por ejemplo, AXESS_5_0_0__AXUserManager.py renómbrelo a AXUserManager.py

admin@ip-172-31-8-138:~$ sudo chroot /opt/axess-ansible
axess-ansible root@ip-172-31-8-138:/# cd /opt/axess-ansible/contrib-project/patches/
axessroot@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches# ls -l
total 8.0K
drwxr-xr-x 2 raíz root 4.0K 2022-11-23 09:07 .
drwxr-xr-x 16 root root 4.0K 2022-07-06 16:11 ..
-rw-r--r-- 1 root root 0 2022-11-22 19:00 .gitkeep
 
# En esta configuración la carpeta patches está vacía. Ahora creamos la estructura de carpetas para el parche
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches# mkdir -p axess/base/Products/AXUserManager/
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches# cd axess/base/Products/AXUserManager/
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager# ls
total 8.0K
drwxr-xr-x 2 raíz root 4.0K 2024-03-18 16:04 .
drwxr-xr-x 3 raíz 4.0K 2024-03-18 16:04 ..
# La estructura de carpetas fue creada por favor coloque el archivo de parche descargado en ese directorio para que se vea así
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager# ls -l
total 24K
drwxr-xr-x 2 root root 4.0K 2024-03-18 16:06 .
drwxr-xr-x 3 raíz 4.0K 2024-03-18 16:04 ..
-rw-r--r-- 1 root raíz 15K 2024-03-18 16:06 AXUserManager.py

 Crear la estructura de carpetas necesaria 


Distribuya el parche a través de los playbooks de Ansible

Ahora queremos desplegar el parche en todos los nodos del cluster. El playbook se puede ejecutar como cualquier otro playbook - por favor, asegúrese de seleccionar el archivo de inventario correcto.

ansible-playbook --ask-vault-pass -i inventory/lab.py util_axess_patch_files.yml

Ejemplo de salida

TASK [Create missing destination directories] *****************************************************************************************************************************
ok: [axess] => (item=directorio base)
omitiendo: [axess] => (item=fichero omitido)
ok: [axess] => (item=directorio base/Productos)
ok: [axess] => (item=directorio base/Productos/AXUserManager)
omitiendo: [axess] => (item=saltando fichero)
 
TAREA [Copiar ficheros parcheados a los nodos gestionados] ****************************************************************************************************************************
omitiendo: [axess] => (item=saltando directorio)
saltando: [axess] => (item=/opt/axess-ansible/contrib-project/patches/axess/.gitkeep)
saltando: [axess] => (item=saltando directorio)
saltando: [axess] => (item=saltando directorio)
changed: [axess] => (item=/opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager/AXUserManager.py)
 
PLAY [Distribuir parches a los nodos tr069controller] ************************************************************************************************************************
 
TASK [Patches directory query] ********************************************************************************************************************************************
ok: [axess -> localhost]
 
TASK [Create missing destination directories] *****************************************************************************************************************************
omitiendo: [axess] => (item=saltando fichero)
 
TAREA [Copiar ficheros parcheados a los nodos gestionados] ****************************************************************************************************************************
omitiendo: [axess] => (item=/opt/axess-ansible/contrib-project/patches/tr069controller/.gitkeep)
 
PLAY [Distribuir parches a nodos configcontroller] ***********************************************************************************************************************
 
TASK [Patches directory query] ********************************************************************************************************************************************
ok: [axess -> localhost]
 
TASK [Create missing destination directories] *****************************************************************************************************************************
omitiendo: [axess] => (item=saltando fichero)
 
TAREA [Copiar ficheros parcheados a los nodos gestionados] ****************************************************************************************************************************
omitiendo: [axess] => (item=/opt/axess-ansible/contrib-project/patches/configcontroller/.gitkeep)
 
PLAY RECAP ****************************************************************************************************************************************************************
axess                     ok=17 changed=1 unreachable=0 failed=0 skipped=13 rescued=0 ignored=0

Reinicie los procesos de AXESS Northbound

Tras el despliegue del parche, es necesario reiniciar todos los procesos hacia el norte de AXESS .

ansible-playbook --ask-vault-pass -i inventory/lab.py node-axess-northbound-uwsgi_restart.yml

Crear un nuevo permiso en AXESS.GUI

El AXCustomerSupportPortal está utilizando una URL de cierre de sesión que ahora está restringida para los roles de usuario que no sean "Administrador" después de aplicar el parche.
Por favor, cree un nuevo permiso y asígnelo al rol de usuario "Autenticado". De esta forma todos los demás roles heredarán este permiso. 

Este paso sólo es obligatorio si utiliza AXCustomerSupportPortal o una página de cierre de sesión HTML personalizada.

Inicie sesión en AXESS.GUI y navegue hasta la página Role Based Access Control.

Crear el nuevo permiso

Cree un nuevo permiso con la siguiente configuración

Nombre: support_portal_logout
Operaciones, RPCs y Facetas: *
Path: */acl_users/logout.html*

Asignar al rol autenticado existente

Seleccione el nuevo permiso en el menú desplegable y haga clic en el botón Guardar.
El nuevo permiso se activa después de que se renueve la caché (por defecto 60 segundos). No es necesario para cerrar las sesiones de usuario existentes.