2023 年 9 月 22 日に AWS ParallelCluster 3.7.1 がリリースされました。
今回のアップデートで機能追加はありません。ですが、CVE-2023-41915 の脆弱性に対応しました
Upgrade Pmix to 4.2.6 (from 3.2.3).
Release AWS ParallelCluster v3.7.1 · aws/aws-parallelcluster
AWS ParallelCluster が抱えた脆弱性
ParallelCluster ご利用の対象者には 2023 年 9 月 15 日に AWS サポートから以下の件名でメール通知がありました。
Subject: [Action Required] Upgrade AWS ParallelCluster OpenPMIx Package [AWS Account: 123456789012]
内容を要約すると、重要度の高い脆弱性が公開され影響を受けるためアップデートを推奨するといったものです。
- OpenMPIx の脆弱性が公開された(CVE-2023-41915 )
- ParallelCluster には OpenPMIx パッケージが含まれており、すべてのバージョンで影響を受ける
- クラスターの OpenMPIx パッケージのバージョンを 4.2.6 へ更新することを推奨する
AWS のハイパフォーマンスコンピューティング (HPC) クラスターを管理するためのオープンソースツールである AWS ParallelCluster を使用している、または最近使用したことが確認できたため、ご連絡を差し上げます。AWS ParallelCluster を使用しなくなった場合は、このメッセージを無視してもかまいません。
AWS ParallelCluster には、Process Management Interface Exascale (PMIx) standard を使用できるようにするための OpenPMIx パッケージが含まれています。OpenPMIx は CVE-2023-41915 [1] を公開しました。これは AWS ParallelCluster のすべてのバージョンに影響します。これにより、サードパーティのアクターが特定のライブラリ関数の実行中に競合状態によって任意のファイルの所有権を取得する可能性があるという問題が発生する可能性があります。クラスターの PMIx パッケージのバージョンをバージョン 4.2.6 に更新して、重要なセキュリティ修正を組み込むことをお勧めします。このアップデートの方法については、インストラクションガイド [2] を参照してください。
ご質問やご不明点等ございましたら、AWS サポート [3] までお問い合わせください。
AWS Health Dashboard で同じ内容の通知を確認できます。
タイトルはEC2 Security notification
となっています。ParallelCluster の件とはパッと見ですと見つけにくいかもしれません。影響のあるヘッドノードも、コンピュートノードも EC2 インスタンスですから何も間違ったタイトルではないのですけどね。
推奨されるアップデート方法
必要なアップデート手順は ParallelCluster の GitHub リポジトリで公開されています。2 種類の OpenMPIx のバージョンのアップデート方法が紹介されています。
課題
コンピュートノードの OpenMPIx のアップデート方法はカスタムブートストラップ処理による EC2 インスタンス起動後にコンパイルしてからインストールし直すことになります。コンピュートノードの起動から演算開始までの時間が数分単位で遅くなることを意味します。これはコンピュートノードの動作仕様の都合、毎回コンパイルからスタートするのは仕方がありません。
他の解決策としては OpenMPIx をアップデート済みのカスタム AMI を作成する方法です。カスタム AMI で運用しているユーザーは良いですが、カスタムブートストラップの処理で初期セットアップを行っているユーザーには二の足を踏む内容です。
AWS ParallelCluster 3.7.1 Relesed
CVE-2023-41915 の対策は、OpenMPIx のバージョンを 4.2.6 か 5.0.x 以上にすることでした。
2023 年 9 月 22 日にリリースされた AWS ParallelCluster 3.7.1 で、OpenMPIx のバージョンがデフォルトで 4.2.6 となりました。つまり、ParallelCluster 3.7.0 以前のすべてのバージョンで抱えた脆弱性が解消されたバージョンとなります。
バージョンを確認してみる
ParallelCluster 3.7.1 のクラスターを作成し、バージョンを確認してみます。
v3.7.1 のクラスターは以下のコンフィグで構築しました。全文は長いため折りたたみしています。
- OS: Ubuntu 22.04
折りたたみ
Region: ap-northeast-1
Image:
Os: ubuntu2204
Tags:
- Key: Name
Value: v371-cluster
# ----------------------------------------------------------------
# Head Node Settings
# ----------------------------------------------------------------
HeadNode:
InstanceType: t3.micro
Networking:
ElasticIp: false
SubnetId: subnet-0cc9326cae7a514a3
Ssh:
KeyName: sandbox-keypair
LocalStorage:
RootVolume:
Size: 40
Encrypted: true
VolumeType: gp3
Iops: 3000
Throughput: 125
Iam:
AdditionalIamPolicies:
- Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
S3Access:
- BucketName: hpc-dev-postinstall-files
EnableWriteAccess: false
# ----------------------------------------------------------------
# Compute Node Settings
# ----------------------------------------------------------------
Scheduling:
Scheduler: slurm
SlurmSettings:
ScaledownIdletime: 5
SlurmQueues:
# ------ Compute 1 ------
- Name: queue1
ComputeResources:
- Name: queue1
Instances:
- InstanceType: c6i.large
- InstanceType: m6i.large
MinCount: 0
MaxCount: 10
DisableSimultaneousMultithreading: true
ComputeSettings:
LocalStorage:
RootVolume:
Size: 40
Encrypted: true
VolumeType: gp3
Iops: 3000
Throughput: 125
CapacityType: SPOT
AllocationStrategy: lowest-price
Networking:
SubnetIds:
- subnet-0cc9326cae7a514a3
PlacementGroup:
Enabled: false
Iam:
AdditionalIamPolicies:
- Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
S3Access:
- BucketName: hpc-dev-postinstall-files
EnableWriteAccess: false
# ----------------------------------------------------------------
# Shared Storage Settings
# ----------------------------------------------------------------
# ----------------------------------------------------------------
# Other Settings
# ----------------------------------------------------------------
Monitoring:
Logs:
CloudWatch:
Enabled: true
RetentionInDays: 180
DeletionPolicy: "Delete"
Dashboards:
CloudWatch:
Enabled: false
ヘッドノードへログイン
ParallelCluster 3.7.1 の AMI が利用されいます。
OpenMPIx のバージョンを確認してみました。PMIX: 4.2.6
の表記を確認できました。脆弱性対応に必要なバージョンまであがった OpenMPIx がデフォルトでインストールされた状態となっています。
v3.7.1
$ /opt/pmix/bin/pmix_info
Package: PMIx root@ip-172-31-0-106 Distribution
PMIX: 4.2.6
PMIX repo revision: gitf20e0d5d
PMIX release date: Sep 09, 2023
PMIX Standard: 4.2
PMIX Standard ABI: Stable (0.0), Provisional (0.0)
Prefix: /opt/pmix
Configured architecture: pmix.arch
Configure host: ip-172-31-0-106
Configured by: root
Configured on: Fri Sep 15 16:03:39 UTC 2023
Configure host: ip-172-31-0-106
Configure command line: '--prefix=/opt/pmix'
Built by:
Built on: Fri Sep 15 16:04:26 UTC 2023
Built host: ip-172-31-0-106
C compiler: gcc
C compiler absolute: /usr/bin/gcc
C compiler family name: GNU
C compiler version: "11" "." "4" "." "0"
Internal debug support: no
dl support: yes
Symbol vis. support: yes
Manpages built: yes
MCA bfrops: v12 (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA bfrops: v20 (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA bfrops: v21 (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA bfrops: v3 (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA bfrops: v4 (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA bfrops: v41 (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA gds: hash (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA gds: ds12 (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA gds: ds21 (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA pcompress: zlib (MCA v2.1.0, API v2.0.0, Component v4.2.6)
MCA pdl: pdlopen (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA pfexec: linux (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA pif: linux_ipv6 (MCA v2.1.0, API v2.0.0, Component
v4.2.6)
MCA pif: posix_ipv4 (MCA v2.1.0, API v2.0.0, Component
v4.2.6)
MCA pinstalldirs: env (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA pinstalldirs: config (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA plog: default (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA plog: stdfd (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA plog: syslog (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA pmdl: ompi (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA pmdl: oshmem (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA pnet: opa (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA preg: compress (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA preg: native (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA preg: raw (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA prm: slurm (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA prm: default (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA psec: native (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA psec: none (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA psensor: file (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA psensor: heartbeat (MCA v2.1.0, API v1.0.0, Component
v4.2.6)
MCA pshmem: mmap (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA psquash: flex128 (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA psquash: native (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA pstat: linux (MCA v2.1.0, API v1.0.0, Component v4.2.6)
MCA ptl: client (MCA v2.1.0, API v2.0.0, Component v4.2.6)
MCA ptl: server (MCA v2.1.0, API v2.0.0, Component v4.2.6)
MCA ptl: tool (MCA v2.1.0, API v2.0.0, Component v4.2.6)
おわりに
2023 年 9 月 15 日にメール通知を確認したときにアップデートの具体的な方法が記載されている Wiki が用意されているなんてステキ!と思いました。内容を確認すると結構手間でしたので、ParallelCluster のバージョンアップを期待して待っていました。脆弱性の公表から一週間で脆弱性対応済みの ParallelCluster がリリースされました。ユーザー規模がそこまで大きくないと思われるサービスでも素早い対応で素晴らしいです。ありがたいですね。