网安加·百家讲坛 | 潘继平:AI赋能DevOps平台:全面提升代码安全性

作者简介:潘继平,中国软协项目管理专委会专家,深圳市软件行业协会特聘专家。华为土耳其研究所外聘高级项目顾问,负责华为云应用生态圈产品线研发管理。曾为华为全球技术服务中心、华为制造IT以及华为流程IT解决方案提供等多个部门提供长达8年的顾问服务。也曾任职环信科技华南区项目总监,金蝶国际软件研发工程师。获得斯坦福大学设计思维认证教练、PMI-PMP、PMI-ACP、PRINCE2、NPDP、MSP、P3O等认证。拥有1项国家专利,4项软件著作,具有丰富的项目管理实战经验。

随着DevOps的普及,开发和运维的融合极大地提升了软件交付速度。然而,现在的DevOps一般只是简单使用插件扫描代码,对开发者解决安全问题的帮助还是比较薄弱。AI的引入使得DevOps中的安全能力得到了显著的提升,尤其是在静态代码分析、第三方组件管理、代码结构优化和测试跟踪等领域。以下将详细介绍AI如何增强DevOps在以下方面的代码安全能力

1. 扫描代码漏洞:AI通过识别潜在的安全漏洞并提供修复建议,显著提高代码质量和安全性。

2. 第三方软件安全:AI自动检测第三方库的安全性、合法性和版本,确保使用的外部依赖是安全和合规的。

3. 代码安全:通过分析代码中的潜在问题和漏洞,AI提供了有效的优化建议。

4. 分析代码结构:AI对代码结构进行全面分析,生成模块树并对代码健壮性进行评分。

5. 测试跟踪:AI联动内部测试流程,追踪测试单的关闭情况,提供风险预判和修复建议。

1.扫描代码漏洞

1.1识别漏洞

AI在代码扫描中的应用可以快速识别安全漏洞,这包括常见的安全问题如SQL注入、跨站脚本(XSS)、缓冲区溢出等。传统的静态分析工具依赖规则集,而AI能通过学习大量历史漏洞数据,更智能地识别复杂或隐藏的漏洞。

示例开发团队在其CI/CD管道中集成了AI驱动的静态代码分析工具。某次代码提交时,AI工具检测到开发者使用了不安全的SQL查询拼接,可能导致SQL注入漏洞。

python

# 存在SQL注入漏洞的代码片段

query = "SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "';"

1.2给出解决方案建议

AI不仅能够识别漏洞,还可以提供自动化的修复建议。AI会基于上下文分析代码的意图,提出最合适的修复方式。例如,对于SQL注入,AI工具会建议使用参数化查询来防止漏洞。

修复示例:

python

# 使用参数化查询修复后的代码

cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password))

2. 第三方软件安全

2.1检查代码安全

开发团队通常会依赖大量的第三方库,AI可以扫描项目中的所有第三方库,并查找这些库是否存在已知的安全漏洞。通过持续更新的漏洞数据库,AI工具能够迅速识别潜在风险。

示例:项目中引入的旧版本requests库存在已知的安全漏洞,AI工具自动识别并标注出相关漏洞的CVE编号,提醒开发者进行更新。

2.2检查是否合法

AI工具不仅能检测安全问题,还能检查第三方库的许可证是否符合项目或企业的法律合规要求。对于不符合要求的库,AI工具会发出警告。

示例:AI工具扫描代码时发现某个库是GPL许可证的,但企业规定只能使用MIT或Apache许可证的库。AI工具发出警告,提示开发者更换库或重新评估许可证。

2.3检查是否过期

AI工具可以自动跟踪项目中使用的第三方库版本,检查是否存在已过期的库版本。如果库版本过旧,工具会提醒开发者及时升级到最新的安全版本。

示例:AI工具检测到项目使用的Django框架已经有了新的版本,并且该框架的旧版本存在安全风险,工具会提示开发者进行更新。

2.4给出替代方案

当发现某个第三方库存在安全问题或不符合合规性要求时,AI工具会推荐替代方案。例如,推荐更加安全、合规且被广泛使用的库。

示例:如果pycrypto库被检测到存在严重漏洞,AI工具会推荐开发者使用cryptography库作为替代,并提供相关的集成文档和步骤。

2.5检视使用的第三方组件是否符合使用策略

假设公司安全部门要求所使用的第三方组件必须关注量达到1k以上,星级量达到2k以上,并且最近1年内有更新。

AI可以从该第三方组件的官网分析数据,并判断是否符合公司安全部门要求,如果不符合要求则预警,并给出解决方案。

如下图,vosk-api插件由于1年内没有更新发布,所以不满足安全要求,不能使用该插件。

图片

图片

3. 代码安全

3.1识别代码问题

除了检测明显的安全漏洞,AI还可以识别出代码中的性能问题、逻辑错误和不良编码实践。这种智能分析可以帮助开发者发现潜在的问题并在早期进行修复,避免问题进入生产环境。

示例:AI工具检测到某个循环中重复创建对象,虽然不会导致明显的错误,但会对程序性能产生负面影响。

python

# 存在性能问题的代码

for i in range(1000):

    obj = MyClass()

    obj.process()

3.2给出解决方案建议

AI会自动分析性能问题,并提供优化建议。例如,将对象的创建移出循环以提高性能。

优化示例:

python

Copy code

# 优化后的代码

obj = MyClass()

for i in range(1000):

    obj.process()

4. 分析代码结构

4.1生成模块树

AI工具可以分析整个代码库,自动生成模块依赖树。通过这种可视化,开发者能够更好地理解代码的模块化情况及其依赖关系。

示例:开发团队通过AI工具生成的模块树,发现某些模块依赖关系过于复杂,可能影响后续的维护和扩展。

4.2识别代码结构的安全性与健壮性

AI可以通过分析模块耦合度、代码复杂度、依赖性等指标,识别出结构不合理的部分,提示开发者进行重构。这些结构上的问题可能会引发安全隐患或影响系统的健壮性。

示例:原始代码中,系统直接调用外部API,缺乏容错机制。如果外部API发生故障(如超时、服务不可用等),系统会立即失败,可能会影响整体运行。解决方案是通过重构代码,添加接口层、重试机制和熔断策略来增强系统的健壮性。

图片

问题点:

该类直接与外部API耦合,且没有任何容错处理。如果API不可用,程序会立即抛出异常,导致系统崩溃。

改进后的代码(解耦与容错处理)

通过引入接口层、重试机制、熔断机制来增强代码的容错能力。

图片

图片

图片

改进点:

(1)接口层引入:ExternalAPI类负责与外部API的交互,提供了一个统一的接口来处理API请求,降低了业务逻辑与API的耦合度。

(2)重试机制:OrderService类中增加了重试逻辑,如果第一次调用失败,将会在设定的时间间隔后重新尝试,最大重试次数为3次。

(3)熔断与降级策略:如果重试次数耗尽,系统会启用降级处理,例如缓存请求或返回默认的待处理响应,确保系统可以继续工作而不会崩溃。

(4)异常处理:通过自定义ExternalAPIException捕获所有API调用中的异常,更好地管理错误处理。

通过代码的重构,我们减少了系统与外部API的紧耦合,增强了系统的容错性和健壮性。即使外部API出现问题,系统依然可以通过重试和降级策略继续运行,而不会影响用户体验。这种架构模式对于提升分布式系统的可靠性至关重要。

4.3给代码结构评分

AI工具会根据代码的复杂性、可维护性和安全性为代码结构打分,并提供改进建议。这种评分机制能够帮助团队识别哪些模块需要优先优化。

5. 测试跟踪

5.1联动内部测试单关闭情况

AI可以与项目管理工具集成,自动追踪代码提交与测试单的对应情况。如果某个代码提交没有关联对应的测试单,AI工具会提醒测试团队跟进。

示例:开发者提交了一段新的代码,但未关联对应的测试单,AI工具发出警告,提示测试团队检查漏测的部分。

5.2给出风险预判

基于代码的修改范围和历史数据,AI可以预测此次代码修改的风险,并为测试团队提供风险预判,建议对高风险区域进行更多的测试。

示例:AI工具分析发现某个模块的改动可能会影响多个系统组件,因此建议对该模块进行更加深入的回归测试。

5.3给出解决方案建议

如果AI工具检测到特定代码修改存在潜在风险,会提供具体的修复或优化建议。例如,提示开发者增强单元测试覆盖率,或针对特定功能增加更多的自动化测试。

示例:由于对Calculator模块添加了新的除法功能,这一修改可能会引入潜在的风险,例如除以零的错误。为了确保修改的正确性,建议为该模块增加单元测试,覆盖所有可能的用例。

假设Calculator类的代码如下:

图片

使用JUnit编写单元测试代码:

图片

改进建议:

异常处理:考虑在divide方法中添加对除数为零的检查,提供更友好的错误信息。

图片

完善测试覆盖率:通过增加上述改进的测试用例,确保新功能在各种输入情况下都能正常工作,提高代码的可靠性。

图片

通过添加新的测试用例,我们确保了在修改divide方法后,所有可能的情况都得到了充分的测试。这样可以提高代码的健壮性,防止潜在的运行时错误,并提供更清晰的错误信息给调用者。

最后

AI的引入显著增强了DevOps在代码安全方面的能力,从代码漏洞检测到第三方库管理、代码结构分析再到测试流程的智能跟踪,AI工具在每个环节都提供了自动化、安全性和效率的提升。

通过AI驱动的自动化分析和优化建议,开发团队能够快速识别和修复安全隐患,同时提升整体开发效率,尤其最近GPT o1 Preview版本的发布,在逻辑和推理上有了明显的提升。

未来,随着AI技术的进一步发展,其在代码安全中的应用前景将更加广阔,为软件开发和交付提供更强有力的保障。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

(二)、CT系统硬件构成

简单来说分为以下几个步骤来描述整个CT系统的运行流程: X射线管和探测器环绕被测物体,准直器进行高度准直X射线。X射线穿过被测物料时发生衰减,其中有两个探测器,一个是参考探测器记录和测量来自X射线管的辐射强度,另…

【C语言从不挂科到高绩点】28-数组综合运用

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程!! 数组是我们在C语言学习过程中比较重要的一个知识点,也是在今后的学习与开发过程中经常会用到的技能,…

明达IO:赋能工业机器人新未来

摘要: 明达技术以其卓越的分布式IO(MR30)与一体式IO(MR20)产品,为工业机器人行业提供了完美的信号交互解决方案。在集群式机器人应用场景中,MR30分布式IO以其稳定性能和自由热插拔功能&#xf…

“跨时空拥抱”风靡TikTok,这款AI视频工具借势变现20万美金,你也来看看吧!

用AI生成跨时空拥抱最近悄悄在海外翻红,还带火了一款AI视频产品。 8月28日,TikTok博主“iammskira”发布了一条配文为“用AI实现了拥抱我的妈妈,因为她已经不在人世了”的短视频教程,在TikTok上走红。 视频中,AI不仅…

Java毕业设计:Java社区物品置换网站系统毕业设计源代码作品和开题报告

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

xss-labs靶场第五关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、注入点寻找 2、使用hackbar进行payload测试 3、绕过结果 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机:本机(127.0.0.1) 靶 机:本机(127.0.0.…

如何下载和安装CLion,图文详解

一、下载 登录JetBrains官网,下载最新版本的Clion,Clion目前没有社区版,都是专业版。 二、安装 1、启动Clion安装程序,下一步。 2、修改安装目录,下一步。 3、创建桌面快捷方式,更新PATH变量&#xff0…

【汇编语言】寄存器(CPU工作原理)(六)—— 修改CS,IP的指令以及代码段

文章目录 前言1. 修改CS、IP的指令2. 问题分析:CPU运行的流程3. 代码段小结结语 前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计…

Excel中多条件筛选问题解决方法

例题解析: 有雇员信息表如下所示&#xff1a; 查询出 Gender 为 Female&#xff0c;且 1970 年以前出生的员工&#xff1a; spl("E(?1).select(Gender""Female"" && Birthday<""1970-01-01"")",A1:O32)SPL桌面…

SpringBoot框架在服装制造业的应用案例

2 关键技术简介 2.1 JAVA技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xff0…

手写mybatis之数据源的解析、创建和使用

前言 在上一章节我们解析 XML 中的 SQL 配置信息&#xff0c;并在代理对象调用 DefaultSqlSession 中进行获取和打印操作&#xff0c;从整个框架结构来看我们解决了对象的代理、Mapper的映射、SQL的初步解析&#xff0c;那么接下来就应该是连库和执行SQL语句并返回结果了。 那么…

需求10——通过改一个小bug来学习如何定位问题

在浏览我之前完成的一些小需求时&#xff0c;我发现了一个非常有价值的需求。这个需求可以让我深入了解系统中关于故障上报的功能。通过完善这个需求&#xff0c;我能够全面掌握整个故障上报的流程。 这个需求主要是关于故障上报流程中出现的问题。当前的流程如下&#xff1a;…

地面沉降数值模拟方法

目前&#xff0c;地面沉降问题是我国较为常见的环境地质问题&#xff0c;其巨大的破坏力严重影响城市建筑安全和交通轨道运行。围绕地面沉降的防控与治理&#xff0c;是工程地质、环境地质、轨道交通设计等相关技术人员十分关注的领域&#xff0c;而数值模拟技术是评估防控效果…

云栖实录 | Hologres3.0全新升级:一体化实时湖仓平台

本文根据2024云栖大会实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a; 姜伟华 | 阿里云智能集团资深技术专家、Hologres 负责人 丁 烨 | 阿里云智能集团产品专家、Hologres 产品负责人 活动&#xff1a; 2024 云栖大会 - 商用大数据计算与分析平台论…

RS485为什么用隔离?

RS-485是工业与仪器仪表中的物理层总线设计 标准&#xff0c;目前已成为业界应用最为广泛的标准通信接 口之一。这种通信接口允许在简单的一对双绞线上 进行多点双向通信&#xff0c;它所具有的噪声抑制能力、数 据传输速率、电缆长度及可靠性是其他标准无法比 拟的。 当需要在…

探索未来:picows,Python的AI新宠

文章目录 **探索未来&#xff1a;picows&#xff0c;Python的AI新宠**背景&#xff1a;为何选择picows&#xff1f;什么是picows&#xff1f;如何安装picows&#xff1f;简单的库函数使用方法场景应用常见Bug及解决方案总结 探索未来&#xff1a;picows&#xff0c;Python的AI新…

国资委推动中央企业人工智能发展

2023年以来&#xff0c;国资委多次对中央企业发展人工智能提出要求。2024年2月&#xff0c;国资委召开中央企业人工智能专题推进会&#xff0c;提出加快推动人工智能发展&#xff0c;是国资央企发挥功能使命&#xff0c;抢抓战略机遇&#xff0c;培育新质生产力&#xff0c;推进…

Axios 网络请求

文章目录 Axios 网络请求1.Axios 使用1.Axios 简介2.Axios 安装安装命令 3.Axios 引入方式全局引入局部引入 2.整合 vue1.在组件中使用 axios 发送请求发送结果这里就出现了跨域问题 3.跨域后端解决办法全局配置类 加入注解 CrossOrigin请求结果 全局配置 baseUrl Axios 网络请…

Linux内核启动过程1

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

阿里云+frp内网穿透工作站远程开机

frp 是一个可用于内网穿透的高性能的反向代理应用&#xff0c;支持 tcp, udp, http, https 等协议。利用 frp 和一个带有公网 IP 的云服务器作为中间跳板&#xff0c;可以实现内网穿透&#xff0c;不在家的时候也可以访问到家里面的工作站。有了这个缺口之后&#xff0c;在外面…