影響を受けるソフトウェア

AXESS バージョン 4.x および 5.0.0は、認証スキーマ
バイパスの脆弱性の影響を受けます。(他のAxiros 製品は影響を受けません)。

発見日2024年3月18日(nsideattacklogicにクレジット)
連絡先:
[email protected]

説明

AXESS のリリースには、認証スキーマ・バイパスの脆弱性がある。  

Axiros は、この脆弱性が配備されたシステムに与える影響について一般的な言明はでき ませんが、Axiros は、記述された修正プログラムをできるだけ早く適用するこ とを推奨します。今後のAXESS バージョンには、この脆弱性に対するパッチが含まれる予定です。

緩和と修正

脆弱性を修正するためには、AXUserManager内のファイルを置換し、RBACコンフィギュレーションに新しいパーミッションを追加する必要があります。

Ansibleアップグレードプロセス

パッチを適用する前に、Ansibleのパッチ手順をお読みください。
https://docs.axiros.com/axess-documentation/install/latest/ansible_playbook_reference/utilities/distribute_patches/index.html
この手順は、すべての環境 (ラボ、ステージング、本番環境など) で繰り返す必要があることに注意してください。


AXESS バージョンに応じたパッチファイルをダウンロードする。

4.0.0 AXESS4_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


Ansibleコントロールマシン内にファイルを置く 

上記のパッチファイルをAnsibleコントロールマシンのchroot内にコピーしてください。

パッチフォルダ内にフォルダ構造を作成する必要があるかもしれないことに注意してください(デフォルトでは空です)。patches フォルダに置く前に、ファイルからバージョンの接頭辞を削除してください(例:AXESS_5_0_0__AXUserManager.py を 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
合計 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
 
# このセットアップでは、patchesフォルダは空です。ここでパッチのフォルダ構造を作成します。
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches# mkdir -paxess/base/Products/AXUserManager/ # パッチ用のフォルダ構造を作成します。
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches# cdaxess/base/Products/AXUserManager/
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager# ls
合計 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 .
# ダウンロードしたパッチファイルをそのディレクトリに置いてください。
axess-ansible root@ip-172-31-8-138:/opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager# ls -l
合計 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

 必要なフォルダ構造を作成する 


Ansible playbookでパッチを配布する。

次に、クラスタ内のすべてのノードにパッチをデプロイします。このplaybookは他のplaybookと同じように実行できます - 正しいインベントリファイルを選択してください。

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

出力例

TASK [Create missing destination directories] *****************************************************************************************************************************
OK[axess] => (アイテム=ディレクトリベース)
スキップします:[axess] => (アイテム=スキップファイル)
OK[axess] => (item=ディレクトリ base/Products)
OK: [  ] => (item=ディレクトリ base/Products)[axess] => (item=ディレクトリ base/Products/AXUserManager)
スキップします:[axess] => (アイテム=スキップファイル)
 
TASK [Copy patched files to the managed nodes] ****************************************************************************************************************************
をスキップします:[axess] => (アイテム=ディレクトリをスキップ)
スキップします:[axess] => (item=/opt/axess-ansible/contrib-project/patches/axess/.gitkeep)
ディレクトリをスキップします:[axess] => (item=skipping directory)
ディレクトリをスキップします:[axess] => (item=skipping directory)
changed: [axess] => (item=/opt/axess-ansible/contrib-project/patches/axess/base/Products/AXUserManager/AXUserManager.py)
 
PLAY [Distribute patches to tr069controller nodes] ************************************************************************************************************************
 
TASK [Patches directory query] ********************************************************************************************************************************************
OK[axess -> localhost]
 
TASK [Create missing destination directories] *****************************************************************************************************************************
をスキップします:[axess] => (アイテム=スキップファイル)
 
TASK [Copy patched files to the managed nodes] ****************************************************************************************************************************
をスキップします:[axess] => (item=/opt/axess-ansible/contrib-project/patches/tr069controller/.gitkeep)
 
PLAY [Distribute patches to configcontroller nodes] ***********************************************************************************************************************
 
TASK [Patches directory query] ********************************************************************************************************************************************
OK[axess -> localhost]
 
TASK [Create missing destination directories] *****************************************************************************************************************************
をスキップします:[axess] => (アイテム=スキップファイル)
 
TASK [Copy patched files to the managed nodes] ****************************************************************************************************************************
をスキップします:[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

AXESS ノースバウンド・プロセスを再起動する

パッチのデプロイ後、すべてのAXESS ノースバウンド・プロセスを再起動する必要がある。

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

AXESS.GUI に新しいパーミッションを作成する。

パッチの適用後、AXCustomerSupportPortal でログアウト URL が使用され、"Manager "以外のユーザーロールに対して制限されるようになりました。
新しいパーミッションを作成し、"Authenticated "ユーザーロールに割り当ててください。そうすれば、他のすべてのロールがこの権限を継承します。 

このステップは、AXCustomerSupportPortal またはカスタム HTML ログアウトページを使用している場合のみ必須です。

AXESS.GUI にログインし、ロールベースのアクセスコントロールページに移動する。

新しいパーミッションを作成する

以下の設定で新しいパーミッションを作成する。

名前: support_portal_logout
操作、RPC、ファセット:*
パス:*/acl_users/logout.html*。

既存の認証済み役割に割り当てる

ドロップダウンから新しいパーミッションを選択し、[保存]ボタンをクリックします。
新しいパーミッションは、キャッシュが更新された後に有効になります(デフォルトは60秒)。既存のユーザーセッションをログアウトする必要はありません。