[0062]此外,應用開發者可任選地使用測試工具424來測試該應用。測試工具424確定已被產生的該應用是否具有匹配測試套件所標識的弱點模式的任何弱點。如果是,則應用開發者可選擇修改該應用并重復該測試。應用開發者可重復這些操作直到他或她產生了沒有“錯誤”的應用。
[0063]圖5是總結圖4中所描繪的功能的過程502。在框504中,SDK開發者開發SDK。在框506中,指南產生者撰寫指南。在框508中,SDK開發者分析SDK以及指南以確定是否存在與SDK(以及指南)相關聯的任何隱含假設。在框510中,SDK開發者可基于標識出的隱含假設生成測試套件。在框510中,SDK開發者可發布SDK、指南以及測試套件。
[0064]在框514中,應用開發者可接收SDK、指南以及測試套件。在框516中,應用開發者可基于指南中提供的信息,使用SDK來產生應用。在框518中,應用開發者可任選地使用測試套件來測試已被產生的應用。
[0065]B.說_件501(開發環境
[0066]圖6不出了圖4中介紹的分析模塊412的一個實現。分析模塊412可被用于分析任何種類的SDK。但是為了使得闡述更具體,假設分析模塊412執行對提供認證和/或授權功能的SDK的分析。在該上下文中,分析模塊412力圖確定某一應用(是使用SDK和指南構建的)是否可能向一惡意實體暴露一個或多個安全敏感(SS)項目。不作限制,SS項目可對應于秘密,諸如訪問令牌、協議定義的密碼、刷新令牌、應用秘密、會話ID等等。SS項目還可對應于由(圖2的)ID提供者214提供的經簽名的數據,諸如經簽名的消息、認證令牌等。
[0067]進一步,分析模塊412通過檢查客戶機設備與服務器之間的個體會話(而不是用戶與客戶機設備或用戶與服務之間的關聯性)來執行其安全性分析。也就是說,客戶機設備與服務器之間的認證/授權的最終結果是要知道該會話代表誰以及該會話被允許做什么。該確定不會影響同一客戶機設備與服務器之間的任何其他會話。
[0068]分析模塊412對一模型602起作用。模型602表示與SDK和應用(該應用使用正被考慮的SDK)被預期要被部署于其中的上下文有關的信息。分析模塊412還包括用于符號化地調查模型602的靜態分析工具604。這產生輸出結果,該輸出結果繼而可指示出存在零個、一個或多個隱含假設。
[0069]模型602通過在應用(該應用使用SDK)被部署于其預期的目標環境中時將可在與應用交互中起作用的不同執行者考慮在內來表達應用被部署于其中的上下文。圖7示出了一個這樣的說明性目標環境702。環境702是從可能遭受來自其他實體的攻擊的某一客戶機設備的角度來構造的。該客戶機設備在此被稱為客戶機受害人設備704。被標識為受害人的某個人與該設備交互。客戶機受害人設備704運行非惡意客戶機應用(好應用^706,該應用被假設為要根據指南來被構造且被所述受害人蓄意安裝。在一個情況中,該非惡意客戶機應用(好應用ε)706依賴于客戶機SDK 708以及客戶機運行時710來執行其功能。
[0070]該非惡意客戶機應用(好應用c) 706還依賴于由說明性的服務器714提供的對應的非惡意服務應用(好應用^712。該非惡意服務應用(好應用5)繼而依賴于服務SDK 716和服務器運行時718來執行其功能。最終,客戶機SDK 708和服務SDK 716可代表該非惡意客戶機應用(好應用。)706與ID提供者功能720交互,但該非惡意客戶機應用(好應用c) 706不直接與ID提供者功能720交互。
[0071]環境702還可表示一個或多個攻擊實體(在此也被稱為惡意實體),攻擊實體向受害人呈現出潛在威脅。例如,客戶機受害人設備704可包括至少一個惡意客戶機應用(壞應用722,該應用具有未知來源與構造且因此被認為是潛在惡意的。如上所述,非惡意客戶機應用(好應用。)706被假設為是根據指南中提供的指示被構造的。相反,惡意客戶機應用(壞應用。)722可以任意方式而不參考指南來被產生。然而,可預期惡意客戶機應用(壞應用ε) 722符合客戶機運行時710所施加的任何約束。
[0072]環境702還可包括被部署在除了客戶機受害人設備704之外的某一客戶機設備上的單獨攻擊者功能724。更為具體地,該單獨攻擊者功能724可總地表示其他客戶機設備連同該客戶機設備與之交互的任何服務。
[0073]圖7中示出的某些模塊的構造在SDK正被分析時是已知的。這些已被構造的模塊被稱為具體模塊,且包括客戶機SDK 708、服務SDK 716、客戶機運行時710、服務器運行時718、以及ID提供者功能720。更為具體地,客戶機運行時710、服務器運行時718以及ID提供者功能720是復雜的;因此盡管這些模塊是具體的,與這些模塊相關聯的功能可能不被SDK開發者完全知曉。相反,客戶機SDK 708和服務SDK 716通常是公開可獲得的相對小的程序;因此與這些模塊相關聯的功能可被認為是被SDK開發者完全知曉的。
[0074]剩余模塊被認為是抽象的,因為它們的構成還未被確定。這些模塊包括非惡意客戶機應用(好應用3 706、非惡意服務器應用(好應用s)、惡意客戶機應用(壞應用。722、以及單獨攻擊者功能724。例如,在SDK被分析時,SDK開發者沒有關于應用開發者將基于該SDK構建的應用的知識。并且在該SDK被分析時,SDK開發者不具有關于什么惡意實體可能對非惡意客戶機應用構成威脅的知識,即使這些惡意實體可能早已實際存在。
[0075]現在返回圖6,模型602可表達關于圖7中所示的組件、或其子集、或其任何變型的下列信息。
[0076]SDK的功能與底層系統環境。模型602可表示客戶機SDK 708和服務SDK716執行的各種功能。此外,模型602可表示與應用將在其中被執行的底層系統環境相關聯的各種功能。系統環境包括客戶機受害人設備704上所采用的客戶機運行時710以及服務器714所采用的服務器運行時718。底層系統環境還可包含ID提供者功能720的某些方面。
[0077]如上所述,客戶機SDK 708和服務SDK 716通常是小程序。因此,模型602可窮舉地表達與這些模塊相關聯的所有功能。另一方面,底層系統環境通常是復雜的且包含各種各樣的功能。模型602可因此選擇性地捕捉系統環境中與分析的目的有關的那些方面。在本章節的運行示例中,分析的目標與認證和/或授權有關。模型602將因此聚焦于系統環境中與使用SDK的應用的安全性有關系的那些方面。
[0078]例如,模型602可捕捉ID功能720與非惡意客戶機應用(好應用ε) 706交互的方式,如由各種應用設置所控制。例如,某一 ID提供者可提供允許應用開發者輸入各種應用設置(諸如應用ID、應用秘密、服務網站域、返回URL等)的接口。模型602可捕捉這些設置影響ID提供者功能720的行為的方式。作為另一示例,模型602可捕捉客戶機運行時710的同源策略。同源策略定義了客戶機運行時710區分源自不同源的內容的方式。作為另一示例,模型602可捕捉服務器運行時718管理會話的方式。這些特征是通過示例而非限制來被引用的;在其他實現中,模型602可表達底層系統環境的其他方面。
[0079]開發指南。如上所述,非惡意應用模塊(好應用ε 706和好應用5 712)是抽象的模塊,因為它們具有還未被確定的構造。因此,模型602不能以與具體模塊相同的方式來表示這些組件。然而,模型602可表達指南所指定的某些約束,在它們影響非惡意客戶機應用(好應用。)706和非惡意服務應用(好應用5) 712的范圍內。也就是說,指南支配這些模塊能調用哪些功能以及它們在作出調用時可傳遞什么參數。指南進一步表達功能調用的預期順序以及它們的自變量值與返回值相關的方式。不遵循指南中的該次序以及自變量規則的調用被認為是非符合調用。在某種意義上,指南構成了一構架,所有符合的應用都被預期結合了該構架;應用可向該構架添加功能,但是它不能修改該構架。
[0080]攻擊實體。惡意客戶機應用(壞應用722和單獨攻擊者功能724也是抽象的,意味著它們的構造在分析時是未知的。進一步,這些實體未被預期符合指南的任一方面。但是模型602可指示出惡意實體中的任一個在作為功能調用的結果接收到安全敏感(SS)項目時將把該SS項目存儲在知識池中。因此,知識池將反映這些實體所獲取的SS項目的歷史。模型602進一步指定這些惡意實體中的任一個能夠從知識池檢索任一 SS項目以及以(可適用于惡意實體的任何環境特定約束)所允許的任何方式來使用該SS項目。
[0081]安全性斷言。模型602還可定義構成對正被尋求的任何目標的違反的環境。在運行的安全性相關的示例中,模型602可表達構成安全性違反的事件。
[0082]—個違反與認證有關。假設某一知識k要被惡意客戶機應用(壞應用ε) 722或單獨攻擊者功能724添加到知識池。進一步假設k足以使非惡意服務應用(好應用s) 712的認證邏輯相信知識持有者是受害人。這意味著惡意客戶機應用(壞應用。)722或單獨攻擊者功能724可作為受害人來認證,這就構成了認證違反。
[00