こんなタイミングだけどアドベントカレンダーじゃないです。
先にまとめ
apt install imagemagick
/etc/ImageMagick-6/policy.xml
を編集して PDF を許可(安全性に自信がある場合)$ convert a.pdf a-%03d.png
今回の環境
- Ubuntu 18.04.3 on WSL
インストール
そのまんまのパッケージがあった。
$ apt search imagemagick | grep "^imagemagick/" WARNING: apt does not have a stable CLI interface. Use with caution in scripts. imagemagick/bionic-updates,bionic-security,now 8:6.9.7.4+dfsg-16ubuntu6.8 amd64
のでインストールする。
$ sudo apt install imagemagick $ convert --version Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org Copyright: © 1999-2017 ImageMagick Studio LLC License: http://www.imagemagick.org/script/license.php Features: Cipher DPC Modules OpenMP Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlib
実はダミー
インストールしていない状態で convert
を実行すると出てくる提案は imagemagick-6.q16
だった。前述のパッケージはこいつ(最新版)へのショートカットになっているっぽい。
$ apt show imagemagick … Depends: imagemagick-6.q16 (>= 8:6.9.2.10+dfsg-2~) … This is a dummy package. You can safely purge or remove it.
PDF 変換しようとして “not authorized” エラー
なんか出た。
$ convert a.pdf a.png convert-im6.q16: not authorized `a.pdf' @ error/constitute.c/ReadImage/412. convert-im6.q16: no images defined `a.png' @ error/convert.c/ConvertImageCommand/3258.
セキュリティーポリシーを更新
なにやら Ghostscript の危険性がある、らしい。
Over the last few days we’ve had a couple of issues with Imagick and processing PDFs on our servers. As it turns out, these issues are caused by automatic security updates.
今回は非公開の環境である WSL だし、PDF ファイルも自作で安全なものなので、制限を解除することにする。
$ sudo vi /etc/ImageMagick-6/policy.xml
-<policy domain="coder" rights="none" pattern="PDF" /> +<policy domain="coder" rights="read|write" pattern="PDF" />
脆弱性について
日付も近いのでたぶんこれ。
そのためGhostscriptには、-dSAFERという「キケンなこと」ができないようにするモードがあります。ところが、この-dSAFERを付けていても任意コード実行が可能な穴があった……というのが今回の脆弱性のキモです。
PDF を変換する
例えば 3 桁の連番を付けたい場合はファイル名を %03d
のようにする。(いらないなら付けなければ、自動的に連番は付く。)
$ convert a.pdf a-%03d.png
おわり
とっぴんぱらりのぷう。