2012-10-15 86 views
1

我在Mac上有一個應用程序需要提升特權才能執行某些任務。爲了達到這個目的,我在我的應用程序包中攜帶了一個二進制可執行文件,並且每當需要提升時,我都會使用SMJobSubmit()將此可執行文件提交到launchd。除了這個可執行文件之外,我還將一個帶有某些參數的plist文件提交給可執行文件,告訴它它需要做什麼。如何確保SMJobSubmit提交的二進制文件是真的?

我的問題是,我如何確保可執行的運行是我打算運行的那個。如果某人將可執行文件替換爲惡意文件,如果授予root權限可能會造成嚴重破壞,該怎麼辦? launchd或SMJobSubmit是否提供任何豁免權,還是必須在我的終端驗證簽名和校驗和?奇怪的是,我無法在網上找到關於這個問題的單個討論,也許我在這裏錯過了一些微不足道的東西。

blog給出了一個很好的使用SMJobSubmit的例子。我已經執行了相同的路線。

回答

0

根據您提供的鏈接中的信息判斷,所有SMJobSubmit都會安裝一個臨時的launchd守護程序,它依賴於用戶將安裝認證爲合法。我不知道你如何設想你的可執行文件被替換,但如果你想防止篡改,你可以生成文件的校驗和,並將其與預先針對真正的二進制文件生成的嵌入校驗和進行比較。

話又說回來,如果攻擊者能夠訪問到你的整個代碼,他們只需更換源代碼校驗和與二進制校驗相匹配,或者完全跳過檢查...

+0

感謝。實際上,有人可以打開App包內容並替換我攜帶的二進制文件。所以爲了防止這種事情我想驗證簽名。作爲解決方案,我將helper二進制文件(由smjobsubmit提交)的簽名存儲在已編譯的應用程序二進制文件中,並在運行時驗證它。由於攻擊者無法訪問源代碼,因此它可以正常工作。 – sraok

相關問題