こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。
06/08/2018にGnuPGの脆弱性情報(CVE-2018-12020)が公開されています。今回はこの脆弱性の概要と、各ディストリビューションの対応について簡単にまとめてみます。
Priority
Important
影響範囲
全てのプラットフォーム上での全てのバージョンのGnuPG
修正方法
GnuPG 2.2.8で修正されています。詳しくは、各ディストリビューションの情報を確認してください。
CVE概要(詳細はCVEのサイトをご確認ください)
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-12020
ファイル名のサニタイズミスによるターミナル制御インジェクション、又は検証ステータスの偽造
重要度 – Important
OpenPGPプロトコルではオリジナルのファイル名を署名や暗号化されたメッセージに含めることが可能です。復号化と検証を行う際に、GPGツールではファイル名を表示することが出来ます。しかしファイル名を表示する際にサニタイズを行っていなかったため、ファイル名に改行やコントロールキャラクタを含めることが出来ます。これを用いて、ターミナル制御時にインジェクションを行ったり、ステータスメッセージを偽ることが出来ます。これらのステータスメッセージはプログラムによってパースされるため、gpgと組み合わせて使用されている他のメールリーダ等のプログラムにもステータスを偽ることが出来ます。
回避策その他
- もしアプリケーションがGPGMEを用いてるときは、そのアプリケーションは安全です。幸いなことに、殆どの(GpgOL, KMail等の)最新のメールリーダはGPGMEを使用しています。
Muttを用いてる場合には、”set crypt_use_gpgme”を使うようにしてください。
GnuPGのステータスを出力しているバアは”–status-fd”を用いてファイルディスクリプタを専用のものにしている場合には安全です。専用のファイルディスクリプタはログ出力と共有されていないからです。ログ出力のデフォルトはstderr(2)となっていますが、”–logger-fd”オプションを用いれば違う値に変えられます。
GnuPGで”–verbose”を用いない場合にも安全です。ただし、”–verbose”は設定ファイルに含まれているかもしれませんので確認をしてください。最新のバージョンに上げるまでは、”–no-verbose”をオプションに付けることで暫定的な回避策とすることが出来ます。
その他の暫定的な回避策としては、ログ出力を他のファイルにリダイレクトすることです。例えば、”–log-file /dev/null”等です。
簡単なテストで、使用しているGnuPGに問題があるかが判定できます。
GnuPGに問題があるかの簡単なテスト(一次情報源に載っているものと同じで、手順をわかりやすくしてます)
パスワードを聞かれると思いますが、パスワードは”abc”です。一次情報源には載ってないので注意です。
下記をコピペしてファイル(/tmp/abc等)として保存します。
-----BEGIN PGP MESSAGE----- jA0EBwMC1pW2pqoYvbXl0p4Bo5z/v7PXy7T1BY/KQxWaE9uTBRbf4no64/+5YYzX +BVNqP+82aBFYXEsD9x1vGuYwofQ4m/q/WcQDEPXhRyzU+4yiT3EOuG7sTTaQR3b 8xAn2Qtpyq5tO7k9CN6dasaXKSduXVmFUqzgU+W9WaTLOKNDFw6FYV3lnOoPtFcX rzhh2opkX9Oh/5DUkZ6YmUIX3j/A0z+59/qNO1i2hQ== =zswl -----END PGP MESSAGE-----
先程保存したファイルをパースして、下記のようにコマンドに食わせます。
パスワードを聞かれると思いますが、パスワードは”abc“です。
$ cat /tmp/abc|gpg --no-options -vd 2>&1 | grep '^\[GNUPG:] INJECTED'
脆弱性がある場合、以下のような出力になります。
[GNUPG:] INJECTED status line'
主なディストリビューションの対応方法
詳細は、各ディストリビューションの提供元にご確認ください
対処方法
各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat Satelliteを使うと管理が便利でしょう。
Red Hat Satelliteを用いた一般的なErattaの適用は、『Red Hat Satellite 6でerrataを適用してみる』を 参考にして下さい。
また、OSの再起動が発生しますので、pacemakerなどOSSのクラスタ製品やLifeKeeperなどの商用のクラスタリング製品を使うとサービス断の時間を最小限にすることが出来ます。
[参考]
[Announce] [security fix] GnuPG 2.2.8 released (CVE-2018-12020)
セキュリティ系連載案内
OSSセキュリティ技術の会による日経Linuxでの連載「IoT時代の最新SELinux入門」がITPro上で読めるようになりました。技術の会代表で第一人者である中村さん等による、最新のSELinuxの情報やコマンド類等も更新されているのでお薦めです。
OSSセキュリティ技術の会によるThinkITでの連載「開発者のためのセキュリティ実践講座」がThinkIT上で開始しました。技術の会の中の人間で、最新の代表的なOSSセキュリティ技術を紹介していきます。
OSSセキュリティ技術の会により、ThinkITでLinuxSecuritySummit 2017のレポートが紹介されています。
OSSセキュリティ技術の会の面により、@ITで「OSS脆弱性ウォッチ」が連載されています。