PDFセキュリティの裏側:インタラクティブ文書に潜む隠れたリスクと対策ツール
PDFセキュリティ――知られざるもう一面
更新日:2010年2月15日
PDFセキュリティは、一見すると地味でマニアックなテーマに思えるかもしれません。そして実際、その通りです。大多数のコンピュータユーザーにとって、PDF文書は単なる情報伝達の媒体にすぎません。しかし残念ながら、その実態はそう単純なものではなくなりつつあります。
PDFは進化を重ね、スクリプトなどを内蔵したインタラクティブなアプレットへと変貌を遂げました。これらの機能はユーザー体験を大きく向上させる一方、悪用されれば深刻な問題を引き起こしかねません。さらに、標的となりやすく悪用されることも多い人気のPDFソフトウェアと組み合わさることで、「PDFファイルを開く」という日常的な行為自体がセキュリティ問題になり得るのです。

前回の記事では、PDFの脆弱性とその緩和策について解説しました。正直なところ、少しの心がけさえあれば、トラブルは簡単に回避できます。OSを権限を絞った状態で運用し、代替ソフトウェアを使用し、信頼できる情報源からのみファイルを入手すれば、まず問題ありません。パニックになる必要は本当にないのです。では、なぜ前回に続けてこの記事を書くのか?
それは、今回はPDFセキュリティをまったく別の角度から見ていくためです。前回紹介した方法は、いわばデフォルト拒否(default-deny)に基づく汎用的な防御策であり、常に有効である一方、手元のファイルそのものについては何も教えてくれません。言い換えれば、「悪意のある」ファイルを扱っていても、本人はそれに気づかない可能性があるのです。
システムへの直接的なリスクがないとしても、ソーシャルエンジニアリングの脅威は消えません。適切に設定されたシステムを使っていれば、自分がどんなファイルを開こうと気にする必要はないでしょう。しかし、疑わしいファイルを無知な友人や同僚に転送してしまったらどうでしょうか? 例えば、Linuxユーザーは自分のシステム上で開くファイルをあまり気にしなくて済みますが、そのファイルをWindowsユーザーの友人に送れば、後々気まずい思いをするかもしれません。
最良の解決策は「友達を作らないこと」――そうすれば誰にも悪いものを送らずに済みます。冗談はさておき、現実には友人を持つのが普通ですので、ここからはより分析的なアプローチでPDFソフトウェアについて考えていきます。本記事の内容は、前回の記事の教訓を置き換えるものではなく、それをうまく補完するものです。それでは始めましょう。
健全な利用習慣とは
以前の記事「安全なウェブ利用の習慣」では、ダウンロードしたファイルを実行する前にその安全性を大まかに判断するための手法をいくつか紹介しました。具体的には、オンラインのマルチスキャナーの活用、フォーラムでの質問、そしてGoogleでの検索などです。これは決して完璧な方法ではありませんが、場合によっては唯一の選択肢となることもあります。人は、実行したいと思ったファイルを結局実行してしまうものです。だからこそ、せめて実行前に手軽なチェックだけでもするよう説得するのが精一杯なのです。
あらゆる種類のスキャンにおける最大の問題点は、ファイルを「悪」と判定することはできても、「善」と判定することは決してできない、という点です。多くの人はこれを理解せず、アンチウイルスをすべてを解決する万能薬のように崇めています。ここで強調したいのは、アンチウイルスがファイルを「悪」と検出したなら、それはまだ比較的ましな状態だということです。「疑わしいときは、疑わしい」のです。しかし、ソフトウェアがファイルを「クリーン」と判定したらどうでしょう? 本当に安全なのでしょうか? いいえ。それは単に「悪とフラグが立たなかった」ことを意味するだけです。それ以上の何物でもありません。
だからこそ、ホワイトリスト方式(デフォルト拒否)こそが、あらゆる種類の脅威に対処する最善の方法なのです。少数の信頼できる例外を除き、すべてを敵として扱い、慎重に選りすぐったものだけを信頼の輪へ入れていくのです。
前回のPDF脆弱性に関する記事は、まさにホワイトリスト方式についての話でした。ただしホワイトリスト方式には弱点があります。それは、問題が存在しようがしまいが、単純に気づかないという点です。他人を悩ませるかもしれない災難を知らないまま、幸せに過ごすことになります。
そこで登場するのがブラックリスト方式です。ブラックリスト(デフォルト許可とも呼ばれます)は、悪性のデータベースを長期にわたり保持し、定期的に更新していく手法です。アンチウイルススキャナーなどのツールは、このデータベースを利用して悪意あるコードの特定を試みます。実行可能コードに対してシグネチャ(検出パターン)照合を行い、結果をユーザーに報告します。この手法はどん・キホーテ的な空想色が強いのですが、それでも業界の標準となり、人々は「それが標準である限り」何にでも従ってしまうのです。
比喩的に言えば、ブラックリストは法執行機関のようなもので、「罪が証明されるまで無罪」が基本です。一方、ホワイトリストはジョージ・オーウェルの『1984年』に描かれた監視社会に近い考え方です。このテーマについては哲学的な考察記事もありますので、興味があればぜひ読んでみてください。
ソフトウェアの世界ではホワイトリスト方式が優位に立っていますし、社会においてもそう悪くない考え方かもしれません。ブラックリスト方式単体はあまり効果的とは言えません。しかし、両者を組み合わせると、かなり興味深い結果が得られます。ホワイトリストという氷のようなケーキに、ブラックリストというチェリーをトッピングすれば、非常に有用な公式が生まれるのです。
ホワイトリストはあなた自身を守り、ブラックリストは友人を守ります。自分のマシンを良好な状態に保ちつつ、他の人にゴミを送り出さないことで、スパムやマルウェアの拡散サイクルを断ち切ることができます。まるで他人のために新型インフルエンザのワクチンを自ら試すスーパーマンのようですね。
PDFの脆弱性
このテーマについては以前詳しく取り上げました。最も一般的な攻撃ベクトルと、その非常にシンプルな対策方法――第一に注意と忍耐を惜しまないこと――についてまとめた専用記事を、ぜひ一度目を通してみてください。

さて、技術的に踏み込んでブラックリスト方式を採用したい人のために、役立つツール群を紹介します。
PDFスキャナーとは?
実際のところ、PDFファイル専門の解析ツールを知っている人はほとんどいません。従来型のアンチウイルス系スキャナーが宣伝文句を謳っているので、そこに期待するのも一つの手ですが、PDFに特化したツールはごくわずかしか存在しません。
これまでPDFファイルは攻撃対象としてあまり注目されてきませんでした。しかし、強力なスクリプト機能とFlashがPDFと組み合わさったことで、悪用されやすい隙間が生まれました。さらに厄介なことに、最も普及しているPDFソフトウェアとFlashソフトウェアは、同じベンダーであるAdobe製です。片方に問題が起きれば、もう片方にも問題が波及する可能性が高いのです。
PDFの脅威への対策は、多くの用心深いWindowsユーザーにパニックをもたらしながら、有効な解決策はほとんど提示されませんでした。制限付きアカウントの使用と代替ソフトウェアの導入で問題は解決するのですが、これほどシンプルな概念を実際に試そうとする人は少ないのが実情です。
近年、PDFセキュリティツールが数多く登場し、Windowsユーザーに悪性ファイルを見分ける手段を提供するようになりました。繰り返しますが、基本はホワイトリスト方式です。それを踏まえた上で、以下のツールを見ていきましょう。
Wepawet
ホームページ
Wepawetは、ウェブ経由のマルウェアを分析するオンラインサービスです。Flash、JavaScript、PDFファイルに対応しており、ファイルをアップロードするかURLを指定するだけで利用できます。非常にシンプルです。

サンプルレポートはこのような感じです:


決して完璧なツールではありませんが、ファイルの中身がどうなっているかを判断する一つの指標にはなります。忘れないでください。「疑わしいときは、疑わしい」のです。
PDFiD
ホームページ(解説記事)
このツールは、PDFファイル内部のJavaScriptを無効化します。仕組みは、関数名の大文字と小文字を入れ替えて書き換えるというもの。PDFの言語仕様は大文字小文字を区別するため、これによってスクリプトは意味を失い実行不能になります。ただし、リーダーソフトウェアが本文を正しく表示することは妨げられません。リーダーは無効になった命令を単に無視して先へ進むだけです。
なお、PDFiDはコマンドライン用のPythonスクリプトなので、Pythonのインストールとコマンドラインからの実行が必要です。派手なGUIはありません。Wepawetと同様、まだ若いツールで不具合もあるかもしれませんが、目的の作業はきちんとこなしてくれます。
コマンドは次の通りです:
PDFiD -d <filename>.pdf
このコマンドを実行すると、PDFファイルが「武装解除(disarm)」され、JavaScriptが除去された <filename>.disarmed.pdf というコピーが作成されます。あとは新しいファイルを試して、その挙動を確認すればよいのです。

私の認識が正しければ(間違っていたら申し訳ありません)、PDFiDはVirusTotalのスキャナーリストに含まれています。つまり、不審なファイルをオンラインスキャンにかければ、PDFiDを含む20以上のツールがアップロードされたコンテンツの整合性を検証してくれるわけです。
おまけ
今日のところは概ね以上です。超マニア(スーパージオーク)向けに、さらなる読み物を紹介しておきます:「このPDFは悪意のあるものか?」というテーマの技術解説記事です。
まとめ
この記事を読んだからといって、PDF特殊部隊のエキスパートになれるわけではありません。しかし、望ましくない可能性のあるファイルを見分けるための基本的な道具は手に入ります。紹介したツールは完璧から程遠く、大量処理向けのものでもありませんが、そもそもこの記事を読んでいる時点で、あなたは平均的なコンピュータユーザーではないはずです。
何度でも言います。ファイルが気に入らないなら、実行しなければいいのです。さらに、指がむずむずしてうっかりクリックしてしまうタイプの人は、代替アプリケーションの使用と最小権限の原則を徹底してください。そうすれば、仮に悪意あるファイルを実行してしまっても、被害の範囲は格段に小さく抑えられます。
どうしても送らなければならないファイルを、コンピュータの使い方が雑な友人に送るときには、WepawetとPDFiDの活用をおすすめします。長い目で見れば劇的な違いは生まれないかもしれませんが、少なくとも最善を尽くしたことにはなるでしょう。
基本はホワイトリストを貫き、不審なファイルを扱うときだけブラックリストを使う。この記事が気に入ったなら嬉しく思います。賢明な追加情報があるなら、遠慮なくメールでご連絡ください。それでは、またお会いしましょう。
それでは、良い一日を。
-
Microsoft Formsでテキストを書式設定する方法|太字・色・サイズ変更の手順を解説
Microsoft Formsでは、標準搭載されている書式設定機能を使うことで、テキストに太字、斜体、下線、文字色、フォントサイズ、番号付きリスト、箇条書きなどを簡単に追加できます。これらの機能を活用すれば、アンケートやフォームのテキストを見やすく、読みやすく整えることが可能です。 Microsoft Formsでテキストを太字にすることはできる? はい、Microsoft Formsでもテキストを太字にすることができ、操作も非常に簡単です。Microsoftは、太字・斜体・下線・文字色・フォントサイズ・番号・箇条書きなど、フォーム内のテキストを装飾するためのツールを提供しています。この記事で
-
Windows 11/10でMicrosoft Whiteboardが動作しないときの対処法
多くのユーザーから、Office 365の職場アカウントでWhiteboardアプリにアクセスしようとした際に、Microsoft Whiteboardアプリが動作しなくなったという報告が寄せられています。これまで問題なく使えていたのに突然動かなくなったケースや、サインイン自体ができないというケースもあります。この記事では、この問題を解決するためのトラブルシューティング方法をわかりやすくご紹介します。 Windows 11/10でMicrosoft Whiteboardが動作しない 一部のユーザーによると、アプリにサインインしようとすると、実際にはインターネットに接続しているにもかかわらず「