セキュリティ専門家Sergei Golubchik 氏は、2012年6月9日、世界で普及しているオープンソース・データベース「MySQL」に存在する不具合を報告。この脆弱性によって、攻撃者がどのようなパスワードを使っても MySQL のデータベースにログインすることが可能になります。本記事では、この問題について説明します。影響のあるコンピュータはそれほど多くはありませんが、被害を受けたコンピュータにとっては重大な問題に値します。
この脆弱性を利用するためには、何よりもまず、標的とする MySQL のデータベース上で有効なユーザ名が最初に必要となります。多くの場合、MySQL サーバにおいてユーザのルート権限は、有効な状態となっており、どのようなユーザ名であってもログインすることが可能です。有効なユーザ名を取得すると、一列のシェルスクリプトが、ログイン要求を繰り返します。そして数秒以内に MySQL のサーバからのウェルカムメッセージが表示され、コマンドの入力を待機します。エクスプロイトコードを検証するフレームワーク「metasploit」が、パスワードのハッシュをまとめて書き出し、これらのハッシュを取得した後は、すべてのパスワードを不正に利用することが可能となります。
この脆弱性の根本的な原因は、ユーザの認証情報を基に算出されたハッシュと実際のハッシュとの照合にあります。関数「memcmp」を利用するハッシュを比較すると、戻り値は、-1、0 または 1 であることが想定します。しかし、一般的な C言語コンパイラである「GCC」を実装したコンピュータ上で「SSE 最適化」という標準的なコンパイラを効率化する機能を利用した場合、この戻り値は変化します。SSE 最適化が用いられない場合、memcmp 関数の戻り値は、-1、0または 1 のみとなります。しかし、この最適化が用いられると、生成される戻り値は、1 よりも大きい数値となります。ところが戻り値は、bool 型(char値)で収集されるので最後のバイトのみが表示されます。このため、この戻される値が 0 となった場合、認証に成功したこととなります。
■影響のあるプラットフォームは、Linux 搭載のコンピュータのみ
幸いにも、本脆弱性の影響を受けるとされているシステムは、わずか一部の MySQL バージョンにのみであり、公式の MySQL ビルドは、対象外となります。また、SSEで最適化された「glibc」を使うLinuxを搭載するコンピュータに限定されます。Windows搭載のコンピュータ上で MySQL を使用している場合、この脆弱性による被害の心配はありません。またRed Hat Enterprise Linux (RHEL)は、同社OSが影響を受けないことを公に発表してきました。影響のあるプラットフォームについては、こちらで確認することが可能です。
この脆弱性は、特定のプラットフォームに限定されていますが、トレンドマイクロでは、定期的に MySQL サーバの更新手続きを行い、コンピュータ使用における最善の実践を順守することをお勧めします。また MySQL の設定において変更される可能性があるため、サーバは、本当に必要なローカルホストまたは特定の IP アドレスのみからの接続を許可するよう設定しましょう。
トレンドマイクロのサーバ向け総合セキュリティ製品「Trend Micro Deep Security(トレンドマイクロ ディープセキュリティ)」をご利用のお客様は、Deep Security パターン「12-015」を更新し、以下のフィルタを適用することにより、本脆弱性を利用した攻撃を検出、回避します。
参考記事:
by Pawan Kinger (Vulnerability Research Manager)
翻訳:宮越 ちひろ(Core Technology Marketing, TrendLabs)