【摘 要】 本文采用HFACS模型分析得到影響代碼編碼安全的21個人為影響因素,并分別采用AHP法、熵權法獲得21個人為影響因素的主觀權重、客觀權重,進而獲得綜合權重。“信息安全需求不明確”和“未正確實現”是權重值最高的2個人為影響因素,加強信息安全需求分析和建立嚴格的信息安全功能審查機制是減少代碼編碼安全問題、提升代碼編碼質量的關鍵環節。
【關鍵詞】 代碼編碼安全 HFACS AHP 熵權法
1 引言
當前社會處于信息時代,信息安全問題愈演愈烈,其中大部分信息安全問題都由應用系統自身的安全問題造成。美國國家標準技術研究院(NIST)對信息安全事件的跟蹤調查顯示,超過九成的信息安全事件都與軟件代碼有關。
當前學術界和產業界對于代碼安全的研究主要集中于代碼編碼安全,主流觀點認為在軟件編碼階段的主要問題集中在代碼自身缺陷、用戶惡意輸入和不期望的內存占用等,對于整個軟件而言其缺陷主要在于輸入驗證與表示、應用程序接口(API)誤用、安全特征、時間與狀態、錯誤處理、代碼質量、封裝和環境等安全漏洞。本文認為雖然代碼需要基于軟硬件系統才能真正發揮作用,即代碼編碼安全顯然受到軟硬件系統環境的約束,但代碼由人來編寫,編碼安全主要受到人為因素影響。當前的研究主要關注代碼編碼自身的問題,卻缺乏對造成代碼編碼安全的人為影響因素的相關研究。
本文首先采用人為因素分析與分類系統(Human Factors Analysis and Classi-fication System, HFACS)模型分析得到影響代碼編碼安全的人為因素指標體系,然后采用AHP-熵權法獲得各人為影響因素的影響權重,從而獲得對代碼編碼安全影響最大的人為影響因素,為提高代碼編碼質量提供有價值的參考。
2 基礎知識
2.1 HFACS模型
HFACS模型是一種被工業界廣泛使用的事故致因分析模型,在“瑞士奶酪”模型基礎上發展而來,最早被用于對航空事故中的人為因素分析建立系統、科學的分類體系。HFACS將導致事故發生的原因劃分為不安全行為、不安全行為的前提條件、不安全監督、組織文化4個維度并分別予以細化。目前,HFACS模型已經被廣泛應用于航空、航海、鐵路、醫療等領域。
代碼編碼安全主要受到人為因素影響,如果將代碼編碼視為業務執行的過程,則編碼人員產生不安全代碼的行為即可視為發生事故,因此本文采用HFACS模型進行事故致因分析。
2.2 AHP-熵權法
2.2.1 AHP法
層次分析法(Analytic Hierar-chy Process, AHP)是將與決策相關元素分解后進行定性、定量分析的一種層次權重決策分析方法。經典的AHP法采用1~9標度法,具體步驟如下。
步驟1:確立指標體系的目標層、準則層、記憶方案層,規定下層因素影響上層因素,且相同層級間元素相互獨立。
步驟2:構造判斷矩陣。對受到n個因素影響的對象,對其采用1~9標度法進行重要程度賦值,由此形成判斷矩陣A。
步驟3:計算各因素權重,根據矩陣理論計算各因素權重系數就是計算判斷矩陣的特征向量。
2.2.2 熵權法
熵的概念來源于熱力學,它可以表示系統的無序程度,當用于信息系統時,評價指標值越大,熵值越小,則該指標所攜帶信息越多,可對其賦予較大權重,反之亦然。熵權法具體步驟如下。
步驟1:對數據進行標準化處理。對具有n個被評價對象的矩陣X,每個評價對象有m個評價值,從而獲得n行 列的矩陣m,對矩陣Y的各元素進行標準化處理。
步驟2:對矩陣進行歸一化處理。
步驟3:根據歸一化后的矩陣計算各評價指標熵值。
2.2.3 AHP-熵權法
AHP法屬于主觀賦權法,更多體現評價專家的個人意志;而熵權法更注重獲得客觀信息,更多地體現信息系統客觀信息。為避免評價結果過于主觀或過于客觀,將AHP法和熵權法獲得的權重值取算數均值,以獲得各指標的組合權重,有效避免采用單一方法確定指標權重的局限性問題。
計算AHP法獲得權重值、熵權法獲得權重值的算數均值,將其做為AHP-熵權法獲得的最終權重值。
3 基于HFACS模型的人為影響因素
本文在對多個應用系統開發項目進行分析研究后,通過詢問一線編碼人員和項目管理人員、提請相關領域專家進行補充等方式獲得影響代碼編碼安全的典型人為因素,并采用HFACS模型將其劃分層次,將其定義為不良的組織管理、不良的監管、不安全行為的前提條件和不安全行為4個層級,并將不良的組織管理和不安全的監管合稱為管理層,將不安全行為的前提條件和不安全行為合稱為實施層,且將不安全行為的前提條件又細分為人的因素和環境因素2部分,HFACS模型及相應指標體系如圖1所示。
圖1 代碼編碼安全的致因分析HFACS模型
根據典型HFACS模型,將影響代碼編碼安全的影響因素劃分為不良的組織管理、不良的監管、不安全行為的前提條件和不安全行為4個層級。
不良的組織管理指項目管理層在項目實施中存在管理漏洞、管理人員未履行相應安全管理責任,本文將其細化為選擇技術路線不合理、未落實安全責任、違規外包、信息安全需求不明確、信息安全設計不足等具體因素,如果項目管理層選擇技術路線不合理,會導致項目實施過程中出現延期、返工等問題,最終影響代碼編碼質量;如果項目管理人員未落實安全責任,則會忽視項目實施中的眾多安全問題;如果項目管理層將項目違規外包,則難以保證承包方能夠保證代碼編碼質量,極有可能在代碼中引入安全缺陷;如果信息安全需求不明確或信息安全設計不足,則極有可能導致最終實現的功能模塊中信息安全功能不完備。
不良的監管指管理人員在項目實施技術、環境等方面存在決策失誤,以及對實施過程中的不安全行為、已知錯誤監管不到位。如果最終制定不合理的工作計劃,則據此對項目實施的監管最終會對代碼編碼質量產生負面影響;如果監管不到位,則可能導致信息安全缺陷不能被及時發現;如果監管違規,將合理的情況視為不合理或將不合理的情況視為合理,均會在代碼編碼過程中引入缺陷;如果不糾正已經發現的缺陷,則該缺陷將一直存在直至被重新發現處理。
不安全行為的前提條件指一切引起不安全行為最終導致事故的先兆因素,可將其劃分為人的因素和環境因素2大類。人的因素中,如果從業人員技術水平不足,則可能會在代碼中引入缺陷;如果信息安全意識薄弱,則代碼編碼人員和項目管理人員可能會忽視部分信息安全問題;如果人員身體狀況不佳或工作壓力過大,則可能導致人員技術發揮不穩定。環境因素中,設備故障、氣候不佳和工作氛圍差,都可能導致項目實施困難或在某重要節點出錯。
不安全行為指項目參與人員在項目實施過程中存在違規、違法行為。遺忘是非常有可能發生的不安全行為,因為一線編碼人員遺忘處理某信息安全問題,則勢必在代碼中遺留缺陷;未正確實現是指一線編碼人員認識到應當在代碼中實現安全功能,但因為技術能力不足或粗心等原因導致未能正確實現,從而在代碼中引入缺陷;判斷失誤是指當需在某處實現特定功能時,受技術水平或其他原因影響,未能選擇正確的實現方式甚至未予處理,從而在代碼中遺留缺陷;違規操作是指應采取合規、合理的實現方式,但受工期、技術等方面影響,采取了違反規定的實現方式,從而在代碼中遺留缺陷。
4 人為影響因素權重分析
4.1 AHP法獲得權重值
本文邀請專家根據1~9標度法對表1所示人為影響因素賦權,依次獲得影響代碼編碼安全的各級指標的判斷矩陣,按照上文所述計算步驟最終得到各指標的權重值如表1所示。
表1 依據AHP法獲得的各人為影響因素權重值
4.2 熵權法獲得權重值
本文通過邀請7位代碼編碼安全領域專家進行打分獲得各人為影響因素權重信息,如表2所示。
對表2中信息按照上文所述步驟,采用熵權法計算最終得到各指標權重值,如表3所示。
表2 人為影響因素的專家打分權重情況表
表3 各指標熵權值
4.3 AHP-熵權法獲得權重值
對表1和表3中各因素的權重值分別取算數均值得到如表4所示綜合權重值。
表4 人為影響因素的主觀權重、客觀權重和綜合權重值
AHP法獲得的權重值主要體現評價專家的主觀看法,因此稱為主觀權重;熵權法獲得的權重值主要體現信息的客觀信息,因此稱為客觀權重;綜合二者能夠避免評價結果過于主觀或過于客觀,因此稱為綜合權重。主觀權重、客觀權重和綜合權重的對比如圖2所示。
圖2 主觀權重、客觀權重和綜合權重對比
5 結果分析與防護對策
在“不良的組織管理”層級中,致因因素“信息安全需求不明確”的主觀權重、客觀權重和綜合權重分別為0.1325、0.0695和0.1010,其權重值位居第一;致因因素“信息安全設計不足”的主觀權重、客觀權重和綜合權重分別為0.0343、0.0748和0.0546,僅次于“信息安全需求不明確”因素;其他致因因素與“信息安全需求不明確”和“信息安全設計不足”相比,權重值相差較遠。因此,在組織管理中,明確信息安全需求和充分考慮信息安全需求的軟件設計是確保代碼編碼安全的重要前提條件,確保后續代碼編碼能夠順利進行,同時在代碼編碼過程中,項目負責人和其他利益相關人員應認真履職,全過程落實安全責任,不違規外包且選擇合理的技術路線,減少信息安全風險。
在“不安全的監管”層級中,致因因素“未糾正已知錯誤”的主觀權重、客觀權重和綜合權重分別為0.0493、0.0681、0.0587,其權重值最大;余下的“不合理的任務計劃”“監管不到位”和“監管違規”相互之間差值不大,且均與“未糾正已知錯誤”有較大差值。這說明在該層級中“未糾正已知錯誤”是造成監管失效的主要因素。因此在項目實施過程中,需要加強對已知信息安全問題的糾正能力,如果不能及時糾正已發現的問題,則勢必將越來越多的信息安全問題留在代碼中,導致代碼質量嚴重下降。
在“不安全行為的前提條件”層級中,致因因素“從業人員技術水平不足”“信息安全意識薄弱”和“信息安全培訓不足”的綜合權重值分別為0.0541、0.0517和0.0428,余下致因因素的權重值與上述致因因素權重值相比差距較大,因此在該層級中“從業人員技術水平不足”“信息安全意識薄弱”和“信息安全培訓不足”是導致不安全行為的主要前提條件。挑選技術水平高的從業人員、加強人員信息安全意識并強化信息安全培訓,是增強代碼編碼安全的有效途徑。
在“不安全行為”層級中,致因因素“未正確實現”的主觀權重、客觀權重和綜合權重分別為0.2449、0.0690和0.1570,顯著高于其他致因因素。因此該層級主要致因因素為“未正確實現”,即能夠認識到應實現必要的信息安全功能,但因種種原因最終未能正確實現相關功能。因此需要建立嚴格的功能審查機制,積極開展信息安全功能測試,督促從業人員重視對信息安全功能的研發工作。
以某軟件項目管理系統為例,其在代碼中存在文件上傳漏洞、不安全的加解密算法、暴力破解漏洞和遠程代碼執行漏洞等典型高危漏洞與缺陷。
經訪問項目管理人員和一線編碼人員可知,因為“信息安全需求不明確”導致存在文件上傳漏洞等高危漏洞,因“信息安全設計不足”導致采用不安全的DES加密算法保護敏感信息;一線編碼人員懶惰而未糾正用戶身份鑒別模塊的暴力破解漏洞,因而存在“未糾正已知錯誤”的情況;項目管理人員和一線編碼人員均認為,經過信息安全培訓或具有較強信息安全意識的軟件需求分析人員和軟件設計人員可提出更完備的信息安全設計需求和設計方案,經過信息安全培訓或具有較強信息安全意識的一線編碼人員編碼質量顯著高于未經培訓人員和信息安全意識薄弱人員;從安全需求、軟件設計等方面都確認需在代碼中避免出現遠程代碼執行的高危漏洞,一線編碼人員在編碼過程中知曉應在正確的區域避免遠程代碼執行漏洞,然而因編碼不正確,最終遠程代碼執行漏洞可被執行,存在“未正確實現”的情況。
6 結語
本文有別于以往從代碼實現層次分析代碼編碼安全的研究方法,探索造成代碼編碼安全問題的人為因素,找出影響代碼編碼安全的21個典型人為影響因素。而后分別采用AHP法、熵權法獲得各人為影響因素的主觀權重和客觀權重,由此獲得各人為影響因素的綜合權重,能夠避免評價結果過于主觀或過于客觀。在各人為影響因素中,“信息安全需求不明確”和“未正確實現”是其中權重值最高的因素,因此加強信息安全需求分析和建立嚴格的信息安全功能審查機制是減少代碼編碼安全問題、提升代碼編碼質量的關鍵工作。
(原載于《保密科學技術》雜志2023年2月刊)