インフラセキュリティの処方箋

第42回2018年1月~MeltdownとSpectre~現代的なCPUのしくみに根差した脆弱性 / 外部ネットワークを使うためのちょっとした注意

1月に入ってほどなく、Intel CPUに脆弱性が存在する旨の情報が公開されました。

情報が公開されてからしばらくは情報が錯綜していましたが、現在は(まだ一部のPoC類は)公開されていないものの、議論も収束した感があります。

Meltdown and Spectre
https://meltdownattack.com/

脆弱性の概要と影響

2018年1月3日に、Project Zeroより以下のblogが公開されました。

Reading privileged memory with a side-channel
https://googleprojectzero.blogspot.jp/2018/01/reading-privileged-memory-with-side.html

このblogでは、MeltdownとSpectreという2つの脆弱性に関する情報を公開しています。MeltdownとSpectreの脆弱性は、以下のことを行われる恐れがあるとあります。

MeltdownとSpectre
MeltdownとSpectre

Meltdown

本来CPUにより保護され、参照できないはずの、他のプロセスやカーネルのメモリ領域を読み出せる。上記blog中「Variant 3: rogue data cache load (CVE-2017-5754)」に対応する。

Spectre

本来CPUに保護され、参照できないはずの、他のプロセスのメモリ領域を読み出せる。上記blog中、⁠Variant 1: bounds check bypass (CVE-2017-5753)」「Variant 2: branch target injection (CVE-2017-5715)」に対応する。

現時点で影響を受けるのは、プログラムに書かれた順序で命令実行をするのではなく、CPU内で実行順序を入れ替える「アウトオブオーダ実行」などの投機的実行をサポートするプロセッサとされています。このため、少なくともCPUについては、Pentium Pro(1995年リリース)以降のものが本脆弱性の影響を受けるとされます。

本脆弱性はあくまで命令の投機的実行に根差した脆弱性です。このため、たとえばアウトオブオーダ実行をサポートしない Intel Atomプロセッサ(2011年9月に出荷開始されたSaltwellマイクロアーキテクチャのものまで)は本脆弱性の影響を受けません。

本脆弱性の影響を考慮すべき環境

本脆弱性は、OSによる対処とCPUのマイクロコードを入れ替える対処が関係ベンダからリリースされています。

Windows Client Guidance for IT Pros to protect against speculative execution side-channel vulnerabilities
https://support.microsoft.com/en-us/help/4073119/protect-against-speculative-execution-side-channel-vulnerabilities-in

対処したほうがよいのはわかっているのですが、性能に影響を与える投機実行の部分に手が入るため、以下のような特性を持つシステムでは、少し慎重になってもよいというのが筆者の意見です。いずれの条件も、ユーザ側ではなくサーバ側では普通にありうるものと考えています。

  • 限られたユーザが決められたプログラムを動作させるようなシステム
  • ギリギリの性能設計を行っているシステム
Intelによる性能検証結果
https://newsroom.intel.com/wp-content/uploads/sites/11/2018/01/Blog-Benchmark-Table.pdf

逆に、ユーザが自分の都合でさまざまなプログラムを動作させうる可能性がある場合には、本脆弱性の対応を行うべきでしょう。特に、SpectreのようにJavascriptでもトリガ可能な脆弱性の場合、対処しないことは悪意あるWebサイトやプラグイン等を経由した情報窃取のリスクとなります。

外部からの攻撃除け~ちょっとした注意をするだけでだいぶ違う

新年最初の回ということで、筆者が日常的に心がけていることをご紹介します。

筆者は、外部の宿泊機関等でインターネット接続サービスを利用することがありますが、よっぽどのことがない限りは(誰が構築したかわからないような)ホテルのWiFiや有線ネットワーク環境は「そのままでは」使わないようにしています。これはもともとは、自分の環境を、外部からこっそり触られることに抵抗があることに加え、最近だと2017年5月に大流行したWannaCryのように、ネットワーク経由で感染を拡大するマルウェアがいることも影響しています。

WannaCry:情報まとめ
https://blog.kaspersky.co.jp/wannacry-faq-what-you-need-to-know-today/15594/

ポータブルルータのススメ~筆者が手持ちのコンピュータを外で使う際に注意していること

筆者は、仕事のが日ごろ留意していることは、おおよそ以下のようなことです。

  • 自身の環境が最新になっているか。最新の脆弱性修正まで適用されているかどうか
  • 外部のネットワークに接続される場合、自身に割り当てられているIPアドレスは、自分以外のアドレスからのICMPやTCPポートなどへのアクセスが通るかどうか
  • ウィルススキャナ類は最新になっているかどうか
  • セキュリティソフトウェアにより、外部からの不要な接続を受け入れないようになっているか

何らかの理由で、上記のすべてについて何等かの不安が残る場合は、自分が持っているコンピュータを外部ネットワークに直接接続はせず、自分で持っているポータブルルータ等を経由して外部ネットワークに接続するようにしています。

「WiFi―WiFi」⁠WiFi―有線」⁠有線―有線」の3形態の接続をサポートするような小型ルータがあればいいですが、最近のノートPCにはWiFi接続を行う機能が標準で装備されていることもあり、WiFi―WiFi、WiFi―有線の2パターンを考慮していればまず大丈夫でしょう。

もちろん、ルータに対して外部からの接続を受け付けないようにできる(もしくはなっている)必要はあります。

ネットワークの接続形態
ネットワークの接続形態

その他、少し費用はかかりますが、自身が保有するスマートフォンのテザリング等を用いてインターネット接続を行うのも有効です。

自分あての通信をキャプチャするなら直接接続を

ある程度ネットワークに詳しい人ならば、自分あてにどのような接続要求が来ているか?を見たくなることもあると思います。そのような方はすでにお分かりだと思いますが、前述のようなルータ経由の接続は逆効果であり、外部ネットワークに対し、PCを直接接続する必要があります。

ただしこのような場合は、外部からの接続に対し脆弱でないように備えておく必要があります。

おすすめ記事

記事・ニュース一覧