关键词:
JOANA
信息流控制
切片技术
漏洞检测
程序依赖图
摘要:
近十几年来,随着互联网的快速发展,针对基于网络的程序设计特点设计的Java程序设计语言发展迅速,在程序设计领域不断扩大自己的市场份额。目前,Java程序设计语言的市场占有率始终处于前两位。Java程序设计语言编写的程序不仅应用于PC端,也在手机终端和服务器平台。Java程序设计语言是一种面向对象的程序语言,在被用于编写程序时,可将所有对象看成一个整体,从而增加了代码的可读性、可复用性等。Java的运行时环境也即指Java虚拟机,是由即时编译器和垃圾回收器等组件组成。虚拟机机制使得Java程序设计语言设计的程序不受平台的影响,具有较强的“可移植性”。这一特性使得Java程序员编写的一段程序代码可用于不同平台,从而提高Java程序员的工作效率。由于Java程序设计语言的诸多优秀特性,使得Java语言程序要具备很高的正确性及安全性。而Java程序员本身很难确保代码完全安全无误,所以Java程序的漏洞检测技术在编写代码及程序开发时具有很重要的作用。本论文主要研究的是Java安全漏洞检测技术JOAN A(Java Object-sensitive ANAlysis,Java对象敏感分析)-Java的信息流控制(Information FlowControl,IFC)框架。IFC涉及由软件处理的敏感信息的安全性。它的目的是确保软件正确访问敏感信息不会泄露到未授权的接收器,或者在计算过程中使用来自未经授权的源的数据。它可以用于建立安全技术的补充,如访问控制或加密,以增强对敏感信息的保护。提出了一种用于线程和共享内存通信并行程序的信息流控制的实用技术。该技术保证了对合理的攻击者模型的信息的机密性的验证,并利用程序依赖图(PDG,Program Dependence Graph)将其应用于可以转换为PDG的所有程序。这样可以提高程序中可能的信息流的精度,并应用于一般的Java程序中。