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