[源代碼審計]甲方公司安全源代碼審計策略和案例分析


YS安全源代碼審計策略和案例分析

1、前言:

         一般來說,白帽子或開發人員都清楚一條安全開發原則:一切外部輸入數據都是不可信的!就是說所有的外部輸入數據在使用前都應該經過有效性驗證。所謂的外來數據包括但不限於:網絡數據、文件IO數據、終端輸入數據和環境變量等等。本案例並沒有特別不一樣的地方,同樣是由於未對外來數據進行校驗導致的問題,但本案例並非在於說明漏洞本身,而在於強調作為甲方公司的白帽子和第三方白帽子在審計源代碼時的一些區別,鄙人認為兩者之間應當存在如下重要區別:

1)、第三方白帽子的源碼審計活動一般聚焦於尋找真實存在的漏洞。因為一般只有這樣子,才會更容易被受審計的公司接受,而且白帽子也更加具有成就感和存在感。

2)、甲方公司的白帽子則應當更加聚焦於審計開發人員是否按照當初的安全設計來實現,是否遵循安全開發規范來進行開發!

如此進行區分,理由如下:

1)、通過源代碼尋找漏洞本身需要消耗非常大的投入,甚至對審計人員有非常高的要求。比如,某產品對外來數據進行了非常復雜的黑名單過濾,那么,對於水平一般的白帽子可能很難找出一個繞過該黑名單的並證明漏洞存在的方法,但對於高水平白帽子是完全有可能的。

2)、通過源代碼尋找漏洞本身是一種短視的行為。同樣地,即便當前高水平白帽也找不到繞過當前黑名單過濾規則的方法,但隨着技術更新迭代,產品特性也不斷變化,某天就可能出現新的繞過的方法,這相當於留下了一個未知的隱患。

3)、通過源代碼審計安全開發規范消耗則要少很多,只需要審計人員熟悉安全開發規范即可。比如:當審計人員發現未使用白名單的方式過濾外來數據,那么可以直接判定無法通過審計,審計人員也無需耗費腦力去尋找一個明顯存在的安全漏洞。

4)、通過源代碼審計安全開發規范是一種長期有效的方式。比如:白名單方式可以預防很多將來未知的黑名單繞過方式,相當於一次性做好。此外,通過檢查安全開發規范能夠不斷提升開發人員遵循安全開發規范的意識,可以讓開發人員意識到,只要遵循了規范就不會產生安全問題,也同樣減少了開發人員在安全領域的投入精力。

2、案例分析:

2.1、簡介

         YS使用第三方的IP位置查詢系統定位用戶的登錄地點,當發現用戶登錄地點異常時,將提示用戶登錄異常,同時也方便用戶查詢過去的登錄記錄,滿足用戶的安全需求。

2.2、風險分析:

         通過對源代碼進行審計,我們發現后台處理邏輯並沒有對第三方的查詢結果進行有效性驗證,而后直接將查詢結果插入數據庫,這里可能存在2個問題:

1)、第三方系統可能遭受攻擊,導致查詢數據被嵌入惡意數據。比如,如果查詢結果嵌入了惡意的JS代碼,那么當用戶登錄時,YS直接將惡意代碼從數據庫讀取並返回給瀏覽器,就有可能導致存儲型XSS攻擊。

2)、未來新開發的應用面臨同樣威脅。即便當前存在數據庫中的惡意數據並未被任何應用使用而未導致任何安全問題,但我們無法預測未來新開發的應用是否會使用到該數據而導致新的安全問題,因此實際上是存在一種未知的安全隱患。

         可以看到,雖然開發人員違反了“外來輸入數據必須經過有效性驗證”的安全開發原則,但是當前並沒有造成任何實際的安全問題,以上2點均只屬於一種安全隱患預測,但這種預測往往容易被第三方白帽子忽視掉,或者說被審計的公司並不能接受如此虛而不實的結果,但對於甲方公司來講,這才是一種長期有效的安全審計策略。

2.3、流程圖:

2.3.1IP所在地查詢:

image 

2.3.2、用戶登錄記錄查詢:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM