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

  每周跟踪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正在将自动修复扩展到更多语言和用例,并改进用户体验。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024.02.13作业

21. c 22. b 23. b 5先出栈意味着1234都在栈内,此时1不能比2,3先出栈 24. b, c, d: 10, 12, 120 25. 2, 5 26. 数组越界,可能出现段错误 27. 0, 41 28. 1, 320 29. *a *b; *b *a - *b; *a - *b; 30. 0x801005;0x8…

GPT-4带来的思想火花

GPT-4能够以其强大的生成能力和广泛的知识储备激发出众多思想火花。它能够在不同的情境下生成新颖的观点、独特的见解和富有创意的解决方案,这不仅有助于用户突破思维定势,还能促进知识与信息在不同领域的交叉融合。 对于研究者而言,GPT-4可能…

STM32—DHT11温湿度传感器

文章目录 一.温湿度原理1.1 时序图 二.代码 一.温湿度原理 1.1 时序图 (1).下图一是DHT11总的时序图。 (2).图二对应图一的左边黑色部分,图三对应图一的绿色部分,图四的左部分图对应图一的红色部分,图四的右部分对应图一的黄色部分。 (3)…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Navigation组件 鸿蒙(HarmonyOS)项目方舟框架&#…

嵌入式CAN通信协议原理(下)

本篇文章结合实际CAN控制器继续介绍协议相关的内容,还有示例讲解。 好了,继续吧! 二. STM32 CAN 控制器介绍 STM32 的芯片中具有 bxCAN 控制器 (Basic Extended CAN),它支持 CAN 协议 2.0A 和 2.0B 标准。 该 CAN 控制器支持最…

【C语言】socketpair 的系统调用

一、 Linux 内核 4.19socketpair 的系统调用 SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol,int __user *, usockvec) {return __sys_socketpair(family, type, protocol, usockvec); } 这段代码定义了一个名为 socketpair 的系统调用。系统调用是操作…

JavaScript基础第三天

JavaScript 基础第三天 今天我们学习for循环、while循环、终止循环和无限循环。 1. for 循环 1.1. 语法 // 1. 语法格式 // for(起始值; 结束条件; 累加器) { // // 要重复执行的代码 // }1.2. 示例代码 let sum 0; for (let i 0; i < 100; i) {sum i; } alert(&q…

阿里云服务器4核16G配置报价和CPU内存性能参数表

阿里云4核16G服务器优惠价格ECS云服务器经济型e实例26元1个月、149元半年、79元3个月&#xff0c;4核16G通用算力u1服务器、通用型g7、通用型g8i、AMD通用型g8a、性能增强通用型g8ae、高主频通用型hfg8i、AMD通用型g7a、内存型r7p等均提供4核16G配置。阿里云服务器网aliyunfuwu…

C#通过重写虚方法实现加、减、乘、除运算 通过多态确定人类的说话行为

目录 一、涉及到的知识点1 1.虚方法 2.重写方法 3.重写方法与重载方法的区别 4.通过KeyPressEventArgs.KeyChar限制键盘输入的内容 5.if-else if-else嵌套转换为switch case 二、 涉及到的知识点2 1.多态性 2.使用多态性的注意事项 3. 使用虚方法实现多态性 三、实…

红日靶场2学习

靶场下载来自&#xff1a; http://vulnstack.qiyuanxuetang.net/vuln/detail/3/ 靶场统一登录密码&#xff1a;1qazWSX 按大佬的说法是 环境需要模拟内网和外网两个网段&#xff0c;PC端虚拟机相当于网关服务器&#xff0c;所以需要两张网卡&#xff0c;一个用来向外网提供web…

FT2232调试记录(3)

FT2232调试记录&#xff08;1&#xff09;: FT2232调试记录&#xff08;2&#xff09;: FT2232调试记录&#xff08;3&#xff09;: FT2232 SPI读写函数: 参照SPI提供的文档&#xff1a; 工程&#xff1a; SPI 写函数&#xff1a; FT_STATUS write_byte(FT_HANDLE handle…

剑指offer——数值的整数次方

目录 1. 题目描述2. 一般思路2.1 有问题的思路2.2 全面但不高效的思路2.3 面试小提示 3. 全面又高效的思路 1. 题目描述 题目:实现函数 double Power(double base,int exponent)&#xff0c;求base 的exponent 次方。不得使用库函数&#xff0c;同时不需要考虑大数问题 2. 一般…

4核16g云服务器多少钱?

4核16G服务器租用优惠价格26元1个月&#xff0c;腾讯云轻量4核16G12M服务器32元1个月、96元3个月、156元6个月、312元一年&#xff0c;阿腾云atengyun.com分享4核16服务器租用费用价格表&#xff0c;阿里云和腾讯云详细配置报价和性能参数表&#xff1a; 腾讯云4核16G服务器价…

VSCode汉化以及跳转到函数定义设置

目录 VSCode汉化设置跳转到函数定义 VSCode汉化 一、目前默认是英文状态 二、按下ShiftCtrlP弹出这个框框 三、点击语言显示配置 四、点击下载语言 五、点击下载中文即可 六、下载完后&#xff0c;再按ShiftCtrlP&#xff0c;选择语言配置 七、选择第二个&#xff0c;中…

Swift Combine 级联多个 UI 更新,包括网络请求 从入门到精通十六

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

点餐|外卖订餐小程序|基于微信小程序的外卖订餐系统设计与实现(源码+数据库+文档)

点餐|外卖订餐小程序目录 目录 基于微信小程序的外卖订餐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户微信端功能模块 2、管理员服务端功能模块 3、商家务端功能模块 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…

Spring Boot整合 Cache 以Redis服务 处理数据缓存

目录 一、SpringBoot框架 二、什么是cache 三、redis介绍 四、高速缓存 一、SpringBoot框架 Spring Boot是一个基于Java的开源框架&#xff0c;用于快速构建独立的、可运行的、生产级的Spring应用程序。它简化了Spring应用程序的配置和部署过程&#xff0c;并提供了许多开…

git stash 正确用法

目录 一、背景 二、使用 2.1 使用之前&#xff0c;先简单了解下 git stash 干了什么&#xff1a; 2.2 git stash 相关命令 2.3 使用流程 1. 执行 git stash 2. 查看刚才保存的工作进度 git stash list 3. 这时候在看分支已经是干净无修改的(改动都有暂存到 stash) 4. 现在…

山脉的个数/攀登者

题目描述 攀登者喜欢寻找各种地图&#xff0c;并且尝试攀登到最高的山峰。 地图表示为一维数组&#xff0c;数组的索引代表水平位置&#xff0c;数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如&#xff1a;[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0]&#xff0c;代表如下…

代码随想录刷题笔记 DAY 26 | 组合总和 No.39 | 组合求和 II No.40 | 分割回文串 No.131

文章目录 Day 2501. 组合总和&#xff08;No. 39&#xff09;1.1 题目1.2 笔记1.3 代码 02. 组合求和 II&#xff08;No. 40&#xff09;2.1 题目2.2 笔记2.3 代码 03. 分割回文串&#xff08;No. 131&#xff09;3.1 题目3.2 笔记3.3 代码 Day 25 01. 组合总和&#xff08;No…