Linux Kernelの脆弱性(CVE-2018-11506 (Medium), CVE-2018-11508 (Low))




05/28/2018にLinux Kernelの脆弱性情報(CVE-2018-11506 (Medium), CVE-2018-11508 (Low))が公開されています。今回はこれらの脆弱性の概要と、各ディストリビューションの対応について簡単にまとめてみます。


 

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

05/28/2018にLinux Kernelの脆弱性情報(CVE-2018-11506 (Medium), CVE-2018-11508 (Low))が公開されています。今回はこれらの脆弱性の概要と、各ディストリビューションの対応について簡単にまとめてみます。



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;
       
      

主なディストリビューションの対応方法

詳細は、各ディストリビューションの提供元にご確認ください


対処方法

各ディストリビューションの案内に従い、アップデートを行ってください。全ての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

セキュリティ系連載案内

前へ

OpenFlowの脆弱性(CVE-2018-1000155)

次へ

Gitの複数の脆弱性 ( CVE-2018-11235, CVE-2018-11233 )