如何通过六个步骤保护 AI 生成的代码

可以通过执行静态应用程序安全测试、动态安全测试、软件组合分析、使用安全代码实践、实施安全控制以及培训开发人员安全最佳实践来保护 AI 生成的代码。

随着人工智能 (AI) 在软件开发中发挥着越来越重要的作用,优先考虑 AI 生成的代码的安全性至关重要。

与人类编写的代码一样,人工智能生成的代码也可能带来新的安全风险,需要识别和缓解。

为了解决这个问题,开发人员可以利用一系列应用程序安全 (AppSec) 测试方法。

这些方法有助于全面评估 AI 生成的代码,发现错误、漏洞和隐藏的问题。

通过实施这些方法,开发人员可以增强 AI 生成的代码的稳健性和安全性。

斯坦福大学研究人员最近的一项 研究 表明,使用人工智能系统进行代码生成的软件工程师更容易在他们开发的应用程序中引入安全漏洞。

这项研究涉及 47 名来自不同背景的开发人员,使用 OpenAI 的 AI 代码生成系统 Codex,强调了代码生成系统的潜在风险。

令人不安的是,研究发现,与对照组相比,使用 Codex 的参与者不仅更有可能为编程问题编写不正确和不安全的解决方案,而且他们也更有可能将不安全的解决方案误判为安全。

这些发现强调了严格审查和测试人工智能生成的代码以识别和解决潜在漏洞的迫切必要性。

人工智能可以编写安全代码吗?

虽然人工智能不断发展的复杂程度使其能够生成代码,但这些代码的安全性取决于几个因素。

人工智能的训练数据至关重要——如果经过安全编码实践的训练,它就有可能生成安全的代码,但如果接触到不安全的代码示例,它可能会无意中引入漏洞。

人工智能生成的代码的复杂性也会影响其安全性,更简单、更干净的代码更容易确保其安全性。

人工智能的学习和适应能力至关重要,随着时间的推移,系统可以不断改进,从而能够更好地编写安全代码。

然而,无论人工智能的能力如何,人类的监督仍然不可或缺,开发人员需要审查人工智能生成的代码,进行安全测试,并运用他们的专业知识,尤其是在面对快速发展的网络安全威胁时。

人工智能编码的安全隐患是什么?

人工智能在编码中的集成还带来了一些开发人员和组织需要注意的安全隐患。

其中一个主要担忧是引入新的漏洞。人工智能系统和人类一样,也会犯错,如果接受不安全的编码实践训练,它们可能会无意中引入安全漏洞。

根据康奈尔大学的一项研究,人工智能助手正在帮助开发人员编写出更多有缺陷的代码。

人工智能生成的代码的复杂性有时难以理解和审查,这进一步加剧了这个问题。

另一个重要隐患是可能缺乏人为监督。 

开发人员可能过度依赖人工智能进行代码生成,导致代码审查不够彻底,并可能忽视安全漏洞。

考虑到人工智能生成代码的速度如此之快,这尤其令人担忧。

以下是人工智能编码的一些其他安全隐患:

安全测试不足:传统的安全测试方法可能不足以应对人工智能生成的代码,因为它们可能无法解决人工智能可能引入的独特漏洞。人工智能生成的代码可能需要专门的安全测试工具和方法,而这些工具和方法可能并不容易获得或被广泛采用。

攻击面增加:随着人工智能在软件开发中的应用越来越广泛,它增加了潜在网络威胁的整体攻击面。由于人工智能生成的代码越来越普遍且存在潜在漏洞,因此可能成为攻击者的诱人目标。

对第三方库和组件的依赖:AI 系统可能会在其生成的代码中使用第三方库和组件,如果这些库不安全,则可能会引入安全漏洞。跟踪 AI 生成的代码中的依赖关系可能很困难,这使得识别和解决潜在的安全风险变得更加困难。

人工智能代码助手能否在考虑安全性的情况下进行训练?

AI 代码助手可以接受以安全性为重点的训练。

这涉及将安全编码实践纳入 AI 的训练数据中,确保 AI 学会生成遵循这些实践的代码。

例如,可以训练人工智能避免常见的安全陷阱,并识别和标记其生成或审查的代码中的潜在安全漏洞。

这可能包括:

1. 识别通常与安全漏洞相关的代码模式。

2. 认识到使用已知存在安全风险的过时库。

3. 避免使用不安全的功能或不当处理用户输入。

然而,在训练人工智能代码助手时考虑到安全性只是解决方案的一部分。

建立一个强大的审查流程至关重要,在这个流程中,人类开发人员可以验证人工智能生成的代码的安全性,并在代码部署之前捕获人工智能可能错过的任何潜在漏洞。

此外,组织应考虑为其 AI 代码助手实施持续学习模型,让 AI 在接触更多示例并随着时间的推移收到反馈时提高其生成安全代码的能力。

六步保护 AI 生成的代码

1.静态应用安全测试(SAST)

SAST 工具在无需执行代码的情况下检查代码中是否存在潜在安全漏洞方面发挥了重要作用。 

这种测试形式在审查 AI 生成的代码时特别有效,因为它可以发现传统测试方法中可能不会发现的问题。 

通过分析代码的结构、逻辑和语法,SAST 工具有助于识别 AI 生成的代码中的漏洞和弱点。

2.动态应用安全测试(DAST)

DAST 工具模拟对应用程序的真实攻击以评估其漏洞。 

当谈到 AI 生成的代码时,DAST 测试通过发现在静态分析期间可能隐藏的漏洞来补充 SAST。 

通过模拟实际的攻击场景,DAST 工具提供了额外的审查层,增强了 AI 生成的代码的安全评估。

3.软件组成分析(SCA)

SCA 工具有助于扫描应用程序以检测第三方库和组件。 

它们在评估人工智能生成的代码方面发挥着至关重要的作用,特别是在识别因使用不安全的第三方库而产生的漏洞方面。

 通过全面检查依赖关系和相关风险,SCA 工具使开发人员能够减轻由 AI 生成的代码引起的安全问题。


结合这些 AppSec 测试方法,在开发 AI 生成的代码期间实施其他安全实践至关重要。以下是一些需要考虑的关键做法:

4. 使用安全编码实践

开发人员在编写 AI 生成的代码时必须采用安全的编码实践。 

这包括各种措施,例如:

使用强密码

避免使用硬编码密码

实施强大的输入数据清理技术。

为了实现良好的安全编码实践,审查所有代码(无论是人工生成的还是人工智能生成的)非常重要。 

确保您的团队中有一位应用程序安全专家。

5. 实施安全控制

将安全控制集成到应用程序开发过程中至关重要。 

这些控制可能包括严格的代码审查、全面的单元测试和彻底的集成测试。

这些措施可确保在开发的不同阶段识别和解决人工智能生成的代码中的漏洞,从而增强整体安全态势。

6. 对开发人员进行安全培训

如今,公司必须对开发人员进行安全最佳实践培训,使他们掌握有效识别和报告安全漏洞的知识和技能。 

通过在开发人员中培养安全意识,组织可以灌输主动的方法来保护 AI 生成的代码。 

这些努力将带来回报,因为它将降低攻击面,减少保护产品的管理开销,并降低您的组织和客户通过代码受到攻击的风险。

除了这些 AppSec 测试方法和安全实践之外,在评估 AI 生成的代码的安全性时还必须考虑其他因素。

代码的复杂性:AI 生成代码的复杂性会直接影响其安全性。复杂的代码库更有可能包含安全漏洞,因此需要进行彻底的测试和评估才能发现潜在风险。复杂的代码还需要更多时间和专业知识来审查。

应用程序类型:不同类型的应用程序可能表现出不同程度的安全攻击漏洞。例如,由于 Web 应用程序的公共可访问性,它们通常会吸引攻击者的更多关注。因此,对于 Web 应用程序而言,仔细检查 AI 生成的代码是否存在安全漏洞变得更加重要。

代码的使用环境:代码的预期使用环境会显著影响其安全要求。与仅用于开发或测试目的的代码相比,用于生产环境的 AI 生成代码需要更严格的测试和审查。

如果我无法控制代码怎么办?

当面对缺乏强大 AppSec 开发的软件时,实施额外的安全措施来保护您的业务并降低潜在风险至关重要。

请考虑采取以下步骤来确保您的业务安全:

进行安全评估:对您的软件应用程序进行全面的安全评估,包括漏洞扫描、渗透测试和代码审查。

补丁和更新:及时了解软件的最新安全补丁和更新,以解决已知漏洞。

实施 Web 应用程序防火墙 (WAF):部署 Web 应用程序防火墙以提供针对常见基于 Web 的漏洞的额外保护层。

强化您的基础设施:遵循服务器强化、网络分段、访问控制和加密的最佳实践,安全地配置您的基础设施。

持续监控和事件响应:实施持续监控解决方案、入侵检测/预防系统和主动事件响应计划。

员工培训和意识:向员工传授最佳安全实践知识,并在组织内弘扬安全意识文化。

聘请安全专家:寻求外部安全专家(如渗透测试人员和网络安全顾问)的帮助,进行定期安全审计和提出建议。

人工智能编码是否存在安全问题?

通过考虑所有这些因素并采用全面的方法进行 AppSec 测试和安全实践,开发人员和客户可以增强 AI 生成的代码的安全性。

此外,人工智能在软件开发中的出现彻底改变了编码实践,使开发人员能够以前所未有的速度完成任务。

由于人工智能有望在未来几年内处理高达 80% 的编码,因此解决与人工智能生成的代码相关的安全问题至关重要。

通过利用 AppSec 测试方法、安全最佳实践和代码分析技术的持续创新,开发人员可以努力保护 AI 生成的代码并最大限度地降低这项变革性技术带来的风险。

随着该领域的发展,开发人员和安全专业人员必须保持警惕,适应不断演变的威胁,并实施强有力的安全措施,以确保人工智能生成的代码的完整性和安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/466845.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机教程(七)- 蜂鸣器

1 项目分析 利用P2.3引脚输出电平变化,控制蜂鸣器的鸣叫。 2 技术准备 1 蜂鸣器介绍 有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器。 有源蜂鸣器和无源蜂鸣器 这里的“源”不是指电源。而是指震荡源。也就是说有源蜂鸣…

LangChain实际应用

1、LangChain与RAG检索增强生成技术 LangChain是个开源框架,可以将大语言模型与本地数据源相结合,该框架目前以Python或JavaScript包的形式提供; 大语言模型:可以是GPT-4或HuggingFace的模型;本地数据源:…

java的面向对象(从入门到深入)

目录 一、基本概念: 1.类 2.对象 3.继承 4.多态 5.封装 6.方法 7.接口 8.抽象 二、深入概念: 三:总结 一、基本概念: 1.类 类就是一个一个东西的蓝图,里面有着它的属性和方法。 2.对象 对象是一个类的实例化。 3.继承…

基础数据结构——队列(链表实现)

队列的性质 先进先出(FIFO - First In First Out):最先加入队列的元素最先被移出后进后出(后来的元素排在队尾)只允许在队尾插入元素,在队首删除元素具有先来先服务的特点 链表实现队列 和之前创建链表相…

单纯的查询而言,vector和map谁更快

单纯的查询而言,vector和map谁更快 文章目录 单纯的查询而言,vector和map谁更快一、vector的查询二、vector和map对比三、总结 一、vector的查询 这道题目需要知道vector查询和随机访问的不同。 假设有一个包含 n 个元素的vector集合,需要查…

大A终究是逃不过高开低走的魔咒

大A终究是逃不过高开低走的魔咒,早盘高开太多,周末休市,今天会议结束,各种不确定因素增加等原因导致午盘普跌。其实还是那句话,股市嘛,涨多了会跌,跌多了会涨,别急也别慌。 周末&…

Ceisum无人机巡检视频投放

公司投标内容有个视频投放的功能动画,原本想实现这么一个效果: 案例效果来自别人的展示作品,Leader一眼就相中了这个效果,可惜别人的终究是别人的,又不会白白给你,终究是要自己动手尝试。 动画方面的展示…

Rust闭包(能够捕获周围作用域变量的匿名函数,广泛应用于迭代、过滤和映射)闭包变量三种捕获方式:通过引用(不可变引用)、通过可变引用和通过值(取得所有权)

文章目录 Rust 闭包详解闭包的定义与语法基本语法 闭包的特性- 环境捕获(三种捕获方式:通过引用、通过可变引用和通过值(取得所有权))示例代码 - 内存安全与生命周期示例代码1 示例代码2:闭包所有权转移示例…

【国内中间件厂商排名及四大中间件对比分析】

国内中间件厂商排名 随着新兴技术的涌入,一批国产中间件厂商破土而出,并在短时间内迅速发展,我国中间件市场迎来洗牌,根据市占率,当前我国中间件厂商排名依次为:东方通、宝兰德、中创股份、金蝶天燕、普元…

Java 源码中的 Unicode 逃逸问题,别被注释给骗了

背景 看了一段项目源码,定义了一个 List 对象,往该列表对象 add 的代码前面有注释符号,但是程序运行时列表中却存在对象,为什么呢?仔细看了一下,注释符号和 add 代码之间有一个特殊符号 \u000d&#xff0c…

基于IM场景下的Wasm初探:提升Web应用性能|得物技术

一、何为Wasm ? Wasm,全称 WebAssembly,官网描述是一种用于基于堆栈的虚拟机的二进制指令格式。Wasm被设计为一个可移植的目标,用于编译C/C/Rust等高级语言,支持在Web上部署客户端和服务器应用程序。 Wasm 的开发者参…

基于百度飞桨paddle的paddlepaddle2.4.2等系列项目的运行

PPASR 必看&#xff01;&#xff01;&#xff01; PaddleSpeech develop --> PaddlePaddle 2.5.0/2.5.1 PaddleSpeech < 1.4.1 --> PaddlePaddle < 2.4.2 1.创建虚拟环境 conda create --name test python3.10 2.激活环境&#xff0c;安装ppasr的paddlepaddl…

2024MoonBit全球编程创新挑战赛参赛作品“飞翔的小鸟”技术开发指南

本文转载自 CSDN&#xff1a;https://blog.csdn.net/m0_61243965/article/details/143510089作者&#xff1a;言程序plus 实战开发基于moonbit和wasm4的飞翔的小鸟游戏 游戏中&#xff0c;玩家需要通过上下左右按键控制Bird&#xff0c;在不断移动的障碍pipe之间穿梭&#xf…

浅谈Agent

目录 什么是大模型 Agent &#xff1f; 大模型Agent 有哪些部分组成? 规划&#xff08;Planning&#xff09; Planning类型 不依赖反馈的计划 基于反馈的计划 拆解子目标和任务分解方法 COT TOT GOT LLMP 反思和完善 ReAct(融合推理与执行的能力) Reflexion(动态…

文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现

在众多的 AI 大模型的应用场景中&#xff0c;Text-to-SQL&#xff0c;也就是文本转 SQL&#xff0c;是其中实用性很高的一个。Text-to-SQL 充分利用了大模型的优势&#xff0c;把用户提供的自然语言描述转换成 SQL 语句&#xff0c;还可以执行生成的 SQL 语句&#xff0c;再把查…

DICOM标准:深入详解DICOM医学影像中的传输语法

引言 DICOM&#xff08;数字成像和通信医学&#xff09;标准在医学影像数据交换中扮演着至关重要的角色。其中&#xff0c;*传输语法&#xff08;Transfer Syntax&#xff09;是DICOM标准中定义数据编码和传输方式的核心部分。理解传输语法对于确保不同设备和系统之间的互操作性…

如何提高谷歌收录速度?

相信很多做外贸推广的朋友都遇到过这种情况&#xff1a;网站上线了&#xff0c;但新页面迟迟不被谷歌收录。即使你的内容很优秀&#xff0c;设计也很精美&#xff0c;如果谷歌爬虫抓不到页面&#xff0c;一切努力就白费了。这时候&#xff0c;GSI谷歌快速收录服务就成了“救命稻…

Spring面向切面编程

目录 1.AOP概述及Spring AOP实现原理 AOP概述 AOP的应用场景 AOP的作用 Spring AOP概述 Spring AOP的实现原理 Spring AOP中Advice的分类 2. 通过xml配置实现AOP 实现步骤&#xff1a; 新增模块&#xff1a; 导入相关依赖&#xff1a; 新增实体类User 新增业务类UserS…

Notepad++ 更改字体大小和颜色

前言 在长时间编程或文本编辑过程中&#xff0c;合适的字体大小和颜色可以显著提高工作效率和减少眼睛疲劳。Notepad 提供了丰富的自定义选项&#xff0c;让你可以根据个人喜好调整编辑器的外观。 步骤详解 1. 更改字体大小 打开 Notepad 启动 Notepad 编辑器。 进入设置菜…

香港航空 阿里滑块 acw_sc__v3 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…