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

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

文章目录

概要

    利用 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的使用方法,该工具目前还只是演示版本,欢迎各位大佬指点。
相关文章
|
16天前
|
人工智能 自然语言处理 搜索推荐
AI与GIS工具引领企业变革
科技赋能企业转型:清华团队突破固态电池技术,AIGEO融合AI与GIS助力精准获客,降本增效。覆盖美妆、教育、金融等多领域,提升流量与转化率,推动数字化升级。(238字)
190 107
|
5天前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
16天前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
412 1
|
16天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
617 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
15天前
|
人工智能 API 开发者
揭秘大模型工具调用的核心:上下文工程+MCP
本文系统解析模型上下文协议(MCP)与大模型工具调用的关系,澄清“大模型需理解MCP”的常见误解。MCP实为开发者服务的标准化接口,简化工具集成,提升开发效率,而大模型仅需识别工具列表,无需感知MCP存在。助力高效构建AI智能体。
472 52
|
10天前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
|
5天前
|
人工智能 搜索推荐 UED
一个牛逼的国产AI自动化工具,开源了 !
AiPy是国产开源AI工具,结合大语言模型与Python,支持本地部署。用户只需用自然语言描述需求,即可自动生成并执行代码,轻松实现数据分析、清洗、可视化等任务,零基础也能玩转编程,被誉为程序员的智能助手。
|
8天前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
114 4
|
15天前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
449 8
|
13天前
|
人工智能 并行计算 PyTorch
以Lama Cleaner的AI去水印工具理解人工智能中经常会用到GPU来计算的CUDA是什么? 优雅草-卓伊凡
以Lama Cleaner的AI去水印工具理解人工智能中经常会用到GPU来计算的CUDA是什么? 优雅草-卓伊凡
56 4