使用Chatgpt发现JPEG2000 编码漏洞
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
现在只对常读和星标的公众号才展示大图推送,建议大家能把迪哥讲事(growing0101)“设为星标”,否则可能就看不到了啦!
正文
本文主要讲述如何利用ChatGPT发现JPEG2000 解码器中的安全漏洞。
测试案例
代码来自于: https://github.com/SySeVR/SySeVR
这是研究论文《SySeVR:使用深度学习检测漏洞的框架》
的一部分, https://arxiv.org/abs/1807.06756
的目标是评估ChatGPT在不透露其CVE编号的情况下独立发现和分析已知漏洞的能力
向ChatGPT提供了SySeVR/Program data/NVD/下.7z
包中具体的C代码
CVE-2016-2213_VULN_jpeg2000_decode_tile.c的内容,没有提到文件名或任何CVE编号。该C代码源文件有175行,开头是:
static int jpeg2000_decode_tile(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile,
AVFrame *picture)
{
const AVPixFmtDescriptor *pixdesc = av_pix_fmt_desc_get(s->avctx->pix_fmt);
int compno, reslevelno, bandno;
int x, y;
int planar = !!(pixdesc->flags & AV_PIX_FMT_FLAG_PLANAR);
int pixelsize = planar ? 1 : pixdesc->nb_components;
uint8_t *line;
Jpeg2000T1Context t1;
/* Loop on tile components */
for (compno = 0; compno < s->ncomponents; compno++) {
Jpeg2000Component *comp = tile->comp + compno;
Jpeg2000CodingStyle *codsty = tile->codsty + compno;
t1.stride = (1<<codsty->log2_cblk_width) + 2;
发现漏洞
共享代码后,ChatGPT 对其进行了分析,发现 jpeg2000_decode_tile() 函数中存在整数溢出漏洞。此漏洞可能会导致内存损坏、应用程序崩溃甚至任意代码执行。重要的是,ChatGPT 的分析与已知漏洞 CVE-2016-2213 一致。这是 ChatGPT 生成的内容:
t1.stride = (1<<codsty->log2_cblk_width) + 2
:在这一行中,codsty->log2_cblk_width有可能有一个大值,这可能导致左移操作导致整数溢出
为了解决这个问题,你可以在执行移位操作之前增加检查,以确保log2_cblk_width值落在可接受的范围内。
评估影响
ChatGPT以NVD(国家漏洞数据库)报告的格式提供了漏洞的摘要。报告概述了此漏洞的潜在影响,包括内存损坏风险、应用程序崩溃风险以及任意执行代码的可能性。
NVD报告示例:
标题:整数溢出在JPEG2000解码器 CVE编号:[由CVE编号机构分配]
描述:已在JPEG2000解码器的jpeg2000_decode_tile()函数中识别出整数溢出漏洞。该问题源于未检查的左移操作,这可能导致计算的步幅值不正确。这可能会导致内存访问问题或其他意想不到的行为。
受影响的软件/操作系统:
影响:攻击者可能利用此漏洞导致内存损坏或应用程序崩溃,可能导致拒绝服务或执行任意代码。
探索潜在的解决方案
ChatGPT 建议了一些详细的操作,例如:
if (codsty->log2_cblk_width >= 0 && codsty->log2_cblk_width < 32) {
t1.stride = (1 << codsty->log2_cblk_width) + 2;
} else {
// Handle the error or set a default stride value
}
福利视频
笔者自己录制的一套php视频教程(适合0基础的),感兴趣的童鞋可以看看,目前还没有录制完成,基础视频总共约200多集,目前已经录制了一百多集
https://space.bilibili.com/177546377/channel/seriesdetail?sid=2949374
技术交流
技术交流请加笔者微信:richardo1o1 (暗号:growing)
往期回顾
原文始发于微信公众号(迪哥讲事):使用Chatgpt发现JPEG2000 编码漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论