2014年5月15日木曜日

OpenSSLの脆弱性

OpenSSLに脆弱性が発見されたという話をちょっと前に聞いたけど、
具体的にどういう脆弱性なのかがわかりづらかったのでメモ。

OpenSSLの機能の中で、今回脆弱性が発見されたのが
OpenSSL1.0.1から追加されたheartBeat機能という機能。
これは、SSLで通信している相手が稼働状態かを確認するための機能で、
具体的な動作としては、以下の通り。

1.64KBのデータを送信(クライアント⇒サーバ)
2.受信したデータをメモリにコピー(サーバ)
3.メモリ上にコピーした64KBのデータを送信(サーバ⇒クライアント)
4.データが受信可否で稼働状態を確認(クライアント)

脆弱性があるポイントは、1で送信するデータサイズを詐称することができるというところ。
この脆弱性のため、1KBのデータであっても64KBのデータとして送信することで、
サーバはメモリ上に1KBのデータしかコピーしていないのに、64KBのデータを返してしまう。
つまり、メモリ上に存在する意図しない63KB分のデータをクライアントに送信してしまうことになる。

意図しないデータの中には、ユーザの個人情報などが含まれている可能性があるため、
上記の攻撃を繰り返すことでこれらのデータが盗まれてしまうことになる。

この脆弱性が存在するのはOpenSSL1.0.1~1.0.1f と1.0.2-beta~1.0.2-beta1で、
OpenSSL1.0.1g では修正されている、1.0.2系はbeta版ということで放置されてるぽい。
もし該当のバージョンを使用しているならば、早めにバージョンアップするべき。
(ちなみに、1.0.1gの公開は、2014年4月7日)

バージョンアップが難しい場合、「-DOPENSSL_NO_HEARTBEATS」オプションを有効にし、
OpenSSLをリコンパイルすることでも対応可能らしいので、こちらを考慮するのもあり。

SSLを使用するJPドメインWebサイトの4割以上に今回の脆弱性が該当するらしいので、
影響範囲が恐ろしいほど広いのも、騒がれた原因みたい。

今回の問題はハートブリード(Heartbleed)と名前がつけられ、ロゴが作成され、
Wikipediaで専用ページまで作成されているので、一度確認しておいたほうがいい。

ハートブリード(Wikipedia)


0 件のコメント:

コメントを投稿