之前鬧得沸沸揚揚的Pegasus, 利用了iMessage的一個漏洞可以讓收到訊息的人只要看到、
不用點任何連結都會中獎。有人研究了這個攻擊是怎麼做的,發現這個攻擊方法真是史上最
複雜但又很精巧。
簡單來說, 大致流程是這樣的:
1. 攻擊者做了一個pdf, 但用gif副檔名讓iOS會嘗試去render這個假gif
2. iOS rendering其實不會管檔名, 而是會用內容去判斷該怎麼render, 於是這個惡意檔案
就進了PDF的rendering engine
3. PDF有種古老的格式叫JBIG2, 是90年代的Xerox scanner用的, 可以把掃描進去的bitmap
壓縮得很小。但這個PDF decoder有個interger overflow的漏洞, 可以讓攻擊者用一個JBIG
2指令render一個4 bytes的bitmap來寫入到任意的記憶體位置。
4. 但問題來了, JBIG2是為了壓縮/解壓縮設計的, 並沒有general的scripting能力, 連作
簡單的運算都不行,這樣要怎麼在PDF的payload裡騙JBIG2去計算出正確的記憶體位置,然
後把後門程式寫到那個特定的地方呢?
5. 攻擊者發現, 經過一些巧妙的指令組合, 可以用JBIG2指令在任何記體體位置上做出AND,
OR, XOR, XNOR的邏輯運算。
6. 有了基本的邏輯閘, JBIG2的格式就等於是turing complete了。於是,攻擊者就用了七
萬個JBIG2指令和這些邏輯閘做出了一個迷你的電腦架構!!有暫存器、加法器、比較器,
可以作基本的運算、迴圈之類的事情。
7. 最後,有了個迷你電腦,就透過JBIG2 bootstrap進入這個模擬的電腦環境中,然後再用
這個模擬環境跑真正的攻擊程式,去找出正確的記憶體位置把後門寫進去。
我看不懂這篇在講什麼
誰要教我