このトピックでは、Alibaba Cloud Linux 2 または 3 を実行している Elastic Compute Service (ECS) インスタンスにおける CVE-2021-33909 の脆弱性の原因と解決策について説明します。
問題の説明
以下の構成の ECS インスタンスには、CVE-2021-33909 の脆弱性が存在し、システム障害を引き起こす可能性があります。
Alibaba Cloud Linux 2
イメージ: Alibaba Cloud Linux 2.1903 LTS 64 ビット。
カーネルバージョン:
kernel-4.19.91-24.al7
以前。
Alibaba Cloud Linux 3
イメージ: Alibaba Cloud Linux 3.2104 64 ビット。
カーネルバージョン:
kernel-5.10.60-7.al8
以前。
システム障害が発生した場合、以下の呼び出しスタック情報が表示されます。
[ 415.961724] BUG: unable to handle kernel paging request at ffffb807c2f1aff6
[ 415.963259] PGD 42f53b067 P4D 42f53b067 PUD 0
[ 415.964201] Oops: 0002 [#1] SMP PTI
[ 415.965026] CPU: 5 PID: 1537 Comm: seq_poc Kdump: loaded Tainted: G W 4.19.91-23.al7.x86_64 #1
[ 415.967154] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
[ 415.968353] RIP: 0010:__memcpy+0x12/0x20
[ 415.969187] Code: 48 c1 e2 20 48 09 c2 48 31 d3 e9 68 ff ff ff 90 90 90 90 90 90 90 90 90 66 66 90 66 90 48 89 f8 48 89 d1 48 c1 e9 03 83 e2 07 <f3> 48 a5 89 d1 f3 a4 c3 66 0f 1f 44 00 00 48 89 f8 48 89 d1 f3 a4
[ 415.973070] RSP: 0018:ffffb80802097dd8 EFLAGS: 00010202
[ 415.974159] RAX: ffffb807c2f1aff6 RBX: ffff8a85f9593450 RCX: 0000000000000001
[ 415.975638] RDX: 0000000000000002 RSI: ffffffff9b0c231c RDI: ffffb807c2f1aff6
[ 415.977097] RBP: ffffb80842f1b000 R08: ffffffff9b0c231c R09: 0000000000000001
[ 415.978563] R10: ffffe41e47d4fa80 R11: ffffe41e47d4fac0 R12: ffffffff9b0a9cc2
[ 415.980168] R13: ffff8a87a83eaa00 R14: ffffb80802097f10 R15: ffff8a87ad6de700
[ 415.981664] FS: 00007f9ef5d86740(0000) GS:ffff8a87afb40000(0000) knlGS:0000000000000000
[ 415.983464] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 415.984722] CR2: ffffb807c2f1aff6 CR3: 0000000279c40005 CR4: 00000000000606e0
[ 415.986253] Call Trace:
[ 415.986802] prepend+0x23/0x30
[ 415.987517] dentry_path+0x7e/0xa0
[ 415.988249] seq_dentry+0x36/0xa0
[ 415.988954] show_mountinfo+0x203/0x280
[ 415.989764] seq_read+0x14a/0x3d0
[ 415.990514] vfs_read+0x89/0x130
[ 415.991209] ksys_read+0x4a/0xc0
[ 415.991898] do_syscall_64+0x5b/0x1b0
[ 415.992661] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 415.993713] RIP: 0033:0x7f9ef5891a30
[ 415.994450] Code: 0b 31 c0 48 83 c4 08 e9 be fe ff ff 48 8d 3d c7 c3 09 00 e8 42 8c 02 00 66 90 83 3d 8d d5 2d 00 00 75 10 b8 00 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 31 c3 48 83 ec 08 e8 de cc 01 00 48 89 04 24
[ 415.998217] RSP: 002b:00007f9ef5d84f78 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
[ 415.999792] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f9ef5891a30
[ 416.001249] RDX: 0000000000000400 RSI: 0000000000603240 RDI: 0000000000000003
[ 416.002794] RBP: 00007f9ef5d84ff0 R08: 0000000000603240 R09: 00007f9ef58fcc30
[ 416.004310] R10: 00007f9ef5d849e0 R11: 0000000000000246 R12: 0000000000400c00
[ 416.005786] R13: 00007ffcf5fdd070 R14: 0000000000000000 R15: 0000000000000000
[ 416.007255] Modules linked in: sunrpc intel_rapl_msr intel_rapl_common iosf_mbi sb_edac crct10dif_pclmul crc32_pclmul mousedev ghash_clmulni_intel pcbc aesni_intel psmouse i2c_piix4 crypto_simd cryptd pcspkr glue_helper ip_tables ata_generic pata_acpi cirrus drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm ata_piix uhci_hcd drm crc32c_intel libata serio_raw i2c_core floppy
[ 416.014226] CR2: ffffb807c2f1aff6
[ 416.014952] ---[ end trace 558647d5169dc4e0 ]---
[ 416.015915] RIP: 0010:__memcpy+0x12/0x20
[ 416.016733] Code: 48 c1 e2 20 48 09 c2 48 31 d3 e9 68 ff ff ff 90 90 90 90 90 90 90 90 90 66 66 90 66 90 48 89 f8 48 89 d1 48 c1 e9 03 83 e2 07 <f3> 48 a5 89 d1 f3 a4 c3 66 0f 1f 44 00 00 48 89 f8 48 89 d1 f3 a4
[ 416.024072] RSP: 0018:ffffb80802097dd8 EFLAGS: 00010202
[ 416.026964] RAX: ffffb807c2f1aff6 RBX: ffff8a85f9593450 RCX: 0000000000000001
[ 416.030291] RDX: 0000000000000002 RSI: ffffffff9b0c231c RDI: ffffb807c2f1aff6
[ 416.033583] RBP: ffffb80842f1b000 R08: ffffffff9b0c231c R09: 0000000000000001
[ 416.036819] R10: ffffe41e47d4fa80 R11: ffffe41e47d4fac0 R12: ffffffff9b0a9cc2
[ 416.040063] R13: ffff8a87a83eaa00 R14: ffffb80802097f10 R15: ffff8a87ad6de700
[ 416.043332] FS: 00007f9ef5d86740(0000) GS:ffff8a87afb40000(0000) knlGS:0000000000000000
[ 416.046754] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 416.049766] CR2: ffffb807c2f1aff6 CR3: 0000000279c40005 CR4: 00000000000606e0
[ 416.052964] Kernel panic - not syncing: Fatal exception
原因
seq_buf_alloc
関数は 64 ビットの size_t (unsigned long)
パラメーターを取ります。しかし、他のカーネル関数はパラメーターを int
型に不適切にキャストし、64 ビット値を 32 ビットに切り捨てます。この切り捨ての脆弱性は、悪用されると任意のコード実行につながる可能性があります。ホスト環境では権限昇格のリスクがあり、コンテナー環境ではホストのクラッシュやコンテナーエスケープにつながる可能性があります。
解決策
インスタンスのカーネルバージョンを確認するには、次のコマンドを実行します。
uname -r
ご使用のオペレーティングシステムとカーネルバージョンに基づいて、次のいずれかの方法を使用します。
Alibaba Cloud Linux 2
警告カーネルのアップグレードは、互換性と安定性の問題を引き起こす可能性があります。Alibaba Cloud Linux 2 のリリースノート でカーネルの機能を確認し、カーネルバージョンをアップグレードする際は注意してください。
再起動操作によりインスタンスが一時的に停止し、実行中のサービスが中断され、データが失われる可能性があります。そのため、重要なインスタンスデータをバックアップしてから、オフピーク時にインスタンスを再起動してください。
4.19.91-19.1.al7.x86_64
より前のカーネルバージョンの場合は、次の手順を実行します。最新のカーネルバージョンにアップグレードします。
sudo yum update kernel
新しいカーネルバージョンを有効にするために、インスタンスを再起動します。
sudo reboot
(オプション) カーネルバージョンをアップグレードした後も問題が解決しない場合は、次のコマンドを実行してライブカーネルパッチをインストールします。
sudo yum install -y kernel-hotfix-5956925-`uname -r | awk -F"-" '{print $NF}'`
4.19.91-19.1.al7.x86_64
以上4.19.91-24.al7.x86_64
以下のカーネルバージョンの場合は、次のコマンドを実行してライブカーネルパッチをインストールします。sudo yum install -y kernel-hotfix-5956925-`uname -r | awk -F"-" '{print $NF}'`
Alibaba Cloud Linux 3
警告カーネルのアップグレードは、互換性と安定性の問題を引き起こす可能性があります。Alibaba Cloud Linux 3 のリリースノート でカーネルの機能を確認し、カーネルバージョンをアップグレードする際は注意してください。
再起動操作によりインスタンスが一時的に停止し、実行中のサービスが中断され、データが失われる可能性があります。そのため、重要なインスタンスデータをバックアップしてから、オフピーク時にインスタンスを再起動してください。
最新のカーネルバージョンにアップグレードします。
sudo yum update kernel
新しいカーネルバージョンを有効にするために、インスタンスを再起動します。
sudo reboot
(オプション) カーネルバージョンをアップグレードした後も問題が解決しない場合は、次のコマンドを実行してライブカーネルパッチをインストールします。
sudo yum install -y kernel-hotfix-5956925-`uname -r | awk -F"-" '{print $NF}'`