Software afetado
AXESS versões 4.x e 5.0. 0 são afectadas por uma potencial vulnerabilidade de desvio do esquema de autenticação
. (Outros produtos Axiros não são afectados).
Data de deteção: 18 de março de 2024 (créditos a nsideattacklogic)
Contacto: [email protected]
Descrição
As versões mencionadas do site AXESS são vulneráveis à violação do esquema de autenticação
Embora o Axiros não possa fazer declarações gerais sobre o impacto das vulnerabilidades mencionadas nos sistemas implementados, o Axiros recomenda a aplicação da correção descrita o mais rapidamente possível. As futuras versões do AXESS incluirão uma correção para esta vulnerabilidade.
Mitigação e correção
Para corrigir a vulnerabilidade, é necessário substituir um ficheiro no AXUserManager e adicionar uma nova permissão na configuração RBAC.
Processo de atualização Ansible
Leia os procedimentos de patch do Ansible antes de aplicar o patch.
https://docs.axiros.com/axess-documentation/install/latest/ansible_playbook_reference/utilities/distribute_patches/index.html
Observe que este procedimento deve ser repetido em todos os ambientes (por exemplo, laboratório, preparação, produção)
Descarregar o ficheiro de correção de acordo com a versão 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 o ficheiro dentro da máquina de controlo Ansible
Por favor, copie o ficheiro de correção de cima para dentro do chroot da sua máquina de controlo Ansible.
Tenha em atenção que poderá ter de criar a estrutura de pastas dentro do diretório de correcções (por predefinição, está vazio). Remova o prefixo da versão do ficheiro antes de o colocar na pasta de correcções (por exemplo, AXESS_5_0_0__AXUserManager.py renomear para 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/ axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches# ls -l total 8.0K drwxr-xr-x 2 root 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 # Nesta configuração, a pasta patches está vazia. Agora criamos a estrutura de pastas para o patch 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 root root 4.0K 2024-03-18 16:04 . drwxr-xr-x 3 root root 4.0K 2024-03-18 16:04 ... # A estrutura de pastas foi criada, por favor coloque o ficheiro de correção descarregado nessa diretoria para que tenha o seguinte aspeto 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 root root 4.0K 2024-03-18 16:04 ... -rw-r--r-- 1 root root 15K 2024-03-18 16:06 AXUserManager.py
Criar a estrutura de pastas necessária
Distribuir o patch através de manuais Ansible
Agora queremos implantar o patch em todos os nós do cluster. O playbook pode ser executado como qualquer outro playbook - certifique-se de selecionar o arquivo de inventário correto.
ansible-playbook --ask-vault-pass -i inventory/lab.py util_axess_patch_files.yml
Exemplo de saída
TASK [Create missing destination directories] ***************************************************************************************************************************** ok: [axess] => (item=diretório base) skipping: [axess] => (item=arquivo a saltar) ok: [axess] => (item=diretório base/Produtos) ok: [axess] => (item=diretório base/Produtos/AXUserManager) ignorando: [axess] => (item=pular ficheiro) TASK [Copiar ficheiros corrigidos para os nós geridos] **************************************************************************************************************************** skipping: [axess] => (item=diretório de exceção) ignorando: [axess] => (item=/opt/axess-ansible/contrib-project/patches/axess/.gitkeep) pulando: [axess] => (item=diretório de saltos) saltando: [axess] => (item=diretório pulado) alterado: [axess] => (item=/opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager/AXUserManager.py) PLAY [Distribuir patches para os nós do tr069controller] ************************************************************************************************************************ TASK [Patches directory query] ******************************************************************************************************************************************** ok: [axess -> localhost] TASK [Create missing destination directories] ***************************************************************************************************************************** a saltar: [axess] => (item=skipping file) TASK [Copiar ficheiros corrigidos para os nós geridos] **************************************************************************************************************************** skipping: [axess] => (item=/opt/axess-ansible/contrib-project/patches/tr069controller/.gitkeep) PLAY [Distribuir correcções aos nós do configcontroller] *********************************************************************************************************************** TASK [Patches directory query] ******************************************************************************************************************************************** ok: [axess -> localhost] TASK [Create missing destination directories] ***************************************************************************************************************************** a saltar: [axess] => (item=skipping file) TASK [Copiar ficheiros corrigidos para os nós geridos] **************************************************************************************************************************** skipping: [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
Reiniciar AXESS Processos do Norte
Após a implementação da correção, é necessário reiniciar todos os processos de ligação norte do AXESS
ansible-playbook --ask-vault-pass -i inventory/lab.py node-axess-northbound-uwsgi_restart.yml
Criar uma nova permissão em AXESS.GUI
O AXCustomerSupportPortal está a utilizar um URL de saída de sessão que é agora restrito para funções de utilizador que não sejam "Manager" após a aplicação do patch.
Crie uma nova permissão e atribua-a à função de utilizador "Authenticated". Dessa forma, todas as outras funções herdarão essa permissão.
Este passo só é obrigatório se estiver a utilizar o AXCustomerSupportPortal ou uma página de logout HTML personalizada
Inicie sessão em AXESS.GUI e navegue até à página Controlo de Acesso Baseado em Funções.
Criar a nova permissão
Criar uma nova permissão com as seguintes definições
Nome: support_portal_logout
Operações, RPCs e Facetas: *
Path: */acl_users/logout.html*
Atribuir à função autenticada existente
Seleccione a nova permissão no menu pendente e clique no botão Guardar.
A nova permissão fica ativa depois de a cache ser renovada (predefinição: 60 segundos). Não é necessário terminar a sessão dos utilizadores existentes.