224
222

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CVE-2016-6662 MySQL Remote Root Code Execution / Privilege Escalationについて

Last updated at Posted at 2016-09-13

免責

  • 取り敢えずわかっている範囲で書いただけなので、手元で再現やパッチの正当性は確認していません。
  • 自己責任でどうぞ。
  • これ(2016/09/22 22:00)以降新しい情報が出てきても、おそらくもう更新しません。

CVE-2016-6662 についてはこちら

この脆弱性を再現させるために必要なもの

  • (未検証) 5.5.52, 5.6.33, 5.7.15は影響を受けないかも知れません。詳しくは図のさらに下に。

    • 手元で再現させてはいませんが、 オリジナルの脆弱性報告 の影響を受けるバージョンがしゃらっと "5.7.14", "5.6.32", "5.5.51" に変わっている(記事を書き始めた時は "5.7.15", "5.6.33", "5.5.52" だった)ので、これ以降のバージョンは少なくともこの脆弱性を直接は受けないようです。
  • 大前提として、任意のSQLを実行できる必要がある (phpMyAdminのような「そういう機能」を提供するもの、または、SQLインジェクションなど?)

  • MySQL 5.1とそれ以前(5.0, 4.1, ..)は mysqld_safe に malloc-lib オプションがないので直接この脆弱性の影響は受けない

    • とはいえFILE権限がデンジャーなのは変わらないので云々。
  • 取り敢えず図を描いてみた(最終更新 2016/09/22 22:00)

CVE-2016-6662.png

  • Thank you tokuhirom-san,

MySQLの対応(?)

  • 公式な見解ではありません。

  • 変なパスから malloc-lib をPRELOADしないように mysqld_safe にパッチが当たっている模様。

$ grep "/usr/lib/x86_64-linux-gnu" */bin/mysqld_safe
5.5.52/bin/mysqld_safe:  malloc_dirs="/usr/lib /usr/lib64 /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu"
5.5.52/bin/mysqld_safe:        /usr/lib/x86_64-linux-gnu) ;;
5.6.33/bin/mysqld_safe:  malloc_dirs="/usr/lib /usr/lib64 /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu"
5.6.33/bin/mysqld_safe:        /usr/lib/x86_64-linux-gnu) ;;
5.7.15/bin/mysqld_safe:  malloc_dirs="/usr/lib /usr/lib64 /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu"
5.7.15/bin/mysqld_safe:        /usr/lib/x86_64-linux-gnu) ;;
  • 「10/16の定期パッチで対応」となっているのはこういうこと?

対策

  • File権限を持っているアカウントはIPを絞ったり不要そうならREVOKEする
  • File権限がなくても、既に細工済みのライブラリーがないかどうかチェックした方がいい
    • 既にファイルがあった場合、Super権限だけで準備が整う
  • mysqld_safeにオレオレパッチを当てて LD_PRELOAD を無効化しちゃうのも手? (検証してないので自信はないです)
    • 最新版にあげられないなら、という感じか
$ diff -c bin/mysqld_safe{.orig,}
*** bin/mysqld_safe.orig        2016-08-25 21:51:47.000000000 +0900
--- bin/mysqld_safe     2016-09-13 10:26:26.017457895 +0900
***************
*** 371,377 ****
        ;;
    esac

!   add_mysqld_ld_preload "$malloc_lib"
  }


--- 371,377 ----
        ;;
    esac

!   #add_mysqld_ld_preload "$malloc_lib"
  }

MariaDBのもっと筋の良い対応

224
222
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
224
222

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?