PDFは標準化された電子文書フォーマット形式であり、読み込みにも互換性が保ちやすく、ペーパーレス化に適しています。さらに、契約書をデジタル化して「電子契約」に置き換えるという動きも広がってきました。これによりコスト削減、契約処理の迅速化も図ることができるようになり、PDFへの電子署名も標準化されてきました。また近年、EUを中心として電子署名に関する法律が整備され、より重要性も増しています。
こうしてPDFの重要性が増す一方、The Chair of Network and Data Security (NDS)の調査により3点のPDF署名検証に関する問題が見つかりました。技術的詳細はここでは割愛しますが、どういった脆弱性かを簡単に説明していきたいと思います。
PDFに電子署名をおこなう仕組み
今回の脆弱性については、PDFに電子署名を入れる仕組みについて知っておく必要があります。
電子署名はPDF文書に入れ込むことができ、この時にどこの部分が電子署名の対象なのかを指し示すByteRangeというエレメントを利用します。ByteRangeにより、署名対象部分の前半部分と後半部分を判別します。また、電子署名部分にはその他実際の署名情報などがContentsとして入ります。
発見された3つの脆弱性
今回、下記の3種類の脆弱性が報告されました。
1.Universal Signature Forgery (USF)
USFは、PDFビューアでPDFファイルを開くと、通常、署名情報を確認できますが、署名検証に必要なすべてのデータを見られないよう情報を改ざんされることです。例えば、攻撃者はSignatureオブジェクト内のContentsまたはByteRangeの値を操作することができます。
このUSFを利用すると、署名検証の不足情報としてエラーで扱われるところが、含まれている電子署名が有効として示されてしまいます。つまり表面上はPDF文章が改ざんされているにも関わらず、有効な電子署名がされているPDFであるかのように表示されてしまう可能性があるのです。
本事象は、最近のAdobe Acrobatでも起こり得ます。そのため、きちんと電子署名がなされている契約書や請求書などが改ざんされても、気づけない恐れがあります。
How to break PDF Signaturesでは請求書の金額が改ざんされた場合の例が記載されています。
2.Incremental Saving Attack (ISA)
PDFの仕様として、既存のPDFデータの後ろに情報を付け足すことができます。元のPDFに電子署名がされている場合、その部分においては有効でも、追加した文章は対象外となるため、「追加」されている旨をPDFビューアにて表示する必要があります。しかし、いくつかのPDFビューアでは、その対応がされておらず、文章が追加されていても通知がないため、利用者は予め電子署名が全体になされているものだと誤認識してしまう可能性があります。
3.Signature Wrapping Attack (SWA)
SWAは、電子署名がある部分を改ざんし、悪意あるオブジェクトを追加する行為です。元からある後半部分の署名対象データを後ろにずらし、ByteRangeで指定している後半部分の場所も同様に合わせこみます。ずらして開いた部分に悪意あるオブジェクトを入れ込み、後半部分をPDF仕様に合わせるようにうまくラッピングします。このSWAを利用すると、悪意あるオブジェクトがPDFビューアを介して問題を引き起こす可能性があります。
影響のあるPDFビューアは?
影響のあるビューアについては、こちらを参照ください。
PDFビューアとしてトップシェアのAdobe Acrobatは、1.のUSFのみ影響がありましたが、最新のバージョンでは本脆弱性に対する対応を行なっていることをリリースノートにて確認いたしました。利用者は最新版にアップデートすることをお勧めいたします。
関連する記事