[论文笔记] KNighter: Transforming Static Analysis with LLM-Synthesized Checkers

news/2026/1/17 22:55:06/文章来源:https://www.cnblogs.com/sysss-blogs/p/19493862

Introduction

传统静态分析依赖专家手工定义的分析规则,无法应对新的 bug 模式。LLM 在代码理解上有不俗的能力。但直接使用 LLM 去分析 Linux 内核又面临有限上下文和幻觉的问题。本文提出用 LLM 从以往的报告中合成静态检查器,并通过在已有报告上运行来验证检查器的正确性以减少幻觉。KNighter 生成的检查器在 Linux 内核中发现了 92 个新的漏洞。

Background

Clang Static Analyzer

KNighter 基于 Clang Static Analyzer(CSA) 实现。对于一个 bug 类型,应该首先设计对应的抽象状态,规定相关的程序点,在对应程序点上通过回调函数实现静态检查逻辑。程序会被建模成程序点和抽象状态组成的一个爆炸超图(exploded graph)。

Motivating Example

一个原始漏洞是 devm_kzalloc 调用后缺少空指针检查,解引用的时候会崩溃。因为缺乏 devm_kzallloc 可能在失败时返回 NULL 的领域知识,以往的内核分析工具未能识别这些漏洞。KNighter 从原始漏洞及其修复方案中提取出这个问题,合成的检查器跟踪执行路径中的空检查状态,在 Linux 内核中发现了 3 个新的漏洞。

Design

image

整个 workflow 可以划分为合成(synthesis)和精化(refinement)两个部分。

Checker synthesis

合成又可以划分为四个阶段:1. 分析 bug 模式;2. 制订计划;3. 合成代码;4. 验证,这四个阶段由四个 agent 完成。整体的思路很像 claude code,gemini cli 等一些 code agents。

分析 bug 模式:bug 模式从 patch 上下文中提取,希望更具针对性而不是特别高程度的泛化(这可以提高 LLM 生成的成功率)

制定计划:计划确实能给生成过程带来性能提升。此外,作者还手动维护了一个实用函数的集合,LLM 可以在规划过程中考虑并在后续生成中直接使用它们

合成代码:作者还提供了一个预定义的检查器模板以提高 LLM 生成成功率。为了处理这些可能的编译错误,还采用了一个专门的调试 agent。

验证:对相关代码的错误版本和补丁版本进行评估,验证检查器是否正确识别了原始代码中的目标错误,并在补丁后不存在报告。

image

image

image

Checker refinement

检查器的精化同样用一种 agentic way 的方式实现。一个分类 agent 判定检查器给出的报告是真阳性还是假阳性,另一个精化 agent 根据分类和原始的 bug 模式调整检查器的逻辑。这一过程会迭代的进行,直到消除掉所有的假阳性报告(并且保持真阳性报告不变)。

Evaluation

TBD

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1175029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机Java毕设实战-基于Javaspringboot的博客系统基于springboot的博客系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

基于Java+SpringBoot+Vue的美食交流宣传系统【附源码+文档+部署视频+讲解】Python,Django,php,Flask,node.js,SSM,JSP,微信小程序,大数据技术

博主介绍 👨 程序员一枚,全网粉丝 30W,累计助力 5000 学子完成优秀毕设,专注大学生项目实战开发、技术讲解与毕业论文撰写修改,全栈领域优质创作者!博客之星、掘金 / 华为云 / 阿里云 / InfoQ 等多平台优质…

基于Java+SpringBoot+Vue的城市花园维修小区管理【附源码+文档+部署视频+讲解】Python,Django,php,Flask,node.js,SSM,JSP,微信小程序,大数据技术

博主介绍 👨 程序员一枚,全网粉丝 30W,累计助力 5000 学子完成优秀毕设,专注大学生项目实战开发、技术讲解与毕业论文撰写修改,全栈领域优质创作者!博客之星、掘金 / 华为云 / 阿里云 / InfoQ 等多平台优质…

集体好奇心如何提升团队适应能力

集体好奇心如何提升团队适应能力 关键词:集体好奇心、团队适应能力、知识共享、创新思维、团队凝聚力 摘要:本文聚焦于集体好奇心与团队适应能力之间的关系。首先介绍了研究的背景、目的、预期读者等基本信息。接着阐述了集体好奇心和团队适应能力的核心概念及二者的联系,通…

Java毕设选题推荐:基于vue的博客分享发布系统基于springboot的博客系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【计算机毕业设计案例】基于python-CNN卷神经网络训练识别手势方向

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

详细介绍:Java 中 NIO 和IO 的区别

详细介绍:Java 中 NIO 和IO 的区别2026-01-17 22:48 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

LVGL 双缓冲机制深入技术讲解

LVGL 双缓冲机制深入技术讲解全面深入讲解 LVGL(Light and Versatile Graphics Library)的双缓冲、DMA 并行刷新、瓦片渲染与性能优化第一部分:核心概念与原理 1. 为什么需要缓冲?——从根本问题说起 在没有缓冲的情况下&#xff…

LeeCode_693. 交替位二进制数

693. 交替位二进制数 给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 示例 1: 输入:n = 5 输出:true 解释:5 的二进制表示是:101法一:只要有前…

java的AES加密算法和RSA非对称加密算法

一、AES加密算法:import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.util.Base64;public class AESEncryption …

图的基本概念

11图的基本概念

GESP认证C++编程真题解析 | 202409 一级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…

物联网数据中台建设方法论与实践

好的,请看这篇文章。 标题选项 物联网数据中台的终极指南:从概念到落地实践解锁万物互联的宝藏:物联网数据中台建设方法论与实践详解告别数据孤岛:构建支撑海量IoT数据的智能中台从设备到洞察:手把手教你构建企业级物联…

探寻不锈钢管板好货源?2026年国内厂家推荐,高温合金法兰/压力容器法兰/非标法兰/双相钢法兰,不锈钢管板公司有哪些 - 品牌推荐师

行业背景与趋势洞察 随着国内制造业向高端化、精密化转型,不锈钢管板作为压力容器、管道系统及特种装备的核心部件,其质量稳定性与定制化能力直接影响下游产业的安全性与生产效率。2025年行业数据显示,国内不锈钢管…

【计算机毕业设计案例】基于机器学习 python-CNN-pytorch训练识别苹果树叶病害识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

java-ssm324医院预约挂号系统vue问诊 失信 投诉-springboot

目录具体实现截图系统概述技术架构核心功能创新亮点应用价值系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 系统概述 Java-SSM324医院预约挂号系统结合Vue前端与SpringBoot后端技术&#xff0c…

深度学习毕设项目推荐-基于python-CNN卷积神经网络训练识别不同颜色的裤子识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

一篇文章看懂 spring-boot-starter-web 的 POM 配置与 compile 作用域

在 Spring Boot 项目开发中&#xff0c;spring-boot-starter-web 是搭建 Web 应用的核心依赖。很多开发者查看它的 POM 文件时&#xff0c;会对其中的 <scope>compile</scope> 配置产生疑问&#xff1a;这个配置到底对不对&#xff1f;它的作用是什么&#xff1f;今…

2026年目前服务好的双相钢法兰供应商选哪家,不锈钢法兰/双相钢法兰/非标法兰/变压器法兰,双相钢法兰直销厂家排行 - 品牌推荐师

在工业管道系统中,双相钢法兰作为连接管道与设备的关键部件,其耐腐蚀性、高强度和抗疲劳性能直接影响着石化、船舶、核电等重工业领域的安全生产与作业效率。据中国机械工业联合会及管道工程协会联合发布的《2025-20…

Maven 依赖作用域实战避坑指南

在 Maven 项目开发中&#xff0c;依赖作用域的配置直接影响项目的编译、测试和打包结果&#xff0c;稍有不慎就会引发 ClassNotFoundException、依赖包冗余等问题。结合日常开发场景&#xff0c;本文整理了常见的作用域使用误区和解决方案&#xff0c;帮你精准避坑。一、 高频误…