最近、MIMEパラメータに埋め込まれたシェルのメタキャラクタの解釈によって 引き起こされるセキュリティ問題の報告がありました。その報告はPineに言及 していましたが、Muttを使うときにもその問題は当てはまります。 もっとはっきり言えば、次のようなmailcapエントリは、問題を引き起こすで しょう: > text/test-mailcap-bug; cat %s; copiousoutput; \ > test=test "`echo %{charset} | tr '[A-Z]' '[a-z]'`" != iso-8859-1 「touch${IFS}ME」という値である charset パラメータを展開したとき、 「ME」という名前のファイルがカレントディレクトリに作られます。 この問題がMUAのせいで生じる問題(下記参照)であるとはまったく認めて いるわけではないですが、このためにいくつかの修正を施しました: - mailcapエントリのために % expandos を準備するとき、バッククオート (backticks)は特別に扱われます。この修正は現状の問題が生じないようにし ます。しかし、この修正によって解決されない他の mailcap エントリがある 可能性は非常に高いでしょう。 - 我々は $mailcap_sanitize という名前の設定変数(default: yes)を加えま した。この設定をすると、Mutt は吟味された安全な文字だけが mailcap % expandos で現れるように制限します。これは安全性の高い設定と思われま すが、より高度なMIME要素を壊す可能性があるかもしれません. >>> 何をしようとしているか分からないのなら、このオプションを解除して >>> はいけません。 いずれにしても、この問題はMUA内で解決するのは難しい(たぶん不可能な)の で、必ずしもMUA内で解決すべきものではありません。さらに、mailcapを解 析するプログラムは Mutt だけではありません。そのため、安全にmailcapを 書くことは一般的に言ってよいことです。そうすることをお勧めします。 最も基本的なルールはこれです: >>> % expandos を shell quote で使用するな 引用符または二重引用符で % expandos をクオートしないでください。 mailcap を解釈する他のどのプログラムもそうすべきであるように、正しい 方法で、Mutt 自身がしかるべくクオートを行います。また、バッククオート (backtick)展開にも入れてはいけません。これは上述のように悲惨な結末を もたらします。eval文に非常に注意してください。そして、できればそれら を *完全に* 避けてください。 あなたがクオートまたはバッククオート(backtick)展開を必要とする状況で %-expandosの値を使わなければならないのであれば、その値をシェル変数に 入れてください。そして、必要なところで(おそらく、"$charset" の様に、 それのまわりに適当にクオートされて置かれている)シェル変数を参照して ください。 例えば、上記の mailcap 文の安全なバージョンは、このようにできます: > text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \ > && test "`echo \"$charset\" | tr '[A-Z]' '[a-z]'`" != iso-8859-1 The original file is mutt-1.4/README.SECURITY. Translated to Japanese by TAKIZAWA Takashi and members of mutt-j ML.