開發人員必須解決人工智能編碼工具的復雜性和安全性問題
對于為了滿足日益增長的需求和責任而飛速工作的軟件開發人員來說,幾年前人工智能 (AI) 編程助手的出現無疑是一大福音。開發人員很快就成為了生成式 AI 模型的狂熱用戶,這些模型加速了代碼創建過程和交付速度。然而,在帶來不可否認的初始優勢之后,另一只鞋子也隨之落下,給日益復雜的環境增添了更多復雜性。保護攻擊面本來就是一項永無止境的任務;而 AI 編程則讓這項任務變得更加難以克服。
除了進一步增加代碼庫的復雜性之外,人工智能模型還缺乏創建高質量、安全代碼所必需的上下文細微差別,尤其是在由缺乏安全知識的開發人員使用時。因此,漏洞和其他缺陷正以前所未有的速度涌現。
當前的軟件環境在安全方面已經失控,而且沒有絲毫減緩的跡象。但斬殺復雜性和不安全性這兩頭“雙龍”仍有希望。企業必須挺身而出,建立強大的開發人員風險管理體系,并通過教育和技能提升,為開發人員提供掌控軟件所需的工具。
人工智能助手增加了復雜性和代碼可維護性問題
2022年11月,生成式人工智能(Generative AI)作為OpenAI的ChatGPT首次亮相,開發者們迅速抓住了這一機遇,很快便使用GenAI模型來加速代碼創建和軟件開發。根據GitHub的一項調查,截至2023年6月,92%的美國開發者將人工智能工具用于工作或個人用途。開發者們大多認為加速代碼創建是有益的,使用人工智能工具也迅速成為一種常態。
然而,盡管后續調查(例如Synk的一項調查)發現,約四分之三的開發人員認為 AI 生成的代碼比人類編寫的代碼更安全,但他們也發現,超過一半的 AI 代碼中仍然存在錯誤。此外,80% 的開發人員忽視了安全的 AI 編碼策略,錯失了及時發現錯誤的機會。
隨著人工智能助手加速這一進程,大量易受攻擊的軟件被發布到一個環境中,無論代碼是如何創建的,這個環境中已經充滿了安全漏洞。
GitClear最近的一項研究揭示了 AI 生成的代碼如何增加復雜性,并加劇了軟件開發生命周期 (SDLC) 后期維護和保護軟件的挑戰。GitClear 分析了 2020 年 1 月至 2023 年 12 月期間創建的四年間更改的代碼(約 1.53 億行),發現了有關代碼流失率和復制粘貼代碼率的驚人結果。
“代碼流失”(Code Churn)指的是編寫后兩周內被更改或更新的代碼,預計在2021年至2024年間將翻一番,而這還不包括人工智能工具的沖擊。在同一時期,復制/粘貼代碼的數量增長速度快于更新、刪除或移動的代碼數量,這表明人們正在逐漸遠離“DRY”(不要重復自己)的實踐,而這種趨勢必然會導致軟件缺陷的增加。
這兩種不良做法都會增加應用程序的復雜性,從而推高支持成本,并增加軟件安全的難度。人工智能加速的軟件生產速度,使得更多漏洞在修復之前就被放入流水線,這也大大延長了安全措施跟進所需的時間。美國國家標準與技術研究院 (NIST) 的一項研究發現,與在軟件開發生命周期 (SDLC) 初期修復缺陷相比,在測試階段修復缺陷所需的時間要長 15 倍。而在部署/維護階段修復缺陷所需的時間則可能長達 30 到 100 倍。
AI工具提高了代碼交付速度,提升了原始生產效率,但這些早期的生產力提升卻被軟件開發生命周期(SDLC)后期的代碼可維護性問題所抵消。解決方案是從一開始就解決這些問題,以免它們危及應用程序和數據安全。
借助升級技能的武器庫
參與軟件開發的組織需要轉變其文化,樹立“安全第一”的理念,將軟件安全視為一項業務優先事項,而非僅僅將其視為技術問題。持續不斷的攻擊和引人注目的數據泄露事件已變得屢見不鮮,董事會和首席執行官們都無法忽視。安全的軟件是企業生產力、聲譽和生存能力的基石,因此,構建強大的安全文化至關重要。而安全文化的基礎正是開發人員風險管理。
實施教育計劃以提高開發人員編寫安全代碼和糾正人工智能生成或第三方代碼中的錯誤的技能,可以防止那些日益常見的缺陷進入管道,從而降低復雜性(第一條龍),同時提高安全性(第二條龍)和軟件質量。
公司需要投資一個能夠提供敏捷、實踐和持續學習的項目,并將安全作為其關鍵績效指標中的突出部分。學習項目應該建立開發人員所需技能的基準,并應包含內部和行業基準來衡量他們的進度。它應該解決實際問題,并根據開發人員的工作量身定制,采用適合他們日程安排的形式,并涉及他們實際使用的編程語言。這種技能提升有助于形成一種安全文化,在這種文化中,開發人員與安全團隊合作,確保在軟件開發生命周期 (SDLC) 開始時遵循最佳安全實踐,這已被證明是確保軟件安全的最有效(且經濟高效)的方法。
教育的一個關鍵方面是了解程序是否有效,開發人員是否已經吸收了新技能并且正在持續應用這些技能。
對于時間緊迫的開發人員來說,AI 工具在速度和效率方面的優勢是難以抗拒的。但 AI 生成的代碼所帶來的復雜性和風險也不容忽視。
組織需要全面提升開發人員的技能,以便他們能夠與安全專業人員合作,將軟件安全問題扼殺在萌芽狀態。只有管理好開發人員的風險,才能斬斷復雜性和不安全性這兩大“雙龍”,確保代碼(無論是由人工智能還是人類生成的)安全可靠,避免漏洞。