orangeitems’s diary

クラウドではたらくエンジニアの日々の感想です。

またまたまたCPU脆弱性!Portsmashの詳細を知る

f:id:orangeitems:20181106173022j:plain

 

今度はPortSmash(ポートスマッシュ)

去年の年末あたりから、延々とCPU脆弱性の話題が尽きません。最近はやっと各種パッチなどで収束した!、と思った矢先に新しい話が投入です。

 

pc.watch.impress.co.jp

11月2日、Intelの「Hyper-Threading」テクノロジーなど、物理コア上で複数の実行スレッドを同時実行する「SMT(Simultaneous Multi-Threading)」について、サイドチャネル攻撃が可能となる脆弱性「PortSmash (CVE-2018-5407)」が公開された。

 

ハイパースレッディングなんて、2002年に登場したもはや空気のような技術です。特にサーバー用にCPUを利用するときはオンにするのが常識です。例えば4コアのCPUであればハイパースレッディングをオンにするだけでOSで8コアに見えます。実際には性能は2倍にはならないのですが、エンドユーザーには1コアおいくら、で売るのでクラウド、特にIaaSの世界はオンになっているのが「あたりまえ」です。

今回の問題はこんな状況で起こるようです。

・ハイパーバイザーの上で、複数の仮想マシンが動いている。
・仮想マシン上ではそれぞれ何らかのプロセスが動いている。
・仮想マシンのプロセスには、仮想のCPUコアが割り当てられるが最終的には物理コアが割り当てられる。
・共通の物理コアを共有している、複数のプロセス間で情報が読み取られる。
・例として、OpenSSLで管理する秘密鍵が読み取られてしまった。

そして、この再現プログラムはもう公開されていて、第三者が再現もできる。AMDのRyzenでも起こるし今再現中ということでした。

 

影響を考える

またこの類の話に巻き込まれるのかと気になって、再現プログラムを確認してみました。GitHubに公開されています。

 

github.com

 

readmeにある再現シナリオを見る限り、あるプロセスが秘密鍵を生成するときに、bつのプロセスがその計算を盗み見ることができそうです。悪用するとすればSSLで暗号化した通信を解読するときに使うぐらいでしょうか。

ただ今回は、openSSLでしたが、openSSHでSSHの秘密鍵を生成する際にも同じことができそうな気がします。そのほうがより深刻なのかもしれません。鍵認証なんて最近のデファクトスタンダードですからね・・・・。

今回の件をIntelがどのようにFIXできるのか(もしくはできないのか)わからないのですが、ハイパースレッディングをオフにするというのは業界的にはほぼ無理ではないかと・・。

まあ鍵が第三者に取られたからと言って、何のための鍵だかわからないのであれば使えないのですが、いい気持ちがしない攻撃ではあります。

しばらく情報がまとまるまでは、秘密鍵の生成はopenSSLでもopenSSHでも、パブリッククラウドでの生成は避けた方が良いのではないかと思います。もちろん専用サーバー上であれば第三者の仮想サーバーがいないので全く問題ありません。これは、一連のCPU脆弱性で同様です。

 

まずはIntelやOS/ハイパーバイザー/クラウド/ホスティング各社の反応待ち

業界全体が、ユーザーも含めてこの手の話に慣れっこになっているのもあるのですが・・。まずは慌てずに状況を静観すべきだと思います。

必ず、報告が出てくるので、静かにその対応をしていくだけですね。ただ、もうあと何回やればいいの、というぐらいこのような状況が継続していて、何か抜本的な製品をIntelには出してもらいたいと本当に願います。

末端は大変ですーー。