觀點

滲透測試是否值回票價?

2007 / 07 / 02
BRUCE SCHNEIER、MARCUS RANUM
滲透測試是否值回票價?

Bruce Schneier
有許多的安全專家認為滲透測試是網路安全中不可或缺的一環,並且沒有定期執行滲透測試將無法保證安全。有另外一派的安全專家會告訴你執行滲透測試是在浪費時間以及金錢。這兩派的觀點都是錯的。滲透測試實際上比這兩派所講的更加複雜和細微。
滲透測試是一個廣義的名詞。它可以表示為了證明您的能力而入侵進入網路。也可以表示為了列出弱點而嘗試入侵進入網路中。滲透測試可能涉及遠端攻擊、對資料中心的實體滲透或者社交工程攻擊。可以是使用商業或者自製的弱點掃描工具,或是依靠有技能的白帽駭客。滲透測試可能實際上沒有攻擊任何東西,而只是驗證網路軟體的版本編號以及弱點修補狀態來推斷可能的弱點。
滲透測試可能會花費很多金錢,而且在測試結束後得到一本厚厚的測試報告。不過這也是問題所在。您根本不想拿到一本厚厚記載著您的網路有多麼不安全的測試報告。雖然是因為您沒有足夠的預算來修補所有的弱點,可是這份文件卻會被用來讓某個人好看。甚至更遭的狀況下反而會引發其他刑事訴訟的問題。您是否真的想被律師面對面的質問,為何您會允許您的網路中存在報告中所提及的大量弱點,並且不去修正它們?也許處置滲透測試報告最安全的方法就是在閱讀後銷毀它。


雖然無法證明,但是提供足夠的金額以及時間,滲透測試可以在任何網路中找出弱點。如果你不打算修補所有未遮掩的弱點,找出所有的弱點是沒有意義的。您還是將這些預算用在其他網路安全解決方案會比較好。
但是有一個方式可以有效的進行滲透測試。如同我這幾年所講的安全是由三個部份-保護、偵測和回應-所構成的,以及為了達成良好的安全水準必須兼顧這三個部份。在進行任何安全行為之前,您應該先評估您的安全。如果做得好,滲透測試就會是安全評估中重要的一環。
建議只對一般常見的重要弱點進行滲透測試,例如SANS Top 20所列的。如果存在任何一個Top 20的弱點,您真的應該修補這些弱點。
您可能會覺得滲透測試真是一門古怪的生意。除了安全產業之外是否也有類似的模式呢?當然有,軍事上一直都會執行一系列的軍事操演,但是商業模式中是否也有類似的狀況呢?我們會僱用竊賊來嘗試潛入我們的倉儲嗎?我們是否會和安全公司簽訂合約要求他們嘗試誘拐我們的重要主管嗎?我們是否會嘗試對自己的員工進行詐欺嗎?不,我們不會。
因為系統的複雜性以及對於系統缺乏暸解使得滲透測試變成一門大產業。我們瞭解竊盜、誘拐以及詐欺,但是我們不瞭解電腦犯罪。我們不清楚今日的危機是什麼,也不瞭解未來的威脅是什麼。因此我們相信滲透測試人員瞭解甚麼是威脅而僱用他們。
有兩個理由可能會讓你實施滲透測試或弱點掃描。第一,您想要知道目前環境中存在哪些弱點並預期將之修補。第二,您想要一份夠份量又嚇人的報告來告訴主管應該在網路安全上花費更多預算。如果您沒有以上兩個理由,我提供一個免費的滲透測試讓你節省下龐大金額:您本身就是弱點來源。現在就開始針對自己就是弱點來源這件事做點補救措施吧。

Marcus Ranum
只有滲透測試人員認為滲透測試是一個好主意。除此之外,我認為滲透測試這個概念有著很嚴重的問題。當然,透過滲透測試可以讓你感覺安心一點,可是我認為滲透測試的最大價值只是堵住稽核人員的嘴或者是用來嚇管理者說,「你看!真的有人可以入侵到我們的系統中!」為了平息管理者的驚訝,管理者就必須給你大量的金額、時間和人力。近來像是PCI-DSS以及Sarbanes-Oxley法規都可以被看成滲透測試人員的永久工作合約。
在我的詢問下,我母親在1969年就已經教導我對於電腦安全所應該知道的事。「如果您的朋友全都跳下懸崖,你是不是也要跟著跳?」很多人都會做的事,並不代表這件事是明智的。滲透測試的問題是和一般人所期望的測量有著差異。Gary McGraw把滲透測試又稱為「不良測量器(badness-ometer)」,指標的一端指出網路的不良狀態,可是卻沒有人知道另一端指的是什麼。
更富有邏輯性的看法是滲透測試要舉出反證-否定系統沒有任何漏洞。只要是學過邏輯的人都會知道不應該提出反證;您應該做的是提出正面的證據:我們的滲透測試人員不知道該如何提出正向的事物。您們所做的只是付出大筆的經費來證明滲透測試人員有多厲害而已。
滲透測試唯一有用且糟糕的結果就是:滲透測試人員入侵成功並且明確的證明系統的安全是很糟糕的。然後您有一半的機會被指示將弱點修補起來。可是悲哀的事實是:組織找出一堆早已經知道的安全問題,而且這些透過外人所找出來的弱點也不會被改進。


那麼什麼是滲透測試可行的模式呢?這是顯而易見的,在良好的安全設計下來驗證安全是否適當以及正確的被運作。如果您的主管是因為不相信或者認為您很笨而雇用外面的人,那麼就雇用外面的人來協助檢視您的安全設計以及改進安全設計;那麼您就會有實際需要測試的東西了。這樣聽起來不是才符合科學性以及邏輯性嗎?您的安全設計是您的計畫;然後驗證實作是否符合設計,記錄計畫的缺失並且在必要的時候進行重新評估。滲透測試開始時對您的網路是一片未知,因此會使用ping掃描(ping sweeps)以及通訊埠掃描(port scans)來取得線索。我有個壞消息要告訴您:如果您的網路是如此的不受控制到需要透過掃描來找出有什麼裝置存在網路中,那麼您的不良測量器就已經指在很糟的指標上。您要找的資訊是非常多的,包含在TCP/IP環境中非法出現的裝置、在無線網路基地台上被後門感染的非法使用者、被感染鍵盤側錄器的個人電腦以及完全開放的主機。
這是我認為滲透測試讓我感到驚嚇的部分:他不是用來了解您的網路中什麼應該發生,什麼不應該發生的替代方案。滲透測試只是舊哲理「發現一處,修改一處(penetrate and patch)」的再用而已-當發現錯誤時針對這個錯誤進行多一層的防護,然後這個錯誤就會自然的恢復。發現一處,修改一處這個方法是無用的。
根本來說,大部分的安全問題都是起因於設計的不良,而且不可能從不良的設計中拿掉所有不好的部份,整個設計就會變成好的。透過滲透測試只能幫助您找出一部分的缺點,而且這也是一個無止盡的惡性循環,因為永遠會有更大的不良缺失!這對您來說是壞消息,但是對您的滲透測試人員來說卻是好消息。

Marcus Ranum現任職於Tenable網路安全公司的CSO,也是知名安全技術的開發人員、老師、及講師。Bruce Schneier 現任職於 Counterpane網路安全公司的 CTO 及 Beyond Fear: Thinking Sensibly about Security in an Uncertain World這本書的作者。