空指针异常引用是系统运行过程中的一种常见问题,该问题会引起程序崩溃或者异常退出,同时攻击者也可以利用空指针解引用来完成任意读写操作,导致信息泄露。Java作为一种广泛使用的语言,也存在空指针引用问题,主要原因是对引用变量的指...空指针异常引用是系统运行过程中的一种常见问题,该问题会引起程序崩溃或者异常退出,同时攻击者也可以利用空指针解引用来完成任意读写操作,导致信息泄露。Java作为一种广泛使用的语言,也存在空指针引用问题,主要原因是对引用变量的指向检查不足。文章提出一种基于数据流追溯的空指针引用检测系统,并设计了静态分析工具jvd。该工具通过特化追踪空指针在容器中的传播,使得空指针变量不会在容器中传播丢失,在中间语言Jimple层面上完成检测并覆盖多种空指针容器传播场景,有效降低复杂场景下的漏报率。在Juliet Test Suite的CWE476号测试集上,将文章所设计的jvd与SpotBugs、Infer等工具进行对比实验。实验结果表明,jvd能够在多种空指针传播场景下使用,在高精度场景下能够取得比其他工具更好的效果。展开更多
文摘空指针异常引用是系统运行过程中的一种常见问题,该问题会引起程序崩溃或者异常退出,同时攻击者也可以利用空指针解引用来完成任意读写操作,导致信息泄露。Java作为一种广泛使用的语言,也存在空指针引用问题,主要原因是对引用变量的指向检查不足。文章提出一种基于数据流追溯的空指针引用检测系统,并设计了静态分析工具jvd。该工具通过特化追踪空指针在容器中的传播,使得空指针变量不会在容器中传播丢失,在中间语言Jimple层面上完成检测并覆盖多种空指针容器传播场景,有效降低复杂场景下的漏报率。在Juliet Test Suite的CWE476号测试集上,将文章所设计的jvd与SpotBugs、Infer等工具进行对比实验。实验结果表明,jvd能够在多种空指针传播场景下使用,在高精度场景下能够取得比其他工具更好的效果。