生成式 AI 可能成為 DevSecOps 終極目標,無論是撰寫安全程式碼與文件,還是建立測試。若使用不當,它也可能成為致命傷。
文/Maria Korolov·譯/Nica
生成式 AI 的危險之處就在於它也可以既快速又專制產生不安全的程式碼,令公司企業產生更多後續問題。那麼,有多少開發人員已使用生成式 AI?根據多數產業調查報告已佔多數。一月份發佈 CoderPad 針對超過一萬三千名開發人員所作的調查報告發現,有 67% 技術專業人員表示已在部份工作上使用 AI,ChatGPT 是頭號工具,接著是生成式 AI 開發工具 GitHub Copilot,還有 Bard。近 59% 的受訪者表示用於程式碼輔助,而有超過一半表示用來學習與指導,約 45% 表示用來產生程式碼。
GitHub Copilot 對圖庫供應商 Shutterstock 軟體工程師的日常工作產生正面積極的影響,公司 CTO Sejal Amin 如此表示。「僅僅八個小時的學習後,有 90% 開發人員回報在開發者體驗上的影響。」Amin 說,「我們得到一些切期回報是,多數開發人員都提升了生產力。」
[ 推薦閱讀:優先投資生成式 AI?切勿忽視 IT 基礎設施 ]
但生成式 AI 能做的有限,他補充道。或許有一天,生成式 AI 可以在開發程序初始就以安全的方式建置,Amin 表示。「但就我們的經驗來看,時下還沒有工具能安全地、有效能地、穩定的、有擴充性的,產生足以佈署到生產環境這種等級的程式碼,這些都是與營運相關的必要考量。」
也就是說,產生的程式仍必須深入審閱。「需要資深工程師介入,讓產生的輸出結果更加完善。」Amin 補充。
生成式 AI 提升程式碼安全
就撰寫安全的程式碼而言,生成式 AI 是一把雙刃刀。很多人希望從公開程式庫儲存庫獲取最佳程式碼實作(或許經由公司自有政策與框架增強後),AI 產生的程式碼能從一開始就更安全,並避免人類開發人員常造成的錯誤。
例如,開發人員開始一段新的程式碼,AI 可以機智地提出建議,或甚至套用像智慧財產權標頭這類元素,Netskope 副資安長 James Robinson 如此說。「這不僅能讓程式撰寫流程更順暢,也大大減少 DevSecOps 團隊主動監控與處理這類考量的需求。」
[ 推薦閱讀:10 大低程式碼/無程式碼開發安全政策 ]
生成式 AI 抓取相關背景資訊的能力,可以為軟體開發帶來提升程式碼品質與效率的新時代,Robinson 表示。「儘管可能有意想不到的問題,充份利用像輔助程式這樣的生成式 AI 工具,最終還是能讓開發人員產出更少漏洞與弱點的程式。」
讓生成式 AI 自動使用安全實作與機制,有助於建立更安全的程式編寫環境,Robinson 表示。「這樣的優勢進而延伸到改善程式碼架構、增強註解並讓測試流程更加流暢,最終降低 DevSecOps 團隊測試的負擔。」
部份開發人員認為已是如此。據程式碼安全平台 Snyk 於十一月釋出的報告指出,有 76% 技術與資安專家表示,AI 程式碼比人類程式碼更安全。
但是(至少迄今為止) 這樣的安全感可能虛幻又危險。據 Stanford 最近於十二月更新的研究文獻指出,使用 AI 程式編寫助理的開發人員寫出「顯然較不安全的程式碼」,但他們比那些不使用 AI 的人還深信自己的程式碼更安全。研究人員進一步表示,AI 撰寫程式碼工具有時會建議不安全的函式庫,而開發人員未閱讀元件相關文件就採納建議。
[ 非讀不可:生成式 AI 調查 ]
無獨有偶,在 Synk 自有調查中,92% 受訪者同意 AI 至少有時會提出不安全的程式碼建議,而有五分之一表示 AI 「經常」產生安全性問題。
然而,即便使用生成式 AI 可以加速程式碼產出,但調查的受訪者中僅 10% 表示已自動化絕大多數的資安檢查與掃瞄任務,有 80% 則表示,其企業組織中的開發人員完全繞過 AI 資安政策。
事實上,採用生成式 AI 編寫程式碼工具的企業組織,半數以上並未更改軟體安全性流程。而有所更動的那些企業,最常見的改變就是更常進行程式碼稽核,接著才是實施資安自動化。
Forrester 的 Worthington 表示,所有 AI 產生的程式碼,仍必須接受安全性測試。尤其,企業必須確保擁有適切工具,並將之整合檢查所有新程式碼,檢測函式庫與容器映像。「我們看到因生成式 AI 而來更多 DevSecOps 工具的需求。」
Worthington 補充,生成式 AI 有助於 DevSecOps 團隊撰寫文件。其實,產生文字內容就是 ChatGPT 一開始的使用案例。生成式 AI 在產生文件初稿並摘要資訊方面表現格外優異。
[ 推薦閱讀:生成式 AI 應用在軟體開發領域 ]
因此,Google 的 State of DevOps 報告指出,由於技術文件的改善,AI 在組織性表現上的影響增加了 1.5 倍。並且,據 CoderPad 調查指出,文件與 API 支援居第四受歡迎的生成式 AI 使用案例,而有四分之一以上的技術專業人員將 AI 用在這方面。
生成式 AI 還能以其他方式協助開發人員更快詳細整理文件。「在撰寫大量程式時,要花很多時間挖掘整份文件。」卡內基梅隆大學(Carnegie Mellon University) 工業工程管理教授 Ben Moseley 表示。「若能快速取得那些資訊,會相當有幫助。」
測試與品質保證的生成式 AI
生成式 AI 有望協助 DevSecOps 團隊找出傳統測試工具遺漏的弱點與資安問題、解釋問題並建議修正方式,還有助於產生測試案例。
有些安全性缺陷則太細微,這些工具抓不到,卡內基梅隆的 Moseley 如此表示。「就那些較具挑戰性的部份,還是得要人們找出來,會需要專家才能找出它們。」不過,生成式 AI 是能夠挑出標準錯誤的。
而且,據 CoderPad 調查報告指出,約 13% 技術專業人員已利用生成式 AI 進行測試與品質保證。
Insight 首席資料長暨資料與 AI 產品組合總監 Carm Taglient 預期不久的將來就會看到採用生成式 AI 在弱點資料庫上客製化訓練的系統。「短期處理方式是備有這些弱點的知識庫或向量資料庫,強化特定搜尋。」他表示。
[ 加入 CIO Taiwan 官方 LINE 與 Facebook ,與全球CIO同步獲取精華見解 ]
對企業而言,更大的問題會在於自動化生成 AI 的相關功能性,以及這個迴圈裡人為介入程度多寡。舉例來說,若 AI 用於處理程序初期檢查程式碼弱點。「我能允許工具自動更正程式碼到什麼程度?」Taglienti 問道。第一階段是讓生成式 AI 產生報告說明它發現了什麼,接著人員便能回去作出改變與修正。接著,監控工具的準確度,企業便能開始對某些類別的更正建立信任,再開始走向全面自動化。「這樣的循環需要人的參與。」Taglienti 如此說明。
同樣地,就撰寫測試案例而言,AI 需要人類引導這個程序,他表示。「我們不應該將權限升級到管理者程度,應該建立測試案例來做這件事。」
生成式 AI 也能用在審查整個上線環境,他表示。「這個生產營運環境是否有基礎架構相關已知弱點清單相符的漏洞?」雖有檢查環境或組態意外變更的自動化工具,但生成式 AI 可以從不同的觀點尋找,他表示。「NIST 是否變更其規格文件?是否發現新弱點?」
(本文授權非營利轉載,請註明出處:CIO Taiwan)