Hatena::ブログ(Diary)

マクロツイーター このページをアンテナに追加 RSSフィード Twitter

2016-12-06

【重要】TeXシステムの脆弱性の件

TeX システムの「外部コマンド実行設定」に関するセキュリティホールが報告されている。

既に W32TeXTeX Live(本家)の側での対策は行われている。ユーザが「TeX システムをアップデートする」などの対策をとる必要がある。

内容

  • TeX 処理系にはもともと「外部のソフトウェア(コマンド)」を実行する機能があるが、安全のため、既定では実行できる外部のコマンドを特定のもの(kpsewhich 等)に制限している(restircted shell)。
  • しかしこの脆弱性のためその制限が実質的に無効になる。
  • つまり攻撃者が任意の外部コマンドを(ユーザの権限で)実行できるようになる。

影響範囲

以下の事項の全てを満たす場合に影響を受ける。

  • 2010 年頃以降にインストールされた TeX 配布。
    (※恐らくそのほとんど全てが該当する。)
  • restircted shell の状態で使用している、またはその可能性がある。
    (※それが既定なので、ほとんどの人が該当する。)
  • restircted shell で実行できる外部コマンドの中に MetaPost のコマンド(mpost、jmpost、pmpost、upmpost)が含まれている。(★)

以下の事項は関係しない。

  • エンジン(TeXpTeX、LuaTeX、…)の種類。
  • フォーマット(plain TeXLaTeX、…)の種類。
  • TeX 配布の新しさ。
    • たとえ(この記事から見て)未来のもの(例えば“2017 年の最新版”)でも影響を受ける(先述の項目を満たす)場合がある。

検査方法

(★)の項目に該当するかを調べる方法。

  • コマンドシェルで以下のコマンドを実行する。
    kpsewhich -var-value=shell_escape_commands
    
  • 次のようなコマンド名のリストが表示されるはずである。
    (※何も表示されないならば(★)には該当しない。)
    bibtex,bibtex8,extractbb,kpsewhich,makeindex,mpost,repstopdf</li>
    
  • リストの中に mpost、jmpost、pmpost、upmpost のいずれか が存在すれば(★)に該当する。
    • rmpost、rpmpost のように r で始まる名前のものは関係しない。

対処方法

  • 可能であれば TeX 配布を最新版にアップデートする。
    (※最新版では(★)に該当しない状態の修正されている。しかしカスタムの設定がなされている場合は修正が反映されない可能性がある。)
  • アップデートした場合、再度上記の検査を行う。
  • (★)に該当しない状態になっていればOK。
  • まだ(★)に該当する場合、「MetaPost のコマンドを、実行できるコマンドのリストから外す」処置を行う。
    • TeX Live本家など、tlmgrコマンドが利用できる場合は、以下のコマンドを実行する。
      tlmgr conf texmf shell_escape_commands 「リスト」
      
      ここで「リスト」の部分は、検査の際に kpsewhich コマンドにより表示されたコマンドのリストのうち、mpost、jmpost、pmpost、upmpost を除外したものを指定する。
      (※例えば検査の箇所で示した例の場合は「リスト」は bibtex,bibtex8,extractbb,kpsewhich,makeindex,repstopdf である。)
    • tlmgr コマンドが利用できない場合は、

補足

  • 今回の件は“攻撃者が構成したMetaPostのコマンド行”が原因となっている。自分でMetaPostのコマンドを実行する分には何の問題もない。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/zrbabbler/20161206/1481039449