使用C/C++语言编写的程序可能包含安全漏洞。这些漏洞可以被用来劫持控制流。现存的控制流劫持攻击防御措施通常是对间接控制流跳转的目标进行校验,或保证代码指针的完整性。然而,此时攻击者依然可以通过修改函数指针的依赖将间接控制...使用C/C++语言编写的程序可能包含安全漏洞。这些漏洞可以被用来劫持控制流。现存的控制流劫持攻击防御措施通常是对间接控制流跳转的目标进行校验,或保证代码指针的完整性。然而,此时攻击者依然可以通过修改函数指针的依赖将间接控制流跳转的目标弯曲为合法但是不符合预期的值。为了解决这个问题,引入了控制相关数据完整性来保证函数指针以及它们的依赖的完整性。这些依赖决定了函数指针的定义和间接控制流跳转之间潜在的数据流关系。首先,控制相关数据完整性保护系统识别出所有函数指针;然后,使用过程间静态污点分析收集它们所依赖的数据;最后,系统将这些控制相关数据分配到硬件保护的内存Ms中来阻止未授权的修改。在SPEC CPU 2006 benchmarks和Nginx上测量了控制相关数据完整性保护系统的开销,并在三个真实世界的漏洞和一个虚表指针劫持攻击的测试集测试了它的有效性。结果显示,设计的系统能够成功检测到所有攻击,同时在C/C++benchmarks上只有约10.2%的平均开销,在Nginx上约是6.8%,在可接受范围内。实验表明,控制相关数据完整性保护系统是有效且实用的。展开更多
Pointer analysis is a technique to identify at compile-time the potential values of the pointer expressions in a program, which promises significant benefits for optimizing and parallelizing compilers. In this paper,...Pointer analysis is a technique to identify at compile-time the potential values of the pointer expressions in a program, which promises significant benefits for optimizing and parallelizing compilers. In this paper, a new approach to pointer analysis for assignments is presented. In this approach, assignments are classified into three categories: pointer assignments, structure (union) assignments and normal assignments which don't affect the point-to information. Pointer analyses for these three kinds of assignments respectively make up the integrated algorithm. When analyzing a pointer assignment, a new method called expression expansion is used to calculate both the left targets and the right targets. The integration of recursive data structure analysis into pointer analysis is a significant originality of this paper, which uniforms the pointer analysis for heap variables and the pointer analysis for stack variables. This algorithm is implemented in Agassiz, an analyzing tool for C programs developed by institute of Parallel Processing, Fudan University. Its accuracy and effectiveness are illustrated by experimental data.展开更多
文摘使用C/C++语言编写的程序可能包含安全漏洞。这些漏洞可以被用来劫持控制流。现存的控制流劫持攻击防御措施通常是对间接控制流跳转的目标进行校验,或保证代码指针的完整性。然而,此时攻击者依然可以通过修改函数指针的依赖将间接控制流跳转的目标弯曲为合法但是不符合预期的值。为了解决这个问题,引入了控制相关数据完整性来保证函数指针以及它们的依赖的完整性。这些依赖决定了函数指针的定义和间接控制流跳转之间潜在的数据流关系。首先,控制相关数据完整性保护系统识别出所有函数指针;然后,使用过程间静态污点分析收集它们所依赖的数据;最后,系统将这些控制相关数据分配到硬件保护的内存Ms中来阻止未授权的修改。在SPEC CPU 2006 benchmarks和Nginx上测量了控制相关数据完整性保护系统的开销,并在三个真实世界的漏洞和一个虚表指针劫持攻击的测试集测试了它的有效性。结果显示,设计的系统能够成功检测到所有攻击,同时在C/C++benchmarks上只有约10.2%的平均开销,在Nginx上约是6.8%,在可接受范围内。实验表明,控制相关数据完整性保护系统是有效且实用的。
基金the National Natural Science Foundation of China under grant No.69903003,Defence Science and Technology Key Laboratory Foundat
文摘Pointer analysis is a technique to identify at compile-time the potential values of the pointer expressions in a program, which promises significant benefits for optimizing and parallelizing compilers. In this paper, a new approach to pointer analysis for assignments is presented. In this approach, assignments are classified into three categories: pointer assignments, structure (union) assignments and normal assignments which don't affect the point-to information. Pointer analyses for these three kinds of assignments respectively make up the integrated algorithm. When analyzing a pointer assignment, a new method called expression expansion is used to calculate both the left targets and the right targets. The integration of recursive data structure analysis into pointer analysis is a significant originality of this paper, which uniforms the pointer analysis for heap variables and the pointer analysis for stack variables. This algorithm is implemented in Agassiz, an analyzing tool for C programs developed by institute of Parallel Processing, Fudan University. Its accuracy and effectiveness are illustrated by experimental data.