應(yīng)用開發(fā)團(tuán)隊(duì)創(chuàng)建并執(zhí)行最佳安全實(shí)踐并非易事。軟件開發(fā)者在編寫代碼時(shí)未必會將這些安全實(shí)踐考慮在內(nèi),而且隨著應(yīng)用開發(fā)環(huán)境變得愈發(fā)復(fù)雜,保障應(yīng)用安全在應(yīng)對云計(jì)算、容器和應(yīng)用程序編程接口(API)連接方面面臨著更大的挑戰(zhàn)。
在Veracode年度軟件安全狀況報(bào)告中所掃描的應(yīng)用程序中,80%都發(fā)現(xiàn)了安全漏洞,其中大多數(shù)涵蓋了多年來一直存在于網(wǎng)絡(luò)應(yīng)用程序中的常見問題。Akamai最新的《互聯(lián)網(wǎng)安全狀況報(bào)告》分析了通過其基礎(chǔ)設(shè)施的流量后發(fā)現(xiàn),2023年第一季度至2024年第一季度期間,針對應(yīng)用程序和API的網(wǎng)絡(luò)攻擊激增了49%。應(yīng)用程序和API需求的指數(shù)級增長已使它們成為威脅行為者眼中有利可圖的目標(biāo),這些威脅行為者試圖利用安全漏洞,未經(jīng)授權(quán)訪問那些高價(jià)值的數(shù)據(jù)。
幾十年來,軟件開發(fā)者目睹了為應(yīng)對這些趨勢而提出的各種安全舉措,例如“安全設(shè)計(jì)”“深度防御”“左移”“開發(fā)安全運(yùn)營一體化(DevSecOps)”等冠冕堂皇的概念。但不安全應(yīng)用程序的問題依然存在。這是因?yàn)槟呐乱粋€(gè)制作欠佳的應(yīng)用程序都可能為企業(yè)的整個(gè)網(wǎng)絡(luò)大開方便之門,進(jìn)而導(dǎo)致大規(guī)模的數(shù)據(jù)泄露。
關(guān)注并盡量規(guī)避以下5個(gè)軟件開發(fā)者常犯的安全錯(cuò)誤,有助于防止可能對企業(yè)安全產(chǎn)生重大影響的不良決策:
1.不良的輸入控制
編寫任何代碼都始于了解需要哪些數(shù)據(jù)輸入,這意味著要關(guān)注應(yīng)用程序如何使用這些輸入。對這些輸入幾乎沒有采取任何控制措施,是跨站腳本或SQL注入攻擊發(fā)生的原因,因?yàn)檫@些攻擊手段利用了寬松的輸入控制。
“一種非常常見的做法就是缺乏或不正確的輸入驗(yàn)證。”正在撰寫第二本應(yīng)用程序安全相關(guān)書籍、且就此主題提供多年咨詢服務(wù)的Tanya Janca表示。
為何仍有應(yīng)用程序沒有適當(dāng)?shù)妮斎肟刂颇兀科渲幸粋€(gè)原因是,開發(fā)者通常在編寫應(yīng)用程序時(shí)為簡化測試而未設(shè)置控制措施,而后又忘了回頭檢查自己的工作;另一個(gè)原因是,很多開發(fā)者開始并沒有把重點(diǎn)放在安全方面,而這正是安全“左移”運(yùn)動(dòng)興起的根源所在。
專家認(rèn)為,要確保準(zhǔn)確的輸入驗(yàn)證,確保數(shù)據(jù)在語法和語義上都是正確的,以及后端輸入得到正確的驗(yàn)證和清理。
美國網(wǎng)絡(luò)安全與基礎(chǔ)設(shè)施安全局(CISA)最新的最佳實(shí)踐建議產(chǎn)品應(yīng)系統(tǒng)性地強(qiáng)制執(zhí)行參數(shù)化查詢,并將命令輸入與命令本身的內(nèi)容分離開來。
2.糟糕的身份驗(yàn)證和寬松的權(quán)限管理
應(yīng)用程序中缺乏可靠的身份驗(yàn)證和基于角色的權(quán)限管理并非新問題,但應(yīng)用開發(fā)團(tuán)隊(duì)在急于開發(fā)并發(fā)布更多代碼時(shí),常常會忽視這一點(diǎn)。包括CISA文件在內(nèi)的眾多最佳實(shí)踐文檔都反復(fù)強(qiáng)調(diào)要解決這一問題。
寬松身份驗(yàn)證可能導(dǎo)致所謂的“密鑰泄露蔓延”問題,即在代碼中使用硬編碼憑據(jù)(包括API和加密密鑰以及登錄密碼)的錯(cuò)誤做法。Git Guardian追蹤了這一問題,發(fā)現(xiàn)幾乎每一次暴露此類密鑰的泄露事件在軟件開發(fā)者收到通知后,至少還會持續(xù)活躍五天。他們發(fā)現(xiàn)十分之一的開源開發(fā)者泄露過密鑰,這相當(dāng)于約170萬開發(fā)者有此類不良行為。
創(chuàng)建并時(shí)刻掌握訪問規(guī)則、實(shí)施多因素認(rèn)證(尤其是針對管理人員和管理員),以及從任何編碼項(xiàng)目或資源中消除默認(rèn)(或缺失)密碼等基本操作都很重要。
需要明確到底誰真正需要訪問各特定資源,并定期監(jiān)控這種關(guān)系,以確保角色依然有效。與此同時(shí),當(dāng)用戶不再需要數(shù)據(jù)訪問權(quán)限時(shí)要?jiǎng)h除相應(yīng)憑據(jù),并定期對這些憑據(jù)和權(quán)限進(jìn)行審計(jì)。
3.不良的API保護(hù)和列舉
隨著API數(shù)量的激增,以及應(yīng)用程序之間的相互關(guān)聯(lián)性越來越強(qiáng),開發(fā)者需要保護(hù)這條通信路徑,確保其使用安全。
根據(jù)Salt Security的《2023年第一季度API安全狀況報(bào)告》顯示,接受調(diào)查的400家公司幾乎每家在生產(chǎn)環(huán)境中的API都遇到過安全問題,其中17%遭遇了與API相關(guān)的安全漏洞。
在上個(gè)月發(fā)生互聯(lián)網(wǎng)檔案館(Internet Archive)數(shù)據(jù)泄露事件中,他們遭遇了三次不同的安全漏洞,都涉及保護(hù)不力的API密鑰。
“面向公眾的資產(chǎn)上暴露的API增加了攻擊面,成為惡意行為者的重點(diǎn)攻擊目標(biāo),” Gartner高級分析師Dale Koeppen表示,“應(yīng)用程序的攻擊面呈指數(shù)級增長,這導(dǎo)致匆忙編寫并推向市場的代碼存在安全隱患?!?/span>
Upwind.io首席執(zhí)行官Amiram Shachar表示,開發(fā)者需要持續(xù)測試API漏洞,并實(shí)時(shí)監(jiān)控API流量以識別威脅并簡化響應(yīng)流程;“而且API安全不應(yīng)是一個(gè)獨(dú)立的工具,而應(yīng)是整個(gè)云安全方案的一部分?!?/span>
根據(jù)F5公司的《2024年應(yīng)用策略狀況報(bào)告》,41%的受訪組織管理的API數(shù)量至少與他們擁有的單個(gè)應(yīng)用程序數(shù)量一樣多。他們預(yù)計(jì),隨著人工智能應(yīng)用的推進(jìn)以及更復(fù)雜應(yīng)用程序的構(gòu)建,API的占比將繼續(xù)增加。
但擁有API網(wǎng)關(guān)只是整體API治理策略的一部分,互聯(lián)網(wǎng)檔案館的開發(fā)者們已經(jīng)不幸地發(fā)現(xiàn)了這一點(diǎn)。各組織需要在整個(gè)API基礎(chǔ)設(shè)施中連貫且全面地應(yīng)用安全政策,并能夠適應(yīng)新出現(xiàn)的威脅和異常行為。
4.不良的工具選擇
在維持高應(yīng)用程序安全(AppSec)水平方面,工具使用面臨挑戰(zhàn)。開發(fā)團(tuán)隊(duì)要收集合適的工具集來幫助發(fā)現(xiàn)并解決問題,因?yàn)椴淮嬖趩我坏耐ㄓ冒踩ぞ?。這意味著選擇工具時(shí)需要仔細(xì)研究,以確保盡可能減少覆蓋漏洞。
Gartner建議從以下三種不同類型的工具入手:
- API網(wǎng)關(guān)。它們承擔(dān)兩項(xiàng)主要任務(wù):一是維護(hù)所有API的總體清單,以便更輕松地排查問題;二是對第三方供應(yīng)商進(jìn)行測試、協(xié)助調(diào)查,并監(jiān)控所有API的可疑活動(dòng)。
- 代碼掃描和測試工具,幫助開發(fā)者發(fā)現(xiàn)編碼錯(cuò)誤,識別并解決漏洞。這些工具在編寫代碼時(shí)有助于保障軟件供應(yīng)鏈安全,防止出現(xiàn)諸如2020年SolarWinds、Orion漏洞利用之類的災(zāi)難。
- 網(wǎng)絡(luò)應(yīng)用防火墻(WAF),以保護(hù)所有應(yīng)用程序免受諸如SQL注入等攻擊。它們通常在較高協(xié)議層運(yùn)行,但也可用于阻止諸如分布式拒絕服務(wù)(DDoS)或僵尸網(wǎng)絡(luò)等較低層級的網(wǎng)絡(luò)攻擊。
此外,要做出正確的工具選擇,還要理解安全文化,確保這些工具能真正被開發(fā)者采用,并融入日常流程中。有專家建議,要從小處著手,不要一次性購買所有工具,以免用大量漏洞清單讓工程團(tuán)隊(duì)不堪重負(fù)。同時(shí),要審視這些漏洞,了解并確定要保護(hù)數(shù)據(jù)的優(yōu)先級。
Veracode建議,要經(jīng)常掃描應(yīng)用程序,而且要使用多種技術(shù)進(jìn)行掃描,并了解應(yīng)用程序構(gòu)建和修改的整體情況,以便進(jìn)行持續(xù)修復(fù)。
5.不當(dāng)使用自動(dòng)化
即便有了最好的工具,警報(bào)也可能堆積如山,需要花費(fèi)時(shí)間去分析。在這方面,生成式人工智能可以提供幫助,因?yàn)樗軌蚩焖僮R別誤報(bào),將需要立即關(guān)注的警報(bào)關(guān)聯(lián)起來,并提供快速修復(fù)方案,從而提升整個(gè)企業(yè)的安全性。
自動(dòng)化對于現(xiàn)代應(yīng)用程序安全(AppSec)環(huán)境至關(guān)重要,尤其是在輔助進(jìn)行定期滲透測試和漏洞測試方面。
但是 Indusface總裁Venky Sundar指出,安全軟件面臨一個(gè)最大的問題,就是誤報(bào)頻發(fā),特別是網(wǎng)站和API保護(hù)方面。有效利用人工智能有助于將誤報(bào)消除或減少到最低限度,并鼓勵(lì)更多企業(yè)使用網(wǎng)絡(luò)應(yīng)用防火墻(WAF)來攔截它們。
人工智能還可用于過濾并減輕警報(bào)疲勞。安全供應(yīng)商們行動(dòng)迅速,如今許多工具都配備了生成式人工智能增強(qiáng)功能和利用機(jī)器學(xué)習(xí)模型的方法,以便更靈敏地發(fā)現(xiàn)惡意軟件并識別惡意趨勢。
值得慶幸的是,盡管存在這些問題,但整體形勢仍顯示出一些希望的跡象。Veracode在其報(bào)告中指出,當(dāng)前最高嚴(yán)重級別的編碼漏洞占比是2016年時(shí)的一半。此外,新開發(fā)人員往往比很久以前接受過培訓(xùn)的開發(fā)人員更注重安全。