過直接編寫或者修改AUT104的二進制代碼來將動態(tài)污點模塊 110添加到應(yīng)用。
[0014] 在測試期間,掃描器102可以發(fā)送消息來打開120動態(tài)污點模塊110。AUT104接 收該消息并且確定動態(tài)污點模塊110是否存在。如果存在動態(tài)污點模塊110,則掃描器102 可以發(fā)送消息來使能動態(tài)污點模塊110和/或AUT104可以基于掃描器的先前消息來使能 它。
[0015] 掃描器102可以隨后執(zhí)行爬行階段122。掃描器102例如經(jīng)由網(wǎng)站接口來爬行AUT 104。當爬行發(fā)生時,執(zhí)行動態(tài)污點分析。當掃描器102爬行應(yīng)用時,掃描器102可以一次 或者多次地訪問一個或者多個入口點(例如,輸入字段)。在測試期間,掃描器102可以通過 作出HTTP請求和評估HTTP響應(yīng)或者其不足來探索AUT104以便發(fā)現(xiàn)其中AUT104接受輸 入的URL。在一些示例中,掃描器102可以經(jīng)由通過終端用戶所提供的預(yù)先記錄的網(wǎng)絡(luò)過程 流來獲取AUT104的攻擊面或者通過使用安裝在AUT104中的另一個運行時間模塊來自動 發(fā)現(xiàn)攻擊面從而獲取AUT104的攻擊面。訪問相應(yīng)的入口點可以觸發(fā)動態(tài)污點分析。
[0016] 動態(tài)污點模塊110可響應(yīng)于爬行階段122 (例如在爬行階段122結(jié)束時)向掃描 器102提供報告124。報告可以包括在爬行階段122期間所檢測的一列弱點的候選。
[0017] 在一些示例中,爬行和報告124可以迭代地或者遞增地執(zhí)行。例如,可以接收針對 爬行階段122的一部分的報告。照此,例如,在一個網(wǎng)絡(luò)應(yīng)用中,報告可以被拆分成數(shù)份,可 以發(fā)送針對網(wǎng)站所爬行的每一頁的報告。進一步地,在其它示例中,可以在整個網(wǎng)站的爬行 階段結(jié)束時發(fā)送報告。
[0018] 掃描器102隨后可以發(fā)送消息來關(guān)閉126或者禁用AUT104的動態(tài)污點模塊110。 在一些示例中,替代于被完全禁用,動態(tài)污點模塊110被部分地禁用。例如,掃描器102可 以使得動態(tài)污點模塊110禁用污點源的每一個,但除了掃描器102希望依據(jù)其來收集數(shù)據(jù) 的攻擊向量的污點源。禁用動態(tài)污點模塊110允許掃描器102來攻擊AUT104,而動態(tài)污點 模塊110的附加代碼沒有執(zhí)行。進一步地,因為附加代碼沒有執(zhí)行,所以完成測試的時間可 以減少。
[0019] 在128,掃描器102按照從報告中獲取的信息來調(diào)整和/或生成用于AUT104的掃 描策略。這可以是基于掃描政策的。在一個示例中,掃描器102創(chuàng)建策略來發(fā)動與由動態(tài) 污點模塊110預(yù)先篩選的可能弱點有關(guān)的攻擊。照此,測試的總體持續(xù)時間可以被縮短,因 為其它的測試被過濾掉了。在另一個示例中,在報告124中的一列弱點的候選可以在攻擊 策略中被提供較高的優(yōu)先級,以使得更多的、很可能的弱點可以在攻擊中被較早地發(fā)現(xiàn)。在 某些示例中,調(diào)整128可以例如在接收部分報告時動態(tài)地或者遞增地發(fā)生。
[0020] 在130,掃描器102按照攻擊策略來攻擊AUT104。如所記錄的,攻擊策略可以與 報告中的一列弱點相聯(lián)系或者其可以基于報告中的一列弱點而被優(yōu)先化。照此,無用的或 者不可能的攻擊可以從攻擊130中過濾,因此降低總體安全性掃描花費的時間量。
[0021] 圖2A和2B是按照各種示例的能夠基于由動態(tài)污點模塊所生成的弱點列表來攻擊 應(yīng)用的應(yīng)用安全性掃描器的方框圖。應(yīng)用安全性掃描器200a、200b包括可以被用來基于由 動態(tài)污點模塊所生成的弱點列表來攻擊應(yīng)用的組件。相應(yīng)的掃描器200a、200b可以是筆記 本計算機、臺式計算機、服務(wù)器、工作站、或者能夠訪問被測試的應(yīng)用并且可以執(zhí)行測試的 任何其它計算設(shè)備。在一個示例中,應(yīng)用安全性掃描器200a可以包括通信模塊210、爬行器 212和調(diào)整模塊214。在另一個示例中,應(yīng)用安全性掃描器200b進一步包括攻擊模塊216、 處理器230、存儲器232、和/或可以使用輸入設(shè)備240和/或輸出設(shè)備242的輸入/輸出 接口 234。
[0022] 通信模塊210可以被用來與其它設(shè)備(例如,包括被測試應(yīng)用的設(shè)備)通信。被測 試的應(yīng)用也可以包括動態(tài)污點模塊。在某些示例中,具體地,通信模塊210可以被配置用于 與動態(tài)污點模塊通信。在一些示例中,通信模塊210可以經(jīng)由網(wǎng)絡(luò)接口(例如,無線網(wǎng)絡(luò)接 口、有線網(wǎng)絡(luò)接口)、經(jīng)由互聯(lián)網(wǎng)、經(jīng)由內(nèi)聯(lián)網(wǎng)、經(jīng)由到托管被測試應(yīng)用的服務(wù)器的直接連接 等等來通信。在某些示例中,通信模塊210可以連接到網(wǎng)絡(luò)中的其它設(shè)備。
[0023] 應(yīng)用安全性掃描器200可以經(jīng)由通信模塊210向被測試的應(yīng)用發(fā)送消息來打開 AUT的動態(tài)污點模塊。照此,應(yīng)用安全性掃描器200可以使得與AUT相關(guān)聯(lián)的動態(tài)污點模塊 啟動該動態(tài)污點模塊以用于安全性測試的爬行階段。在一個示例中,啟動動態(tài)污點模塊意 味著激活該動態(tài)污點模塊的功能性從而協(xié)助應(yīng)用安全性掃描器200。安全性測試可以經(jīng)由 應(yīng)用安全性掃描器200來被協(xié)調(diào)。
[0024] 爬行器212可以被用來訪問AUT。在一個示例中,爬行器可以在爬行階段期間獲 取AUT的攻擊入口點。如在下文中進一步詳述的,動態(tài)污點模塊可以打開并且生成提供關(guān) 于可能的安全性弱點的信息的一份報告或者多份報告。例如,報告可以包括在爬行階段期 間由動態(tài)污點模塊所確定的AUT的一個或者多個可能弱點的弱點候選列表。
[0025] 隨后,應(yīng)用安全性掃描器200可以使得對動態(tài)污點模塊的約束。在一個示例中,使 得對動態(tài)污點模塊的約束可以意味著禁用被使能的功能性。在一些示例中,可以禁用功能 性的一部分。在某些示例中,當動態(tài)污點模塊啟動時,爬行階段可以開始,并且當動態(tài)污點 模塊被約束時,爬行階段可以結(jié)束。在另一個示例中,爬行階段可以持續(xù)與應(yīng)用安全性掃描 器200尋找附加入口點一樣長的時間。
[0026]調(diào)整模塊214可以基于報告來生成掃描策略。在一個示例中,掃描策略的生成可 以包括基于弱點候選列表來修改針對AUT的另一個掃描策略。例如,掃描策略可以通過使 由攻擊模塊216實行的攻擊中的弱點候選列表優(yōu)先化來確定。去優(yōu)先化的攻擊可以是來自 其它掃描策略中的提醒。在另一個示例中,調(diào)整模塊214可以通過確定聚焦于弱點候選列 表的攻擊來確定掃描策略。例如,基于由動態(tài)污點模塊針對相應(yīng)的入口點所記錄的可訪問 的可能弱點,可以針對每個攻擊入口點確定攻擊。照此,可以基于由動態(tài)污點模塊所確定的 弱點候選來過濾針對攻擊入口點的攻擊。
[0027] 攻擊模塊216可以基于攻擊策略來執(zhí)行針對AUT的攻擊。在一些示例中,攻擊模 塊216使用一個或者多個通信模塊210來實施該攻擊。
[0028] 在一個示例中,動態(tài)污點模塊和/或AUT可以從應(yīng)用安全性掃描器200接收消息。 動態(tài)污點模塊可以響應(yīng)于該消息而被啟動。進一步地,動態(tài)污點模塊可以在爬行階段期間 生成報告。報告可以包括經(jīng)由動態(tài)污點分析所確定的一列弱點的候選。報告可以被發(fā)送給 應(yīng)用安全性掃描器200。應(yīng)用安全性掃描器200可以接收報告并且發(fā)送第二消息來禁用動 態(tài)污點模塊的至少一部分。動態(tài)污點模塊可以接收第二條消息并