和歌山のプログラミング・システム開発ならシステムキューブ
OpenSSLの脆弱性が大きく取り上げられている中、WindowsXPも公式に脆弱性への技術サポートが終了する事になりました。
この脆弱性とは、いったいどうして発見されるのでしょうか。
なぜ脆弱性が発見されるとよくないのでしょうか。
ソフトウェアの脆弱性とは、簡単に説明すると、ソフトウェアの欠陥です。
現在話題になっているOpenSSLを例にとります。
OpenSSLはサーバーとクライアントの間、Webサーバーと、Webブラウザの間の暗号化を行うものです。
この暗号化は、双方に保存された鍵ファイルがなければ、お互いのデータを暗号化以前に戻す事ができない事が基本の機能です。
インターネットの通信は、突然片方から切断する事、回線が遅くなってしまうこと、などを十分含めて設計を行わなければなりません。
OpenSSLはその機能を拡張していく中で、Heartbeat(心拍)というサーバーとクライアント間の接続を長く保持する機能を持ちました。
Heartbeatというデータを送信している限り、ネットワークは途切れていないので、接続を保持してくださいという指示を出します。
このHeartbeatという機能に欠陥があり、そのHeartbeatのデータを不正な形に加工する事で、OpenSSLが予期しない動作を起こす事が発見され、それが今回のHeartBleed(心臓出血)と名付けられた脆弱性になります。
このHeartbeatは定められた規格によれば、データの大きさというものを保持するようになっています。
そのデータそのものと、データの大きさを違ったものにすると、OpenSSLはサーバーのメモリに格納された余分なデータを返却してしまうという、欠陥です。
このような仕様以外のデータに対して、誤ったデータとして処理すべきものですが、その部分が大きく抜けてプログラムが作成されていた、ということが今回の問題を引き起こしています。
OpenSSLはオープンソースソフトウェアという、プログラムのコードがすべて公開されたソフトウェアで、組み込む事は無料です。
OpenSSLはWebサーバーをはじめとして、インターネットを介した暗号化通信のスタンダードとして利用されてきました。
しかし、本来あってはならない欠陥が発見され、修正は行われましたが、その適用をサーバーに対して行うのは、サーバーの管理者になります。
ですので、未だに脆弱性を放置されたサーバーは数多くあるという事です。
これらに対して、脆弱性が公開されると、同じ状態を再現する事は簡単な事になります。脆弱性を見つけるのは難しくとも、公開されてしまえば、再現は簡単なのがソフトウェアの世界です。
このOpenSSLのようなソフトウェアは、非常に膨大なコードから成り立っています。すべてのコードに欠陥があるかどうかを、一から洗い出しきる事はかなり難しい事です。
機能が増えれば増えるほど、あり得るケース、あり得ないケースのすべてを確かめる事が必要ですが、その部分に漏れがあったという事です。
OpenSSLほど広く使われているものは、すべてが最新版に置き換わるまでは非常に長い時間がかかり、その間ユーザーのデータは危険にさらされ続ける事になります。
コンピュータの世界は、このように複雑なプログラムの集合体で、それはスマートフォン、タブレットであっても全く同じです。
WindowsXPのように10年以上現役で使われていたシステムでも、すべての欠陥を洗い出す事ができないため、今後新たな欠陥が見つかる可能性はほぼ100%です。
それがユーザーにとって深刻なものか、あるいは公開されずに秘密裏に利用されるものかは、わかりません。
ただ放置されれば、悪用される危険性は一秒ごとに増していくものです。
システムがアップデートにアップデートを重ねているのは、現在のソフトウェアがより複雑になっていく中で、さけられない事です。
WindowsXPの更新が停止してしまったという事は、今後脆弱性は放置されるという事、そしてWindowsのプログラムのコードは公開されていないので、実質Microsoft社でしか修正できない、という二点が重要なポイントです。