The Midnight Seminar

読書感想や雑記です。このブログの裏で始めた統計&プログラミングのブログのほうがアクセスが伸びてしまい、こっちが裏みたいになってます。

史上最悪のネットセキュリティ危機と騒がれてる「Heartbleed」問題に関するメモ(よくわかっていない素人レベル)

 ※2014/4/15 すこし追記


 数日前から話題になりまくっているように、Heartbleedと呼ばれるインターネット史上最悪ともいわれるセキュリティ危機が起きているらしい。
 私はインターネットの技術をよく分かってないので、具体的に何がやばくて何をしたらいいのかがあまり理解できないのだが、放置するのもあれなので、関連する一般向けの記事だけは読んでみた。
 で、結局のところ、われわれにできることとしてはパスワードを変えるぐらいしか対策はなく、あとは将来に向けてセキュリティ意識を高めましょうぐらいのことしか言えないみたいなので、深く考えるのはやめたのだが、とりあえず読んだものについてはまとめておくことにした。
 このエントリの前半はリンクの羅列ですが、後半はド素人が自分の大まかな理解を確認するために書いてるような感じなので、内容は信用しないで、専門家の説明を読みにいってください。*1


 まず、とにかく大変なことがおきたんですよということを説明している記事としては、↓これを読めば十分な気がする。

ウェブを襲った最悪のセキュリティ災害「Heartbleed」から自分の身を守る方法 | ReadWrite Japan
http://readwrite.jp/archives/6706

OpenSSLの「Heartbleed」脆弱性、一般ユーザーの自衛は困難 対応は長期戦か
http://www.itmedia.co.jp/enterprise/articles/1404/10/news114.html

 次に、具体的に何が起きたのか、素人にもある程度わかりやすく仕組み的なことを含めて解説している記事としては、↓のものがわかりやすかった。2個目と4個目は、少し専門的だけど、全くわからないということはない。

OpenSSLの脆弱性で想定されるリスク - めもおきば
http://d.hatena.ne.jp/nekoruri/20140410/heartbleedrisk

Kazuho's Weblog: Heartbleed脆弱性と、その背後にあるWebアプリケーションアーキテクチャの一般的欠陥について
http://blog.kazuhooku.com/2014/04/heartbleedweb.html

まさに血を吹く心臓。ネット業界震撼の「Heartbleed」ってどんなもの? - GIZMODO
http://www.gizmodo.jp/2014/04/heartbleed.html

CVE-2014-0160 OpenSSL Heartbleed 脆弱性まとめ - めもおきば
http://d.hatena.ne.jp/nekoruri/20140408/heartbleed


 どのぐらい危ないかという点について、シマンテックが調査報告というかたちで現時点の見解を出していた。わりと楽観的な論調だ。

Heartbleed - 調査報告
http://www.symantec.com/connect/blogs/heartbleed-0


 で結局、一般ユーザーとしてできることはなにかと言えば、

まだ直っていないウェブサイトもあれば、元々壊れていないウェブサイトもあるので、「直したからパスワード変更してね」って言ってきたら変更してください。あと、悪い人が偽メール送ってきているので、メールで連絡してきたとしても、ブラウザのブックマークから開きましょう。
http://d.hatena.ne.jp/nekoruri/20140410/heartbleedrisk


 これだけのようだ。
 PWを変更したほうが良いサイトの一覧としては、↓これをみてる。

The Heartbleed Hit List: The Passwords You Need to Change Right Now
http://mashable.com/2014/04/09/heartbleed-bug-websites-affected/

Heartbleed bug: Check which sites have been patched
http://www.cnet.com/how-to/which-sites-have-patched-the-heartbleed-bug/

 
 
 とりあえず間違ってるかも知れないというか、たぶん正確ではないんだけど、イメージとしてわかった(ような気がする)のは以下のような内容だ。

  • サイトにSSLを導入するために広く使われてるOpen SSLというオープンウェアに、簡単だが致命的なバグが見つかった(SSLは、通信相手が信用できるかどうかの確認と、通信内容の暗号化に使われる仕組み)
  • 大手も含めてインターネットのサイトの3分の2ぐらいで使われているソフトなのでとても波及範囲が広い
  • 問題は2年間ぐらい放置されていたので、その間にいろいろ悪用されている可能性もあるが、実態はよくわからない。専門家にもわからないし、過去に遡って検証することもできない
  • 仕組みとしては……ユーザ側のコンピュータからウェブサーバに接続するときに、そのやり取りの前段で相手のサーバが生きてるかどうかを確認する手順(Heartbeat)があるのだが、確認結果が返ってくるときに、サーバのメモリが過去に処理したデータの残骸みたいなものがなぜか一緒にくっついてくるみたいな感じのバグである
  • Heartbeatは、データの塊をサーバに対して投げて、その塊がまるごと返される仕組み。その塊のヘッダ部分には、この塊が全体で何バイトなのかという情報が入っているのだが、このヘッダの情報を偽って大きめにしておくというのが、今回の脆弱性を突く攻撃の仕組みである。つまり、ウェブサーバ側がHeartbeatへの応答を返す際に、ヘッダの情報をみて自分のメモリの「ここからここまでを返す」という処理をしているため、ヘッダに書かれた大きさよりも実際の塊が小さかった場合、メモリに残っている塊以外のデータも一緒に返されることになる
  • 攻撃者は、このバグを利用して、ウェブサーバからデータをちょっとずつ盗むことができる
  • ウェブサーバのメモリに残ってるデータがランダムかつ断片的に流出する感じなのだが、何回でも繰り返せてかつ流出の記録が残らないので、同一プロセス(この「プロセス」というものの範囲は私は理解してない)内のデータであれば全て取得されてしまう恐れがある
  • つまり、攻撃用のプログラムで何度も操作を繰り返して、取得したデータを組み合わせれば、ユーザのID・PWだったりサーバ証明書(暗号化の鍵の役割を担っている)の情報だったりが盗みだされる可能性があり、結局「何がおきてもおかしくない」状況となっている
  • 具体的に何が漏れ得るかは、サーバが何をどう実装しているか…言い換えるとHeartbeatの処理を行うメモリが他に何の処理を行うようになっているかによるが、同じメモリで暗号を解く作業もは普通にやっており、サーバ証明書秘密鍵(暗号を解くための鍵)が流出する恐れがある
  • 悪用のパターンとして大きなものとしては、(1) 証明書(秘密鍵)をゲットした上で、あわせてパケットを傍受する仕組みを設ければ、ユーザがウェブサーバに送信してくる情報を全部盗み見ることができる、(2) ゲットした証明書を使って本物と区別が付かない(証明書ベースではブラウザが真偽を判断できない)偽サイトをつくることもできるので、そこにユーザを誘導して情報を入力させるフィッシング詐欺ができてしまう。
  • 他にもいろいろ悪用のバリエーションがあるんだろうけど私にはよくわからない。だがとりあえずやばいのはサーバ証明書秘密鍵が漏れるケースである
  • この騒ぎが起きて以降、世界中のクラッカーたちが、脆弱性が修正されていないサイトを探索して攻撃をかけまくっているw(過去2年間にこのバグを見抜いていた少数のクラッカーたちや、NSAなどは、既にいろいろゲット済みと考えられる)
  • 特定のサイトが脆弱性を抱えているかチェックするツールが色々公開されていて、URLを入力すると調べた結果を教えてくれるものや、プラウザプラグインで自動的に判定してくれるツールもある(上記のまとめ記事の中で紹介されてる)
  • 脆弱性を調べた結果を公開しているサイトもたくさん出てきているが、注意喚起のために重要な情報であるとともに、脆弱なサイトがどれなのかがわかることで、攻撃の呼び水になっているかも知れない
  • 大手のサイトは、AppleAmazonMicrosoftのように全く影響を受けなかったことを発表してるところもあれば、影響があったけどもうバグの修正済みというサイトがほとんど(?)である
  • じつはサーバーだけならまだしも、ルーターやスイッチなどの機器もOpen SSLをつかってるらしく、こうした個別の機器となると、脆弱性の把握と対策を組織的かつ網羅的に行うのも難しいっぽい
  • とにかく、「影響の範囲がめちゃめちゃ広い」「どんな実害が起きているか/起き得るかが専門家にもわからない」「短期的には解決不可能で、ハッカーの攻撃と情報漏洩がしばらく続いていく」「ユーザが自衛する方法はない」という、壊滅的な状態になっている


 対策は以下のような感じだ。

  • 対策としては、一般ユーザとしてはバグが修正されたことが発表されたサイトでのみ、PWを新たに変更すること。修正される前にPW変更しても、そのPWがまた流出する恐れがあるし、もともと修正の必要がなかったサイトならPWを変更する必要もない
  • ただし、複数のサイトで同じPWを使っていた場合は、「もともと脆弱性がなく、修正の必要がなかった」ことが明らかになっているサイトについてもPWを変更したほうが良い。たとえば脆弱性があったYahoo!から漏れたID・PWで、もともと脆弱性のなかったAmazonにログインされたりするわけなので
  • サービスの運営元から「脆弱性を修正したので、下記URLからパスワードを変更してください」みたいなメールが届いても、URLをクリックしてはいけない。今回は、クラッカー側が完璧な偽サイトをつくることができるから。PWの変更は、従来から使ってたブックマークなどからアクセスして行うこと
  • サイト運営者は、Open SSLのバージョンを更新したり、サーバ証明書(既に盗み出されている可能性があるので)を更新したりしているらしい
  • 大手じゃないサイト(中小のネットショップやwebサービス)で、丁寧な運営をしていなかったら、影響があったのか、修正されたのかすらわからないケースが多いと思うけど、そういうのは利用者側が努力しても無駄なのでたぶん諦めた方がいい。クレカ情報とか登録してたら、それも漏れてるかもしれないが、諦めて月々の明細に不正利用が含まれていないかを丹念にチェックすることとする


 で、今後、インターネットを利用する上で気をつけることとしては、

  1. 複数のサイトで同じPWを使わない
  2. PWは定期的に変更する(複雑なPWにすることよりも定期的に変更することのほうが大事)
  3. GoogleEvernoteDropboxなどのように、二段階認証を導入しているサービスでは、必ず二段階認証を有効にしておく
  4. クレカ情報や個人情報をむやみに登録しない
  5. 大手以外のサービスはなるべく使わない(こういう危機が起きたときにちゃんと対応してくれるかわからないので。人とカネに余裕がないと無理でしょ)
  6. 情報を登録したサイトはすべて把握しておく
  7. 今回のような事態は専門家ですら把握できてなかったのだから、インターネットでは全ての情報は漏れる恐れがあると想定して、最悪漏れても構わない情報以外は手元で管理する(危険度:ネット上>>>>ローカルの端末>>紙)
  8. セキュリティ関係のニュースは見落とさないようにする。今回もそうだが、ニュースになるとその時点から世界中のクラッカーたちがより一層ハッスルし始めるわけなので、そのタイミングで迅速にPW変更などの対策を打たないと、とても危険だと思う
  9. 素人レベルでいいから、インターネットのインフラやセキュリティに関してはなるべく勉強しておく。「SSL」とか「オープンウェア」とか言われて何のことか全くわからない状態だと、ニュースが流れてきてもヤバさのイメージすらできないと思う*2
  10. 技術に詳しい友人をもつ


 ぐらいか。


 あと蛇足ですが、その他の関心としては、システムが複雑になりすぎて人間の(集団としての)管理能力を超えるという事態はよくあることで「またそのパターンか」という話と、被害を実際に「経験」しないと個人としても集団としても学習は進まないんじゃないかというような話ですかね。
 前者の関心としては、金融取引の仕組みが複雑になった結果として20世紀には大恐慌、21世紀にはサブプライム危機のようなものが起きたことや、政治や文化まで含めたグローバル化が進んだことで20世紀には世界大戦、21世紀には大規模テロが起きるようになったことに似ていて、情報処理と通信の世界が複雑化したことで、これから何か破滅的な危機が起きてもおかしくないと思って心の準備をしておいたほうがいいんでしょう。
 後者の関心としては、今回のような危機が起きても結局、対策をしない個人や、対策をしないサイトはたくさんあるだろうし、制度づくりも十分には追いついてはいかず、結局は実害を伴いながらちょっとずつ前進していく感じなんでしょう。
 大恐慌や世界大戦を経たことで人類は、一応、社会を大規模にコントロールする知恵を少しは蓄えることができたわけですが、情報の世界ではそのときがまた来ていないのかも知れない。単なる技術の問題だけではなく、スノーデンが提起したような倫理的な問題もあるので、安定するには時間がかかるんでしょう。


 さらなる蛇足として、ITの世界で優秀な人材が、「質」「量」ともに、インフラやセキュリティ方面よりもアプリ・サービスの方面に流れてしまっているという可能性はないのかが心配ですね。IT業界のことはまったくわかりませんが、素人からみると、「ネットワークとか暗号化の仕組みに詳しいです」というより、「こんなサービス開発しました」のほうが格好いいような気がするので、もし人材(とくに若い世代の)がそっちに偏っているとすれば長期的にはネット社会の強靱性を損ねることにもつながるのかも知れません。
 単なる素人としてのイメージですが、ITのインフラ方面の話をする人って、年代が高い人たちが多いような気がするんですよね。以前、「90年代ぐらいのインターネット黎明期については、優秀な技術者がむしろインフラ方面に多かったんじゃないかと勝手に想像してるんですが、2000年代以降になってアプリやサービスがめちゃめちゃ儲かるようになると、若い世代の優秀な人材がインフラ方面に入ってこなくなったりしないんですか?」とITベンダーの人何人かに質問したところ、「よくわからんけどそうかもね」的な反応でした。どうなんでしょう。

*1:だったらアップするなとw

*2:そういえば私も、「Heartbeat」というサーバの死活監視の仕組みの存在(内容は理解してない)については、たまたま先週の金曜日に仕事で、ITベンダーの人に教えてもらったばかりでしたw。しかしそのおかげでたとえば、今回の問題が、SSLの接続が確立される前の段階で起きているバグなので記録にも残らずヤバイという話などがちょっとイメージしやすかったです。