https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/
https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/

觀點

輕鬆看懂CWE/SANS Top 25

2010 / 04 / 02
余俊賢
輕鬆看懂CWE/SANS Top 25

常有人會問,什麼OOXX工具是否符合SANS Top20還是 OWASP Top 10,那我們企業是否要照單全收?或者為什麼要有SANS Top 25 、SANS Top 20 、OWASP Top10 之類的規範?答案當然是不需要照單全收,而是因時因地制宜,譬如依照不同的IT環境,這些Top N項目不見得全部都適用,例如公司中沒有採用Unix相關的作業系統,有些只會出現在特定環境組態的風險就不會出現。而這些規範是幫助我們了解企業資訊環境所面臨的威脅與潛在問題,讓企業在決策時有一個比較的參考水準,因此就衍生法規遵循(Compliance) 的工具需求以及作法,例如在滲透測試或弱點掃描時就會以 Top N的報表呈現方式,讓業主可以清楚地了解自家環境的資安級數。

SANS與CWE在2月公布了新版的Top 25最危險的程式錯誤,總共分為三大類型:元件之間不安全的互動(Insecure InteractionBetween Components)、具風險的資源管理(Risky Resource Management)以及防禦不周全(Porous Defenses)。入選的時候有41項,後來評比之後選出最高風險的25項,排名是在此時空環境之下的先後次序,在運用這份文件時,應該著重了解其中的精髓以及他要傳達的意義。本文希望讀者透過輕鬆地運用 SANSTop 25的方法,協助企業營造更完善的資安環境。協助發展 Top 25的專家認為現在面對網站應用系統的攻擊,必須從系統設計、開發過程就具有對抗常見攻擊的安全程式,若是程式本身設計與實作忽略安全,要找到攻擊網站的弱點、入侵資料庫就變得更容易。

面面俱到的SANS Top 25輕鬆上手
在SANS Top 25的文件中,非常貼心地設計了幾個章節項目,包含建議對象與閱讀方式,哪些角色應該閱讀哪些章節,閱讀的順序等。適合了解的人包含:剛開始接觸安全議題,可以從25項的摘要列表開始,接著修補方式依照您熟悉的程式語言進行了解,這樣可以很快地知道如何從簡單的修正方式,來避免常犯下的安全錯誤。當然也可以僅挑選您有興趣的重點項目。其他角色包含:對資安熟稔的程式設計人員、軟體專案經理、軟體測試人員、軟體之使用者、教育訓練講師等,幾乎涵蓋所有相關角色,企業同時也可以運用此文件作為內部作業流程的參考範本。其內容包含25項常見危險錯誤的描述、該項錯誤所造成的後果、矯正的成本、偵測的難易度、攻擊頻率與攻擊者之熟稔度(請見圖1-A)、技術資料說明、程式碼範例、偵測方法(請見圖1-B)與預防方式(請見圖1-C),尤其是預防矯正方式中還告訴各位在軟體發展生命週期(SDLC)中的甚麼階段該介入,該做甚麼事情。像需求發展確認階段、架構與設計、建構實作、測試與上線營運的重點指引。除上述重要資源,此份文件還提供下述內容:

1. 教育訓練之重點提示,學校可以參考此文件之作法教學,讓學生都知道該知道的安全程式方法與其源由。Top 25 也很貼心地列舉在程式設計人員教育訓練可強調之項目與內容,按照藥方來調理體質,應該可以獲得不錯的成效。請見http://cwe.mitre.org/top25/profiles.html#ProfileEduc

2. 依照程式語言分類的弱點項目與相關性。語言項目包含C/C++、Java、PHP、Perl。程式範例涵蓋更多語言。
3. 黑白箱工具對於該項弱點的效用分析。利用工具或人工,所做的白箱與黑箱分析檢驗,能夠涵蓋Top 25 高中低或者是有限的程度。
4. 將此25項弱點依照軟體開發人員認為最重要的順序排名,也依照軟體用戶/客戶心中的重要性排序。可看出程式開發人員建立安全程式撰寫實務(security practice)之優先順序,與客戶最重視的優先順序,其中是有落差的。似乎問題的答案呼之欲出。
5. 依照技術面的衝擊,包含惡意程式碼執行、資訊洩漏、取得高權限、繞過(Bypass)安全防禦機制、阻斷服務。

如何填補文件到現實的落差
通常一份好的文件或參考指引,到真正能夠發揮效用,這中間有實務上的落差的。原因從大而小不外乎組織文化無法調整接納、人員能力訓練不足或人力不足空有文件亦無發揮之處、現有流程難以更動或未標準化,以及缺乏合適的工具或服務輔助完成。因此,在運用SANS Top 25時,可能會遭遇到理想與現實的重大斷層,要達到善加利用人家現成天上掉下來的禮物,還得有一套漸進、穩扎穩打的戰略。(見圖2)

一般會建議先針對您所使用的相關語言或資訊環境涵蓋哪些問題項目,做好對自己的了解;然後利用弱點掃描、滲透測試或程式碼檢查的方式先找出問題,進行體檢與評估;接著SANS Top 25就可以派上用場,參照其計畫落實如何防禦及偵測涵蓋項目;最後則回到強化人員、流程、工具及組織文化調整,人員訓練可以參考表2,並且定期去稽核確保是否落實以上項目。發揮 Due Care, Due Diligence的精神持之以恆。