今月は、いろいろと人騒がせなWordPress脆弱性と、世界を大混乱に陥れたランサムウェアWannaCryについて取り上げます。
リモートコード実行可能なWordPress脆弱性~ただしPoCは不完全
WordPressの脆弱性、というと「またか」と思われそうですが、今回の脆弱性は、2016年12月に発見されたPHPMailerの脆弱性が、WordPressに残っていたために発生したものです。脆弱性のあるPHPMailerのコードがWordPressに含まれており、さらに不幸なことに、その脆弱性を外部からトリガ可能であったというのが、5月上旬に公開された「WordPressのリモートコード実行」の脆弱性です。
脆弱性の説明は、以下のサイトに説明があります。
5.2.18以前のPHPMailerを用いている場合に、CVE-2016-10033の影響を受けますが、WordPress 4.6のwp-includes/class-phpmailer.phpは、PHPMailer 5.2.14そのものであり、この脆弱性の影響を(当然)受けます。
本脆弱性の対策は、「 最新のWordPressに更新すること」です。
PoCはMTAがExim4の場合+WordPress 4.6の場合にトリガ…するはず
PoCは、Exploit-DBで公開されています。
ただ、実に幸いなことに、Exploit-DBで公開されたPoCは不完全で、筆者の手元の環境では、そのままでトリガできないことを確認しています。
筆者は、Debian GNU/Linux 7、8とUbuntu 16.04の環境で、Exim4とMySQL、そしてWordPress 4.6をインストールした状態でトリガできませんでした。
Exploitの様子は動画でも公開されている
本Exploitの様子は、Exploitbox.ioというサイトの運営者が作成した動画によって確認することが可能です。
世界を大混乱に陥れたWannaCry~MS17-010が突破口……でもどうやって?
WannaCryは、2017年5月に世界中で被害が確認されたランサムウェアです。
これまでよく見られたランサムウェアは、不審メール等に添付されたファイルを(誤って)実行することでダウンロード・感染に至るものが非常に多かったのですが、WannaCryについてはそうではなく、「 そんな覚えない」というところでの感染が非常に多く見られました。
WannaCryそのもののレポートは、セキュリティベンダのレポート等でもよく見られますので、防止等の観点から、その内容から読み解けるものを拾い上げてみます。
WannaCryは、MS17-010の脆弱性を悪用して感染する
WannaCryは、MS17-010(CVE-2017-0144)で公開された脆弱性を利用しているというのが、多くの研究者の一致する意見です。
MS17-010は、ネットワーク経由でトリガ可能な脆弱性ですが、それがなぜ悪用されたのか?という話は、ぱっと聞いた限りは結構謎が多いと思われる方も多いのではないかと思います。
ここでは、MS17-010をなぜ悪用できたのか?ということについて、説明を試みます。
MS17-010おさらい~TCP445番ポートに細工されたパケットを送信することでExploit可能
MS17-010は、細工されたSMBv1パケットを攻撃対象に送信することで、リモートコード実行が可能になる脆弱性についてのアドバイザリです。
SMBv1自体は、現在はほとんど使われるシーンがありませんし、積極的に使うシーンも想定されません。
何らかの理由でSMBv2以上の新しいプロトコルで通信が行えないような場合には、SMBv1にフォールバックされることがありますが、よほど古い実装もしくは意図的にSMBv1以外の通信を受付けないようにされていない限りは、SMBv1での通信を行われることはありません。
しかし、そのような通信を行うことがないというのと、そのような通信を行えないというのは別で、多くのWindowsではSMBv1での通信を行えるような構成になっています。
そして、SMBv1は、TCP139番、TCP445番を使用します。
外部からこれらのポートへの通信を制限している場合には、ファイル共有を行えません。
WindowsファイアウォールはTCP445番ポートを開けることがある
図1~3は、Windows 7 Enterpriseでの検証の様子です。
Windowsファイアウォールは、インストール直後に「パブリックネットワーク」を選択(図1)していた場合は、初期状態ではTCP445番を開けません(図2) 。しかし、何らかのファイル共有サービス等を有効にした場合は、TCP445番を開放します(図3 ) 。
図1 ネットワークの選択画面
図2 パブリックネットワーク選択時のWindowsファイアウォール設定
図3 ファイル共有時のWindowsファイアウォール設定例
また、TCP445番による通信を行えない場合は、ファイル共有通信を行えないことがあるため、ファイル共有を行える設定にしている場合にはTCP445番ポートを開けている可能性があると考えてください。
WannaCryは、何らかの契機で感染したコンピュータを拠点にして、他のコンピュータに感染を拡大する
WannaCryは、MS17-010の脆弱性を利用して、他のコンピュータへの感染拡大を試みます。この脆弱性自体はプロトコルの脆弱性ではなく、Windowsの実装上の脆弱性のため、感染対象は修正ファイルを適用していないWindowsサーバやクライアントとなります。ただし、Windows 10はWannaCryのターゲットになっていない(もしくは実装上の理由によるもの)らしく、影響を受けません。
Windows系OSではなく、UNIX系OS+Samba等で構成されたネットワークストレージ(NAS)などは、少なくともMS17-010の脆弱性を突いた攻撃の影響を受けません。
対策は、MS17-010の修正を適用するのがベスト。次善の策はSMBパケットのフィルタとSMBv1の無効化
今回の感染が、MS17-010の脆弱性経由であり、かつ感染した他のコンピュータからの感染拡大を受ける可能性があることを考えると、修正ファイルの適用を行い、MS17-010の脆弱性をなくすのがベストです。
しかし、何らかの理由で修正ファイルの適用を行えない場合は、修正ファイルを適用していないコンピュータに到達するSMBパケットをフィルタする、SMBv1を無効にするなどの対応を行うことで、影響を緩和することが可能です。
Windows 8以降では、SMBv1をコントロールパネルから無効にすることが可能です。具体的には、「 プログラムと機能」を開き、ウィンドウ左部にある「Windowsの機能の有効化または無効化」をクリックして(図4 ) 、開いたウィンドウで「SMBv1/CIFSファイル共有のサポート」に入ってるチェックを外し、無効化します(図5 ) 。
図4 コントロールパネル設定1
図5 コントロールパネル設定2
Windows 7ではこのような設定を行えないため、レジストリを操作+再起動するなどして、SMBv1を無効にする必要があります。
SMBパケットのフィルタについては本稿では割愛しますが、Windowsファイアウォール等の設定を変更することにより可能です。
こういう機会に修正ファイルやファイアウォールによるフィルタ状況の確認を
本稿をお読みいただいている方々の中には、「 自分のところの環境がどうなっているか」を気にする方々も多いことと思います。
WannaCryの未然防止の観点でやるべきことは、まず「MS17-010が適用されているか」を確認することであり、適用されているかどうか怪しい状況であれば、数が少ない場合には調査の上未対策のものを対策するなり、外部からの攻撃パケットが直接通らない、もしくはWindowsファイアウォール設定変更/SMBv1の無効化を行うなどして脆弱性の影響を緩和の上で、修正ファイルの適用などの対策を進める必要があります。
3月に修正ファイルが提供された脆弱性が、ランサムウェアという(攻撃者にとって)実用度が非常に高いマルウエアの感染経路に使われたという現実がある以上、修正ファイルの適用を第一に考えて対策するのがベストと言えます。
なお、以前記事 で、「 最終的にお金を支払うこともやむを得ない」として最善を探るのが、ランサムウェアに感染してしまった際の対処ポイントといえるでしょう」と書きましたが、WannaCryについてはこの考え方はあてはまりません。というのも、WannaCryに存在するバグのため、お金を誰が払ったかを犯人が識別できず、払った人に対して復元方法を提供できないためです。