OpenPGPとS/MIMEに脆弱性、適切な実装をしていないクライアントが原因
2018年5月17日 21:04
headless曰く、 OpenPGPとS/MIMEで、復号したテキストを攻撃者が取得可能な脆弱性が発見されたとして、使用を一時中止するよう呼びかけられている。脆弱性は「EFAIL」と名付けられ、特設サイトで情報が公開された(EFFの記事[1]、[2]、Ars Technica、論文PDF)。
EFAILでは、攻撃者が中間者攻撃などにより取得した暗号化電子メールを用い、この暗号文を含むHTMLメールを元の送信者または受信者に送り付ける。このHTMLメールは暗号文がimgタグのsrcの一部(http://攻撃者のサーバー/暗号文)となるように細工されており、メッセージを読むと復号されたテキストが攻撃者のサーバーに送られるという仕組みだ。
S/MIMEが暗号化に使用するCBCモードとOpenPGPが暗号化に使用するCFBモードでは暗号鍵を知らなくても暗号ブロックの順番入れ替えや削除、挿入が可能であり、これによりメッセージを細工する。Mozilla ThunderbirdとApple Mail、iOS Mailではこういった細工は不要で、3パートの電子メールメッセージで2番目のパートに暗号文を配置し、最初と最後のパートに分割して配置したimgタグで挟むだけで平文が取得できたそうだ。
CBC/CFBモードで改変が可能になるのはS/MIMEとOpenPGPの仕様上の問題であり、正しく実装しているクライアントはすべて脆弱性があると特設サイトでは説明している。これに対しGnuPGのFAQページを管理するRobert J. Hansen氏は、暗号文を改変可能な問題の対策として、GnuPGでは18年近く前から改変が検出された場合やMDC(改変検出コード)がない場合に警告を出していると述べ、警告を無視するクライアントの問題だと反論。脆弱性なしとされたProtonMailもこれに同調している。なお、テストされたOpenPGPをサポートするクライアント28本のうち、攻撃が成功したのは10本にとどまる。
なお、この脆弱性は公表予定とされた日の前日に各所からリークが発生し、その結果予定日よりも早く公表されることになっていたという。