文章目录
概要
利用 AI 大模型进行代码审计,可以显著提高审计效率,扩大漏洞[覆盖率](https://so.csdn.net/so/search?q=%E8%A6%86%E7%9B%96%E7%8E%87&spm=1001.2101.3001.7020),降低人工成本,并帮助开发人员编写更安全的代码。然而,AI 大模型在代码审计中的应用仍处于早期阶段,面临着模型解释性、误报率、数据安全等挑战。未来,随着技术的不断发展和完善,AI 大模型有望成为代码审计领域的重要工具,为软件安全保驾护航。
AiCodeAudit是基于[OpenAI](https://so.csdn.net/so/search?q=OpenAI&spm=1001.2101.3001.7020)大模型开发设计的自动化代码安全审计工具,利用图结构构建项目之间的依赖引用信息,相比于现有的基于RAG的代码审计设计方案,基于知识图谱的代码审计可以充分利用图的结构特性,使得大模型理解代码之间复杂的调用逻辑,从而提高代码审计的准确性。
项目地址:GitHub - xy200303/AiCodeAuditContribute to xy200303/AiCodeAudit development by creating an account on GitHub.https://github.com/xy200303/AiCodeAudithttps://github.com/xy200303/AiCodeAudit
整体架构流程
![](https://i-blog.csdnimg.cn/direct/5952ae375b0b406b9ee83b2f46c2158d.jpeg)
1. 项目结构解析 (Project Structure Parsing)
步骤:读取项目文件:工具首先读取项目的源代码文件。
格式化源码并进行标记:对读取的源代码进行格式化处理,并添加必要的标记以方便后续分析。
构建项目结构树:基于格式化后的源代码,构建一个表示项目结构的树状模型。
2. 依赖关系分析 (Dependency Analysis)
步骤:项目基本代码单元分解:将项目的基本代码单元(如函数、类等)进行分解。
生成调用关系:分析这些基本代码单元之间的调用关系。
构建项目依赖树:基于调用关系,构建一个表示项目依赖关系的树状模型。
生成项目依赖图谱:将依赖关系可视化为图谱,便于进一步分析。
3. 审计结果生成 (Audit Result Generation)
步骤:构建格式化模板:根据项目依赖图谱和调用关系,构建一个用于生成审计结果的模板。
自定义审计提示词:根据特定的审计需求,添加或修改审计提示词。
生成审计结果:基于格式化模板和审计提示词,生成详细的审计报告。
保存审计结果:将生成的审计报告保存到指定的位置或数据库中。
Agent_1 负责项目的基本代码单元分解和依赖关系分析,生成项目依赖图谱。
Agent_2 则负责基于依赖图谱生成审计结果,并保存这些结果。
通过这种方式,自动化代码审计工具能够高效地分析代码结构和依赖关系,并生成详细的审计报告,帮助开发者识别潜在的问题和优化点。
技术名词解释
知识图谱:知识图谱是一种基于知识的结构化表示方法,用于描述和组织世界上的知识。它可以将知识按照一定的逻辑关系连接在一起,形成一个图形化的知识网络。知识图谱通常由实体、属性和关系组成。实体是指具体的事物或概念,如人物、地点、事件等;属性是描述实体的特征,如姓名、年龄、地理位置等;关系是连接两个实体之间的关联关系,如父子关系、工作关系等。通过将这些实体、属性和关系相互连接,知识图谱可以为用户提供丰富的知识查询和推理服务。知识图谱在自然语言处理、信息检索、智能问答等领域都有广泛的应用。
Agent:Agent是指一种软件程序,它可以代表用户执行特定任务或提供特定服务。例如,聊天机器人可以被视为代理程序,它可以代表用户进行对话。
效果演示
1.项目依赖安装
从Github下载项目源码,安装项目依赖库。
pip install -r requirements.txt
2.配置OpenAI接口和密钥
打开目录下的config.yaml文件,修改自己的OpenAI接口地址和Api_Key。
3.运行并使用项目
利用Pycharm打开后修改main.py的目标目录路径或者直接使用下述命令使用即可。
python main.py -d ./项目目录 -o ./output
下面是Pycharm运行的效果
小结
本文讲述了代码审计工具AiCodeAudit的使用方法,该工具目前还只是演示版本,欢迎各位大佬指点。