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.