Github用人工智能(AI)帮你的代码修正安全漏洞

news2024/11/30 10:56:04

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

2023年11月,GitHub宣布推出代码扫描自动修复功能,借助AI技术为用户代码库中的安全漏洞提出修复建议。该文章深入探讨了自动修复的内部工作机制以及用于测试和迭代的评估框架。

github

代码扫描自动修复是什么?GitHub代码扫描通过分析仓库代码,找出安全漏洞和其他错误。扫描可以根据计划或特定事件(例如,推送至分支或打开拉取请求)触发。当发现问题时,会向用户显示警告。代码扫描可以与第一方或第三方警报工具配合使用,包括开源和私有工具。GitHub提供了一个由CodeQL支持的第一方警报工具,CodeQL是其语义代码分析引擎,允许像查询数据一样查询代码库。GitHub的内部安全专家开发了一套丰富的查询,可以跨多种流行语言和框架检测安全漏洞。在此检测能力的基础上,代码扫描自动修复通过建议AI生成的修复方案,进一步提升了安全性。在首次迭代中,自动修复针对拉取请求中检测到的CodeQL警告启用,首先支持JavaScript和TypeScript警告。它以自然语言解释问题及其修复策略,直接在拉取请求页面显示建议的修复方案,并允许开发者提交、忽略或编辑这些建议。

自动修复背后的基本思想简单明了:当诸如CodeQL之类的代码分析工具发现问题时,GitHub会将受影响的代码和问题描述发送给大型语言模型(LLM),请求它提出代码编辑建议,以修复问题而不改变代码功能。文章接下来深入讨论了构建LLM提示、处理模型响应、评估功能质量以及向用户提供服务的细节和微妙之处。

自动修复提示是技术的核心,GitHub向LLM发出请求,通过LLM提示表达。CodeQL静态分析检测到漏洞,生成警告,引用问题代码位置及任何其他相关位置。例如,对于SQL注入漏洞,警告会标记使用不受信任数据构建数据库查询的位置,并包括一个或多个流程路径,显示不受信任数据如何到达该位置而未经消毒。GitHub从警告中提取信息,构建LLM提示,然后要求模型展示如何编辑代码以修复漏洞。

GitHub采用严格的格式描述模型输出,以便自动处理。模型输出Markdown,包含:

- 详细的自然语言指令,用于修复漏洞。
- 需要的代码编辑的完整规格,按照提示中定义的格式。
- 如果适用,应添加到项目中的依赖项列表。

GitHub将自然语言解释与代码扫描警告一起展示给用户,随后是由代码编辑和添加的依赖项构成的差异补丁。用户可以审查建议的修复方案,必要时编辑和调整它,并将其作为提交应用于他们的拉取请求。

为了支持现实世界的复杂性并克服LLM的限制,GitHub采用了仔细的提示制作和后处理启发式规则。文章还概述了选择向模型展示的代码、添加依赖项、指定代码编辑的格式以及克服模型错误的方法。

通过广泛的自动化测试工具,GitHub能够对其提示和启发式规则进行迭代改进,同时最小化LLM计算成本。这种严谨的数据驱动开发方法使GitHub能够在同时将LLM计算需求降低六倍的情况下,将成功率提高了三倍。

用户体验通过增强代码扫描拉取请求体验,将有用的修复展示给用户。用户现在可以看到建议的修复方案,这可能包括多个文件中的建议更改,也可能超出拉取请求差异的范围。还会显示修复的自然语言解释。用户可以直接将建议的修复提交到拉取请求,或者在本地IDE或GitHub Codespace中编辑建议。

随着GitHub将代码扫描自动修复测试版推广给越来越多的用户,它正在收集反馈,修复小问题,并监控指标,以确保其建议实际上对野外的安全漏洞有用。与此同时,GitHub正在将自动修复扩展到更多语言和用例,并改进用户体验。

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

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

相关文章

Java:继承——继承概念+父子类成员、构造访问顺序+super、this关键字(代码+画图超详解!)

一、什么是继承 1、继承的概念 举例理解: 根据打印机的原理,我们可以知道不管是彩色打印机还是黑白打印机,实现的都是一个功能:打印,这是二者的共性。彩色打印机和黑白打印机都继承了打印机的打印功能,且二…

基于T1w/T2w 比值揭示髓磷脂相关变化

前言: 最近在阅读文献的时候发现2篇文章,是采用T1w/T2w 比值表征髓磷脂,有点感兴趣,因此尝试了一下文献所提出的方法。(https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9247578/ https://www.ncbi.nlm.nih.gov/pmc/ar…

vue的网络请求以及封装

①先备好springboot的接口 ②安装依赖 在vue中安装网络请求工具的依赖&#xff1a; npm i axios③简单的demo 直接通过axios请求尝试一下&#xff1a; <script> import axios from "axios";export default {name: HomeView,data() {return {users:[]}}, …

言语残疾和言语残疾分级

言语残疾和言语残疾分级 言语残疾&#xff0c;指各种原因导致的不同程度的言语障碍&#xff0c;经治疗一年以上不愈或病程超过两年&#xff0c;而不能或难以进行正常的言语交流活动&#xff0c;以致影响其日常生活和社会参与。包括&#xff1a;失语、运动性构音障碍、器质性构音…

app移动应用开发

1.案例7.安安的通讯助手 目标 组件设计 素材准备 所有组件的说明及属性设置&#xff08;1&#xff09; 所有组件的说明及属性设置&#xff08;2&#xff09; 所有组件的说明及属性设置&#xff08;3&#xff09;布局小技巧 行为逻辑设计 自动回复短信 短信收发器 组件 记录已收…

MongoDB部署策略

内 容 简 介 本文介绍了MongoDB数据库的优点的数据存储模式的安装部署过程。 利用MongoDB在存储海量数据上的优势&#xff0c;部署存储空间大数据。 欢迎批评指正补充 由于编者水平有限&#xff0c;所搜集资料也很有限&#xff0c;制定的规范肯定有考虑不周全、甚至完全错误…

利用路由懒加载和CDN分发策略对极客园项目进行性能优化

文章目录 前言1.配置路由懒加载2.项目资源打包3.包体积可视化分析4.cdn配置 总结 前言 极客园项目的完成之后&#xff0c;我们需要对项目进行打包以及性能优化&#xff0c;优化用户体验以及加快响应时间&#xff0c;本文只列举了路由懒加载和cdn分发的策略 1.配置路由懒加载 …

Spring Security学习(四)——登陆认证(包括自定义登录页)

前言 和前面的文章隔了很长时间才更新Spring Security系列&#xff0c;主要原因一个是之前太忙了&#xff0c;把项目都忙完了&#xff0c;赶上春节假期&#xff0c;就慢慢研究。Spring Security的体系非常复杂&#xff0c;一口吃不了热豆腐&#xff0c;没办法速成&#xff0c;…

​StableSwarmUI#超越文本的prompt

今天看到一个新的webui方案&#xff0c;是Stability-AI开源的&#xff1a; StableSwarmUI 是一个模块化的稳定扩散web用户界面&#xff0c;着重于使强大的工具易于访问、高性能和可扩展性。 由于项目还在开发中&#xff0c;我们可以先了解下&#xff0c;翻看了它的特点&#xf…

年假作业11

一、选择题 ADDAADADC&#xff0c;BD,D,B,BD,D,C,CD 二、填空题 6 2&#xff0c;3,5,7,9 rgb *s, - a 2,5 *s 三、编程题 1、 #include <iostream> using namespace std; int main() {int arr[10]{10,20,30,40,50,60,70,80,90,100};int m;//从标准输入读取一个…

[职场] 应聘销售的简历怎么写 #职场发展#笔记

应聘销售的简历怎么写 应聘销售的简历怎么写1 基本信息 姓名&#xff1a;吴x 性别&#xff1a;女 毕业院校&#xff1a;徐州师范大学计算机科学院 学历&#xff1a;大专 联系电话&#xff1a;电子邮件&#xff1a; 工作经验&#xff1a;4年 求职意向 期望从事职业&#xff1a;销…

【Spring MVC篇】返回响应

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、返回静态页面…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第三天-ARM Linux ADC和触摸屏开发 (物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 教学内容&#xff1a; 1、ADC S3C2440的A/D转换器包含一个8通道的模拟输入转换器&#xff0c;可以将模拟输入信号转换成10位数字编码。 在A/D转换时钟频率为2.5MHz时&…

ClickHouse--10--临时表、视图

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.临时表1.1 特征1.2 创建一个临时表 2.视图2.1 普通视图2.2 物化视图 1.临时表 1.1 特征 ClickHouse 支持临时表&#xff0c;临时表具备以下特征&#xff1a; 当…

7 大 Android 数据恢复软件,可轻松找回丢失的数据

每年&#xff0c;由于各种原因&#xff0c;数百万人从他们的 Android 设备中丢失数据。它可能像意外删除文件一样简单&#xff0c;也可能像系统崩溃一样复杂。在这种情况下&#xff0c;拥有高效的数据恢复工具可以证明是救命稻草。Mac 用户尤其需要找到与其系统兼容的软件。好消…

D. Divisible Pairs

思路&#xff1a;我们预处理出每个数分别摸上xy的值&#xff0c;用map存一下&#xff0c;然后遍历每个数&#xff0c;如果a b是x的倍数的话&#xff0c;那么他们模x的值相加为x&#xff0c;如果a - b是y的倍数的话&#xff0c;那么他们的模y的值相等。 代码&#xff1a; voi…

Python dict函数

Python中的字典&#xff08;dict&#xff09;是一种非常重要且灵活的数据结构&#xff0c;它提供了键值对的存储和访问机制。字典函数&#xff08;dict()&#xff09;作为创建字典的工具之一&#xff0c;可以从多种数据结构中创建字典对象。在本文中&#xff0c;将深入探讨dict…

[OPEN SQL] 删除数据

DELETE语句用于删除数据库表中的数据 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航班用户(SCUSTOM) 需要删除以下数据 1.删除单条数据 语法格式 DELETE <dbtab> FROM <wa>. DELETE <dbtab> FROM TABLE <itab>. DELETE FROM &…

【白话前端】JS库的作用和常见的九种类型—值得收藏

js库就好比预制菜&#xff0c;我们想吃美食没必要从买菜、择菜、炒菜开始&#xff0c;直接加工就行。 一、什么是JS库 JS库&#xff08;JavaScript Library&#xff09;是指一组封装好的函数、方法、类等&#xff0c;用于简化开发者的编程工作。它们通常提供了常用的功能和算…