83]另一違反與授權有關。在一個情況中,假設k代表與受害人相關聯的某一 SS項目,諸如受害人的訪問令牌、會話ID(用于好應用^與好應用s之間的會話)等。這意味著某一攻擊實體已經獲得了執行該會話被授權執行的任何操作的許可。在其他情況中,該攻擊實體可獲得以與受害人相同的方式與ID提供者功能720交互的許可。
[0084]另一違反與關聯有關。正確的關聯是在以下三段數據被正確綁定在一起時建立的:用戶的身份(表示認證的結果)、用戶的許可(表示授權的結果)、以及會話的身份(通常稱為會話ID)。當某一惡意實體以任何方式被綁定到受害人(例如通過將惡意實體綁定到受害人的許可、或通過將惡意實體的會話綁定到受害人的身份等)時,綁定違反發生。
[0085]更為具體地,模型620可將其分析的安全性相關的目標表達為一組斷言。每個斷言表達了在某一應用(該應用使用SDK)在某一運行時系統上運行時預期要被滿足的某一性質。模型620可在模型602中適當的接合點處添加那些斷言。例如,模型620可每當某一惡意實體嘗試將一 SS項目添加到知識池時添加一斷言。該斷言可規定正被添加到知識池的知識k不是與受害人或非惡意應用相關聯的秘密。此外或替代地,一斷言可規定知識k不能包含指示出受害人的身份的任何字段(如在知識k是ID提供者功能720提供的一段經簽名的數據的情況中)。此外或替代地,一斷言可規定ID提供者功能720上沒有API將k作為輸入以及作為響應發回受害人的身份。這些種類的斷言是通過示例而非限制來被引用的。
[0086]模型602還可對每一綁定操作添加一斷言,在該綁定操作中在用戶身份、許可以及會話ID,或這些數據項中的任一對之間作出關聯。例如,斷言可規定如果用戶ID或許可表示受害人,則會話同樣被預期為與受害人相關聯。另一斷言可規定如果某一操作將用戶ID和許可綁定,則兩者都或者兩者都不被預期表示受害人。
[0087]在實際實現方面,模型602可被形成為以任何語言表達的程序。斷言可在程序中與正被尋求的目標有關系的接合點處被添加到程序中的特定語句。
[0088]靜態分析工具604分析上述模型602來提供輸出結果,輸出結果可指示出隱含假設的存在(如果有的話)。靜態分析工具604可使用任何靜態分析技術來執行該任務。一般來說,靜態分析涉及在符號化域中分析程序的執行路徑,這與動態地執行程序相反。
[0089]圖8以高級形式示出靜態分析工具604的操作。測試用具80與上述抽象模塊相關聯,包括非惡意客戶機應用(好應用^ 706、相應的非惡意服務應用(好應用5 712)、惡意客戶機應用(壞應用。)722、以及單獨攻擊者功能724。測試用具802執行影響要被測試的系統804的操作。系統804包括SDK層806和底層系統層808,在此也被稱為底層系統環境。SDK層806總地表示客戶機SDK 708和服務SDK 716。底層系統層808總地表示客戶機運行時710、服務器運行時718以及ID提供者功能720。
[0090]在一個實現中,測試用具802通過非確定性地調用其抽象模塊來操作。調用一抽象模塊的動作可最終導致對正被測試的系統804作出調用。每當惡意客戶機應用(壞應用c) 722被調用或每當單獨攻擊者功能724被調用時,測試用具802可將知識k存儲在知識池810中。靜態分析工具604然后可確定該事件是否將違反任何聲明的斷言。此外,靜態分析工具604可確定任何被調用的功能是否違反任何與綁定有關的斷言。SDK開發者可檢查這些違反(如果有任何被檢測出),以確定是否存在與SDK相關聯的任何隱含假設。
[0091]圖9是描述圖6的分析模塊412的操作的一個方式的過程902。在框904中,SDK開發環境404提供諸如SDK之類的軟件產品。在框906中,SDK開發環境404提供描述SDK的推薦用法的文檔資料(如開發者指南)。在框908,SDK開發環境404提供至少表示SDK、指南、以及系統環境(如運行時環境(一個或多個)以及ID提供者功能等)的模型602。在框910中,分析模塊412分析模型602以確定模型是否遭受到(對例如安全性相關的斷言的)任何違反,這可指示出存在與SDK(以及指南)相關聯的隱含假設。在框912中,分析模塊412可提供傳達所述違反的輸出。在框914中,SDK開發者可任選地修訂SDK,和/或指南產生者可任選地修改指南,目標皆為消除或減少標識出的隱含假設。
[0092]圖10是描述圖6的分析模塊412的操作的進一步說明性細節的過程,與圖9的框910相關聯。在框1002中,分析模塊412使用靜態分析工具604來確定:(a)惡意實體獲取安全敏感(SS)項目的實例;以及(b)綁定操作在用戶身份、許可、以及會話,或它們的任一對之間執行的實例。在框1004中,分析模塊612基于框1002的結果確定定義的安全性性質被違反的實例。在框1006中,SDK開發者或其他個體基于框1004的結果確定與SDK相關聯的隱含假設的存在。
[0093]圖11是描述圖6的分析模塊412的操作的進一步說明性細節的過程1102。在框1104,分析模塊412將深度計數器初始化為0。在框1106,分析模塊412對抽象模塊實現的三種功能之一作出非確定性調用,包括非惡意客戶機應用(好應用。)706執行的“好應用c運行”1108功能、惡意客戶機應用(壞應用£) 722執行的“壞應用£作出調用”功能1110、以及單獨攻擊者功能724執行的“攻擊者作出調用”功能1112。圖11中標記為“N-Det”的功能對應于對多個可能選項之一的非確定性(如隨機)選擇。如果“壞應用。作出調用”功能1110或“攻擊者作出調用”功能1112被調用,則功能1114將把從該調用獲得的任何知識存儲到知識池數據存儲810中。
[0094]上述功能(1108、1110、1112)中每一個一旦被調用就可非確定性地選擇一子功能。圖11指示出子功能包括:指示出客戶機SDK 708被調用的“好應用c調用SDK c"功能1116;指示出非惡意服務應用(好應用5)712被調用的“調用好應用5”功能1118 ;指示出ID提供者功能720被調用的“壞應用。調用IDP”功能1120 ;指示出客戶機運行時710被調用的“壞應用c調用運行時功能1122、以及指示出ID提供者功能720被調用的“攻擊者調用IDP”功能1124。
[0095]這些子功能中的每一個在被調用時能然后非確定性地調用底層系統層808(圖8中示出)中的某一功能。框1126指示出該系統層808中的具體模塊(一個或多個)在被調用時執行合適的功能。由于這些模塊是具體的,因此框1126內的操作對應于確定性的計笪并ο
[0096]更為具體地,對于每個深度增量,分析模塊712例如基于其在符號化域中對模型602的執行來探索通過上述非確定性切換的所有路徑。這可導致知識被存儲在知識池數據存儲810中。在框1128,分析模塊412遞增深度計數器并例如通過再次探索通過非確定性切換的所有路徑以及將任何附加知識添加到知識池數據存儲810來重復上述分析。分析模塊412重復該操作直到達到最終深度閾值,例如但非限制,5次迭代。該過程1102因此定義了一種有界搜索。替代地,分析模塊412可使用定理證明程序以非有界方式執行分析,例如華盛頓州微軟公司提供的Ζ3定理提供器。
[0097]基于分析模塊412的結果,根據正被考慮的SDK的性質、其對應的指南、以及底層系統環境,SDK開發者可標識不同類型的隱含假設。僅引用一個示例,分析模塊412可分析依賴于某一服務的應用,其中該服務運行在某一服務器提供的子域中。假設一惡意實體與同一服務器上的另一子域交互。鑒于可在該系統環境內適用的某些同源策略,該情形可提供一攻擊路徑,通過該攻擊路徑該惡意實體可將受害人的身份指派給其選擇的會話ID。對于該情形的相關假設規定惡意實體不能擁有子域。
[0098]最后,本章節中給出的運行示例對應于分析目標是要標識安全性相關的隱含假設的情況。但更為一般地,分析模塊412可就任一目標或目標組合來分析SDK。例如,分析模塊412可依賴于已經嵌入了與資源利用而非安全性有關的斷言的模型。SDK開發者可使用分析模塊412來確定SDK是否與任何與消耗有關的隱含假設相關聯。例如,某一假設可指示出某一模塊被預期要在某一服務器上被采用以便避免高存儲器使用率。
[0099]C.說明性應用開發環境
[0100]圖12示出由圖4的應用開發環境提供的測試工具424的一個實現。測試工具424基于包括數據存儲1202中存儲的一個或多個弱點模式的測試套件來執行測試。(圖4的)測試套件產生模塊414產生該測試套件。在一個情況中,測試套件產生模塊414對應于將每個隱含假設轉換成一弱點模式的轉換模塊或查找表。替代地或另外地,用戶(如SDK開發者)可生成弱點模式。
[0101]在所例示的示例中,測試工具424基于弱點模式對應用執行動態分析。替代地或另外地,測試工具424可執行對應用的靜態分析。
[0102]測試工具424可包括在客戶機側的測試者設備1204、代理服務機制1206、以及服務器1208之間展開的功能。測試者設備1204承擔運行正被考慮