安全なPDF

PDFというものがあります。
Portable Document Formatです。
製品マニュアルが提供されるときなどによく選択されるドキュメント形式です。
このドキュメント形式は、著作物の配布と閲覧に主眼が置かれたものだと思います。
そのため、多くの人にとってはPDFは編集するものという認識はないかもしれませんが、実際にはPDF文書は編集することが可能です。

そんなPDFですが、文書の取り扱いにおいて便利な機能が搭載されています。

  • 承認署名
    PDFに署名できます。署名後に変更されると署名が無効になるため、有効な署名があることでその文書が署名以降に変更されていないことが確認できる機能として利用できます。
    公式文書などに利用できます。
  • 認証署名
    あらかじめ変更可能な事項を制限した形でPDFに署名できます。署名後に想定された部分だけ署名済みの署名を無効にすることなく変更できます。
    二者の署名として利用することができるので、契約書などに利用できます。
    公開鍵の管理をどうするのかなどの課題はありますが、これらの機能は便利なものです。

これらの機能の安全性を脅かす2つの攻撃手法が確認されています。

  • Evil Annotation Attack (EAA):悪の注釈攻撃
  • Sneaky Signature Attack (SSA):卑劣な署名攻撃

どちらの攻撃も署名済みの文面の上に無許可の文面を表示することができてしまうようにするものです。
本来は改ざんされると無効となってしまう署名が保たれたまま見た目を変更することができます。

PDFの仕様は公開されているため、多くのPDF閲覧用ソフトが存在します。
これら2つの攻撃を受け付けない動きをできるPDF閲覧用ソフトもありますが、どちらも成り立ってしまうものもあります。

これらの攻撃は、PDFのフォーマットの仕様の中にJavaScriptのコードを実行できる機能があることで成り立ちます。
オフィス文書のマクロ機能を悪用した攻撃と、発想は同じです。

便利な機能は危険と表裏一体、ということでしょうか。
何事も過信することなく、落ち着いて向き合う必要がありそうです。

参考記事(外部リンク):Falsifying and weaponizing certified PDFs
blog.malwarebytes.com/exploits-and-vulnerabilities/2021/05/falsifying-and-weaponizing-certified-pdfs/