淡化攻擊實現過程 系統化解決應用安全問題才是王道
安全事件發生的最初階段,是“黑客”促使我們思考安全漏洞的危害–往往考慮的是直接危害,同樣我們最初的解決辦法當然是“頭痛醫頭腳痛醫腳”。同時,許多人對于黑客的行為感到相當好奇,偷窺欲望油然而生,許多人鉆研黑客技術往往就是因為好奇,現實當中有攻擊能力往往成為衡量一個人技術水平的“不成文共識”。本人對這些現象不否認但不支持也不贊成,這種觀念上的分歧的根源往往在于每個人站的角度不同使然。
如果你的職責是守護一個產品,確保它可以提供安全的服務給我們的客戶,我需要思考什么?先看一下,你同意以下觀點嗎?
1. 你學著黑客一樣在測試環境去攻擊我的產品,發現問題立即封住,這是我的主要職責
2. 你監聽用戶行為,發現惡意行為,立即堵住,同時找到惡意用戶的攻擊點,找找問題,如果有問題,封住,這是我工作的重要組成部分
3. 你的老板可能會認為我發現的問題越多,說明技術越好越用功,對產品的安全性越有信心
4. 你擔心當某一天,我再也無法發現產品的安全問題了,是不是我也就沒事兒了,輪到我下崗了
如果你同意或基本同意以上觀點,我覺得你所維護的產品發安全性相當危險,至少你沒有足夠的理由對你的產品的安全性足夠的放心。
再看一下以下觀點,你同意嗎?
1. 你研究黑客行為,目的是掌握潛在的安全漏洞的存在形式,以檢查本公司產品是否有類似問題
2. 你研究各種常見漏洞,目的是掌握漏洞的產生的根源,以便我系統的總結它的原因,系統化的統一在產品當中解決它
3. 你努力著試圖把各種漏洞的產生的根本原因總結到一起,抽象出共性,以使其變為規范,在產品開發過程當中以便程序設計與實現人員只要遵守規范,便可避免諸多潛在安全問題的出現
4. 你研究滲透測試目的不是用測試來發現所有的安全問題,而是用來檢查我以上三條是否需要完善
如果你同意或者基本同意以上觀點,至少你所維護的產品的安全性是可控的,可度量的,內心是有底的,如果你敢大膽的說你的產品足夠安全,那可性度是相當高的。
最后,用一個例子來表明為什么要淡化攻擊過程實現:
如何發現XSS漏洞?我一句話就能說清楚:用一串帶有Javascript敏感的字符串來篡改替換HTTP請求頭當中的參數值,觀察HTTP響應里是否被返回,如果返回是否被正確編碼(叫轉義也行)的過程。
如此說來,發現一個有XSS漏洞的API的XSS問題對于一個普通的軟件測試人員也并非難事兒。一個簡單的反射式XSS問題,可能5分鐘就可以確定,但是,我要強調一下這個“但是”,這個XSS漏洞如何反變成可利用的可以實現攻擊的漏洞,這個過程將可能是1小時也可能是一個月,還有可能是1-2年!
對于我,一個企業的產品安全維護者,解決這樣的一個XSS問題可能也只需要5-10分鐘,如果讓我花1小時到2年時間來證明它的利用價值有多高,請問同行們,你覺得有意義嗎?
有一個群體的人會回答:有意義! 他們往往是非產品安全維護人員,可能是黑客產業鏈中的人,也可能是強烈的黑客技術的好奇者……,如果不幸的有我們同行在里面,我會覺得很不是滋味,
我理想中的同行們應該是這樣的:
我有能力成為黑客,但是我不會把時間浪費在“當黑客”這一行當上。