RYU'S IT Room

 IT関連ニュースなどの旬な情報をもとにインターネットやコンピュータ、情報通信技術などについてわかりやすく解説を進めます。

OpenSSLのHeartbleed脆弱性って何?

Sponsored Link

OpenSSLのHeartbleed脆弱性が巷を騒がせていたりしますよね。ご存知でしたか?

これって結構大変なことなんですけど、「なんか難しいことらしいので、俺には関係ないや」と、加齢に、いや、華麗にスルーされているかもしれません。

でも、ちょっとだけその知識を持っておくと、技術者や開発者とともに、「そりゃやばいだろう」と腕組をして苦い顔をすることができるので、知って損はないかもしれません。

そればかりか、セキュリティリスク回避にこの知識は一役買うことになります。今回はそんなお話です。

 

f:id:freedomlife:20140424181839j:plain

hoto credit: splorp via photopin cc

そもそもOpenSSLって何?

Heartbleed脆弱性を知るためには、OpenSSLが何であるのかを知らなければなりませんよね。

インターネットって、実はルーターという通信機器の集積ともいえます。あなたのPCやスマートフォンが、特定のサーバとやり取りをする際、その情報は、数多くのルーターを中継しているのです。このため、その中で悪意を持った人間がいたとすると、ルーターを通過する情報を盗み見ることができてしまいます。怖いですね。

ということで、盗み見られたくない個人情報をやり取りする場合は、これを暗号化して相手に送ることになっています。暗号化しておけば、途中でそれを見られても、解読できないので安全だからです。

たとえば一般的なウェブサイトをアクセスする場合「http://www.○○○.net」という感じのアドレスであるはずですが、個人情報を入力するサイトの場合、注意してアドレス部分を見ると、「https://www.○○○.net」というようにhttpsになっているはずです。これ、HTTPS(HTTP over SSL/TLS)といって、Webサーバとやり取りする情報を、暗号化して盗聴できないように通信してますってことなんです。で、この通信部分のプログラムの部品として使われているのがOpenSSLなんです。

何が問題なわけ?

OpenSSLは、暗号化通信手順であるSSL/TLS機能を実装した、誰もが使えるプログラム部品であり、安全かつ便利なので、幅広く使われているのですが、実はここにプログラムミスがあったことが発覚したわけです。

ウェブってURLを指定すると、その画面がWebブラウザに表示されるわけですが、実はWebブラウザとWebサーバ間では複数のやり取りをしています。「そっちのHTML送ってよ?」とブラウザが要求すると、「はいよ。送るよ?」とWebサーバが返します。次に「HTMLの中の画像送って」とやると「じゃあ今度は画像情報送るね?」って感じです。

OpenSSLによる暗号化通信の場合にも、コマンドのやりとりが行われているんですが、これを悪意あるコマンドで送ると、Webサーバ内の情報を引き出せてしまうことがあるんです。本来はこれ、ありえないんですが、プログラムミスがこれを許していたことが発覚したわけです。

ちょっと突っ込んで説明すると、TLS/SSL Libraryの一つであるOpenSSLのHeartbeatと呼ばれる機能で発覚したバグであり、Heartbeatから少しずつWebサーバメモリ内のデータが漏れることから、心臓から出血している意味で「Heartbleed」と呼んでいるわけです。

で、暗号化の場合、情報を見られないように宝箱にしまうようなものなんですが、実は錠をかけるための鍵と、開けるための鍵が別々に用意されています。かける鍵では開けることができない仕組みになっているんですが、Webサーバからの情報漏えいは、開けるための鍵をも漏洩させてしまうリスクがあります。

すると、ちょっとまずいことになります。暗号化した情報を盗み見ることもできますし、第三者に成りすまして買い物をしたり、はたまた、ショップになりすましてお金を請求することもできます。これってかなりまずいですよね。

実は、バグは2年間発覚していなかったことがわかっています。つまり、この2年間にこれに誰かが気づき、悪意あるプログラムを作ったとすると、情報を自由に抜き取ることができていたことになります。しかもOpenSSLは、本来安全性が高いモジュールであり手順ですから、大手サイトや銀行などでも多く使われています。そう、だからこそ問題なのです。

僕たちユーザも対策しなきゃいけないの?

ユーザとしてはどうしようもないんですが、これまでWeb上で個人情報をやりとりしたり、お買い物をしていたサイトがあれば、そのサイトがどのように対応しているかをWeb上で確認するとよいかもしれません。

また、そのWebサイトの運営者側に問い合わせをして、指示を仰ぐという方法もあります。ウェブブラウザの設定画面を開き、SSL証明書の失効確認を有効にするという方法も有効ですし、念の為パスワードを変更しておくのも安全策のひとつとなります。

過度な心配は不要かと思いますが、インターネットが人の手によって作られた手順やソフトウェアによって機能していること、そしてそこにはミスは存在し得ることなどについて、ご理解いただければと思います。