1. パーソルクロステクノロジーのエンジニア派遣
  2. 【はたラボ】派遣のニュース・仕事情報
  3. IT/Web派遣コラム
  4. ITエンジニアなら知っておくべき『MySQL』の脆弱性とセキュリティ対策

ITエンジニアなら知っておくべき『MySQL』の脆弱性とセキュリティ対策

IT/Web派遣コラム

MySQL』とは、世界で最も利用されているデータベース管理システムです。

大容量のデータに対しても高速で動作し、高機能なため実用性が高く、独立系ソフトウェアベンダから大手企業まで、幅広く使用されています。

ところが、2016年に入って致命的な脆弱性が発見されました。

ここでは『MySQL』の特徴と新たに発見された脆弱性、そのセキュリティ対策についてご紹介します。

 

オラクル社のオープンソースMySQL

MySQLは大容量のデータに対して高速で動作し、かつ機能も優れているため、ユーザーからのアクセスが多い大規模Webサイトやシステムに対応することが可能です。

世界的に有名な「Yahoo!」「Google」「Nokia」「YouTube」などの大手企業でも採用されているほどです。

また、オープンソースなので、非商用利用であれば無償で使用することができ、プログラミング初心者でも導入しやすいデータベースとしても人気です。

データベース管理システムを使わないWebサイトやアプリはほとんどありません。

MySQLを学習していれば、仕事獲得にもつながりやすいのです。

 

2016年9月に報告されたMySQLの致命的な脆弱性

しかし、2016年9月12日にMySQLに存在する深刻な脆弱性が、個人リサーチャーDawid Golunski氏により公表されました。

Golunski氏がオラクル社に報告してから40日以上が経過したことと、2社が対応を行ったことなどから、脆弱性の詳細を公開したとされています。

 

公表の際、脆弱利用の概念実証(Proof of Concept、POC)コードも提供されました。

影響を受けるMySQLのバージョンは5.7.155.6.335.5.52

 

確認された脆弱性は2つあり、そのうち公表された1つの脆弱性は、「CVE-2016-6662」として識別されています。

悪用されると、攻撃者は権限を取得せずにMySQLの環境設定ファイルを作成でき、効率的なサーバー乗っ取りが可能になります。

 

もう1つの脆弱性「CVE-2016-6663」は、この時点では公表されていません。

 

2016年11月に新たに発覚したMySQLの脆弱性

2016年11月2日、Golunski氏は新たな脆弱性を公表しました。

1つは9月に公表されていた「CVE-2016-6663」に関する詳細が明らかにされました。

低特権アカウントの権限を昇格させてデータベースシステムユーザとしてふるまうことができるようになり、勝手なコードを実行することができてしまうというものです。

影響を受けたシステムの制御権を乗っ取り、最終的にはサーバー自体が乗っ取られる危険性があるとされています。

影響を受けるMySQLのバージョンは5.5.515.6.32

 

もう1つはMariaDB の mysqld_safe スクリプトの処理に root 権限を奪われる問題「CVE-2016-6664」です。

 

オラクルによるMySQLのパッチ提供

オラクルはセキュリティ脆弱性に対するパッチを四半期ごと(1月、4月、7月、10月の17日に最も近い火曜日)に公開しています。

2016年9月に脆弱性が公表された時点ではパッチがありませんでした。

そのため、mysqld_safeで shared_libraryを読み込まないなど一次的回避策が取られていました。

 

2016年10月18日に「CVE-2016-6662」と「CVE-2016-6663」に関するパッチを提供しましたが、これらはGolunski氏に報告されることなく行われています。

CVE-2016-6664については、MariaDBが近いうちにリリースすると公表しています。

 

DLL読み込みに関する脆弱性

2018年2月に、DLL読み込みに関する脆弱性が複数発見されました。

この脆弱性は、脆弱性のあるプログラムと同じディレクトリに、悪意あるDLLがダウンロードされたりした場合に発動します。

この原因は、多くの場合「プログラム実行時にあらかじめ読み込まれるDLLの存在」と、「DLL検索時の優先順位」に起因します。

対策としては、開発者側とユーザー側のそれぞれで行う必要があります。

 

開発者側でとるべき対応策

ケース1:自己解凍ファイルなど、ダウンロードしたファイルをそのまま実行することが想定される場合

自己解凍ファイルが利用する実行ファイルについて、あらかじめ読み込まれるDLLを最小限にします。

 

ケース2:開発側がプログラム実行の為の環境を設定できる場合

ダウンロードしたプログラムをそのまま実行するのではなく、インストールの手順を経て実行させるようにします。

 

ケース3:配布するインストーラーが実行ファイルになる場合

インストーラー作成プログラムにケース1・ケース2の対策を施し、インストーラーを実行ファイル(.exe形式)ではなく、マイクロソフトインストーラー(MSI)形式のものにします。

 

ユーザー側でとれる自衛策

ユーザー側でとれる対策の一例として、実行ファイルをダウンロードするときは以下の手順を踏みましょう。

  1. 新しくディレクトリ(フォルダ)を作成する
  2. 新しく作成したディレクトリ(フォルダ)に、ダウンロードしたファイル類を移動する
  3. 新しく作成したディレクトリの中で実行ファイルを実行する

 

SQLインジェクション

SQLインジェクションとは、アプリケーションのデータベースに不正なSQL文が流入し、開発者の意図しない動作をさせてしまう攻撃のことです。

 

例えば、このようにユーザーにIDとパスワードを入力させるSQL文があった場合

$sql = “SELECT * FROM `victim_table` WHERE `id` = $id and `pass` = $pass”;

 

ID欄にこのように入力されてしまうと、パスワードを入力せずにログインされてしまいます。

$sql = “SELECT * FROM `victim_table` WHERE `id` = 999 OR 1 = 1; ? 以降はコメントになります and `pass` = $pass”;

 

他にも、SQL文の書き換えによって、サービス不能攻撃(Dos攻撃)を受けたり、テーブルを削除されてしまう恐れなどもあります。

  • SQLインジェクションに関して、以下のような対策が推称されています。
  • SQL文の組み立ては全てプレースホルダで実装する。※1
  • SQL文の構成を文字列連結により行う場合は、アプリケーションの変数をSQL文のリテラルとして正しく構成する。※2
  • ウェブアプリケーションに渡されるパラメータにSQL文を直接指定しない。
  • ユーザーの入力データへのエスケープ処理の実施。

※1プレースホルダとは、パラメータ部分を?などの記号で示しておき、後に、そこへ実際の値を機械的な処理で割り当てる方法。
※2リテラルとは、プログラムのソースコードにおいて使用される、数値や文字列を直接に記述した定数のこと。

 

データベースを使って開発するときには、SQLインジェクションの脅威に十分な対策をしましょう。

 

MySQLのセキュリティ対策と今後の行方

MySQLは利用率が高いため、MySQLの脆弱性は広範囲に影響を与える恐れがあります。

パッチが公開されたらすぐに適用すること、バージョンアップが可能なタイミングで最新版へのバージョンアップを実施することが望ましいでしょう。

米Oracleは四半期に1度、セキュリティアップデート「Critical Patch Update(CPU)」をリリースしています。

MySQLに関する情報も多いので、チェックしておきましょう。

 

ITエンジニア向けセキュリティ対策情報

MySQLを使うエンジニアであれば、構築するウェブサイトやネットワーク、最近では情報家電の開発者などにも、幅広い分野で情報セキュリティ対策が求められます。

セキュリティ診断を行うツールもありますので、積極的に情報収集を行ないチェックを怠らないようにしましょう。

 

 

\ SNSでシェアしよう! /

【はたラボ】派遣のニュース・仕事情報・業界イロハ|派遣会社・人材派遣求人ならパーソルクロステクノロジー |IT・Web・機電の派遣求人ならパーソルクロステクノロジーのエンジニア派遣の 注目記事を受け取ろう

この記事が気に入ったら
いいね!しよう

【はたラボ】派遣のニュース・仕事情報・業界イロハ|派遣会社・人材派遣求人ならパーソルクロステクノロジー |IT・Web・機電の派遣求人ならパーソルクロステクノロジーのエンジニア派遣の人気記事をお届けします。

関連記事

  • 【Java入門】実際にどう使う?abstractの意味とメリット

  • 今注目されているデータサイエンティストの年収はいくら?

  • 派遣エンジニアが英語を武器に単価アップを勝ち取るコツを徹底解説!

  • 「未経験者歓迎」に見るIT派遣の求職事情

  • インフラエンジニアとは?業務内容やキャリアパスをご紹介します

  • 【2018年板】初心者にもおすすめのスクリプト言語と種類

PAGE TOP