生成式 AI 用途廣泛,但對組織而言,最有前景的領域之一是 AI 輔助開發帶來的驚人益處。隨著像 Devin AI(全球首個 AI 軟體工程師)這類近期宣布的創新技術問世,對於希望提升工程流程與可交付成果效率的技術領導者來說,整合 AI 已成為一個極具吸引力的選項。
具體來說,組織可以透過多種方式將 AI 整合到程式碼開發中。一種選擇是使用 GitHub Copilot 等工具自動建立樣板程式碼,並實現基於 AI 的結對程式設計。另一個選擇是利用像 Devin 這樣的自主 AI 開發程式,它們有潛力與人類同事獨立工作。
AI 輔助開發為企業帶來了許多好處,並有望繼續塑造未來的開發模式。然而,這也帶來了各種安全風險,必須妥善管理才能充分利用這項技術。
據估計,已有高達 81% 的開發人員使用基於 AI 的程式碼輔助工具(例如 GitHub Copilot、Tabnine 和 Amazon CodeWhisperer)來解答問題與撰寫複雜的程式碼。隨著 AI 技術愈發先進且普及,開發團隊未來對這些工具的依賴程度可能會進一步加深。
使用 AI 來輔助開發,能為開發團隊帶來諸多潛在效益,例如:
提高效率:AI 可以自動執行各種開發任務,從回答基本問題到自動編寫程式碼,再到自動設計 UI。這些功能可以加快上市時間、降低開發成本,並使公司能夠以更少的員工完成更多工作。一項研究發現,使用 GitHub Copilot 可以將開發人員的編碼任務完成速度提高 55%。這種效率的提升可以幫助組織減少員工數量,或大幅增加程式碼產生量。
減少開發人員倦怠:GenAI 能夠自動建立樣板程式碼,讓開發人員無需編寫簡單重複的程式碼。提升開發人員體驗可以降低因厭倦這些任務而導致倦怠或員工離職的風險。2023 年,73% 的開發人員表示,他們在職涯的某個階段經歷過倦怠。60% 至 75% 的開發人員表示,AI 能夠自動執行這些任務,從而提高工作滿意度。
更好的程式碼品質:除了編寫程式碼,AI 還可用於在開發過程中自動偵測錯誤、漏洞和其他程式碼問題。在問題進入生產環境之前發現並修復問題,可以降低組織在發布修補程式或修復資料外洩方面浪費時間和資源的風險。
專門開發:AI 能夠撰寫開發團隊因缺乏相關知識與經驗而無法自行開發的專業程式碼。消除對特定專業技能的需求,也能降低聘請外部專家或提供高額獎勵來吸引主題專家的需求。
開發人員教育和技能提升:GenAI 有可能為開發人員提供「及時」訓練,增強程式碼安全性,並幫助新手開發人員更快地上手。平均而言,開發人員會接受 30% 的程式碼建議,而新手開發人員的接受率更高。這降低了漏洞管理成本,並使公司能夠最大限度地發揮其開發團隊的能力。
GenAI 是一個強大的工具,但它不是一個完美的解決方案。在權衡是否以及如何將 AI 建置到開發管道中時,技術長還應考慮風險和對組織的潛在影響。
Samsung 最近的資料外洩事件是未能妥善管理 AI 使用風險的典型例子。該公司先前曾禁止使用生成式 AI,但為了提高員工生產力,最終解除了禁令。據稱,在三週內,該公司將敏感的半導體研發資料、原始程式碼和內部會議記錄洩露給 ChatGPT,試圖修復程式碼錯誤並自動產生會議記錄。OpenAI 可以存取這些資料,並可能將其用於訓練其模型,這可能導致這些資料也暴露給其他使用者。
AI 輔助開發的一些最重大風險包括:
敏感性資料洩露:GenAI 工具設計為不斷學習,並且可能會根據使用者輸入進行自我訓練。輸入 GenAI 工具的敏感性資料和程式碼範例可能會成為模型的一部分,並顯示給其他使用者。2023 年,Samsung 透過 ChatGPT 意外洩漏了敏感的半導體資料。研究發現,這些工具還可能在建議中包含其他敏感性資料,例如私人 API 端點。
低品質程式碼:GenAI 並不完美,可能會產生不正確的答案和低品質的程式碼。使用自動產生的程式碼可能會對使用者體驗產生負面影響,或將漏洞引入應用程式。
降低對程式碼的理解:開發人員經常「隨時待命」,因為他們編寫程式碼、理解程式碼並且可以解決任何問題。AI 產生的程式碼更像是一個黑盒子,如果出現問題,這可能會阻礙開發團隊修復它的能力。
AI 幻覺:在開發過程中,AI 幻覺可能會導致 GenAI 推薦使用不存在的套件和函式庫。若攻擊者刻意建立這些套件,就能將漏洞或惡意程式碼植入使用了這些被推薦套件的應用程式中。
授權問題:AI 建議或自動產生的程式碼可能會使用與授權條款不相容的第三方程式碼。例如,例如,如果 AI 使用的程式碼帶有非盈利版權授權,則組織可能需要將使用該程式碼的程式碼開源,否則將面臨智慧財產權訴訟。
雲端支出增加:AI 產生的程式碼可能會要求付費服務,或低效率地使用儲存、運算和其他雲端資源。這可能導致因程式碼未最佳化而增加雲端服務的支出。
解決方案鎖定:AI 編碼助理尚處於起步階段,新的解決方案層出不窮。將特定解決方案嵌入工作流程可能會降低效率,或在新技術出現時被迫進行昂貴的切換。
AI 擁有眾多潛在優勢,很可能是未來開發的方向。理想情況下,GenAI 能夠幫助組織以比純人類開發團隊更少的資源和更短的工期撰寫更複雜、更有效率、更安全的程式碼。那些拒絕接受 AI 輔助開發的公司可能會在競爭中被淘汰,並失去頂尖人才。
然而,希望使用 AI 來增強其開發流程的技術長也需要考慮和管理該技術的風險。以下 8 種最佳做法有助於減少或消除 AI 輔助開發的最大風險:
驗證 AI 建議:AI 幻覺是一個常見問題,這些錯誤可能會對軟體開發造成極大的破壞。在使用 AI 系統之前,需仔細檢查 AI 系統產生的程式碼和資訊的準確性。
管理 AI 資料風險:向 AI 提出程式設計問題或讓其產生樣板程式碼的風險相對較低。而向其提供敏感 IP 來檢查錯誤或提出問題則存在資料外洩的風險。對開發人員進行 AI 的合理使用訓練,並實施資料丟失預防 (DLP) 措施,以控制外洩風險。
實作 DevSecOps:AI 能夠大幅加速程式開發的進程,但也可能導致開發人員對自己所撰寫的程式碼理解不足。因此,導入 DevSecOps 的最佳做法(例如建立以安全為導向的需求並進行相關測試)能有助於降低安全問題被忽視或遺漏的風險。
自動執行安全測試:AI 產生的程式碼可能會將漏洞或非功能性程式碼引入組織的程式碼庫。在自動化 CI/CD 管道中建置安全測試(包括靜態應用程式安全測試 (SAST) 和動態應用程式安全測試 (DAST))可限制 AI 產生的不安全程式碼的潛在影響。
執行功能和非功能測試:除了引入漏洞之外,AI 產生的程式碼可能品質較低甚至無法運作。針對功能性和非功能性需求執行單元測試有助於確保程式碼的功能性和效能性。強制遵循樣式指南和程式設計最佳做法也有助於識別和避免有問題的程式碼。
監控軟體供應鏈:AI 可能會推薦或使用有漏洞、惡意或具有不相容的授權條款且根本不存在的套件或函式庫。執行軟體組合分析 (SCA) 並維護軟體物料清單 (SBOM) 可以深入瞭解應用程式的依賴關係,並在發布前進行驗證。
實作執行階段保護:即使開發人員盡了最大努力,易受攻擊的程式碼仍有可能進入生產環境。應該使用 WAF、WAAP、RASP 和其他可以在執行階段阻止攻擊嘗試的防禦措施對應用程式加以保護。
考慮內部 AI:開放原始碼 LLM 讓企業能自行架設 AI 系統。將 AI 系統內建於企業內部,可降低資料外洩、訓練資料遭投毒以及使用生成式 AI 的其他風險。
Cloudflare for AI 為技術長提供建置、託管和保護 AI 輔助開發流程及其所開發應用程式所需的工具。深入瞭解如何充分發揮 AI 的潛在價值,並實施安全納入設計原則。
Cloudflare 就影響當今技術決策者的最新趨勢和主題發表了一系列文章,本文為其中之一。
閱讀《全球連通雲:重新取得 IT 與網路安全控制權的途徑》電子書,深入瞭解如何簡化和保護 AI 計畫。
閱讀本文後,您將能夠瞭解:
AI 輔助的開發如何使工程流程受益
使用 AI 進行軟體開發的風險
降低或消除 AI 輔助開發風險的 8 種最佳做法