
Ghostscript PDF バージョン 10.05.0 以前における引数サニタイゼーションの欠如によるパスワード漏洩
Artifex Ghostscript バージョン 10.05.1 より前の脆弱性により、PDFファイルを保護するために使用される平文のパスワードが出力に埋め込まれます。この問題は、特に # 文字を処理する際の gs_lib_ctx_stash_sanitized_arg (base/gslibctx.c) における引数のサニタイズ不足が原因です。
-sUserPassword や -sOwnerPassword などのコマンドライン引数を使用してパスワード保護されたPDFを生成する際、パスワードを含む呼び出し全体が生成されたPDFの先頭に平文で保存されます。ファイルにアクセスできる人は、type(Windows)や cat(Linux/macOS)のような簡単なツールを使ってパスワードを取得できます。
Ghostscript バージョン 10.05.0 以前をインストールする
https://github.com/ArtifexSoftware/ghostpdl-downloads
次のようなコマンドを使用してパスワード保護されたPDFを生成する:
gswin64.exe -dDisplayFormat=198788 -dDisplayResolution=96 -dCompatibilityLevel#1.4 -sUserPassword#123456789 -sOwnerPassword#123456789 -q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutputFile#C:\Users\Admin\Downloads\test.pdf
生成されたPDFを検査する:
type C:\Users\Admin\Downloads\test.pdf
平文のパスワードを含む完全なコマンドライン文字列がファイルの先頭に埋め込まれていることが確認できます。