面對重大資料外洩事件,人們很容易將焦點集中在破紀錄的外洩資料筆數及財務損失金額上。但事實上,除了外洩事件本身之外,企業必須面臨並解決各種直接與間接的成本。其中最需面對的潛在成本,莫過於因不安全程式碼或漏洞修補不當而不斷累積的技術債(Technical Debt)。
編譯/酷魯
安全公司 Varonis 研究人員報告稱,在多家《財富》500 大公司和政府機構使用的 Apex 程式碼中發現了高等級和嚴重級漏洞。該報告並指出,一旦遭到濫用,這些漏洞可能會導致資料破壞與外洩,並損害 Salesforce 的商務功能。
據報導指出,光在 2022 年,劣質軟體在美國就造成了 2.4 兆美元的損失。這正凸顯了何以無瑕程式碼(Clean Code)如此重要的原因,唯有無瑕程式碼才能將軟體程式碼轉化為長期資產,為企業的各個層面創造巨大的商業價值。
造成不安全程式碼的原因
比起冒著資料外洩風險和業務收入損失的風險,投資早期和持續的應用程式安全(AppSec)應該是最合理不過的做法。但為什麼有些安全主管對這一原則感到困惑,並依賴過時的安全實踐呢?
其原因很多,即時上市壓力即其中之一。開發人員通常面臨來自管理層的巨大時間壓力,在設了不合理的最後期限後,使得開發過於倉促,最終讓程式碼與應用軟體充斥安全漏洞。
[ 加入 CIO Taiwan 官方 LINE 與 Facebook ,與全球 CIO 同步獲取精華見解 ]
再者,企業應用程式開發有個常見情形,那就是明明已經完成了很多工作,還要毫無效率地讓程式設計師嘗試重新開發每個功能。雖然第三方程式碼難免會有安全疑慮,但只要經過謹慎驗證,程式碼重用(Code re-use)仍不失為加速開發進程的可行做法。
如今不少安全主管傾向於依賴手動安全措施,這也是造成不安全程式碼的原因之一,因為缺乏安全自動化,往往會造成安全驗證成本高昂、速度緩慢且容易出錯的狀況。
不安全程式碼的後果與成本
不安全程式碼會衍生各種有形或無形的成本,讓我們首先探討一下有形成本。一旦發生資料外洩,企業不得不進行善後,復原費用勢不可免。首先是針對資料外洩事件的全面取證與調查工作,其費用可能上看 6 至 7 位數以上,具體取決於企業規模。
接下來開始要做的是復原和修補,這中間企業會進行程式碼稽核、釋出修補程式、以及通知受害各方,相關成本會迅速攀升。不僅如此,企業還有可能面臨高額的 GDPR、HIPAA 或 PCI 違規罰款。其中最可怕、最具破壞性的後果,莫過於永遠失去客戶信任,進而導致營收銳減。
再就不安全程式碼的間接成本而言,最困擾的就屬技術債。它會因壓力下匆忙修補漏洞而產生,並不斷累積。不安全程式碼就像無形的稅收,悄悄地消耗著不同規模大小工程組織的時間、金錢和士氣。不即使解決的技術債最終將變成阻礙創新的大山。
[ 推薦閱讀:AI PC 安全保衛戰 ]
我們可以把技術債的每一個實例看作是有利息支付的小額債務,程式碼風險問題會隨著進度壓力、過時的函式庫、不充份的測試而不斷積累,每月為債務支付的「利息」也會隨之增加。在不知不覺中,企業組織會面臨耗費寶貴工程資源和金錢來處理缺陷程式碼之「下游影響」(downstream impact)的困境。
首先,技術債的利息支付會直接拖慢應用開發的速度。再者,低效程式碼會讓企業無法優化基礎設施的使用,轉而提高雲端運算的使用與費用,公司獲利因而受到影響。
不安全的程式碼還會讓應用程式出現安全、效能及穩定性問題,進而造成終端使用者生產力下降。不僅如此,管理不安全程式碼所需的金錢、時間和注意力,會對業務驅動的計畫工程造成影響,進而導致營收機會的延遲或錯失。
糾正措施與解決之道
有鑑於不安全程式碼日益膨脹的直接和間接成本,它在多個方面構成了生存威脅,所以開發人員應該採取主動積極的步驟來降低不必要的風險與成本。
1. 打造安全開發流程
(1) 在軟體開發生命周期(SDLC)最早階段整合安全性,亦即將強制性的安全檢查和制衡機制移轉到應用開發的初期階段。
(2)實施持續的安全測試,而不是僅限於某特定時間點的關卡式(gate-based,又稱 waterfall 瀑布式)測試。
(3)每季度對關鍵路徑進行更嚴格的延遲生產滲透測試,在公開發布前發現問題。
(4)打造安全、強固、可移植的無瑕程式碼。
(5)要求開發人員定期完成應用程式安全(AppSec)培訓,以掌握最新威脅和緩解技術。
2. 推行安全自動化
(1)其能達到安全性、程式碼品質和上市時間之間的平衡。
(2)軟體問題被發現的時間越晚,修復的成本越高,破壞性也越大。安全自動化能在問題進一步進入 SDLC 之前就事先發現,因此能大幅降低安全成本。
(3)導入輕量級掃描作為現有自動化測試的一部分,以便在更容易修復時及早發現漏洞。
(4)有效部署安全自動化套件的關鍵是找到可以與企業現有工具無縫整合的解決方案,而不是引進更多帶來摩擦的新工具。
3. 持續教育訓練
(1)確保所有相關人員每年都必須學習最新安全編碼基本知識。
(2)召開學習會,採討 OWASP 十大風險以及相應的防禦技術。
(3)每年派遣首席架構師和關鍵決策者參加安全編碼營。
(4)形成人人有責的安全文化,這被證明最具潛移默化降低成本之功。
4. 安全獎勵與考核
(1)在例行會議中公開表揚並獎勵成功防止重大漏洞攻擊的人員以及最佳安全編碼實作。
(2)建立每月專用預算,可在經理批准下直接加強應用程式碼安全。
(3)年度審查期間,透過將程式碼品質/滲透測試結果與整個團隊績效連結起來,以灌輸責任感。
結論
越早重新調整工作流程以找出程式開發中的問題與漏洞,愈能減少技術債的支付利息。始終如一地套用預防性的最佳實踐,便能隨著時間的推移建立起安全肌肉記憶(security muscle memory),最終才能徹底打破不安全程式碼來討技術債的惡意循環。
(本文授權非營利轉載,請註明出處:CIO Taiwan)