王頡 王厚奎 鄭明 萬振華

摘? ?要:軟件安全開發是近年來我國網信行業積極實踐的網絡安全保障措施,旨在軟件系統開發過程中降低安全漏洞的存在。然而,軟件安全開發人才匱乏是當前實踐面臨的關鍵問題。文章依據行業有關軟件安全開發人員崗位和技能的典型要求,介紹在當前網絡安全體系下培養軟件安全開發人才的關鍵思路和核心內容,最后說明在軟件安全開發人才培養方面獲得的初步成效。
關鍵詞:軟件安全開發;軟件安全開發生命周期;人才培養
Abstract: In recent years, software secure development is actively practiced in China's network and information industry as a network security assurance method. It is aiming to reduce the existence of security vulnerabilities in the software development process. However, the shortage of secure software developer is the vital problem for practices. According to the typical requirements of software secure developers' job positions and skill requirements from the industry, this paper presents the key ideas and core contents of software secure development talent cultivation under the circumstances network security system, then, we describes the initially obtained results.
Key words: software secure development; secure software development lifecycle; talent cultivation
1 引言
近年來,隨著國家對網絡安全的高度重視,軟件開發過程中的安全保障正成為網信行業關注的熱點。在2019年12月1日正式實施的《網絡安全等級保護條例2.0》中,對軟件“自行開發”和“外包開發”也提出了明確的安全要求。作為軟件開發過程中安全保障的行業最佳實踐流程,“軟件安全開發生命周期(S-SDLC或SDL)”正逐漸被我國金融、能源、互聯網等關鍵信息基礎設施行業實踐。通過S-SDLC,相關單位能夠在軟件系統開發過程中管控軟件研發流程、減少軟件安全漏洞、降低軟件安全威脅,從而提升軟件質量,并能夠大幅地降低因軟件系統漏洞被黑客利用而造成網絡安全事件發生的可能性。
為了做好S-SDLC的落地實踐,相關單位往往需要從軟件安全開發的制度要求、開發流程、工具配置和人員配備等多方面做好保障工作。然而,普遍現象是軟件開發人員缺乏軟件安全開發技能,網絡安全人員不參與軟件開發過程,大部分單位不具備專業的軟件安全開發人員。
目前,我國網絡安全人才缺口數量巨大,據不完全統計,2020年我國需要各類網絡空間安全人才約140萬人[1]。職業培訓已成為保障網絡安全人才隊伍能力的重要手段[2],而在高校教育方面,為滿足市場用人的需求,網絡安全人才培養正在從基礎知識學習型向實用型[3]、實戰型[4]轉型。軟件安全開發作為網絡安全體系下的一個細分領域,是網絡安全專業與軟件工程專業的交叉,尚未成為專門的專業或課程在我國高校內普及。部分對軟件安全逐漸重視的高校,主要通過培養軟件漏洞挖掘、惡意代碼分析人才作為軟件安全人才[5],而不是培養能在軟件開發過程中主動保障軟件安全的軟件安全開發人才。因此,我國網信行業對網絡安全體系下的軟件安全開發人才建設提出了新的要求,迫切需要培養軟件安全開發人才,促進我國網絡安全體系發展。
本文結合國內網信行業對軟件安全開發人才的實際需求,分析了當前軟件安全開發人才需具備的主要專業知識和技能,并提出了軟件安全開發人才培養的思路和核心內容。
2 對軟件安全開發的認知
軟件安全開發的思路是在軟件開發生命周期各階段采取必要的安全考慮和相應的安全措施,盡管不能完全杜絕所有的安全漏洞,也可以做到避免和減少大部分常見安全漏洞[6]。該思路有助于在各類信息技術產品研發過程中為網絡安全保障起到關鍵作用。
軟件安全開發方法繼承了系統安全工程的思想[7],以提高軟件產品的本質安全為目標,通過在軟件開發生命周期的各個階段融合安全標準、安全流程、安全工具和具備能力的軟件安全開發人員,防止因設計、開發、發布、升級或維護過程中的缺陷而產生不該有的軟件漏洞或脆弱性,也可防止由不同軟件之間相互集成而產生的軟件供應鏈安全問題[8]。
3 對軟件安全開發人才的典型要求
3.1 軟件安全開發崗位行業需求
根據近年網信行業對軟件安全開發崗位的招聘需求,軟件安全開發人才主要從事五個方向的工作。
(1)SDL流程建設:主要負責推進企業SDL體系建設的規劃與落地,并參與軟件的安全開發保障工作。
(2)安全架構設計:主要負責對軟件建立威脅模型,從安全角度設計和評審軟件架構。
(3)軟件代碼審計:主要負責對軟件源代碼進行審計,識別軟件程序代碼中的安全缺陷。
(4)軟件安全測試:主要負責對軟件進行黑盒、灰盒或其他技術方面的安全測試,檢測軟件存在的安全缺陷。
(5)人員培訓:負責定期對公司員工進行軟件安全開發方面的培訓,包括:安全意識、安全編碼等內容。
3.2 對軟件安全開發人才的綜合要求
結合軟件安全開發崗位信息和行業中的實際情況,軟件安全開發人才需要掌握或具備的意識和技能如圖1所示。
(1)開發技能指軟件安全開發人員熟悉某種主流開發語言,了解相關的開發框架、構建工具、配置管理工具,并理解CI/CD、DevOps、DevSecOps理論和機制。
(2)軟件安全開發意識是指軟件安全開發人員在軟件開發活動中為保障軟件安全所具備的思想意識。
(3)軟件安全開發技能指軟件安全開發人員在軟件開發活動中應掌握和應用的安全開發技能,包括避免代碼安全風險的程序編碼和代碼審計技術、基于安全需求和安全架構的安全測試等。
(4)軟技能指軟件安全開發人員具備良好的溝通表達能力、學習能力、團隊協作精神,并具有項目管理經驗。
4 軟件安全開發人才培養的核心內容
4.1 人才培養的思路
開發技能和軟技能是軟件安全開發人才培養的根基,通常可以在學歷教育和工作實習過程中初步獲得并逐步掌握。而作為軟件安全開發人才培養的核心內容,軟件安全開發意識和技能在大部分學歷教育中缺失。因此,軟件安全開發人才培養需要在實際工作、職業教育或學歷教育輔助的學習過程中重點培養。
4.2 軟件安全開發意識培養
軟件安全開發意識培養的主要涉及五方面內容。
(1)軟件安全開發與網絡安全之間的關系和影響,讓軟件開發人員明確認識到“因軟件開發過程中錯誤開發行為而形成的各類軟件缺陷或錯誤,是造成網絡安全事件發生的重要前提條件之一”。
(2)常見的軟件安全風險[9]和軟件安全錯誤[10],如注入、XSS、CSRF、不恰當的身份驗證、使用硬編碼憑據等,了解開發過程中造成這些風險和錯誤的原因和正確編碼思路。
(3)正確的軟件安全設計方法[11,12],如使用安全框架和庫、安全的數據庫訪問、驗證所有輸入、處理所有錯誤和異常等,避免在軟件設計過程中的錯誤安全設計。
(4)軟件安全開發生命周期流程,對整個流程體系及其關鍵實踐[7,13]的認識。
(5)法律法規和標準規范,包括《中華人民共和國網絡安全法》《網絡安全等級保護2.0》《ISO 27001》等。特別是在《網絡安全等級保護2.0》[14]中,第二至第四級的“安全建設管理”部分對自行軟件開發和外包軟件開發提出了明確安全要求。
針對軟件研發企業的安全開發意識培養,可將上述內容作為企業軟件安全開發能力建設的重要組成部分,并結合企業的內部培訓舉措和網絡安全文化建設(如企業內部的網安宣傳周、軟件安全開發大賽),提高開發人員的軟件安全開發意識,促進開發人員在軟件研發過程中保障軟件安全。
4.3 軟件安全開發技能培養
軟件安全開發技能培養的主要涉及四方面內容。
(1)安全架構設計技能。掌握威脅建模的方法,能通過威脅建模分析軟件的安全威脅及對應的安全措施,作為后續安全實踐的依據;同時,掌握行業主流軟件成分分析工具的操作方法,能分析、定位軟件架構中自帶有安全缺陷的第三方組件或開源組件。
(2)安全編碼技能。理解主流開發語言的安全編碼規范,并能在編碼過程中遵循安全編碼規范的要求。
(3)代碼審計技能。掌握行業主流代碼審計自動化工具的操作方法,能將代碼審計自動化工具的審計規則與安全編碼規范進行匹配,在軟件開發過程的編碼、測試階段實現對代碼的白盒安全檢測,并能基于檢測結果開展結果分析與缺陷修復。
(4)安全測試技能。掌握行業主流灰盒、黑盒或模糊安全測試自動化工具的操作方法,在軟件開發過程的測試階段識別軟件的代碼級或功能級安全風險和安全缺陷,并能基于檢測結果開展結果分析與缺陷修復。
通過讓軟件研發企業不同角色的開發人員具備相應的技能,確保開發人員在各自負責的開發任務中落實安全開發要求,并能與開發團隊中的其他角色聯動與配合,實現安全需求和安全設計的成果與要求貫穿于整個軟件安全開發生命周期,并通過安全編碼和安全測試進一步驗證和落地。
5 培養效果
本文研究團隊自2016年起開展軟件安全開發課程的建設和授課工作,結合自身經驗,以軟件開發和網絡安全從業人員和專業學生為對象,提出了“意識+技能”的軟件安全開發課程體系。根據不同企業的需求和高校的特點,為國內金融、通訊、IT、地產等行業的多家企業和華南、華中、華西多所高校提供了不同級別的軟件安全開發人才培養服務,累計授課超千人,為企業落地實踐軟件安全開發提供了間接參考。
6 結束語
軟件安全開發人才培養是一個多理念、多技術、多角色相融合的系統性工程,培養的內容和方法也將隨著軟件開發、網絡安全及相關技術與政策的發展而不斷擴展和改變。目前,軟件安全開發被普遍認為是網絡安全體系下的細分領域,但是軟件安全開發領域的人才培養較網絡安全人才培養而言更加任重而道遠。因此,需要我國主管部門、用人單位、高等院校和軟件安全開發技術提供單位的積極推進和共同建設,不斷普及、不斷擴展、不斷累積,逐步形成普及性的軟件安全開發人才培養體系。
參考文獻
[1] 李建華.李建華:網絡空間安全人才培養發展戰略思考[J].河南科技, 2016(11).
[2] 位華,王星.網絡空間安全人才職業培訓的實踐與探索[J].中國信息安全,2018(12):62-65.
[3] 樊佳,李陽,楊學敏.建立網絡信息安全實用型人才培養模式[J].信息安全研究,2018(12):1127-1129.
[4] 張鎮,賀新朋.實戰型安全人才培養框架設計[J].信息安全研究, 2018(12):1119-1123.
[5] 趙磊,彭國軍,劉丹,王麗娜.網絡攻防賽導向的軟件安全課程創新性與實踐性建設[J].計算機教育,2019(7):163-167.
[6] 吳世忠,李斌,張曉菲,梁洪亮.軟件安全開發[M].北京: 機械工業出版社,2016.
[7] 宋明秋. 軟件安全開發—屬性驅動模式[M]. 北京: 電子工業出版社,2016.
[8] 王頡,萬振華,王厚奎.從軟件安全開發生命周期實踐的角度保障軟件供應鏈安全[J].網絡空間安全,2019(6): 19-24.
[9] OWASP. OWASP Top 10 [EB/OL]. https://owasp.org/www-project-top-ten/.
[10] SANS. CWE/SANS TOP 25 Most Dangerous Software Errors [EB/OL]. https://www.sans.org/top25-software-errors.
[11] OWASP. OWASP ProActive Controls [EB/OL]. https://owasp.org/www-project-proactive-controls.
[12] IEEE Center for Secure Design. Avoiding the Top 10 Software Security Design Flaws [EB/OL]. https://ieeecs-media.computer.org/media/technical-activities/CYBSI/docs/Top-10-Flaws.pdf
[13] Microsoft. Microsoft Security Development Lifecycle [EB/OL]. https://www.microsoft.com/en-us/securityengineering/sdl/.
[14] GBT 22239-2019 信息安全技術 網絡安全等級保護基本要求[S].2019.