安全開發生命週期的管理是保障互聯網企業業務正常運營的重要舉措,直接關係到企業線上業務運行的安全性。而企業辦公安全涉及的安全隱患則更加複雜多樣,各種數據泄露、人員違規、外部入侵、物理安全等問題數不勝數。
一、安全開發生命週期
互聯網公司的SDL必須和現有的CI/CD(持續集成/持續部署)系統(如IDE、Gitlab、Jenkins、JIRA等)集成才能產生較好的效果。SDL的建設必須置於敏捷開發、持續交付、技術運營之中,也就是要符合安全融於設計的思想。
SDL在實際落地中大體上可以分爲4個階段:計劃階段
、編碼階段
、測試階段
、部署階段
。
1.1 計劃階段
計劃階段需要做的工作有明確安全需求,進行安全設計、威脅建模、供應商安全評估、安全培訓等。安全需求需要融入軟件需求度量、UML建模、條目化項目管理等工作中。
安全設計原則包括:
原則 | 解釋 |
---|---|
最小化攻擊面 | 儘量減少系統脆弱面的暴露 |
建立默認安全機制 | 在初始情況下,系統的相關設置應該默認是安全的 |
執行最小權限原則 | 建議賬戶具有執行其業務流程所需的最少權限 |
執行縱深防禦原則 | 以更多不同的控制措施處理同一個風險 |
安全處理異常事物 | 正確處理程序異常 |
應對第三方的不可控情況 | 應對外部系統不可控情況的安全處理措施 |
職責分離 | 針對不同管理角色做權限分離 |
避免安全保密化 | 關鍵系統的安全性不應該只依賴於保密 |
保持安全簡單化 | 業務邏輯應儘量簡單有效 |
正確修復安全問題 | 找出產生問題的根本原因,修復徹底,並進行安全測試 |
威脅建模工具:
SeaSponge
是Mozilla提供的開源web威脅模型建模工具,通過瀏覽器就能很方便的建立web威脅模型。
Threat Dragon
是由OWASP提供的免費開源威脅建模工具。
Microsoft Threat Modeling
是微軟提供的免費威脅建模工具。
第三方安全評估:
可以使用Google開源的VSAQ
(供應商安全評估調查問卷)評估工具。
安全培訓:
安全培訓是一項長期的工作,從員工入職開始就應該進行。
1.2 編碼階段
編碼階段的主要工作有:
1、建立安全編碼規範
2、靜態源代碼安全分析
3、開源組件安全掃描(OSS)
4、安全過濾庫&中間件
5、安全編譯檢查
公開的安全編碼規範參考:
OWASP Secure Coding Practice
IDE代碼檢測插件:
Java編碼規範方面的插件:P3C IDE
Java漏洞檢測方面的插件:Findbugs
及繼任者Spotbugs
.NET漏洞檢測方面的插件:Puma Scan
支持C/C++的插件:cppcheck
開源組件安全掃描(OSS)工具:
OSS方面的商業產品:BlackDuck
開源授權協議合規檢查產品:FOSSology
組件漏洞檢查方面的開源產品:Dependency-Check
(可以結合maven或Jenkins使用)
組件漏洞檢測產品:synk
(可以掃描node.js nmp、ruby、java依賴中的漏洞)
依賴方面的安全檢查最爲豐富的是SourceClear公司的:EFDA
安全過濾庫&中間件:
常見的java安全過濾庫:ESAPI
Node.js的web安全過濾庫可以參考:egg-security
瀏覽器端的過濾庫有:DOMPurify
安全編譯檢查:
通過Visual studio編譯選項中的/GS
選項檢查緩衝區溢出,/guard:cf
選項檢查控制流安全。
iOS APP安全編譯選項有-fobjc-arc
、-fstack-protector-all
、-pie
1.3 測試階段
1.3.1 自動化安全測試
自動化安全測試又包括靜態應用安全測試(SAST)、動態應用安全測試(DAST)、交互應用安全測試(IAST)
靜態應用安全測試
即對應用進行白盒測試。
商業產品有:Fortify
、奇安信代碼安全衛士
開源PHP源代碼漏洞掃描產品:RIPS
、progpilot
針對Python、Ruby、Go語言的安全掃描的綜合工具:huskyCI
針對java的安全掃描工具主要有:spotbugs
以及相關插件fb-contrib
、find-sec-bugs
針對C/C++的安全掃描綜合工具:flawfinder
支持多種語言的綜合安全掃描工具:Infer
靜態應用安全測試的綜合平臺:SonarQube
動態應用安全測試
即對應用進行黑盒測試。
商業產品有:AWVS
、AppScan
、綠盟漏洞掃描器
開源產品有:Arachni
針對REST API自動化測試的產品:Astra
針對Web Service進行安全測試的產品:WSSAT
針對Android的開源DAST測試產品:Qark
交互應用安全測試
作用於應用內部的安全漏洞測試。
商業產品有:Synopsys Seeker
、Veracode
、CxIAST
針對PHP的開源產品有:PHP taint
、PHP Aspis
針對Java的開源產品有:security_taint_propagation
1.3.2 人工安全測試
代碼審計和模糊測試
人工代碼審計:OWASP代碼審計指南
針對協議的常用模糊測試工具:Peach fuzzer
(可以對各種文件和協議進行黑盒測試)
針對二進制漏洞的模糊測試工具有:Asan
、Tsan
、Msan
、UBsan
開源的Fuzz測試平臺有:OSS-Fuzz
web安全測試
web安全測試:OWASP安全測試指南
主要使用的工具:BurpSuite
、Fiddler
移動安全測試
移動安全測試:OWASP移動安全測試指南
開源的產品有:MobSF
Android人工測試的工具有:Drozer
、AppUse
、Xposed
、Frida
ios人工測試的工具有:needle
、iOSSecAudit
1.4 部署階段
部署階段主要保證開發的產品可以安全發佈,相關的工作有:證書密鑰管理、安全配置加固、操作審計、滲透測試。互聯網公司應建立安全可控的發佈平臺,保證配置的自動化,且保證發佈是可信和可審計的。
證書密鑰管理:
證書密鑰管理系統(KMS)主要用來負責API私鑰、雲IAM/STS證書、數據庫密碼、X.509證書、SSH證書、應用簽名證書、加密通信密鑰等的安全保存、發放和撤銷。這些證書密碼的泄露直接關係到公司的數據安全。
開源的KMS產品:Vault
操作審計:
主要保證發佈過程的可控和可安全審計。與操作審計配套的技術有DMS數據庫管理系統、堡壘機等。
DMS數據庫管理系統可用來負責互聯網公司統一的數據管理、認證授權、安全審計、數據趨勢、數據追蹤、BI圖表和性能優化,解決了以往運維和研發對數據庫訪問的不可控和不可審計的問題。支持MySQL的開源產品有:Yearning
堡壘機對運維操作進行記錄和追蹤,並對主機訪問提供細粒度和集中的權限控制,同時減少了關鍵業務主機對外的暴露面。開源的堡壘機產品有:JumpServer
、Guacamole
滲透測試:
通過對業務、系統、網絡的綜合滲透測試來保證業務上線後的安全,這是一個長期持續的過程。
二、企業辦公安全
辦公安全歷來是信息安全的薄弱環節,常見的威脅還有數據泄露、內部惡意人員、APT攻擊、病毒蠕蟲等。相比線上業務安全,企業內部辦公安全更爲複雜,如存在移動辦公、自帶設備BYOD辦公等場景。
2.1 人員管理
在員工入職前,企業就應該對員工進行背景審查、入職後應對其進行安全意識培訓,研發等崗位還應該進行專門的安全開發培訓,嚴格一點還應該進行考試。
宣揚企業安全文化,定期組織安全周、安全月等活動。應將安全違規的處理和安全審批流程等納入流程制度,並制定必要的處罰和KPI考覈制度。此外,還應當對各種辦公活動進行安全審計,對企業內部環境和外部業務服務進行合規審查,以滿足法律和行業規範的要求。
2.2 終端設備
企業應該部署集中管理式的AV殺毒軟件和EDR終端檢測與響應產品,以抵禦病毒和APT攻擊。開源的EDR產品有Facebook的Osquery
和Mozilla的MIG
。
重要業務部門應該部署DLP數據防泄露、DRM數據版權管理產品,防止企業關鍵資產(如數據、代碼、文檔)泄露。
現在使用移動終端工作的情況也很普遍,因此,移動辦公產品也應當加強管控,常見的移動終端安全產品有MDM移動設備管理和MAM移動應用管理。商業產品有IBM MaaS360
、SAP Mobile Secure
等,開源產品有flyve-mdm
等。
廣義的終端設備還包括門禁系統、打印和傳真系統、電話會議系統、視頻監控系統、Wi-Fi路由系統等,應當對這些設備也考慮安全方案。
最後,可以通過SIEM產品(如Splunk
)的UEBA用戶實體和行爲分析發現由用戶主動行爲或賬號被盜、終端被控制引起的異常安全行爲攻擊。
2.3 辦公服務
辦公服務是指企業內部的辦公支撐服務平臺,如企業郵箱、企業網盤、CRM、ERP、OA、HR、BOSS等系統和研發支撐平臺。
滲透測試是檢驗辦公服務的安全的有效途徑,通過滲透測試可以發現企業辦公網絡中的各種薄弱點,以便於不斷改進和完善自身安全。