【AWS】SEP14.2がインストールされたRHEL7.4を7.5に更新してはいけない

6月の中旬にSymantec Endpoint Protection(SEP)の14.2がリリースされたので早速AWS環境のRHEL7.4へインストールしてみたところ問題なく動作。symap、symevのカーネルモジュールも14.2同梱のモジュールで動作するのでカーネルモジュールのコンパイル環境も不要。…とここまではいいのだけど、SEP14.2がインストールされた環境を7.5に更新するとSEPの不具合が発生してシステムにログイン(ssh接続)できなくなる事象を確認(再現率100 %)。RHEL7.5へのSEP14.2インストール不具合と同じ要因と考えられるが、あちらはSEPインストール途中でシステムクラッシュが発生してOS強制再起動となるがSEPはインストールされないのログインできなくなることは無いのでダメージはこちらのほうが大きい。

AWSのコンソールからシステムログを確認すると

[    9.568009] symev_rh_ES_7_3_10_0_693_el7_x86_64: loading out-of-tree module taints kernel.
[    9.575077] WARNING: module 'symev_rh_ES_7_3_10_0_693_el7_x86_64' built without retpoline-enabled compiler, may affect Spectre v2 mitigation
[    9.624387] symev_rh_ES_7_3_10_0_693_el7_x86_64: module verification failed: signature and/or required key missing - tainting kernel
[   10.181262] BUG: unable to handle kernel paging request at ffffffffac803310
[   10.182058] IP: [<ffffffffc04ff3bd>] symev_hook_syscalls+0x2d/0xf60 [symev_rh_ES_7_3_10_0_693_el7_x86_64]
[   10.182058] PGD 4f812067 PUD 4f813063 PMD 800000004f4000e1 
[   10.182058] Oops: 0003 [#1] SMP 
[   10.182058] Modules linked in: symev_rh_ES_7_3_10_0_693_el7_x86_64(OE+) isofs sb_edac intel_rapl iosf_mbi crc32_pclmul ghash_clmulni_intel cirrus ttm drm_kms_helper syscopyarea aesni_intel sysfillrect sysimgblt fb_sys_fops lrw gf128mul drm glue_helper ablk_helper ppdev cryptd i2c_piix4 pcspkr i2c_core parport_pc parport ip_tables xfs libcrc32c ata_generic pata_acpi ata_piix libata xen_netfront crct10dif_pclmul crct10dif_common xen_blkfront crc32c_intel serio_raw floppy
[   10.182058] CPU: 0 PID: 1101 Comm: insmod Tainted: G           OE  ------------   3.10.0-862.9.1.el7.x86_64 #1
[   10.182058] Hardware name: Xen HVM domU, BIOS 4.2.amazon 08/24/2006
[   10.182058] task: ffffa04cfb3ccf10 ti: ffffa04cfaa44000 task.ti: ffffa04cfaa44000
[   10.182058] RIP: 0010:[<ffffffffc04ff3bd>]  [<ffffffffc04ff3bd>] symev_hook_syscalls+0x2d/0xf60 [symev_rh_ES_7_3_10_0_693_el7_x86_64]
[   10.182058] RSP: 0018:ffffa04cfaa47d18  EFLAGS: 00010286
[   10.182058] RAX: ffffffffac803300 RBX: ffffffffacc16020 RCX: ffffffffac803300
[   10.182058] RDX: 0000000000000000 RSI: ffffffffacca8498 RDI: ffffffffad2001e0
[   10.182058] RBP: ffffa04cfaa47d18 R08: 0000000000000000 R09: 0000000000000002
[   10.182058] R10: ffffa04cfd21bd60 R11: ffffeebe40001600 R12: ffffa04cfa162d00
[   10.182058] R13: ffffffffc05018c0 R14: 0000000000000000 R15: ffffffffc050f0c0
[   10.182058] FS:  00007fc91487c740(0000) GS:ffffa04cfd200000(0000) knlGS:0000000000000000
[   10.182058] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   10.182058] CR2: ffffffffac803310 CR3: 000000007b2fc000 CR4: 00000000001606f0
[   10.182058] Call Trace:
[   10.182058]  [<ffffffffc050196d>] init_module+0xad/0x2b0 [symev_rh_ES_7_3_10_0_693_el7_x86_64]
[   10.182058]  [<ffffffffac00210a>] do_one_initcall+0xba/0x240
[   10.182058]  [<ffffffffac10fd9c>] load_module+0x272c/0x2bc0
[   10.182058]  [<ffffffffac377250>] ? ddebug_proc_write+0xf0/0xf0
[   10.182058]  [<ffffffffac10b9d3>] ? copy_module_from_fd.isra.43+0x53/0x150
[   10.182058]  [<ffffffffac1103e6>] SyS_finit_module+0xa6/0xd0
[   10.182058]  [<ffffffffac720795>] system_call_fastpath+0x1c/0x21
[   10.182058] Code: 44 00 00 48 8b 05 2c 01 01 00 55 48 89 e5 48 8b 50 10 48 89 c1 48 85 d2 0f 84 20 03 00 00 48 89 15 09 00 01 00 8b 15 13 01 01 00 <48> c7 40 10 c0 29 50 c0 85 d2 89 d6 0f 8f f5 0e 00 00 48 8b b8 
[   10.182058] RIP  [<ffffffffc04ff3bd>] symev_hook_syscalls+0x2d/0xf60 [symev_rh_ES_7_3_10_0_693_el7_x86_64]
[   10.182058]  RSP <ffffa04cfaa47d18>
[   10.182058] CR2: ffffffffac803310
[   10.182058] ---[ end trace c80a4a2b0285bb18 ]---
[   10.182058] Kernel panic - not syncing: Fatal exception

OS起動時のsymev(SEPのカーネルモジュール)のロードでカーネルパニックとなってる模様。カーネルの更新があった場合、カーネルにマッチしないカーネルモジュール(symev,symap)はロードに失敗してOSが起動されるのが正常な動作。カーネルモジュールがロードされていないSEPはAuto-Protectが無効になっているので注意。SEPの再インストール&カーネルモジュールのコンパイルによりカーネルにマッチしたカーネルモジュールが作成、ロードされAuto-Protectが動作するようになる。今回のケースは中途半端にカーネルとマッチしたモジュールとなったためロード時にOSを巻き込んでクラッシュしたのかな? カーネルモジュールの不具合の破壊力は一味違いますなあ。

うっかり7.5へ更新してしまった場合、AWS環境はOSにsshログインできないと単独の復旧方法は無いので

1. EBS修復用のインスタンス起動(Amazon LinuxがXFSに対応してるので無難かも)
2. EBSをデタッチ
3. 修復用インスタンスにEBSをアタッチ
4. アタッチしたEBSの/opt/SymantecディレクトリをリネームしてOS起動時にSEPが起動しないようにする
5. EBSをデタッチして元のインスタンスにアタッチしてOS起動
6. /opt/Symantecを元に戻してSEPのアンインストール(install.sh -u)実施

が今のトコ一番現実的な復帰方法かなあ。
*オンプレ版のRHELでは試していないのでAWS環境のみの不具合の可能性アリ。

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です