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.