編譯丨諾亞
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
生成式AI并不會(huì)完全取代DevSecOps,但它無疑正在給其帶來巨大挑戰(zhàn)。面對(duì)代碼生成的這種高速度,安全團(tuán)隊(duì)該如何跟上步伐呢?
大多數(shù)開發(fā)工程師已經(jīng)采用生成式AI技術(shù)。目前,他們很可能已經(jīng)體驗(yàn)到了顯著的生產(chǎn)力提升和工作滿意度增長(zhǎng),至少在認(rèn)知負(fù)擔(dān)上有所減輕。生成式AI已經(jīng)成為開發(fā)者獲取快速解決方案的新一代Stack Overflow。但隨著高速度而來的,是巨大的風(fēng)險(xiǎn)。
去年,普渡大學(xué)的研究人員發(fā)現(xiàn)ChatGPT編寫的代碼錯(cuò)誤率高達(dá)52%。上個(gè)月,GitClear發(fā)布了一份報(bào)告,揭示了由于過度依賴GitHub Copilot而導(dǎo)致的整體代碼質(zhì)量下降。
這兩項(xiàng)關(guān)于生成式AI研究背后的核心問題在于:
1. 聊天機(jī)器人的回應(yīng)基于被接受的概率,而非其準(zhǔn)確度或與整體代碼庫(kù)上下文的契合程度。
2. 聊天機(jī)器人不考慮長(zhǎng)期代碼可維護(hù)性視角,導(dǎo)致更多無用代碼和技術(shù)債務(wù)的產(chǎn)生。
3. 生成式AI在協(xié)助創(chuàng)建代碼方面的高速度讓DevSecOps團(tuán)隊(duì)幾乎無法跟上節(jié)奏。
“生成式AI是否能安全地用于生產(chǎn)環(huán)境?”Snyk的產(chǎn)品總監(jiān)Hannah Foxwell在近期舉行的State of Open Con會(huì)議上提出了這個(gè)問題。
她指出,無論組織規(guī)模大小或行業(yè)領(lǐng)域,“這些工具強(qiáng)大到令人難以置信,它們極大地提升了效率,以至于AI生成的代碼終將運(yùn)行在生產(chǎn)環(huán)境中,不論你正式批準(zhǔn)與否,因?yàn)槟愕拈_發(fā)者總會(huì)找到使用它們的方法。”
Foxwell與其同事、高級(jí)安全倡導(dǎo)者Sonya Moisset以及GitLab的解決方案架構(gòu)師Dominique Top和Stefania Chaplin共同參與了小組討論,探討生成式AI如何影響DevSecOps的目標(biāo),即在整個(gè)軟件開發(fā)生命周期(SDLC)中集成安全性。
簡(jiǎn)而言之,生成式AI正在改變一切。即使組織能夠阻止開發(fā)人員將敏感信息輸入到大型語言模型(LLMs)中,生成式AI采用的高速度仍然讓所有組織的安全面臨風(fēng)險(xiǎn)。這使得DevSecOps專業(yè)人員的角色——作為團(tuán)隊(duì)間溝通與協(xié)作的促進(jìn)者——變得更加關(guān)鍵。讓我們嘗試討論一下在GenAI時(shí)代,DevSecOps從業(yè)者所面臨的挑戰(zhàn)以及他們?nèi)绾沃?jǐn)慎地采取最佳行動(dòng)。
一、速度是否是問題所在?
Foxwell稱軟件工程中的生成式AI正在呈現(xiàn)出“速度的階梯式變化”。Top表示整個(gè)行業(yè)都將面臨翻天覆地的變化。
然而,在我們?nèi)栽谔剿骱兔鞔_生成式AI的使用案例及其帶來的好處時(shí),無可否認(rèn)的是它使DevSecOps專業(yè)人士的工作變得更加艱難。
面對(duì)這樣的挑戰(zhàn),DevSecOps從業(yè)人員必須:
1. 建立適應(yīng)性策略:確保安全流程能迅速適應(yīng)并融入基于AI驅(qū)動(dòng)的開發(fā)環(huán)境,同時(shí)保持對(duì)生成代碼的質(zhì)量控制和安全性審核。
2. 強(qiáng)化培訓(xùn)與意識(shí):教育開發(fā)者關(guān)于正確使用生成式AI工具的重要性,包括避免泄露敏感信息、理解輸出結(jié)果可能存在的潛在錯(cuò)誤,并提倡審慎審查AI生成的代碼。
3. 集成自動(dòng)化驗(yàn)證:在CI/CD流程中增加針對(duì)AI生成代碼的自動(dòng)化測(cè)試、靜態(tài)分析和動(dòng)態(tài)掃描,以減少誤報(bào)和漏報(bào)的可能性。
4. 制定相關(guān)規(guī)范與政策:更新組織的安全標(biāo)準(zhǔn)和指導(dǎo)方針,明確規(guī)定AI輔助編程的實(shí)踐要求,以及何時(shí)何地可以安全地應(yīng)用這些技術(shù)。
5. 跨團(tuán)隊(duì)協(xié)作與溝通:加強(qiáng)DevOps、安全團(tuán)隊(duì)及AI團(tuán)隊(duì)之間的溝通協(xié)作,共同解決因快速生成代碼帶來的新安全隱患,并設(shè)計(jì)出更穩(wěn)健的安全防護(hù)機(jī)制。
6. 持續(xù)監(jiān)控與改進(jìn):隨著生成式AI技術(shù)的發(fā)展,不斷評(píng)估其對(duì)軟件質(zhì)量和安全的影響,并據(jù)此調(diào)整DevSecOps的最佳實(shí)踐。
綜上所述,盡管生成式AI帶來了前所未有的開發(fā)速度提升,但DevSecOps專家需要積極應(yīng)對(duì)由此產(chǎn)生的安全威脅,并在保證速度的同時(shí),構(gòu)建一套既高效又安全的開發(fā)運(yùn)維體系。
超過一半的網(wǎng)絡(luò)安全專業(yè)人員已經(jīng)處于精疲力竭的狀態(tài),同時(shí)還有340萬個(gè)網(wǎng)絡(luò)安全職位空缺導(dǎo)致人手不足。Foxwell表示:“這些團(tuán)隊(duì)本就難以跟上發(fā)展的步伐——環(huán)境的復(fù)雜性、技術(shù)的蔓延。我認(rèn)為這加劇了我所接觸的安全團(tuán)隊(duì)面臨的開發(fā)速度挑戰(zhàn)。”
這就引出了一個(gè)問題:我們這個(gè)行業(yè)是否只是單純?yōu)榱俗非笏俣榷晃肚斑M(jìn)?
Top說:“每個(gè)人都非常關(guān)注如何讓開發(fā)者高效工作。”“但在很多組織中,安全團(tuán)隊(duì)會(huì)提出疑問:等一下,我們?cè)谧鍪裁矗繛槭裁匆@么做?我們可以先看看為什么要做這件事,比如將AI引入其中嗎?”
她回顧道,自從ChatGPT發(fā)布以來的一年里,大多數(shù)公司在安全問題仍不明朗的情況下急于采取“早期采用者思維模式”。她說:“目前,我們?nèi)匀灰蕾囉诎踩珗F(tuán)隊(duì)確保進(jìn)入生產(chǎn)環(huán)境的內(nèi)容是安全的,但要跟上這種變革的速度確實(shí)很困難。”
然而,生成式AI已經(jīng)成為一種必然趨勢(shì),開發(fā)者們不會(huì)輕易放棄這些提高生產(chǎn)力的成果。那么,DevSecOps專家應(yīng)當(dāng)如何應(yīng)對(duì)呢?
二、對(duì)于關(guān)鍵應(yīng)用程序來說,人工智能生成的代碼是否值得信任?
隨著AI生成的代碼數(shù)量超過以往任何時(shí)候,DevSecOps自動(dòng)化變得更加關(guān)鍵。然而,安全自動(dòng)化依賴于對(duì)系統(tǒng)深入的理解,但在GenAI的情況下,我們往往不清楚其內(nèi)部的工作原理。
Foxwell指出:“要逆向工程分析出模型為何以某種特定方式輸出結(jié)果非常困難,甚至幾乎是不可能的。它們極其復(fù)雜并且持續(xù)進(jìn)化,這并非是我們習(xí)慣的‘如果這樣,就那樣’的確定性過程,而是混沌且可能不可預(yù)測(cè)的,你無法解釋為何得到這樣的結(jié)果。”
她提醒道:我們現(xiàn)在正處于這項(xiàng)技術(shù)的早期階段,仍在探索如何以及在何種程度上能夠控制它。
Moisset補(bǔ)充說,雖然不是絕對(duì)保證,但一個(gè)良好的決策參考點(diǎn)是考慮這些大型語言模型的創(chuàng)造者是否公開了人工智能倫理原則。
Top表示強(qiáng)烈贊同:“我堅(jiān)決認(rèn)為不應(yīng)盲目信任自動(dòng)生成的內(nèi)容,因?yàn)槟悴恢浪膩碓矗膊恢浪幕A(chǔ)是什么,這就是為什么組織需要建立圍繞二次檢查一切的流程和習(xí)慣。”
他建議不只是對(duì)代碼運(yùn)行安全掃描,還應(yīng)該嘗試?yán)斫釭enAI工具本身的工作機(jī)制。“比如,當(dāng)我探究代碼是如何生成時(shí),是不是基于大量開源倉(cāng)庫(kù)的訓(xùn)練集?其中很多都沒有實(shí)施安全措施。” Moisset指出,“因此,你應(yīng)該對(duì)安全工具進(jìn)行掃描,確保生成的代碼具備與我們管道內(nèi)相同水平的安全性。”這意味著不僅要審查最終生成的代碼安全性,還要確保用于生成代碼的數(shù)據(jù)源和工具同樣經(jīng)過嚴(yán)格的安全驗(yàn)證。
三、DevSecOps 必須做得更好
在DevSecOps實(shí)踐中,僅僅依賴自動(dòng)化和安全邊界是不夠的。Moisset強(qiáng)調(diào),在公司層面制定安全政策也至關(guān)重要,以確保DevSecOps團(tuán)隊(duì)了解同事們正在使用的各種生成式AI工具,并教育他們?nèi)绾握_使用這些工具,例如制定并傳達(dá)生成式AI使用政策。
全面禁止GenAI并不現(xiàn)實(shí)。當(dāng)意大利暫時(shí)禁止ChatGPT時(shí),F(xiàn)oxwell指出該國(guó)GitHub組織的整體生產(chǎn)力明顯下降,然而一旦禁令解除,“繞過所有政府政策和防火墻來使用這些工具的現(xiàn)象也隨之增加”。工程師們總會(huì)找到解決問題的方法。
特別是在利用生成式AI開發(fā)客戶服務(wù)聊天機(jī)器人時(shí),Moisset認(rèn)為必須對(duì)輸入和輸出雙方都設(shè)置安全邊界,因?yàn)閻阂庑袨檎呖赡芡ㄟ^注入特定提示“社交化”聊天機(jī)器人,使其給出預(yù)期的結(jié)果——就像有人曾成功通過聊天機(jī)器人以1美元的價(jià)格購(gòu)買了一輛雪佛蘭汽車那樣。
她指出:“回歸到教育用戶和開發(fā)者這一核心問題上,使用AI是好事,我們應(yīng)該利用AI,但必須圍繞它建立安全規(guī)范。”這同時(shí)也要求理解客戶與GenAI互動(dòng)的方式。
貫穿整個(gè)討論小組的一個(gè)主題是:安全人員不僅僅是執(zhí)行任務(wù),更重要的是進(jìn)行傳授。這包括持續(xù)提醒員工不得將敏感信息(如私人信息、專有代碼或API密鑰)輸入到生成式AI中。
當(dāng)然,錯(cuò)誤在所難免,但DevSecOps團(tuán)隊(duì)的工作就是揭示這些錯(cuò)誤,以此促進(jìn)集體學(xué)習(xí)。當(dāng)出現(xiàn)問題時(shí),應(yīng)維護(hù)一種無責(zé)文化,即沒有人應(yīng)該被歸咎于事故本身。
正如Foxwell所說,應(yīng)當(dāng)重新構(gòu)建提問方式:“是什么樣的系統(tǒng)導(dǎo)致了這個(gè)問題的發(fā)生,以及下一次我們可以如何做得更好?”這樣的思維方式有助于從錯(cuò)誤中汲取教訓(xùn)并改進(jìn)流程。
四、DevSecOps 如何幫助自己?
“DevSecOps 是關(guān)于人員、流程和技術(shù)的,關(guān)于的順序有先后,”Top 說。在面對(duì)AI日益重要的角色時(shí),又可以通過哪些方式幫助自身呢?
1. 人員培訓(xùn)與技能提升:強(qiáng)調(diào)團(tuán)隊(duì)成員對(duì)AI和ML基礎(chǔ)知識(shí)的理解,無需達(dá)到博士水平的專業(yè)深度,但應(yīng)具備基本的認(rèn)知,以便于團(tuán)隊(duì)間的協(xié)作與溝通。Moisset指出,良好的溝通是DevSecOps的核心作用。
2. 明確工具采用目的:無論組織選擇何種工具,都應(yīng)當(dāng)清晰傳達(dá)為何要采用此工具或?yàn)楹尾徊捎茫⑻貏e關(guān)注如何確保開發(fā)者使用AI的安全性。然而,在推動(dòng)安全實(shí)踐的過程中,必須注意避免增加過多摩擦而導(dǎo)致開發(fā)效率降低。
3. 智能自動(dòng)化:Foxwell建議通過自動(dòng)化來簡(jiǎn)化安全流程的采納,讓開發(fā)者能夠更容易地遵循良好安全實(shí)踐,同時(shí)要注意避免因過度自動(dòng)化導(dǎo)致大量無關(guān)緊要的問題報(bào)告,從而影響開發(fā)速度。應(yīng)當(dāng)有針對(duì)性地實(shí)施門禁和安全邊界,基于組織上下文篩選并處理真正重要的風(fēng)險(xiǎn)。
4. 精準(zhǔn)數(shù)據(jù)解讀與優(yōu)化:DevSecOps的任務(wù)之一是對(duì)自動(dòng)化收集到的海量數(shù)據(jù)進(jìn)行解讀,準(zhǔn)確識(shí)別具體風(fēng)險(xiǎn)及其解決辦法,而不是機(jī)械地生成大量問題通知單。同時(shí),應(yīng)對(duì)現(xiàn)有的安全瓶頸進(jìn)行梳理和改進(jìn),以保持與AI加速軟件開發(fā)相適應(yīng)的高效響應(yīng)能力。
5. 全面審視軟件開發(fā)生命周期:Top補(bǔ)充說,DevSecOps團(tuán)隊(duì)需要深入考察軟件開發(fā)全生命周期的所有環(huán)節(jié),包括進(jìn)行價(jià)值流評(píng)估和Wardley映射等方法,以更好地理解組織內(nèi)各社會(huì)技術(shù)組成部分之間的關(guān)系。尤其是要了解每個(gè)開發(fā)者向持續(xù)集成管道中添加的內(nèi)容,以及是否仍存在“扔過籬笆”的部署方式,即當(dāng)出現(xiàn)問題時(shí)是否會(huì)簡(jiǎn)單粗暴地回滾版本。
6. 跨組織同理心培養(yǎng):在AI時(shí)代,對(duì)組織內(nèi)部其他部門及流程的深刻理解和同情心是DevSecOps專業(yè)人員的關(guān)鍵素質(zhì)。他們需要跨越職能界限,協(xié)同不同團(tuán)隊(duì)共同提升整體的安全性和效率。
DevSecOps在支持GenAI的采用中可以發(fā)揮關(guān)鍵作用,確保其安全、有效地融入開發(fā)流程并促進(jìn)職業(yè)成長(zhǎng)。
五、DevSecOps 如何支持 GenAI 的采用?
DevSecOps團(tuán)隊(duì)?wèi)?yīng)當(dāng)教育初級(jí)開發(fā)者正確使用GenAI工具,強(qiáng)調(diào)不能完全依賴于AI來替代實(shí)踐經(jīng)驗(yàn)和同行交流。應(yīng)鼓勵(lì)資深工程師繼續(xù)履行導(dǎo)師角色,并借助GenAI提供更具針對(duì)性的指導(dǎo)和對(duì)話,以幫助年輕人才積累實(shí)際經(jīng)驗(yàn),實(shí)現(xiàn)職業(yè)生涯的進(jìn)步。
為了防止過度依賴AI而導(dǎo)致的質(zhì)量疏漏,DevSecOps需建立自動(dòng)化檢查機(jī)制,將代碼審查整合到CI/CD管道中,確保從Stack Overflow或其他來源引入的代碼片段符合組織的安全政策和標(biāo)準(zhǔn)。
六、GenAI如何協(xié)助DevSecOps?
GenAI可以通過對(duì)話式的交互方式幫助開發(fā)者深入理解代碼,例如提供問題摘要、文檔生成和跨職能及客戶對(duì)話的總結(jié)。此外,它還可以用于解釋潛在的安全漏洞,指出代碼中的錯(cuò)誤部分以及發(fā)布版本可能帶來的潛在風(fēng)險(xiǎn),從而增強(qiáng)軟件安全性。
DevSecOps需要確保所使用的GenAI模型經(jīng)過公正、無偏見的訓(xùn)練,并未被惡意目的所影響。這包括監(jiān)控和評(píng)估模型輸出,同時(shí)參與制定框架和策略,以保護(hù)組織免受因模型潛在風(fēng)險(xiǎn)所帶來的安全威脅。
DevSecOps團(tuán)隊(duì)不僅關(guān)注軟件開發(fā)生命周期,還需在整個(gè)組織層面上推動(dòng)對(duì)GenAI技術(shù)的理解和應(yīng)用,培訓(xùn)非技術(shù)背景或技術(shù)成熟度較低的員工如何安全合理地利用這些新工具。
如Darktrace和Crosstrek等已包含AI的應(yīng)用正被DevSecOps團(tuán)隊(duì)使用,團(tuán)隊(duì)有責(zé)任培訓(xùn)“安全伙伴”們?nèi)绾斡行н\(yùn)用這些工具,以提升整體安全水平。
隨著GenAI的發(fā)展,預(yù)計(jì)模型會(huì)變得越來越智能,能夠自我糾錯(cuò)和改進(jìn)。盡管如此,人類介入的重要性始終存在。正如Top所述,在不斷演進(jìn)的過程中,盡管生成式AI會(huì)極大改變DevSecOps的工作模式,但并不會(huì)取代人類的角色,而是在人機(jī)協(xié)作的基礎(chǔ)上提高工作效率和質(zhì)量。
參考鏈接:https://thenewstack.io/will-generative-ai-kill-devsecops/