ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

VLC VP9分辨率变更崩溃:Exploitarium播放器解码器PoC的完整触发条件指南

VLC VP9分辨率变更崩溃:Exploitarium播放器解码器PoC的完整触发条件指南 VLC VP9分辨率变更崩溃Exploitarium播放器解码器PoC的完整触发条件指南【免费下载链接】exploitariumA single archive of public exploit PoCs and vulnerability research writeups. At the time I post these, none have been reported. Feel free to report them yourself and take credit for the CVE if handed out lulz. Please do not abuse these. I do this so to allure people into the field, and Ive always found this is the most efficient way.项目地址: https://gitcode.com/GitHub_Trending/ex/exploitarium 本文带你解析 Exploitarium 漏洞仓库中的VLC VP9 解码器崩溃 PoC一份仅 405 字节的视频文件如何让 VLC 3.0.23Windows在解码中途崩溃核心关键词VLC VP9分辨率变更崩溃、播放器解码器漏洞触发条件、堆越界写复现。⚠️ 负责任使用提示本 PoC 仅供本地受控环境复现与研究请勿用于任何恶意用途仓库 README.md 中的 ABUSE 章节明确要求。这个 PoC 是干什么的在 vlc-vp9-reschange-crash-poc/ 目录中研究者提供了一个极简复现器项目说明目标VLC media player3.0.23Windows x64解码模块plugins/codec/libavcodec_plugin.dllFFmpeg 4.4.x 系 VP9 解码器漏洞类型分辨率变更时的过期分配越界写stale allocation out-of-bounds write复现文件poc.py纯标准库零外部依赖研究状态未完成、持续研究中exploitability 尚未闭环它生成的测试视频是一个标准 IVF 容器内嵌 VP9 码流总共只有 405 字节、两帧画面帧序号分辨率超级块行数sb_rows第 1 帧64 × 64(6463) 61第 2 帧64 × 8192(819263) 6128触发条件的关键为什么是这个形状 换分辨率为什么会让解码器崩溃答案藏在 FFmpeg VP9 解码器的**片元线程进度表entries数组**里。解码器用一个数组追踪每个超级块行的处理进度该数组按当前帧的超级块行数分配第 1 帧是64x64解码器只分配了1 × sizeof(atomic_int)4 字节的进度表第 2 帧把高度拉到8192需要 128 行的进度表但——前提是瓦片列数tile-column没变解码器不会重新分配这块内存于是旧的 4 字节分配被当作 128 行使用片线程复位循环对每一行执行置零写入for (i 0; i s-sb_rows; i) atomic_store(s-entries[i], 0);结果就是连续 128 次 4 字节写其中绝大部分落在原始 4 字节分配之外——这就是堆越界写。所以完整的触发链条可以总结为三个条件✅ 同一码流内帧高度发生剧烈变化64 → 8192✅ 变化不改变瓦片列布局保证复用旧分配✅ 目标播放器内置解码器沿用按首帧尺寸的过期分配VLC 3.0.23 捆绑的 FFmpeg 4.4.x 正是如此。研究证据129 次写入127 次越界作者在本地插桩跟踪了libavcodec_plugin.dll中 RVA0x698a5c处的复位循环对64x64 - 64x8192样本的直存追踪数据显示详见 vlc-vp9-reschange-crash-poc/README.md追踪指标数值entries总写入次数129超出 4 字节分配请求的写入127超出分配器实际可用块的写入114在 Windows 上的实际进程表现取决于堆布局与运行时状态观察到的结果包括堆损坏终止0xC0000374与访问违例0xC0000005。PoC 脚本中也内置了对应的崩溃码分类表见 poc.py 中的CRASH_CODES字典。如何本地复现3 步复现脚本只用了 Python 标准库生成的样本 SHA256 可校验确保你拿到的是同一份 405 字节样本F26BDEFBDFD0B44359E314E0BFDE7AEA979D29F80F598749DCCA68AB34F54649生成 IVF 样本python poc.py或python poc.py -o sample.ivf指定输出路径可选用本地 VLC 回放python poc.py --vlc C:\Path\To\VLC\vlc.exe脚本会以 dummy 输入/输出、--play-and-exit方式静默播放并把退出码归类为clean/crash:access_violation/crash:heap_corruption等状态核对输出脚本打印 JSON包含样本路径、SHA256、大小与可选的 VLC 进程结果方便你比对是否命中同一崩溃路径。️ 再次强调请只在你自己控制的环境里运行。这个 405 字节的媒体文件是研究解码器故障路径的工具不是攻击武器。给新手的启示从 PoC 能学到什么这个样本虽然研究状态未完成但它的教学价值很高小样本、大信号405 字节就能稳定触发越界写说明分辨率变更 资源复用是解码器 fuzzing 的高价值变异方向读懂过期状态漏洞不在单帧数据本身而在跨帧复用的分配决策——这是理解解码器类漏洞的常见钥匙可验证的复现固定 SHA256、标准库脚本、崩溃码分类让任何人可以低成本复现并对照自己的结果。该 PoC 是 Exploitarium 归档README.md中vlc-vp9-reschange-crash-poc条目源提交fae72b82的一部分。如果你想继续深挖可从 vlc-vp9-reschange-crash-poc/poc.py 入手观察它如何构造两帧 IVF、如何用命令行静默驱动 VLC再对照 vlc-vp9-reschange-crash-poc/README.md 中的Research Notes追踪 RVA 与写入计数。小结VLC VP9分辨率变更崩溃的根因高度剧变但瓦片列不变时entries进度表沿用首帧的小分配复位循环越界清零触发条件三要素高度 64→8192、瓦片列布局稳定、目标为 VLC 3.0.23Windows内置 FFmpeg 4.4.x 解码器复现极简纯标准库脚本 405 字节 IVF SHA256 校验该研究仍在继续完整利用链尚未公开适合用作学习解码器堆越界写的入门案例。【免费下载链接】exploitariumA single archive of public exploit PoCs and vulnerability research writeups. At the time I post these, none have been reported. Feel free to report them yourself and take credit for the CVE if handed out lulz. Please do not abuse these. I do this so to allure people into the field, and Ive always found this is the most efficient way.项目地址: https://gitcode.com/GitHub_Trending/ex/exploitarium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表