web-dev-qa-db-ja.com

PDFの `/ Filespec`タイプはリモートファイルアクセスを許可しますか?

私は the PDF 1.7 spec 7.11.1 を読みました(そうです、すべての仕様ではなく、その一部です)。アドビが呼ぶもの/Filespecタイプオブジェクト。

私が知る限り、これは、PDFを開くときに、PDFがローカルファイル(またはURIスキームを使用したリモートファイル)への参照を作成できることを意味します。これはかなりきちんとしているでしょう。私が担当している一部のサーバーを攻撃する方法。そのようなサーバーはユーザーがアップロードしたPDFを受け入れ、wkhtml/tcpdf/jasperで開き、そのPDFに変更を加えてから、これを再送信しますPDFつまり、ユーザーがアップロードしたPDFに、/dev/random、そしてその参照がPDFのページコンテンツとして使用されている場合、任意のサーバーのファイルコンテンツを読み取る違反が発生しますか?

テストしたいのですが、PDFエクスプロイト:PDFを開くと、ラボで偽造しました(つまり:サーバー、基本的なPDFリーダー)の場合、コンテンツは表示されません(およびPDFは壊れていると見なされます)。

それで、あなたはそのようなPDFが作業ファイル参照である例を持っていますか?PDFプロセッサがそれに脆弱であるかどうかをテストできます)?またはこれらの/Filespecを使用して任意のファイルのコンテンツを読み取ることはできません(PDFプロセッサ)をテストする必要はありませんか?)

5
Xenos

あなたが疑うことの実現可能性についてはわかりません。 pdfファイルを処理できるライブラリは、そのようなFilespecエントリを処理してその処理を実行する必要がない場合があります(たとえば、Filespec-埋め込みファイルでない場合-は、レンダリング時にのみ使用されるフォントを参照できます)。そして、どのライブラリでも、そのような機能を明示的に有効にしないと外部ファイルの読み取りが有効にならないのではないかと思います。

ただし、疑わしい場合は、これらが非常に簡単な形式を扱う複雑なプログラムであることを考えると、予防原則を適用して、それらをsandbox/chroot/firejail/dockerコンテナで処理するので、PDFを処理するプログラムが任意のファイルを開くように指示されていても実際には機密ファイルを開くことはできず、サンドボックス内に含まれている標準ファイルのみを開くことができます。

1
Ángel