https://newera17031.activehosted.com/index.php?action=social&chash=a60937eba57758ed45b6d3e91e8659f3.2219&nosocial=1
https://newera17031.activehosted.com/index.php?action=social&chash=a60937eba57758ed45b6d3e91e8659f3.2219&nosocial=1

觀點

委外開發 善用工具來驗收

2011 / 05 / 05
Taien
委外開發  善用工具來驗收

現在越來越多的駭客入侵新聞,受駭者有購物網站、中小企業、政府單位到資安廠商。許多人一發生事情都推說是委外廠商開發,但就算不是自己開發也該檢查一下程式的安全性。程式交付時,除了以往的系統需求規格書、軟體需求規格書、設計規格書、系統測試紀錄等文件以外,大家看到的只有程式可以執行與效能達到需求,忘了更重要的安全性要求。程式驗收時應該把安全功能也考慮進去,而不是最後讓使用者來幫忙除錯、回報問題。
一般程式的測試方式有白箱,黑箱和程式碼審查(Code Review)三種,驗收時可善用工具進行檢測或要求廠商排除相關問題。


Paros好用的黑箱測試工具
相較於黑箱測試,白箱測試是可以了解軟體內部流程所針對邏輯流程設計的測試,開發者可以設計許多測試個案來測試模組資料結構與程式運作。PEX是微軟DevLabs專案中提供的一個套件,可以協助產生一個具備高涵蓋範圍的程式碼傳統單元測試組件,來幫助使用者作測試,但在驗收的時候比較不會用此測試,這應該在測試階段就完成,自行開發者可善加利用。

而在一般的驗收階段,會從外部檢查程式碼安全,開放Web軟體安全計畫(OWASP)的十大安全弱點(OWASP Top 10)已明列支付卡行業資料安全標準(PCI DSS, Payment Card Industry Data Security Standard)中,正好可成為檢測的依據,必須確保程式沒有這些弱點問題。在OWASP網站中已經介紹了一些網頁安全檢查工具,像Paros、Burp Suite…等,Burp內附多種編碼工具方便攔截封包修改,還加入時序分析功能,但它的弱點分析功能是要另外付費,因此在此主要介紹Paros。


Paros(http://www.parosproxy.org/)
是一套以java為基礎開發的網頁應用程式弱點掃描器,它完全免費並以開放源碼方式公布,使用者可以自行修改程式碼,它使用簡單且功能強大,是許多測試人員的必備工具。

1. 安裝Paros後,把你的瀏覽器代理伺服器位址改localhost連接埠8080(圖1),這樣所有的網頁封包便會導到Paros作過濾與處理。


圖1 設定瀏覽器代理伺服器位址


2. 在設定完成後可以看到Paros抓到了剛剛瀏覽的網站,這時在網站上按右鍵選Spider來探索網站的架構(圖2),它可以幫助攻擊者了解對外的開放檔案。


圖2 按右鍵選擇Spider探索網站架構


3. 在這裡可以看到爬行完的網頁程式架構(圖3),執行這個動作不需要太久就可以自動搜集到對攻擊有益的訊息,驗收者也可以評估一下,哪些東西不應該放出來。


圖3 審慎評估哪些資訊不應在網站上揭露


可惜在這個探索不會掃描Javascript與CSS裡面的內容,舉例來說假設有以下三個檔案,瀏覽1.html會被轉到2.html,然後2.html中的javascript中有描述隱藏的網頁hidden.html。這時候儘管第一次是瀏覽1.html,最後在Paros裡卻也只有2.html的部分,這是這個掃描器的問題,可能是考量到掃描器負擔因而沒處理這個部分,使用者應自行留意。


1.html
<script>document.location.href="2.html";</script>
2.html
<script>
var a="hidden.html";
</script>
hidden.html
我是隱藏的網頁

圖4 Paros不會掃描Javascript裡面的內容


4. 在進行網頁探索後,接著針對弱點來作掃描,這部分Paros提供了相當多的弱點供檢測,在使用前請先將系統預設錯誤訊息打開來檢查程式是否有問題,以免因為有弱點但Paros因認錯誤訊息以至於上線後還是隱藏著問題。

開起Paros工具列>Scan Policy來設定相關的掃描政策(圖5),如果是自己測試,也可以什麼都不管點選Scan All作全部掃描。特別提醒,在執行掃描前,請先備份資料庫與程式碼,因為Paros會做一些攻擊行為,所以也請勿對未授權的程式作掃描,以避免觸犯刑法(註)。


圖5設定相關的掃描政策

5. 在伺服器安全(Server Security)中,請勾選想要做的測試項目,在這裡可以對主機的訊息作搜集,並且從外部檢查SQL Injection、Cross-Site Script等常見的弱點,或是對特殊主機的檢測,這時如果你知道自己是哪個平台就請把其他的平台檢查關閉以加快速度並降低負擔。

圖6設定檢查常見弱點及檢測特定主機


6. 設定完後點選掃描(Scan)靜待幾分鐘,掃描時間取決於您檢查的規則。
掃描完成後可以看到警告視窗(Alerts)的結果,分為高中低的等級(圖7),可以參考弱點的嚴重程度來安排修補的優先順序。


圖7 掃描結果依照嚴重等級排序


Paros可以產生報表(圖8)來供程式設計者或驗收人員參考,但是報告中會詳細的列出弱點狀況與攻擊指令,建議還是不要外流出去以免造成問題。儘管是免費軟體,但Paros表現相當出色,尤其是列出弱點攻擊指令讓測試人員可以快速的重現弱點,它經常是滲透測試人員的優先選擇。此外,現在的黑箱滲透測試工具不管是商業版或免費版的都有很多,而表1比較3個目前知名且專業滲透測試人員也常使用的免費工具,一般驗收人員可參考以下資訊來選擇適合自己的軟體。


圖8 Paros可自動產生報表



微軟平台可用CAT.NET做程式碼審查


若使用Visual Studio 2005或是2008的版本開發,可以善用Microsoft Code Analysis Tool .NET (CAT.NET) v1 CTP。它是Visual Studio的外掛,可以針對C#、VisualBasic .NET、J# 找出8類常見的程式安全性弱點(見圖9)。
跨站腳本 Cross Site Scripting (XSS)
SQL注入 SQL Injection
指令碼注入 Process Command Injection
文件規範化 File Canonicalization
異常錯誤訊息 Exception Information
LDAP注入 LDAP Injection
XML注入 XPATH Injection
重新導向到用戶控制站台 Redirection to User Controlled Site

1. 安裝完CAT.NET後,到Visual Studio工具列>工具>CAT.NET Code Analysis

圖 9設定規則


2. 在設定規則的視窗中,您可以選擇這次要檢測的項目(圖10),目前可以檢查的有以下8個常見且重要的弱點。

圖10 CAT.NET可檢測8種常見弱點


3. CAT.NET也提供了指令版的介面,如果您的專案比較大,大到圖形介面要等很久,可以考慮使用它。
指令介面掃描完後會在目錄下自動產生兩個報告檔:MicrosoftACECodeAnalysisReport.xml與report.html


4. 工具視窗在掃描完,可以檢視掃描結果與問題程式碼,在左邊有問題的項目點兩下,右邊會出現問題的描述與出錯程式碼(圖11),它會直接幫您帶到出錯的程式碼讓您修改。 


5. 掃描完結果可以存成Excel或是html來作報告使用,驗收單位可以利用這報表來審查程式品質,也可以在黑箱工具之外,透過此工具再檢測一次交付程式的安全性。這工具雖然在報表、弱點檢測及資料流分析模型無法與商業的原碼檢測產品相比,但CAT的優點是可以檢測時下流行的弱點攻擊,找出可能問題發生點並直接對應到Visual Studio進行修改,在欠缺資安專家或商業軟體檢查的專案中,CAT無疑是一大福音。


針對Visual Studio 2010版本,微軟在2010年2月發布CAT.NET 2.0 Beta,檢查規則增加到55個,降低誤報的程度,新增規則阻擋XML 注入攻擊…等,相信CAT會成為微軟開發者一個很重要的外掛程式。但目前CAT.NET可能正在修正,所以目前2.0 Beta連結失效,如有需要請關注http://msdn.microsoft.com/en-us/security/dd547422


結語


本文介紹免費工具,為程式驗收作安全把關,驗收人員可以要求委外廠商修正它或解釋弱點的合理性,而程式人員可以利用這幾個免費的工具來提升自己程式的安全品質到一定程度,它可以讓程式人員更有勇氣面對預計今年中旬推出的個資法施行細則。

註:讀者若利用本文之工具測試未授權電腦,將觸犯中華民國刑法第三百五十八條「無故輸入他人帳號密碼、破解使用電腦之保護措施或利用電腦系統之漏洞,而入侵他人之電腦或其相關設備者,處三年以下有期徒刑、拘役或科或併科十萬元以下罰金。」
本文作者熟悉微軟平台及網頁安全、滲透測試技術