作為12.4 iOS更新的一部分,Apple修補(bǔ)的iMessage漏洞允許潛在的攻擊者遠(yuǎn)程讀取存儲(chǔ)在iOS設(shè)備上的文件內(nèi)容而無(wú)需用戶交互,因?yàn)橛脩粢苿?dòng)沒(méi)有沙箱。
谷歌Project Zero安全研究員娜塔莉·西爾瓦諾維奇 (Natalie Silvanovich)在5月份向蘋果公司報(bào)告了CVE-2019-8646的安全漏洞 。
Silvanovich創(chuàng)建的概念證明僅適用于運(yùn)行iOS 12或更高版本的設(shè)備,它被設(shè)計(jì)為“一個(gè)簡(jiǎn)單的示例,用于演示Springboard中類的觸及能力。該錯(cuò)誤的實(shí)際后果可能更嚴(yán)重!
CVE-2019-8646允許攻擊者從沒(méi)有用戶交互的遠(yuǎn)程設(shè)備上讀取文件,因?yàn)闆](méi)有沙箱的用戶移動(dòng)設(shè)備https://t.co/uGXHYjOXBe
- Natalie Silvanovich(@natashenka),2019年7月29日
Google安全研究員表示,iMessage問(wèn)題是由_NSDataFileBackedFuture類引起的,即使啟用了安全編碼,也可以“反序列化。此類是文件支持的NSData對(duì)象,當(dāng)[NSData bytes]選擇器將本地文件加載到內(nèi)存中叫做。”
Silvanovich 在Project Zero的錯(cuò)誤跟蹤器中詳細(xì)描述了這個(gè)問(wèn)題:
“首先,如果反序列化緩沖區(qū)的代碼共享它,它可能會(huì)允許對(duì)本地文件進(jìn)行不希望的訪問(wèn)(這更可能導(dǎo)致使用序列化對(duì)象進(jìn)行本地通信的組件出現(xiàn)問(wèn)題而不是iMessage)。其次,它允許創(chuàng)建一個(gè)NSData對(duì)象,其長(zhǎng)度不同于其字節(jié)數(shù)組的長(zhǎng)度。這違反了一個(gè)非;镜膶傩,該屬性應(yīng)始終適用于NSData對(duì)象。這可以允許越界讀取,并且還可能導(dǎo)致越界寫入,因?yàn)楝F(xiàn)在可以創(chuàng)建具有非常大的NSData對(duì)象,如果緩沖區(qū)被備份則是不可能的。”
蘋果公司在 7月22日發(fā)布的iOS 12.4版本中修補(bǔ)了這個(gè)問(wèn)題,“除非明確地將其添加到允許列表中,否則將阻止此類進(jìn)行解碼。此外,還實(shí)現(xiàn)了對(duì)文件URL的更好過(guò)濾!
根據(jù)iOS發(fā)行說(shuō)明,Siri和Core Data iOS組件中存在越界讀取缺陷,它會(huì)影響所有iPhone 5s或更高版本,iPad Air或更高版本以及iPod touch第6代或更高版本的設(shè)備。
由于概念驗(yàn)證現(xiàn)已公開(kāi)用于此漏洞,iOS 12.4最近才發(fā)布,因此強(qiáng)烈建議用戶盡快升級(jí)到最新版本的iOS。
在iOS 12.4中修補(bǔ)了更多iMessage漏洞
Silvanovich發(fā)現(xiàn)在與谷歌的Project Zero的合作,其他兩個(gè)漏洞的iMessage 塞繆爾·格羅斯,也得到了在iOS的12.4更新修補(bǔ)漏洞。
第一個(gè)是Core Data中的內(nèi)存漏洞,跟蹤為CVE-2019-8660, 通過(guò)改進(jìn)的長(zhǎng)度檢查進(jìn)行修復(fù),它使遠(yuǎn)程攻擊者可能在iPhone 5s或更高版本,iPad Air或更高版本以及iPod上導(dǎo)致意外的應(yīng)用程序終止或任意代碼執(zhí)行觸摸第6代或更高版本的iOS設(shè)備。
第二個(gè)是 在CVE-2019-8647跟蹤免費(fèi)問(wèn)題 后使用Core Data,可能允許遠(yuǎn)程攻擊者在iPhone 5s或更高版本,iPad Air或更高版本以及iPod touch第6代或更高版本iOS設(shè)備上執(zhí)行任意代碼執(zhí)行。
總的來(lái)說(shuō),Silvanovich發(fā)現(xiàn)了五個(gè)iMessage錯(cuò)誤,最后兩個(gè)是輸入驗(yàn)證問(wèn)題,這可能會(huì)導(dǎo)致設(shè)備出現(xiàn)格式不正確的消息(在5月13日發(fā)布的iOS 12.3中打補(bǔ)。┖鸵粋(gè)越界讀取導(dǎo)致內(nèi)存泄漏(在7月22日發(fā)布的watchOS 5.3中修復(fù) )。