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

概要    

        利用 AI 大模型进行代码审计,可以显著提高审计效率,扩大漏洞覆盖率,降低人工成本,并帮助开发人员编写更安全的代码。然而,AI 大模型在代码审计中的应用仍处于早期阶段,面临着模型解释性、误报率、数据安全等挑战。未来,随着技术的不断发展和完善,AI 大模型有望成为代码审计领域的重要工具,为软件安全保驾护航。

        AiCodeAudit是基于OpenAI大模型开发设计的自动化代码安全审计工具,利用图结构构建项目之间的依赖引用信息,相比于现有的基于RAG的代码审计设计方案,基于知识图谱的代码审计可以充分利用图的结构特性,使得大模型理解代码之间复杂的调用逻辑,从而提高代码审计的准确性。

项目地址:GitHub - xy200303/AiCodeAuditContribute to xy200303/AiCodeAudit development by creating an account on GitHub.https://github.com/xy200303/AiCodeAudithttps://github.com/xy200303/AiCodeAudit

整体架构流程

       

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的使用方法,该工具目前还只是演示版本,欢迎各位大佬指点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客小云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值