【レポート】

MySQL 5.0.26 - 文字エンコーディング指定の新構文、致命的なバグ修正も

1 権限のないストアドファンクション実行に関する脆弱性

    松信嘉範  [2006/10/13]

    MySQL5.0系の最新の安定版バージョンとなる5.0.26が、日本時間の10月10日深夜にリリースされた。5.0.25は商用ライセンス版のみ提供され、一般向けの提供は行なわれなかった。

    若干の機能追加と、200余りのバグフィックスが行なわれている。致命的なバグを意味するS1バグの修正も数多く行なわれている。すべてを紹介することはできないが、多くの利用者にとって重要と思われる、セキュリティ関連のバグ修正や、日本語処理に関する部分などを中心に簡単に紹介しよう。

    脆弱性修正(1): 権限の無いユーザーが任意の権限でストアドファンクションを実行できてしまう脆弱性の修正(Bug#18630)

    本脆弱性が発生するのは、一般ユーザーが作成したストアドファンクションA(実行者の権限で動作)と、管理者ユーザー(root)が作成したストアドファンクションB(作成者の権限で動作)の2つがある場合である。一般ユーザーがB経由でAを実行すると、AはBの権限(root権限)で動作してしまうのである。したがって、Aの中に、一般ユーザーでは実行できない悪意あるSQL文を仕込んでおき、B経由でそれをroot権限で実行する、といった攻撃ができてしまっていた。

    脆弱性修正(2): 権限の無いユーザーがデータベースを作成できる脆弱性の修正(Bug#17647)

    本脆弱性は、UNIX/Linux系OSなど、ディレクトリ名/ファイル名の大文字・小文字の区別をつけるOSでのみ発生する。

    MySQLユーザー名と同一名称のデータベースが作成されていて、そのデータベースに対するUSAGE権限(接続権限)とCREATE権限(テーブル作成権限)が付与されているとする。このとき、そのユーザーは、同名で大文字・小文字だけが異なるデータベースを作成できてしまっていた。たとえば"japan"というユーザーと"Japan"というデータベースがあったとしたら、japanユーザーは"JAPAN"、"japan"、"jApan"など、大文字/小文字が違うだけのデータベースを作成できてしまう。

    この脆弱性は4.1系でも発生する不具合で、4.1.21で修正されている。5.0系では5.0.19の時点で修正されているのだが、今回のChange LogにSecurity Fixとして記述されているため、ここで触れることにした。

    文字エンコーディング指定のための新構文の追加(Bug#11972)

    コマンドラインツールmysqlにおいて、CHARSETコマンドという文字エンコーディング指定のための新構文が追加された。以下のように実行する。

    mysql> CHARSET cp932;

    この場合は、クライアント側の文字エンコーディングがcp932にセットされる。これは、従来から提供されているSET NAMES文の機能に加え、コマンドラインツールmysql側で認識する文字エンコーディングも同時に変更する、という特徴がある。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン