2017年5月初旬に見つかって世界中で猛威をふるっていることがわかっているランサムウェア「WannaCry」には20万人以上が感染していると言われています。ランサムウェアに感染するとPC内のファイルが暗号化されてしまい、戻すために「身代金」を要求してくるのですが、Windows XPで身代金を支払うことなく解除キーの解読に成功したことを研究者が報告しています。

I got to finish the full decryption process, but I confirm that, in this case, the private key can recovered on an XP system #wannacry!! pic.twitter.com/QiB3Q1NYpS— Adrien Guinet (@adriengnt) 2017年5月18日

報告を挙げたのはフランスのセキュリティ企業・QuarkslabのAdrien Guinet‏氏です。WannaCryはファイルをある「鍵」で暗号化していて、復号にはRSA秘密鍵が必要となります。Guinet氏はwcry.exe(WannaCryの実行ファイル)を利用することで鍵の解読に成功、「Wannakey」というツールにしてGitHubで配布しています。

GitHub - aguinet/wannakey: Wannacry in-memory key recovery for WinXP
https://github.com/aguinet/wannakey

Guinet氏によると、WindowsのCryptographic API(Crypto API)で、関数「CryptDestroyKey」は鍵の破棄を、関数「CryptReleaseContext」はリソースの解放を、それぞれ行うのですが、関連するメモリの解放前に値が残っていたことが解読にきっかけになったとのこと。これは「ランサムウェアの作者がミスを犯した」ということではなく、「Crypto APIを使ったから」だそうです。

試したところ、Windows 10では「CryptReleaseContext」でメモリの解放まで行われるためにWannakeyは使えないのですが、Windows XPであればCryptReleaseContextではメモリ解放は行われないので利用することができたとのこと。ただし、感染後にPCを再起動した場合はメモリが解放されているので、やはりWannakeyを使うことはできません。

なお、「WannaCry」はランサムウェアであると同時に、活発なワーム活動も行っていることがわかっています。専門家によれば、「Windows XPとWindows Server 2003はワーム活動では感染しない」ものの、ランサムウェアとしては動作するため、手動でコピーして実行することは可能だそうです。
@paulpols @adriengnt @GossiTheDog The worm doesn't infect WinXP - but the ransomware works on WinXP just fine. Yes, you'd have to manually copy and run it there.— Vess (@VessOnSecurity) 2017年5月18日

現在のところ「WannaCry」を止める手としては、動作コードに含まれる「登録されていないドメイン名」がキルスイッチとなっているので、このドメインを実際に登録することでシャットダウンすることが可能であることがわかっており、有志がこのドメインを登録してランサムウェアの拡大をストップ。日本のISPであるインターリンクでも1つの未登録ドメインを登録して、この動きに一役買ったことが報告されています。

インターリンクは世界規模で被害拡大のランサムウェアから世界を救ったのか?! | 株式会社インターリンク 社長ブログ

今回のGuinet‏氏の発見は対象がWindows XPに限られているので、他のOSの感染者についてはまだ暗号化を解除する術は「身代金を支払う」しかない状態ですが、調査・研究が進めば他にも鍵を見つける方法があるかもしれないという希望の光となっています。

Photo by AwesomeSA