當前位置:
首頁 > 新聞 > 為什麼說Notarization機制更像是一場安全鬧劇?

為什麼說Notarization機制更像是一場安全鬧劇?

在這篇文章中,我們將看看Notarization是什麼,為什麼Apple推出了它,以及為什麼它在開發人員中引起爭議。我們還將解決macOS用戶最重要的問題:Apple的Notarization要求會使你的Mac更安全嗎?

什麼是Notarization機制?

今年早些時候,macOS發現,不正確簽名的程序仍將受到macOS的信任,Notarization機制的出現可能是蘋果為更好地防範今年早些時候發現的安全問題而做出的努力。

Notarization機制是蘋果在10.14.5中新引入的安全保護機制,該機制將要求開發人員上傳他們的應用程序之前,將它們提交給蘋果,檢查其中是否存在惡意內容,並查找可能存在的代碼簽名問題,沒有經過Notarization機制檢測的應用程序將不被允許運行。

隨著macOS 10.14.5的正式發布,蘋果首次要求所有開發人員創建一個屬於開發者自己的ID證書,以Notarization機制他們的應用程序,並且所有新的和更新的內核擴展都要經過Notarization機制。

代碼簽名機制是一種對抗惡意程序的重要武器,它能夠幫助用戶識別已簽名App的真實身份,並驗證目標應用是否被非法篡改過。代碼簽名機制基於密碼學方法來判斷代碼的真實性,並防止攻擊者將惡意代碼偽裝成合法代碼。

在Notarization機制採用之前,macOS使用Gatekeeper來阻止從互聯網上下載的應用程序啟動,Gatekeeper是山獅中引入的一項新安全技術,它可保證用戶安裝來自Mac App Store或者擁有開發者簽名的應用。具體來說,它可以作為Mac App Store的應用鑒別工具,也可識別來自Mac App Store以外應用的開發者身份, 從而防止一些惡意程序的進入。使用Gatekeeper時, macOS會記錄那些有問題的已知應用程序列表,並防止其被執行。但是,在應用程序通過Gatekeeper並得到用戶批准後,Gatekeeper就會失效,很難檢測到現有的二進位文件是否被感染,並且沒有好的方法可以撤銷應用程序的批准。因為一旦開發人員上傳的證書被撤銷後,Mac App Store就會撤銷所有開發人員上傳的應用程序。為了出現這種歌情況,蘋果引入了Notarization機制,來強化對開發者及其上傳應用的管理。

簡而言之,Notarization機制是建立在當前Gatekeeper安全檢查之上的一個新驗證層,是Gatekeeper技術的補充。

雖然Notarization機制聽起來很完美,但由於Notarization機構及其所需要的內容缺乏明確性,孤故而引起了開發者群體的一些不滿。

根據蘋果公司的說法,Notarization僅僅是一個安全驗證過程,所有在Mac應用程序商店之外發布的第三方程序都必須上傳到蘋果的伺服器上,並檢查是否有惡意程序。如果該程序通過了蘋果的惡意程序掃描檢查,其詳細信息將被添加到蘋果「安全」或至少「允許」程序的資料庫中。那開發人員又是怎樣知道自己開發的程序是否被通過呢?蘋果會給他們返回一個電子「票證」。而且開發人員在發行程序時,必須將其附加到程序上。在Notarization尚未強制要求的情況下(即macOS Mojave),Notarization的應用程序與Gatekeeper的警告略有不同,而非Notarization的應用程序可能告訴用戶他們即將推出的程序已通過了蘋果公司的檢查。

從這個角度來講,Notarization對用戶和開發人員來說都是件好事。用戶可以更加放心,因為他們下載的應用程序是經過檢測的程序,而開發人員可以通過這種方式向用戶展示他們的應用程序是否安全。這聽起來很棒,但是理想很豐滿,現實很骨感。

為什麼Notarization會引起程序開發人員的不滿?

當蘋果在Mojave 10.14.5中首次將Notarization作為一項可選要求引入時,它對開發人員必須做什麼制定了非常明確的規則。其中一個要求是開發人員使用所謂的加固運行時(Hardened Runtime)來構建他們的軟體。這意味著開發人員必須跳過一些Notarization限制,以確保他們不會丟失必要的功能,,並通過代碼簽名證書中的標誌來表示,該標誌會告訴操作系統將可執行文件視為類似於蘋果自己的SIP保護的可執行文件。該標誌的存在就是為了防止其他進程(如調試器或反編譯器)附加在程序中,防止代碼注入、DLL劫持和其他一些惡意攻擊。

然而,研究人員Howard Oakley發現,蘋果公司後來決定鼓勵開發人員將他們的所有程序上傳並通過他們的Notarization服務進行掃描,即使是那些永遠不會用於新版macOS或者不能用於各種版本的macOS的程序,也要通過Notarization的掃描。

這務必引起了很多麻煩,為此蘋果公司暫時放棄了他們最初堅持的嚴格要求。

簡而言之,現在唯一需要Notarization的就是惡意軟體檢查本身。據報道,2020年1月將會有第四次Notarization機制的變化。估計到時候,蘋果仍將回歸最初設定的嚴格要求。

誰可以獲得電子「票證」?

如上所述,當應用程序成功Notarization時,蘋果公司還會向開發人員發放「票證」,然後他們可以在發行程序之前將其附加到他們的程序上。當用戶試圖啟動一個Notarization應用程序,但沒有連接到互聯網或Apple的Notarization伺服器關閉時,「票證」就可以處理這樣的情況。然而,許多開發人員對於笨拙的工具以及在構建、Notarization和接收票據之間不可避免的延遲感到猶豫。目前,當一切正常運行時,延遲時間只有幾分鐘左右,但如果不是這樣,開發人員可能會陷入等待蘋果伺服器響應的兩難境地。

如果你運行的是Mojave 10.14.5或更高版本,並且安裝了Xcode命令行工具,你可以很容易地快速檢查哪些應用程序經過了Notarization,並在你的/Applications文件夾中附上了這樣的「票證」,如下所示:

for i in /Applications/* ; do stapler validate "$"|grep -B 1 worked;done

從技術上講,「票證」是可選的檢測項。開發人員在發行應用程序時不必將它們綁定到自己的程序上。如上所述,這樣做對於自動化工作流程來說非常麻煩。但是,如果用戶的設備當時無法連接到Apple的伺服器,也沒有「票證」,開發人員將面臨真正的風險,即他們的應用程序可能無法在啟動時運行。鑒於這種可能性,很少有開發人員會認為這是一個所謂的「可選項」,並且被迫調整其工作流程以適應Apple的變化。

為什麼蘋果公司會引入Notarization?

Notarization機制的引用,肯定會使開發人員增加的額外負擔,但為什麼蘋果公司還會熱衷於Notarization技術。因為蘋果公司認識到需要採取「深度防禦」戰略的意義,而Notarization就是為終端用戶增加的另一層安全保障。有人可能希望Notarization是為了阻止廣告軟體、PUP(可能不受歡迎的程序)和PPI(按安裝付費)的泛濫,這些軟體已經困擾macOS用戶一段時間了。事實上蘋果公司也在一直在努力跟上撤銷開發人員簽名的步伐,並且XProtect和MRT工具根本不是為了識別流氓開發人員可以用來使他們的程序對Apple的工具不可見的簡單自動化更改而構建的。由於即將到來的Catalina及其他地區的Notarization將阻止蘋果公司尚未收到任何程序的推出,可能是Apple將能夠隨著時間的推移在其Notarization惡意程序掃描中添加更細粒度的簽名。實際上,Notarization應該作為一種「雲中的XProtect」服務,,讓蘋果能夠通過拒絕或撤銷Notarization化狀態,在全球範圍內完善他們的檢測,淘汰更多種類的不需要的軟體。

Notarization會徹底消滅惡意程序嗎?

這聽起來很有道理,但是蘋果一直不願意撤銷一些開發者的簽名,這些開發者發行PUP,並設法遵守法律條文,同時又惹怒了用戶。就徹底的惡意軟體而言,真正檢驗Notarization是否會產生任何影響,將取決於「惡意軟體掃描」的具體內容。

有趣的是,我們已經看到惡意程序開發者自己採用了強化運行時,至於到底是為了什麼還不清楚。

Notarization作為一種反分析策略,確實失敗了,因為對於研究人員來說,繞過加固的運行時標誌是一件簡單的事情。我懷疑,更有可能的原因是,惡意程序的開發者一直在試圖測試Apple的Notarization服務的底牌,以了解他們的開發環境應如何跟得上新形勢以及Notarization到底是如何捕獲惡意軟體的。 蘋果公司會提供一個關於失敗的Notarization請求的完整錯誤日誌,這可能摸清Notarization的底細有用,因此,如果惡意開發者通過不斷地試驗並避開日誌里所顯示的錯誤,那是不是就可以繼續執行惡意攻擊了。

此外,雖然捆綁包、包和磁碟映像需要Notarization,但仍然不是所有文件格式都可以通過票證進行Notarization。特別是,這項新技術不會影響任何只運行腳本或獨立可執行文件的惡意程序。另外,腳本在廣告程序和惡意程序安裝程序(如Shlayer)中越來越常見。它們就不受Notarization機制的保護。

為什麼說Notarization更像是一場安全鬧劇?

一些開發人員認為Notarization更像是一場安全鬧劇,而不是真正的安全緩解方案,這在很大程度上是因為雖然它要求好人適應這些新需求,但壞人已經擁有了繞過Notarization檢查所需的工具和技術。

如上所述,腳本和獨立二進位文件不受Notarization機制的檢測,因為Apple的「票證」技術不能應用於這些文件。另外,Notarization檢查也僅適用於那些被隔離的應用程序。正如我們之前討論過的,對蘋果所有安全技術的一個非常簡單的繞過辦法就是刪除隔離位。

在此我會舉個簡單的示例,示例中,我選擇了一個名為「Slimjet.app」的免費第三方應用程序。首先我必須強調,我完全不了解這個應用程序,我並不是說它有任何問題。我選擇它是因為它是我在第三方發行網站上遇到的第一個未經過Notarization的應用程序。如果我們下載並嘗試在強制執行Notarization的系統上安裝此應用程序,Gatekeeper將阻止它,因為儘管它是正確的代碼簽名,但它沒有經過Notarization。經過測試,一切運行順利,也就是說Notarization機制根本沒有發揮作用。

但至少有兩種簡單的方法可以解決這個問題,它們都是老把戲。首先,我們可以簡單地使用xattr刪除隔離位。仍然可以通過流程(例如惡意安裝程序腳本)完成此操作,而無需提升許可權。截止發稿,這個應用現在還可以運行,不會受到Gatekeeper的干擾。

其次,我們可以使用pkgbuild將應用程序構建到安裝程序包中,並使用它來安裝應用程序而無需設置隔離位。

pkgbuild --component /Volumes/FlashPeak\ Slimjet/FlashPeak\ Slimjet.app --install-location /Applications ~/Desktop/slimejet.pkg

蘋果公司曾表示,使用Developer ID簽名的安裝程序包也必須經過Notarization檢查,但這並不能阻止我們使用上面的代碼創建一個未簽名的安裝程序包,然後使用簡單的社交工程技巧來誘騙用戶右擊打開它。

如果你還不信這種可能性,就想想你是否每天都會看到使用這種技巧的未簽名代碼感染的攻擊事件。例如,以下是一個磁碟映像上的惡意應用程序,它有助於為受害者提供簡單的映像,顯示他們應該如何啟動它。

事實證明這是一種久經考驗的技術,且使用起來也很簡單。目前這類安裝程序在野外非常受攻擊者的歡迎。

Notarization並沒有提高我們在上面創建的未簽名包的攻擊門檻,因為未簽名的安裝程序不需要進行Notarization檢查。正如我們所提到的,被程序包丟棄的應用程序沒有隔離位,所以它也不必通過Notarization或任何其他Gatekeeper檢查。

總結

顯然,蘋果公司很想努力的讓用戶有個更加安全的體驗。他們顯然非常關注macOS的安全問題,但Notarization與其他內置技術一樣存在相同的安全缺陷,即依賴於容易移除且並不總是受人尊敬的com.apple.quarantine位。與此同時,開發人員和最終用戶都不得不在使用程序前通過一些沒有什麼實際安全意義的檢查。考慮到繞過Notarization是無比的簡單,可以推測出Notarization對macOS上的廣告程序,PUP和惡意程序的防護作用也不可能有多大。

參考來源:https://www.sentinelone.com/blog/maco-notarization-security-hardening-or-security-theater/

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

LYCEUM APT組織針對中東天然氣、石油基礎設施的攻擊分析
繞過AMSI的全套操作過程