Amazon Linux 2 のカーネルアップデート - CVE-2022-0847（Dirty Pipe）

# はじめに
「Dirty Pipe」という脆弱性が見つかりました。
- [The Dirty Pipe Vulnerability - The Dirty Pipe Vulnerability documentation
Dirty Pipe](https://dirtypipe.cm4all.com/)

これは、2016年に公開された「Dirty COW（CVE-2016-5195）」と類似していますが、それよりも悪用が容易なこともあり危険度が高いとされています。
今回の脆弱性を悪用されると、リモートからシステムの制御権が乗っ取られる危険があるとのことです。

# セキュリティパッチ
この脆弱性は「CVE-2022-0847」として取り上げられ、セキュリティパッチも各種OSで公開されています。

AmazonLinux2 では、以下のページにてパッチバージョンなどが確認可能です。

https://alas.aws.amazon.com/cve/html/CVE-2022-0847.html

![screencapture-alas-aws-amazon-cve-html-CVE-2022-0847-html-2022-03-15-17_02_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/fe4b8032-2a45-51a3-b353-f0b548fe0233.png)

今回の脆弱性CVSSスコアは **7.8** と出ています。**重要**というカテゴリに分類されるため、対応は行なうべき脆弱性です。

:::note
CVSS（ Common Vulnerability Scoring System) とは
共通脆弱性評価システムの略称で、情報システムの脆弱性に対する評価手法です。
ベンダーに依存しない共通の評価基準を提供します。
:::

|深刻度	|スコア|
|:--:   |:--:|
|緊急	|9.0~10.0|
|重要	|7.0~8.9|
|警告	|4.0~6.9|
|注意	|0.1~3.9|
|なし	|0|

とはいえサービス停止などが発生する対応なので、ちゃんとスケジュールを組んだ上で対応しましょう。

# パッチ適用
## 4.14系
Amazon Linux 2 はkernelパッケージが複数存在するため、まずは現在利用しているカーネルのバージョンを確認します。

```bash:バージョン確認
$ uname -r
4.14.219-161.340.amzn2.x86_64
```
`4.14.xxx`のkernelは[ALAS2-2022-1761](https://alas.aws.amazon.com/AL2/ALAS-2022-1761.html)で確認できます。

https://alas.aws.amazon.com/AL2/ALAS-2022-1761.html

次にインストールしているkernelパッケージを確認します。

```bash:パッケージ確認
$ rpm -qa |grep -i kernel
kernel-tools-4.14.219-161.340.amzn2.x86_64
kernel-4.14.219-161.340.amzn2.x86_64

$ rpm -qa |grep -i perf
```

今回は`kernel`と`kernel-tools`の２つになります。

```bash:アップデート
$ sudo yum update kernel kernel-tools
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                                                                                 | 3.7 kB  00:00:00     
amzn2extra-docker                                                                                                                                          | 3.0 kB  00:00:00     
amzn2extra-php7.4                                                                                                                                          | 3.0 kB  00:00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ kernel.x86_64 0:4.14.268-205.500.amzn2 を インストール
---> パッケージ kernel-tools.x86_64 0:4.14.219-161.340.amzn2 を 更新
---> パッケージ kernel-tools.x86_64 0:4.14.268-205.500.amzn2 を アップデート
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================================================================================
 Package                                   アーキテクチャー                    バージョン                                           リポジトリー                             容量
==================================================================================================================================================================================
インストール中:
 kernel                                    x86_64                              4.14.268-205.500.amzn2                               amzn2-core                               22 M
更新します:
 kernel-tools                              x86_64                              4.14.268-205.500.amzn2                               amzn2-core                              156 k

トランザクションの要約
==================================================================================================================================================================================
インストール  1 パッケージ
更新          1 パッケージ

総ダウンロード容量: 22 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/2): kernel-tools-4.14.268-205.500.amzn2.x86_64.rpm                                                                                                      | 156 kB  00:00:00     
(2/2): kernel-4.14.268-205.500.amzn2.x86_64.rpm                                                                                                            |  22 MB  00:00:00     
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                               49 MB/s |  22 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  更新します              : kernel-tools-4.14.268-205.500.amzn2.x86_64                                                                                                        1/3 
  インストール中          : kernel-4.14.268-205.500.amzn2.x86_64                                                                                                              2/3 
  整理中                  : kernel-tools-4.14.219-161.340.amzn2.x86_64                                                                                                        3/3 
  検証中                  : kernel-4.14.268-205.500.amzn2.x86_64                                                                                                              1/3 
  検証中                  : kernel-tools-4.14.268-205.500.amzn2.x86_64                                                                                                        2/3 
  検証中                  : kernel-tools-4.14.219-161.340.amzn2.x86_64                                                                                                        3/3 

インストール:
  kernel.x86_64 0:4.14.268-205.500.amzn2                                                                                                                                          

更新:
  kernel-tools.x86_64 0:4.14.268-205.500.amzn2                                                                                                                                    

完了しました!
```

AWS管理コンソールまたはコマンドのどちらかでインスタンス再起動を行います。

```bash:バージョン確認
$ uname -r
4.14.268-205.500.amzn2.x86_64
```

```bash:パッケージ確認
$ rpm -qa |grep -i kernel
kernel-tools-4.14.268-205.500.amzn2.x86_64
kernel-4.14.268-205.500.amzn2.x86_64
kernel-4.14.219-161.340.amzn2.x86_64
```
パッケージが今回適用予定のバージョンになっていたら完了です。
また、yum.logでも確認ができます。

```bash:yum.log
$ sudo tail /var/log/yum.log 
Mar 11 05:37:19 Updated: kernel-tools-4.14.268-205.500.amzn2.x86_64
Mar 11 05:37:21 Installed: kernel-4.14.268-205.500.amzn2.x86_64
```

## 5.10系
Amazon Linux 2 はkernelパッケージが複数存在するため、まずは現在利用しているカーネルのバージョンを確認します。

```バージョン確認
$ uname -r
5.10.82-83.359.amzn2.x86_64
```
`5.10.xxx`のkernelは[ALAS2KERNEL-5.10-2022-011](https://alas.aws.amazon.com/AL2/ALASKERNEL-5.10-2022-011.html)で確認できます。

https://alas.aws.amazon.com/AL2/ALASKERNEL-5.10-2022-011.html

```bash:パッケージ確認
$ rpm -qa |grep -i kernel
kernel-tools-5.10.82-83.359.amzn2.x86_64
kernel-5.10.82-83.359.amzn2.x86_64

$ rpm -qa |grep -i perf
```

今回は`kernel`と`kernel-tools`の２つになります。

```bash:アップデート
$ sudo yum update kernel kernel-tools
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                                                                                 | 3.7 kB  00:00:00     
49 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ kernel.x86_64 0:5.10.102-99.473.amzn2 を インストール
---> パッケージ kernel-tools.x86_64 0:5.10.82-83.359.amzn2 を 更新
---> パッケージ kernel-tools.x86_64 0:5.10.102-99.473.amzn2 を アップデート
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================================================================================
 Package                                アーキテクチャー                 バージョン                                        リポジトリー                                      容量
==================================================================================================================================================================================
インストール中:
 kernel                                 x86_64                           5.10.102-99.473.amzn2                             amzn2extra-kernel-5.10                            28 M
更新します:
 kernel-tools                           x86_64                           5.10.102-99.473.amzn2                             amzn2extra-kernel-5.10                           172 k

トランザクションの要約
==================================================================================================================================================================================
インストール  1 パッケージ
更新          1 パッケージ

総ダウンロード容量: 28 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/2): kernel-tools-5.10.102-99.473.amzn2.x86_64.rpm                                                                                                       | 172 kB  00:00:00     
(2/2): kernel-5.10.102-99.473.amzn2.x86_64.rpm                                                                                                             |  28 MB  00:00:00     
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                               29 MB/s |  28 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : kernel-5.10.102-99.473.amzn2.x86_64                                                                                                               1/3 
  更新します              : kernel-tools-5.10.102-99.473.amzn2.x86_64                                                                                                         2/3 
  整理中                  : kernel-tools-5.10.82-83.359.amzn2.x86_64                                                                                                          3/3 
  検証中                  : kernel-tools-5.10.102-99.473.amzn2.x86_64                                                                                                         1/3 
  検証中                  : kernel-5.10.102-99.473.amzn2.x86_64                                                                                                               2/3 
  検証中                  : kernel-tools-5.10.82-83.359.amzn2.x86_64                                                                                                          3/3 

インストール:
  kernel.x86_64 0:5.10.102-99.473.amzn2                                                                                                                                           

更新:
  kernel-tools.x86_64 0:5.10.102-99.473.amzn2                                                                                                                                     

完了しました!
```

AWS管理コンソールまたはコマンドのどちらかでインスタンス再起動を行います。

```bash:バージョン確認
$ uname -r
5.10.102-99.473.amzn2.x86_64
```

```bash:パッケージ確認
$ rpm -qa |grep -i kernel
kernel-5.10.102-99.473.amzn2.x86_64
kernel-5.10.82-83.359.amzn2.x86_64
kernel-tools-5.10.102-99.473.amzn2.x86_64
```
パッケージが今回適用予定のバージョンになっていたら完了です。
また、yum.logでも確認ができます。

```bash:yum.log
$ sudo tail /var/log/yum.log 
Mar 11 05:10:02 Installed: kernel-5.10.102-99.473.amzn2.x86_64
Mar 11 05:10:02 Updated: kernel-tools-5.10.102-99.473.amzn2.x86_64
```

# おわりに
なんとなく知っていたCVSSスコアですが、今回をきっかけにもう少し深く知った方が良いと感じました。
また、 Amazon Linux 2 にはカーネルが３種類存在するということも知りました。