AI News HubLIVE
站内改写2 分钟阅读

用AI代理强化stb库

本文介绍如何使用AI代理(基于LLM)来发现、验证和修复stb库中的安全漏洞。作者设计了一个三阶段流程:发现(通过网页搜索、模糊测试和静态分析)、验证(通过自动化测试确认漏洞真伪)和修补。在多个stb库中发现了134个潜在bug,其中115个被确认为有效漏洞并修复,性能影响大多可忽略。

来源Hacker News AI作者: mrunix

stb是一组单头文件的C语言库,用于解码图像、字体、音频等多种任务。然而,这些库历史上存在大量安全问题,且很多问题未能得到及时修复,因此不适合处理不可信输入的环境。

近期,关于使用大型语言模型(LLM)进行安全研究的讨论日益增多,尤其是在Anthropic推出Claude Mythos以及随后的Claude Mythos 5之后。尽管作者无法使用Mythos,但仍认为现有的LLM可用于安全研究与加固,并尝试用其强化stb库。

作者设计了一套智能代理流程,能够发现并修复安全漏洞。该流程包含三个阶段:

阶段1:发现 代理通过三种技术搜索潜在安全问题:网页搜索(查找已知漏洞如GitHub issues和CVE)、模糊测试(使用工具或脚本测试恶意输入)、静态分析(读取源代码标记可疑部分)。

阶段2:验证 由于LLM可能产生幻觉,报告不存在的漏洞,因此需要通过自动化测试(单元测试或集成测试)验证已标记的bug是否真实存在。

阶段3:修补 确认漏洞后,代理以最小改动进行修补,并重新运行测试以验证修复效果。

作者测试了多个AI代理和模型,包括Opencode、Codex、GitHub Copilot和Hermes,结果均令人满意。截至目前,在stb库中发现并修复的漏洞数量如下:

| 库 | 总发现bug数 | 网页搜索 | 模糊测试 | 静态分析 | 有效漏洞 | | --- | --- | --- | --- | --- | --- | | stb_c_lexer.h | 12 | 7 | 2 | 3 | 12 | | stb_easy_font.h | 5 | 0 | 1 | 4 | 5 | | stb_hexwave.h | 12 | 5 | 4 | 3 | 12 | | stb_image.h | 30 | 21 | 5 | 4 | 21 | | stb_image_resize2.h | 17 | 13 | 1 | 3 | 13 | | stb_image_write.h | 9 | 4 | 2 | 3 | 7 | | stb_truetype.h | 36 | 13 | 15 | 8 | 34 | | stb_vorbis.c | 13 | 8 | 2 | 3 | 11 | | 总计 | 134 | 59 | 34 | 41 | 115 |

性能影响 作者对修补后的性能进行了基准测试,除stb_truetype.h外,其余库的性能回归可忽略不计。具体数据如下:

  • stb_image.h:大部分解码操作有轻微提升或下降,如PNG解码512x512 RGB耗时从1.930ms降至1.894ms(-1.9%),HDR解码512x512 RGB从2.259ms升至2.438ms(+7.9%)。
  • stb_truetype.h:部分操作性能下降较明显,如128px位图渲染从0.880ms升至1.162ms(+32.0%),48px图集打包从0.343ms升至0.429ms(+25.1%)。
  • stb_image_resize2.h:性能变化极小,大多在±2%以内。
  • stb_image_write.h:多数编码操作性能变化在±3%以内,HDR编码1024x1024 RGB上升8.2%。

总体而言,AI代理辅助的自动化安全加固方法在stb库上取得了显著效果,发现了大量真实漏洞并以极小性能代价进行了修复。