こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。
05/28/2018にLinux Kernelの脆弱性情報(CVE-2018-11506 (Medium), CVE-2018-11508 (Low))が公開されています。今回はこれらの脆弱性の概要と、各ディストリビューションの対応について簡単にまとめてみます。
一次情報源
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-11506
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-11508
Priority
Moderate(CVE-2018-11506), Low(CVE-2018-11508)
修正方法
各ディストリビューションの情報を確認してください。
CVE概要(詳細はCVEのサイトをご確認ください)
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-11506
ローカルユーザによるDoS(スタックベースバッファオーバーフロー)の可能性
重要度 – Moderate
4.16.12までのLinux Kernelのdrivers/scsi/sr_ioctl.c中のsr_do_ioctl()関数は、senseバッファーがCDROMレイヤとSCSIレイヤで異なったサイズを持つため、これを利用してローカルユーザがDoS(スタックベースバッファオーバーフロー)を引き起こす事が出来る可能性があります。
こちらのkernelでの修正は以下のようになります。
diff --git a/drivers/scsi/sr_ioctl.c b/drivers/scsi/sr_ioctl.c index 2a21f2d..35fab1e 100644 --- a/drivers/scsi/sr_ioctl.c +++ b/drivers/scsi/sr_ioctl.c @@ -188,9 +188,13 @@ int sr_do_ioctl(Scsi_CD *cd, struct packet_command *cgc) struct scsi_device *SDev; struct scsi_sense_hdr sshdr; int result, err = 0, retries = 0; + unsigned char sense_buffer[SCSI_SENSE_BUFFERSIZE], *senseptr = NULL; SDev = cd->device; + if (cgc->sense) + senseptr = sense_buffer; + retry: if (!scsi_block_when_processing_errors(SDev)) { err = -ENODEV; @@ -198,10 +202,12 @@ int sr_do_ioctl(Scsi_CD *cd, struct packet_command *cgc) } result = scsi_execute(SDev, cgc->cmd, cgc->data_direction, - cgc->buffer, cgc->buflen, - (unsigned char *)cgc->sense, &sshdr, + cgc->buffer, cgc->buflen, senseptr, &sshdr, cgc->timeout, IOCTL_RETRIES, 0, 0, NULL); + if (cgc->sense) + memcpy(cgc->sense, sense_buffer, sizeof(*cgc->sense)); + /* Minimal error checking. Ignore cases we know about, and report the rest. */ if (driver_byte(result) != 0) { switch (sshdr.sense_key) {
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-11508
ローカルユーザによるkernel memoryからの情報取得
重要度 – Low
4.16.9までのLinux Kernelのkernel/compat.c中のcompat_get_timex()関数に問題があり、ローカルユーザがadjtimexを用いてkernel memoryから情報を取得できる可能性が有ります。
こちらのkernelでの修正は以下のようになります。
diff --git a/kernel/compat.c b/kernel/compat.c index 6d21894..92d8c98 100644 --- a/kernel/compat.c +++ b/kernel/compat.c @@ -34,6 +34,7 @@ int compat_get_timex(struct timex *txc, const struct compat_timex __user *utp) { struct compat_timex tx32; + memset(txc, 0, sizeof(struct timex)); if (copy_from_user(&tx32, utp, sizeof(struct compat_timex))) return -EFAULT;
主なディストリビューションの対応方法
詳細は、各ディストリビューションの提供元にご確認ください
Debian
Red Hat Enterprise Linux/CentOS
Ubuntu
SUSE/openSUSE
対処方法
各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat SatelliteやKatello、Spacewalk等を使うと管理が便利でしょう。
また、OSの再起動が発生しますので、peacemakerなどOSSのクラスタ製品を使うとサービス断の時間を最小限にすることが出来ます。
[参考]
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-11506
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-11508
セキュリティ系連載案内
OSSセキュリティ技術の会による日経Linuxでの連載「IoT時代の最新SELinux入門」がITPro上で読めるようになりました。技術の会代表で第一人者である中村さん等による、最新のSELinuxの情報やコマンド類等も更新されているのでお薦めです。
OSSセキュリティ技術の会によるThinkITでの連載「開発者のためのセキュリティ実践講座」がThinkIT上で開始しました。技術の会の中の人間で、最新の代表的なOSSセキュリティ技術を紹介していきます。
OSSセキュリティ技術の会により、ThinkITでLinuxSecuritySummit 2017のレポートが紹介されています。
OSSセキュリティ技術の会の面により、@ITで「OSS脆弱性ウォッチ」が連載されています。