Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

Security decompression

Security decompressionとは、PDF文書内の圧縮されたデータストリームを、悪意のあるコンテンツや不正な形式のコンテンツに関連するセキュリティリスクを軽減しながら安全に展開するプロセスを指します。

カテゴリ: General PDF Concepts
キーワード: security decompression, Security decompression

概要

Security decompressionとは、PDF文書内の圧縮されたデータストリームを、悪意のあるコンテンツや不正な形式のコンテンツに関連するセキュリティリスクを軽減しながら安全に展開するプロセスを指します。PDFファイルは、ファイルサイズを削減するためにFlate(ZIP)やLZWなどの圧縮アルゴリズムを広範に使用していますが、展開プロセスは圧縮爆弾(compression bomb)、バッファオーバーフロー、リソース枯渇攻撃などによって悪用される可能性があります ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) 。PDFファイルを処理するシステムを潜在的な脆弱性から保護するために、適切なsecurity decompressionの実装が不可欠です。

定義

Security decompressionは、PDF文書内のエンコードされたデータストリームの展開中に、検証、リソース制限、エラー処理を適用する防御的プログラミング手法です。圧縮データを元の形式に復元することのみに焦点を当てた標準的な展開とは異なり、security decompressionには、展開後のサイズ制限、展開率の閾値、メモリ割り当て制御、タイムアウト機構などの安全対策が組み込まれています。この概念は、信頼できないPDFファイルを処理する際に特に重要です。なぜなら、PDF文書にはページコンテンツ、画像、フォント、メタデータなど、複数の圧縮されたストリームが含まれている可能性があるためです。PDF仕様 ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) では、さまざまな圧縮フィルタ(FlateDecodeLZWDecodeDCTDecodeなど)が定義されており、それぞれ実装時に特有のセキュリティ上の考慮事項が必要となります。

重要性

PDF処理アプリケーションを構築する開発者にとって、security decompressionはサービス拒否攻撃やシステム侵害を防ぐために極めて重要です。悪意を持って作成されたPDFには、数ギガバイトのデータに展開される小さな圧縮ストリーム(「zip bomb」)が含まれている可能性があり、アプリケーションをクラッシュさせたり、システムリソースを枯渇させたりする恐れがあります。適切なsecurity decompressionの制御がなければ、攻撃者は脆弱性を悪用して任意のコードを実行したり、機密情報を漏洩させたり、システムを応答不能にしたりすることができます。これは、ユーザーがアップロードしたPDFを処理するWebアプリケーション、ドキュメント管理システム、信頼できないコンテンツが一般的な自動PDF処理ワークフローにおいて特に重要です。Security decompressionを実装することで、一見無害に見えるPDFファイルに隠された高度な攻撃から、アプリケーションインフラストラクチャとエンドユーザーの両方を保護できます。

仕組み

Security decompressionは通常、展開ワークフロー全体を通じて複数層の保護を実装します。展開が開始される前に、システムは圧縮ストリームの宣言されたサイズをチェックし、設定された最大閾値と比較します。展開中、プロセスは展開率を監視します。小さな圧縮ストリームが不合理に大きなサイズに展開され始めた場合、展開は即座に停止されます。メモリ割り当ては、ヒープ枯渇を防ぐために制御され、展開されたコンテンツに基づく動的割り当てではなく、制限されたサイズの事前割り当てバッファが使用されます。タイムアウト機構により、展開操作が無期限に実行されることを防ぎ、アルゴリズム複雑性攻撃から保護します。さらに、安全な実装では、PDFストリーム辞書で宣言されたパラメータと照らし合わせて展開されたデータの整合性を検証し、実際の展開後の長さがPDF構造で定義された期待値と一致することを確認します ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) 。エラー処理により、展開の失敗がシステム内部を露出させたり、悪用可能な状態を作り出したりすることなく、安全に失敗することが保証されます。

関連用語

  • Stream objects – 安全な展開が必要な圧縮データを含む基本的なPDF構造
  • Filters – PDFストリームに適用される圧縮およびエンコード方式(FlateDecode、LZWDecodeなど)で、展開時に逆処理が必要
  • Content streams – 圧縮が施され、セキュリティを意識した展開が必要なページ記述コンテンツやその他のデータ
  • PDF parsing – security decompressionを重要な要素として含む、PDF構造を解析する広範なプロセス
  • Buffer overflow protection – メモリ破損の脆弱性を防ぐために展開セキュリティと重複するセキュリティ対策

出典

(N.A.) (2020)
(N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html