WannaCry 2017年 未適用のSMBの弱点を伝って広がったランサムウェア
修正が出てから2か月後に、SMBv1 の弱点を突いて、人の操作なしに端末から端末へ広がった。英国のNHSで感染した組織は、どれも修正を当てていないか、支援の切れた Windows を使っていた。止める所は、修正の適用、SMBv1 の停止、445番を境界で通さないこと、更新できない機器の隔離にある。
要点
- 弱点は SMBv1 のサーバーにあり、認証なしに細工した通信を送るだけでコードを動かされる。修正は攻撃の2か月前に出ていた[2]。
- WannaCry は手元の網の IP を走査し、445番に届いた相手へ自ら広がった[4]。1台の未適用の端末が、同じ網の未適用の端末を全部巻き込む。
- NHSで感染した組織は、どれも修正を当てていないか、支援の切れた Windows を使っていた。多くは支援の続く Windows 7 で、修正を当てていなかっただけだった[1]。
- 修正を当てたかどうかに関わらず、外に向いた境界の防火壁を管理していれば感染は防げた、と NAO は書く[1]。
- 根本の守りは、修正を期限を決めて当てる、SMBv1 を止める、445番を境界で通さない、更新できない機器を網から切り離す、の4つ。
何が起きたか
| 日付 | 出来事 |
|---|---|
| 2014年 | 保健省と内閣府が、Windows XP のような古いソフトウェアから2015年4月までに移る確かな計画を持つよう、トラストへ書面で求める[1] |
| 2017年3月14日 | Microsoft が MS17-010 を出す。SMBv1 のサーバーの弱点で、CVE-2017-0143 から0148の6件。支援中のすべての Windows で深刻度は緊急[2] |
| 2017年3月17日と4月28日 | NHS Digital が CareCERT の警告で、修正を当てるようトラストへ求める[1]。勧めであって命令ではなく、NHS Digital に従わせる権限は無い[5] |
| 2017年5月12日 朝 | 攻撃が始まる。午前の遅くに最初のトラストが不具合を届け出る[1]。US-CERT が同じ日に注意喚起を出す[4] |
| 2017年5月12日 13時ごろ | NHS Digital が、4つのトラストからの届け出を受けて保健省へ伝える。16時には16のトラストに増える[5] |
| 2017年5月12日 16時 | NHS England が全国の重大な事態と宣言する。18時45分に NHS England が対応を率いると決まる[1] |
| 2017年5月12日 夕方 | 研究者が停止の仕掛けを働かせ、WannaCry は端末を閉ざさなくなる[1] |
| 2017年5月13日 | Microsoft が、支援の切れた Windows XP、Windows 8、Windows Server 2003 にも修正を出す[3][4] |
| 2017年5月14日 | JPCERT/CC が注意喚起を出す。17日の更新で、モバイル回線でインターネットにつないでいた持ち出しの端末の感染を国内の1例として載せる[6]。NHS England と NHS Digital は、身代金を払わないよう全トラストへ書面で伝える[1] |
| 2017年5月19日 17時30分 | NHS England が事態の収束を宣言する[1] |
| 2017年10月27日 | 英国の会計検査院 NAO が調査の報告を出す[1] |
| 2018年2月1日 | 保健医療の CIO による教訓の点検が出る。勧告は22[5] |
NAO によると、攻撃は少なくとも100か国の20万台を超える計算機に及んだ。NHS は狙われた相手ではなかった[1]。
- 数は組織の自己申告と通信の分析によるもので、実際はもっと多い恐れがある[1]。
- 急性期の25のトラストのうち5つは、救急車を他の病院へ回した。5月16日にも2つが回し続けていた[1]。
- 5月19日時点で、感染した診断の機器は1,220台で、NHS の同種の機器の1%。MRI の画像を院内の別の場所へ送れないなどの乱れが出た[1]。
- がんの疑いの急ぎの紹介のうち、少なくとも139件が取り消された[1]。
- 身代金を払ったNHSの組織は無い。患者の情報が盗まれた届け出も無い。混乱にかかった費用は、保健省も把握していない[1]。
通った道筋
| 段 | 何があったか |
|---|---|
| 弱点 | SMBv1 のサーバーが特定の要求を扱う所の誤りで、認証の無い攻撃者が細工した通信を送るだけでコードを動かせる。修正は SMBv1 の扱いを直すもの[2]。US-CERT はこれを EternalBlue と呼ばれるものとして書く[4]。 |
| 広がり方 | 手元の IP の範囲を走査し、UDP の137番と138番、TCP の139番と445番へ接続を試み、445番につながると広げる処理を始める[4]。人がファイルを開く必要は無い。 |
| NHS の中 | インターネットを通じて広がり、NHS の全拠点をつなぐ広域の網 N3 も通った。NHS のメールの仕組みを通じた広がりは無かった[1]。 |
| 停止の仕掛け | 起動のたびに決まったドメインへ接続を試み、つながれば何もせず終わる。研究者がこのドメインを登録して応答させたことで、広がりが大きく減った。US-CERT は、このドメインへの通信を遮らないよう求めた[4]。 |
| 止まった後 | 停止の仕掛けが働いた後に入った端末は、閉ざされなかった。5月15日から9月半ばまでに、ほかに92の組織がこのドメインへ接続しており、うち21はトラストだった[1]。 |
攻撃の当日、US-CERT は最初の入口の候補としてフィッシングを挙げた[4]。保健医療の CIO の点検は、最初の感染はおそらくインターネットに開いた SMB の口からで、当初の見立てのメールではない、と書くが、根拠に挙げるのは報道の記事である[5]。NAO が書くのは、NHS の中ではメールを通じた広がりが無かったことまでである[1]。最初の1台がどう入ったかは、公表資料では決まっていない。どちらでも、広がりを許したのは未適用の SMBv1 だった。
なぜ修正が当たっていなかったか
| 理由 | 公表資料の記述 |
|---|---|
| 当てなかった | NHS の感染した端末の多くは、支援の続く Windows 7 で、修正を当てていなかった。XP の端末は少数だった[1]。影響を受けた80の組織のどれも、警告で勧めた修正を当てていなかった[5]。 |
| 止める時間が無い | 地域の NHS の組織の半分を超える数が、診療を止めることを恐れて、要るときに修正を当てなかったと答えた[5]。 |
| 当てられない | 攻撃の日に、NHS の IT の資産の約5%が、まだ XP だった。MRI のように XP を組み込んだ医療機器は、売り手が管理しており、トラストは自分で更新できない[1]。 |
| 確かめる仕組みが無い | 攻撃の前、保健省と関連の機関は、警告に従ったかを確かめる正式な仕組みを持たなかった。現地での点検を受けた88のトラストは、1つも合格しなかった[1]。 |
| 資産が分からない | 中央は、トラストのウイルス対策や IP アドレスのような資産の情報をほとんど持たず、捜査の機関は全拠点から証拠を集め直した[1]。 |
NAO は CareCERT の警告を3月17日と4月28日と書く[1]。CIO の点検は、4月24日に通信の事業者から脅威の情報を受け、4月25日の CareCERT の通知で修正を勧めたと書く[5]。表と図は NAO による。
対応で詰まった所
- 国全体のサイバーの攻撃を想定した計画は、地域の水準で試されていなかった。誰が率いるかがすぐには決まらず、組織ごとに別々の相手へ届け出た[1]。
- 感染したか用心でメールを止めた組織とは、メールで連絡が取れなかった。職員は私物の端末とメッセージの道具で情報を回した[1]。
- 感染していない46のトラストの乱れは、中央からの指示が早く届かず、自分の判断で機器を止め、網から切り離したことでも起きた[1]。
- NHS England は、感染した組織が北部と中部と東部に集まったのは、停止の仕掛けが働く前の早い時間に襲われたためと見ている[1]。広がりが止まったのは守りの結果ではなかった。
どこで止められたか
| 止める所 | この件で | 限り |
|---|---|---|
| 期限を決めて当てる | 修正は3月14日に出ており、NHS Digital は2度警告した。従ったかを確かめる仕組みは無かった[1][2] | 止められない診療の機械には当てにくい。止める時間を前もって決めておく |
| SMBv1 を止める | MS17-010 は、修正を当てられないときの回避策として SMBv1 の停止を挙げていた[2] | SMBv1 しか話せない古い機器との共有が切れる。先に使っている所を洗い出す |
| 445番を境界で通さない | NAO は、修正の有無に関わらず、外に向いた防火壁の管理で感染を防げたと書く[1]。US-CERT も境界での SMB の遮断を求めた[4] | N3 のような組織をまたぐ広域の網も境界として扱わないと、隣の組織から入る |
| 端末どうしの SMB を絞る | 規模の大きい Windows の網を持つ組織ほど被害が大きく、感染したトラストは職員の多い所に偏った[1] | ファイルの共有の口は残る。共有のサーバーへの道だけを開ける |
| 切り離して置く | XP を組み込んだ医療機器は、網から隔てれば守れた。代わりに手作業が要る[1] | 隔てても、機器の画面を見る端末が感染すれば使えない[5] |
守り方
- 修正の適用を、出たら期限内に当て、当たったことを台帳で確かめる仕事にする。警告を配るだけで終えない。この件で NHS が後から全組織に求めたのも、警告への対応の確認だった[1]。
- SMBv1 を止め、入れておかない。Windows 10 の1709版と Windows Server の1709版から、SMBv1 は既定で入っていない[7]。古い版から上げた端末と、SMBv1 しか話せない機器が残っていないかを見る。
- インターネットと、組織の外とつながる広域の網との境界で、TCP の445番と139番、UDP の137番と138番を通さない[4]。持ち出しの端末のように、境界の外で直にインターネットにつながる端末は、端末の防火壁で同じことをする[6]。
- 支援の切れた OS を、移す期限を決めて無くす。移せない機器は、決まった相手としか話せない区画に置く[1]。
- 端末の台帳を持つ。どの端末がどの版で、どの修正が当たっているかが分からないと、適用も隔離もできない。
SMBv1 の有無を確かめて止める 管理者の PowerShell
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
# 出力
EnableSMB1Protocol : True
State : Enabled
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol # 再起動で外れる
境界の防火壁で SMB と NetBIOS を通さない 架空の拠点 198.51.100.0/24 の nftables
table inet edge {
chain forward {
type filter hook forward priority 0; policy drop;
iifname "wan" tcp dport { 139, 445 } drop
iifname "wan" udp dport { 137, 138 } drop
oifname "wan" tcp dport { 139, 445 } drop # 中から外へも出さない
ct state established,related accept
iifname "lan" ip saddr 198.51.100.0/24 accept
}
}
- 境界の遮断は、修正を待つ間の守りでもあり、修正が漏れた端末の守りでもある。ただし中に入った後の広がりは止めない。網の中の端末どうしの 445番は、共有のサーバーへの道だけに絞る。
- SMB を遮ると、共有のファイルや機器が使えなくなる。US-CERT も、効果と業務の乱れを比べて決めるよう書く[4]。先に、誰が SMB で何に話しているかを記録で見る。
修正を当て続ける考え方と、更新できない部品を仮想の当て布で見張る考え方は A03 ソフトウェアサプライチェーンの不備 の型1にある。記録から警告と対応までが途切れる所は A09 セキュリティログとアラートの不備 で扱う。
参照
- Investigation: WannaCry cyber attack and the NHS National Audit Office、2017年10月27日
- Microsoft Security Bulletin MS17-010 - Critical Microsoft、2017年3月14日
- Customer Guidance for WannaCrypt attacks Microsoft Security Response Center、2017年5月13日の日付
- Indicators Associated With WannaCry Ransomware TA17-132A US-CERT、現 CISA、2017年5月12日、2018年6月7日改訂
- Lessons learned review of the WannaCry Ransomware Cyber Attack Chief Information Officer for Health and Social Care、2018年2月1日
- ランサムウエア "WannaCrypt" に関する注意喚起 JPCERT/CC、2017年5月14日、5月17日更新
- SMBv1 Not Installed by Default in Windows Server and Windows Microsoft Learn