AWS ParallelCluster 3.7.2 がリリースされ Slurm の脆弱性に対応済みのバージョンとなりました(CVE-2023-41914)

CVE-2023-41914対策済みのParallelClusterのバージョンは3.7.2以降です。
2023.10.17

2023 年 10 月 14 日に AWS ParallelCluster 3.7.2 がリリースされました。

今回のアップデートで機能追加はありません。ですが、CVE-2023-41914 の脆弱性に対応しています。

Upgrade Slurm to 23.02.6.

Release AWS ParallelCluster v3.7.2 · aws/aws-parallelcluster

2023 年 9 月 22 日に脆弱性対応で v3.7.1 がリリースされたのですが、また新たな脆弱性を抱え対応が必要になりました。

AWS ParallelCluster が抱えた脆弱性

ParallelCluster ご利用の対象者には 2023 年 10 月 16 日に AWS サポートから以下の件名でメール通知がありました。

Subject: [Action Required] Upgrade AWS ParallelCluster Slurm version [AWS Account: 123456789012]

内容を要約すると、重要度の高い脆弱性が公開され影響を受けるためアップデートを推奨するといったものです。

  • Slurm の脆弱性が公開された(CVE-2023-41914
  • ParallelCluster 3. 代のすべてのバージョンで影響を受ける
  • Slurm のバージョンを 23.02.6 か 22.05.10 へアップデートすることを推奨する
We are reaching out because you are using or have recently used AWS ParallelCluster, which is an open source tool to manage High Performance Computing (HPC) clusters on AWS.

Clusters deployed with AWS ParallelCluster use Slurm as a job scheduler. SchedMD, the maintainers of Slurm, have published a CVE-2023-41914 [1] which affects all versions of Slurm used by AWS ParallelCluster 3.x. The CVE highlights issues which can lead to a user taking ownership of an arbitrary file on the system and allowing users to delete all files and subdirectories of an arbitrary target directory on the compute nodes. We recommended you update Slurm to versions 23.02.6 or 22.05.10, depending on the major version of Slurm being used by your cluster [2]. To identify your cluster's Slurm version based on the ParallelCluster version, please refer to our documentation [3].

推奨されるアップデート方法

必要なアップデート手順は ParallelCluster の GitHub リポジトリで公開されています。2 種類の Slurm のバージョンのアップデート方法が紹介されています。

課題

コンピュートノードの Slurm のアップデート方法はカスタムブートストラップ処理による EC2 インスタンス起動後にコンパイルしてからインストールし直すことになります。コンピュートノードの起動から演算開始までの時間が数分単位で遅くなることを意味します。これはコンピュートノードの動作仕様の都合、毎回コンパイルからスタートするのは仕方がありません。

他の解決策としては Slurm をアップデート済みのカスタム AMI を作成する方法です。カスタム AMI で運用しているユーザーは良いですが、カスタムブートストラップの処理で初期セットアップを行っているユーザーには二の足を踏む内容です。

AWS ParallelCluster 3.7.2 Relesed

CVE-2023-41914の対策は Slurm のバージョンを 23.02.6 か 22.05.10 へアップデートすることでした。

2023 年 10 月 14 日にリリースされた AWS ParallelCluster 3.7.2 で、Slurm のバージョンがデフォルトで 23.02.6 となりました。つまり、ParallelCluster 3.代すべてのバージョンで抱えた脆弱性が解消されたバージョンとなります。

バージョンを確認してみる

ParallelCluster 3.7.2 のクラスターを作成し、バージョンを確認してみます。

v3.7.2 のクラスターは以下のコンフィグで構築しました。全文は長いため折りたたみしています。

  • OS: Ubuntu 22.04
折りたたみ
Region: ap-northeast-1
Image:
  Os: ubuntu2204
Tags:
  - Key: Name
    Value: v372-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
      CustomActions:
        OnNodeConfigured:
          Script: s3://hpc-dev-postinstall-files/mount-moutpoint-for-s3/mount.sh
      Iam:
        AdditionalIamPolicies:
          - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
        S3Access:
          - BucketName: hpc-dev-postinstall-files
            EnableWriteAccess: false

# ----------------------------------------------------------------
# Shared Storage Settings
# ----------------------------------------------------------------
# SharedStorage:
#   - MountDir: /mnt/efs-1zone
#     Name: efs-1zone
#     StorageType: Efs
#     EfsSettings:
#       FileSystemId: fs-0f1158ade79354809
#   - MountDir: /mnt/efs-multiaz
#     Name: efs-multiaz
#     StorageType: Efs
#     EfsSettings:
#       FileSystemId: fs-0c1f163ca89a2b390

# ----------------------------------------------------------------
#  Other Settings
# ----------------------------------------------------------------
Monitoring:
  Logs:
    CloudWatch:
      Enabled: true
      RetentionInDays: 180
      DeletionPolicy: "Delete"
  Dashboards:
    CloudWatch:
      Enabled: false

ヘッドノード

Slurm のバージョンを確認してみました。23.02.6の表記を確認できました。脆弱性対応済みのバージョンまであがった Slurm がデフォルトでインストールされた状態となっています。

ubuntu@ip-10-1-0-233:/etc/parallelcluster$ grep "cfn_node_type" /etc/parallelcluster/cfnconfig
cfn_node_type=HeadNode
ubuntu@ip-10-1-0-233:/etc/parallelcluster$ sinfo -V
slurm 23.02.6

コンピュートノード

ヘッドノードから下記のジョブをサブミットして実行結果を確認します。

test.sh

 /bin/bash

grep "cfn_node_type" /etc/parallelcluster/cfnconfig
sinfo -V

コンピュートノードも Slurm のバージョンは23.02.6であることを確認できました。

slurm-1.out

cfn_node_type=ComputeFleet
slurm 23.02.6

おわりに

3 週間前の CVE-2023-41915 対応と何が違うのか、v3.7.2 リリース当初は情報が少なくわかりませんでした。AWS からの通知メールや、Slurm のユーザーグループの情報を確認してやっと意味がわかりました。本記事でどなたかの調べる手間が省けたら幸いです。

参考