Mcafee Endpoint Security for Linuxインストール時のTips(CentOS 7上でのfileaccess_modモジュールによるKernel Crash等の問題と解決方法)

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。

今回はMcafee Endpoint Security for Linuxインストール時のTips(CentOS 7上でのfileaccess_modモジュールによるKernel Crash等の問題と解決方法)になります。



問題

Azure上のCentOS 7.6(yumで2019/02/10時最新バージョンに更新)に、Mcafee Endpoint Security for Linuxを、下記のようにインストールしました。


[root@avtest2 ENSL1022_Eval]# rpm -ivh MA-GENLNX\ 5.0.5\ Build\ 658\ Package\ #1\ \(ENU-LICENSED-RELEASE-MAIN\)/MFE*rpm
Preparing...                          ################################# [100%]
Available space : 28877120 KB
Required size   : 6144 KB
Updating / installing...
   1:MFErt-2.0-2                      ################################# [ 50%]
Writing conf file ...
Updating linker cache ...
Runtime installed successfully
Available space : 28873112 KB
Required size   : 27648 KB
Creating user(mfe) and group (mfe)
   2:MFEcma-5.0.5-658                 ################################# [100%]
Registering the start up script...

---省略---

[root@avtest2 ENSL1022_Eval]# ./install-isectp.sh 

BY DOWNLOADING, INSTALLING, COPYING, ACCESSING OR USING THIS SOFTWARE, YOU AGREE
 TO THE TERMS OF THIS END USER LICENSE AGREEMENT. IF YOU ARE ACCEPTING THESE TER
MS ON BEHALF OF ANOTHER PERSON OR COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT A
ND WARRANT THAT YOU HAVE FULL AUTHORITY TO BIND THAT PERSON, COMPANY OR LEGAL EN
TITY TO THESE TERMS.
---省略---
McAfee Corporate End User License Agreement (April 2017)

Enter accept or reject: accept
Detected rpm based distribution
ISecTP will be installed
install-esp.sh execution time: Sun Feb 10 20:48:52 UTC 2019
Detected rpm based distribution
MFEcma(x86_64) 5.0.5.658 is installed.
ISecRt will be installed
ISecESPFileAccess will be installed
ISecESP will be installed
ISecGRt will be installed
McAfeeFMP will be installed
---省略---
Successfully installed ISecRt-10.2.2-1105.x86_64.rpm
Successfully installed ISecESP-10.2.2-1105.x86_64.rpm
Successfully installed ISecESPFileAccess-10.2.2-1105.x86_64.rpm
Successfully installed ISecGRt-10.2.2-1105.x86_64.rpm
Successfully installed McAfeeFMP-10.2.2-1105.x86_64.rpm
Preparing packages...
ISecTP-10.2.2-1098.x86_64
Successfully installed ISecTP-10.2.2-1098.x86_64.rpm
Schedule for Default DAT and Engine update task was successfully added
Enabling OAS, please wait for some time
OAS was successfully enabled
ISecTP is ready for use now

インストールは一見問題なく行ったように見えましたが、この後、起動後10秒ぐらいでMcafeeのプロセスが起動し、fileaccess_modモジュールをロードした際に、Kernel Panicが発生しました。


[ 1002.573652] fileaccess_mod: module verification failed: signature and/or required key missing - tainting kernel



[K[  [31m*[1;31m*[0m[31m* [0m] A stop job is running for McAfee En... Prevention (1min 5s / 1min 30s)[ 1002.659052] BUG: unable to handle kernel NULL pointer dereference at           (null)

[ 1002.660008] IP: [] setAddrRW_sysCall+0x25/0x60 [fileaccess_mod]

[ 1002.660008] PGD 0 

[ 1002.660008] Oops: 0000 [#1] SMP 

[ 1002.660008] Modules linked in: fileaccess_mod(OE+) nf_conntrack_ipv4 nf_defrag_ipv4 xt_owner xt_conntrack nf_conntrack iptable_security ext4 mbcache jbd2 dm_mirror dm_region_hash dm_log dm_mod sb_edac iosf_mbi kvm_intel kvm irqbypass crc32_pclmul ghash_clmulni_intel aesni_intel joydev lrw gf128mul glue_helper ablk_helper cryptd sg hv_utils ptp hv_balloon pps_core pcspkr i2c_piix4 ip_tables xfs libcrc32c sd_mod crc_t10dif crct10dif_generic hv_netvsc hv_storvsc hyperv_keyboard scsi_transport_fc scsi_tgt hid_hyperv crct10dif_pclmul crct10dif_common crc32c_intel floppy serio_raw hyperv_fb ata_generic pata_acpi ata_piix libata hv_vmbus

[ 1002.660008] CPU: 1 PID: 6708 Comm: isectpd Tainted: G           OE  ------------   3.10.0-957.5.1.el7.x86_64 #1

[ 1002.660008] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090007  06/02/2017

[ 1002.660008] task: ffff92a587e75140 ti: ffff92a58960c000 task.ti: ffff92a58960c000

[ 1002.660008] RIP: 0010:[]  [] setAddrRW_sysCall+0x25/0x60 [fileaccess_mod]

[ 1002.660008] RSP: 0018:ffff92a58960fcc8  EFLAGS: 00010246

[ 1002.660008] RAX: 0000000000000000 RBX: ffffffff81802940 RCX: ffff92a34da15060

[ 1002.660008] RDX: ffff92a58960fccc RSI: ffffffff81802940 RDI: 00003ffffffff000

[ 1002.660008] RBP: ffff92a58960fcd8 R08: ffff92a340000060 R09: 00003ffffffff000

[ 1002.660008] R10: 0000000000000000 R11: f000000000000000 R12: ffff92a5b761a400

[ 1002.660008] R13: ffffffffc045b000 R14: 0000000000000000 R15: ffffffffc04542c0

[ 1002.660008] FS:  00007f49cbd7d780(0000) GS:ffff92a5f5640000(0000) knlGS:0000000000000000

[ 1002.660008] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033

[ 1002.660008] CR2: 0000000000000000 CR3: 000000027d3c6000 CR4: 00000000001406e0

[ 1002.660008] Call Trace:

[ 1002.660008]  [] patchSysCallTable+0x39/0x120 [fileaccess_mod]

[ 1002.660008]  [] ? 0xffffffffc045afff

[ 1002.660008]  [] hook_init+0x25/0x240 [fileaccess_mod]

[ 1002.660008]  [] initFileAccess+0x6e/0x1000 [fileaccess_mod]

[ 1002.660008]  [] do_one_initcall+0xba/0x240

[ 1002.660008]  [] load_module+0x272c/0x2bc0

[ 1002.660008]  [] ? ddebug_proc_write+0x100/0x100

[ 1002.660008]  [] SyS_init_module+0xef/0x140

[ 1002.660008]  [] system_call_fastpath+0x22/0x27

[ 1002.660008] Code: 84 00 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 48 83 ec 10 48 8d 75 f4 65 48 8b 04 25 28 00 00 00 48 89 45 f8 31 c0 e8 2b c2 c2 cd <48> 8b 10 31 c9 48 f7 c2 fd ff ff ff 74 13 48 89 d1 48 83 c9 02 

[ 1002.660008] RIP  [] setAddrRW_sysCall+0x25/0x60 [fileaccess_mod]

[ 1002.660008]  RSP 

[ 1002.660008] CR2: 0000000000000000



[K[   [31m*[1;31m*[0m[31m*[ 1003.950652] ---[ end trace 3da78679429e8d9f ]---

[0m] A st[ 100o3.97p job5307] Kernel panic - not syncing: Fatal exception

 is running for McAfee En... Prevention (1min 6s / 1min 30s)[ 1003.979476] Kernel Offset: 0xd000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)

また、手元のVMWare上のCentOSで同様に試したところ、今度はKernel Panicは起こしませんでしたが、明らかにマシンが重くなっていました。topコマンドで見ると


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7718 root 20 0 882796 198284 127388 R 84.2 10.6 0:22.96 Scan Facto+
1 root 20 0 128016 6544 4132 S 0.0 0.4 0:01.02 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 

と"SCAN Facto..."のプロセスに84%以上食われています。その後、勝手に再起動を繰り返すようになりました。


間違いと解決方法

とりあえず、Kernel Crashを防ぐには、Mcafeeのサービスが立ち上がってモジュールがロードされる前にMcafee関連のRPMを削除するか、fileaccess_modモジュールを別ディレクトリに移動やリネーム等をして、モジュールがロードされないようにしましょう。最終的には、McafeeのRPMを最初からインストールし直したほうが無難です。

ちなみに、間違いはインストール時に、


[root@avtest2 ENSL1022_Eval]# ./install-isectp.sh 

としたのが間違いで、正しくはfanotifyを使うため、usefanotifyオプションをつける必要が有りました。


[root@avtest2 ENSL1022_Eval]# ./install-isectp.sh usefanotify

この挙動はGoogle等で検索しても、有益な情報が下記のRed Hatの情報しか出てきませんでした。

RHEL 6/7 server crashes due to third party module 'fileaccess_mod'

しかし、マニュアルにはきちんと"usefanotify"オプションの事が載っています。マニュアルはきちんと読みましょう。


教訓

マニュアルはきちんと読みましょう。



セキュリティ系連載案内


セミナー情報1

2019/02/12 17:00-19:30で、「NGINX MeetUp Tokyo #2」を行います。

日本のNGINXユーザー、また関心をお持ちの方に向けてNGINX, Inc. CTO / Igor Sysoevを 招きNGINX最新情報をお届けします。セッション終了後には懇親会を用意しておりますので、NGINXを利用する方同士で交流もいただけます。

https://nginx-mj.connpass.com/event/116837/がプログラム内容と申し込みの詳細になります。奮ってご参加下さい。


セミナー情報2

2019/02/21 18:30-22:00で、「OSSライセンスMeetup Vol.2 「実録:GPL違反とその対応を振り返る」」を行います。

いまだに国内の事例として紹介されるGPL違反に関して、状況や経緯、解決策、対応後の反響などについて振り返ります。 これまでは、客観的に違反とその対応に関して事例を説明することは多くありましたが、実際に起こった現場の声を反映した 事例の説明は数少なく、今だから言えることなど、知見を共有いたします。

https://sios.connpass.com/event/112157/がプログラム内容と申し込みの詳細になります。奮ってご参加下さい。


OSSに関するお困りごとは サイオス OSSよろず相談室まで

サイオスOSSよろず相談室 では、OSSを利用する中で発生する問題に対し、長年培ってきた技術力・サポート力をもって企業のOSS活用を強力に支援します。Red Hat Enterprise Linux のほか、CentOS をご利用されている環境でのサポートも提供いたします。

前へ

【Linux Kernel 5.0特集】Kernelに含まれているセキュリティ機構 - Part2(SELinux編: 後編)