近日,德國研究機構Ruhr University Bochum發布安全報告,提出了三種針對PDF簽名的攻擊方法,中國金融認證中心(CFCA)的PDF技術人員關注到該信息后,及時地進行了技術分析,并給出了一些應用建議。
第一種通用簽名偽造(USF),可以簡述為“刪掉或破壞PDF中的數字簽名值”。把該方式算作一種攻擊方式其實有些牽強,我們看到絕大部分廠商不受這種攻擊的影響,但恰恰Adobe Reader卻在這里犯了個代碼邏輯錯誤,估計這也是研究人員把該方式算作一種攻擊的原因吧,畢竟Adobe Reader的用戶量大,好在Adobe在幾個月前就已經收到并修復了該漏洞。
第二種增量保存攻擊(ISA),可以簡述為“PDF的追加式修改”。
PDF規范要求,PDF文檔做完第一個簽名后,再進行其它修改或第二個簽名時,新的數據必須追加到文檔的末尾,被簽名保護的數據不能再有任何改動,否則前一個簽名就驗證不過了。如果使用該方式竄改合同產生法律糾紛,攻擊者根本無法使用竄改的合同作為證據,因為這種追加式修改,使用專業的PDF格式分析軟件就能夠發現追加的數據,把上圖紅色部分刪除,就可以得到已被簽名保護的內容。
第三種攻擊方式,可以認為是該份報告中提出的一種較為有價值的漏洞,屬于對PDF規范脆弱點的利用。
該攻擊有兩個核心要點:
一是在相同的偏移位置處偽造一個xref交叉引用表(該表在PDF文檔中處于重要地位,xref表中記錄了PDF中其它對象的地址,PDF閱讀器根據xref表的信息去解析渲染文檔),從而誘使PDF閱讀器去解析使用偽造的數據。
二是把真實的被簽名數據轉移到其它位置,同時更改ByteRange數組里的值(這些值記錄了被簽名數據的位置及范圍)指向轉移后的位置,這樣PDF閱讀器在驗證數字簽名時,就會到轉移后的位置讀取原始被簽名數據用于驗簽,因為這些數據并未被修改過,所以驗簽還是通過的,從而騙過了閱讀器。
這種攻擊自身的弱點也比較明顯,它需要往文檔里嵌入一些不合理數據,根據報告中提供的解決方案,就可以發現并清除惡意數據。
因為原始被數字簽名保護的數據都還在文檔中,與第二種方式類似,產生糾紛也很容易還原出原始文檔。
我們建議使用桌面版PDF閱讀器進行合同驗證的用戶,對于重要合同,可以多選幾種桌面閱讀器,以降低再有類似未被發現的軟件或協議漏洞被人利用的可能。
合同票據簽署時,最好選擇在線閉環PDF簽署系統或平臺。閉環系統對系統內的PDF簽名時,一般都是后臺系統自動合成PDF業務數據,簽名過程中的文檔也是在系統內在線流轉,沒有人為隨意修改的機會。如果實施攻擊,需要先攻破企業防火墻,再攻破存儲數據的服務器系統,才能拿到修改PDF的權限,基本上避免了這種攻擊的可能。
建議增強業務系統層面的縱深防護。報告里提到的攻擊,是針對PDF文檔格式的脆弱點攻擊,假如攻擊得逞,影響的是該環節的業務結果,并不像某些計算機程序漏洞一樣,一旦被攻擊,立即產生破壞效應(例如敏感數據泄露)。在業務系統內,作好對關鍵數據的多環節校驗審核,就可以有效防范此類攻擊。
最后提醒大家,經過數字證書簽名后,被簽名數據的真實性仍然是無法偽造的,數字簽名仍然是目前安全可靠的技術手段。
責任編輯:韓希宇
免責聲明:
中國電子銀行網發布的專欄、投稿以及征文相關文章,其文字、圖片、視頻均來源于作者投稿或轉載自相關作品方;如涉及未經許可使用作品的問題,請您優先聯系我們(聯系郵箱:cebnet@cfca.com.cn,電話:400-880-9888),我們會第一時間核實,謝謝配合。