Betroffene Software

AXESS Versionen 4.x und 5.0.0 sind von einer potenziellen Sicherheitslücke im Authentifizierungsschema
betroffen. (Andere Axiros Produkte sind nicht betroffen.)

Datum der Entdeckung: 18. März 2024 (Dank an nsideattacklogic)
Kontakt:
[email protected]

Beschreibung

Die genannten AXESS Versionen sind anfällig für die Umgehung des Authentifizierungsschemas  

Obwohl Axiros keine allgemeinen Aussagen über die Auswirkungen der genannten Sicherheitslücken auf die eingesetzten Systeme machen kann, empfiehlt Axiros , den beschriebenen Fix so bald wie möglich anzuwenden. Zukünftige Versionen von AXESS werden einen Patch für diese Sicherheitslücke enthalten.

Abhilfe & Behebung

Um die Schwachstelle zu beheben, muss eine Datei im AXUserManager ersetzt und eine neue Berechtigung in der RBAC-Konfiguration hinzugefügt werden.

Ansible-Upgrade-Prozess

Bitte lesen Sie die Ansible-Patch-Verfahren, bevor Sie den Patch anwenden.
https://docs.axiros.com/axess-documentation/install/latest/ansible_playbook_reference/utilities/distribute_patches/index.html
Bitte beachten Sie, dass dieser Vorgang in jeder Umgebung (z. B. Labor, Staging, Produktion) wiederholt werden muss.


Laden Sie die Patch-Datei entsprechend der Version AXESS herunter.

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


Platzieren Sie die Datei innerhalb der Ansible-Kontrollmaschine 

Bitte kopieren Sie die obige Patch-Datei in das Chroot Ihrer Ansible-Kontrollmaschine.

Bitte beachten Sie, dass Sie möglicherweise die Ordnerstruktur innerhalb des Patch-Verzeichnisses erstellen müssen (standardmäßig ist es leer). Entfernen Sie den Versionspräfix aus der Datei, bevor Sie sie in den Patch-Ordner legen (z.B. AXESS_5_0_0__AXUserManager.py umbenennen in 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
insgesamt 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
 
# In dieser Konfiguration ist der Ordner patches leer. Jetzt erstellen wir die Ordnerstruktur für den 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/Produkte/AXUserManager/
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches/axess/base/Produkte/AXUserManager# ls
gesamt 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 ..
# Die Ordnerstruktur wurde erstellt, bitte legen Sie die heruntergeladene Patch-Datei in diesem Verzeichnis ab, so dass es wie folgt aussieht
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager# ls -l
gesamt 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

 Erstellen Sie die erforderliche Ordnerstruktur 


Verteilen Sie den Patch über Ansible-Playbooks

Nun wollen wir den Patch auf alle Knoten im Cluster verteilen. Das Playbook kann wie jedes andere Playbook ausgeführt werden - bitte stellen Sie sicher, dass Sie die richtige Inventardatei auswählen.

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

Beispielhafte Ausgabe

TASK [Create missing destination directories] *****************************************************************************************************************************
ok: [axess] => (item=Verzeichnis base)
Überspringen: [axess] => (item=überspringende Datei)
ok: [axess] => (item=Verzeichnis base/Products)
ok: [axess] => (item=Verzeichnis base/Products/AXUserManager)
Überspringen: [axess] => (item=überspringende Datei)
 
TASK [Gepatchte Dateien auf die verwalteten Knoten kopieren] ****************************************************************************************************************************
Überspringen: [axess] => (item=Verzeichnis überspringen)
Überspringen: [axess] => (item=/opt/axess-ansible/contrib-project/patches/axess/.gitkeep)
Überspringen: [axess] => (item=skipping directory)
Überspringen: [axess] => (Element=Verzeichnis überspringen)
geändert: [axess] => (item=/opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager/AXUserManager.py)
 
PLAY [Verteilen von Patches an tr069controller-Knoten] ************************************************************************************************************************
 
TASK [Patches directory query] ********************************************************************************************************************************************
ok: [axess -> localhost]
 
TASK [Create missing destination directories] *****************************************************************************************************************************
Überspringen: [axess] => (item=skipping file)
 
TASK [Kopieren gepatchter Dateien auf die verwalteten Knoten] ****************************************************************************************************************************
Überspringen: [axess] => (item=/opt/axess-ansible/contrib-project/patches/tr069controller/.gitkeep)
 
PLAY [Verteilen der Patches auf die Configcontroller-Knoten] ***********************************************************************************************************************
 
TASK [Patches directory query] ********************************************************************************************************************************************
ok: [axess -> localhost]
 
TASK [Create missing destination directories] *****************************************************************************************************************************
Überspringen: [axess] => (item=skipping file)
 
TASK [Kopieren gepatchter Dateien auf die verwalteten Knoten] ****************************************************************************************************************************
Überspringen: [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

Neustart von AXESS Northbound-Prozessen

Nach der Bereitstellung des Patches müssen wir alle AXESS northbound processes neu starten

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

Erstellen Sie eine neue Berechtigung auf AXESS.GUI

Das AXCustomerSupportPortal verwendet eine Abmelde-URL, die nach dem Einspielen des Patches für Benutzerrollen, die nicht "Manager" sind, eingeschränkt ist.
Bitte erstellen Sie ein neues Recht und weisen Sie es der Benutzerrolle "Authenticated" zu. Auf diese Weise werden alle anderen Rollen diese Berechtigung erben. 

Dieser Schritt ist nur erforderlich, wenn Sie das AXCustomerSupportPortal oder eine benutzerdefinierte HTML-Abmeldeseite verwenden

Melden Sie sich auf AXESS.GUI an und navigieren Sie zur Seite Rollenbasierte Zugriffskontrolle.

Erstellen Sie die neue Berechtigung

Erstellen Sie eine neue Berechtigung mit den folgenden Einstellungen

Name: support_portal_logout
Operationen, RPCs und Facetten: *
Pfad: */acl_users/logout.html*

Der vorhandenen authentifizierten Rolle zuweisen

Wählen Sie die neue Berechtigung aus der Dropdown-Liste aus und klicken Sie auf die Schaltfläche Speichern.
Die neue Berechtigung wird aktiv, nachdem der Cache erneuert wurde (Standardwert 60 Sekunden). Sie ist nicht erforderlich, um bestehende Benutzersitzungen abzumelden.