動態應用程式安全測試

動態應用程式安全測試(dynamic application security testing)簡稱DAST,屬於非功能測試英語non-functional testing,用特定技術來評估應用程式,以得到應用程式安全弱點和漏洞的測試方式。動態應用程式安全測試可以用自動化工具進行,也可以人工進行,人工評估可以識別到一些自動化工具可能不會測到的內容,例如業務邏輯錯誤或是競爭條件,有些0day漏洞只能用人工檢查來識別。DAST的工具會利用應用程式的前端和應用程式互動,以識別其安全漏洞以及軟體架構上的弱點[1]。動態應用程式安全測試進行的是黑箱測試,不需要存取原始碼,是用實際進行攻擊來偵測弱點

只要配置host名稱,crawling參數以及身份驗證憑據,DAST工具可以在最小人工介入的情形下,進行複雜的掃描,並偵測弱點。這些工具可以偵測查詢字串、header、片段(fragment)、動詞(GET/POST/PUT)以及DOM注入的弱點。

DAST工具可以建立有關安全漏洞的網頁應用程式自動化審核,這也是許多法規所要求的內容。網頁應用程式掃描器可以掃描許多的漏洞,像是輸入輸出資料驗證(跨網站指令碼SQL注入)、特定的應用程式問題,或是伺服器組態的錯誤。

商用及開源的掃描器

編輯

商用掃描器是需要付費購買的網頁評估工具,有些工具的部份功能免費,但完整功能版本仍要付費。

開源掃描器多半是免費的。

安全研究員Shay Chen曾列出包括商用掃描器以及開源掃描器的列表[2],其中也有針對網頁應用程式弱點掃描器評估計劃(WAVSEP)測試的結果。WAVSEP會評估技術支援、性能、準確度、覆蓋率及結果的一致性。

優點

編輯

DAST工具可以用在產品提供給客戶之前前,針對最後release candidate的產品來進行弱點掃描。掃描器殞以模擬惡意的使用者進行攻擊,並且探測結果,找出不是預期結果的情形,因此可以進行可行的攻擊模擬[3]。這類工具最大的好處是可以每年執行,持續的掃描弱點,定期的發現漏洞,也可以讓在漏洞被利用之前,可以定期 發佈相關的補丁。[4]

DAST工具是動態測試工具,和使用程式語言無關。網頁應用程式的掃描器也可以掃描引擎驅動的網頁應用程式。攻擊者會使用相同的工具來進行攻擊,因此,若用這些工具可以找到弱點,那麼駭客也可以這麼做。

缺點

編輯

在進行DAST掃描時,可能會讓伺服器寫入過多的資料,或是寫入惡意資料。因此要使用和實際作業環境相同,但不是真正作業時使用的伺服器,可以得到正確的結果,又可以保護真正使用的伺服器。

DAST屬於動態測試,無法覆蓋所有應用程式的程式碼,因此可能有部份程式不會測到。滲透測試者需要根據測試覆蓋率或是其攻擊表面來評估工具的組態正確,或是對應用程式夠了解。

工具無法實現特定弱點的所有攻擊方式。工具一般會有事先定義好的攻擊列表,在測試過程中再跳過部分攻擊。若有動態內容(像javascript或flash)的應用程式,掃描器也會被因不了解實際行為而受限。

2012年的報告指出,有些網頁技術是不少DAST不易分析的,包括jQueryRESTAJAX應用程式裡的Google WebToolkit、Flash Remoting(AMF)及HTML5,不易分析的手機應用程式及網路服務有JSON和REST、XML-RPC,以及網頁服務中使用的SOAP扳術,不易分析的過程有購物車的複雜工作流,以及跨站請求偽造(XSRF/CSRF)的tokens[5] [6]

參考資料

編輯

外部連結

編輯