1、主要内容v为什么软件安全需要程序分析?v程序分析能提供什么?v软件安全需要什么?v现状与展望1为什么软件安全需要程序分析(1)v例子输入中的敏感信息是否会被输出?输入中的不安全成份是否会传导到输出?2为什么软件安全需要程序分析(2)v如果不分析软件代码输入一定会传导到输出如果代码作者声称考虑了隔离,则不会传导;如果作者声称没有考虑隔离,则会传导但代码作者可能会出错v所以,程序分析有助于在更细的粒度上保护安全3主要内容v为什么软件安全需要程序分析?v程序分析能提供什么?v软件安全需要什么?v现状与展望4程序分析能提供什么(1)v程序分析的起源编译器程序验证v一个编译优化的例子int f(int*
2、p,int*q)p0*=10;y=q0;p0+=5;return y*p0;5程序分析能提供什么(2)v程序分析不可能百分百准确莱斯定理(Rices Theorem)v如何取舍在保证保守性前提下提高精度main()x=read();y=f(x);z=sanitize(y);output(f(z);int f(int a)return a;6程序分析能提供什么(3)v现有程序分析技术的问题对于大多数分析目标而言,在保证保守性的前提下,分析效率的制约会产生大量误报v上下文敏感、流敏感、域敏感、路径敏感7xyasanitizezomain()x=read();y=f(x);z=sanitize(y)
3、;output(f(z);int f(int a)return a;主要内容v为什么软件安全需要程序分析?v程序分析能提供什么?v软件安全需要什么?v现状与展望8软件安全需要什么(1)v软件安全一般考虑实际软件系统的安全v软件安全中的攻与防攻:给定一个软件系统,试图找到该系统的安全漏洞防:给定一个软件系统,试图证明该系统没有安全漏洞v未知的安全漏洞9软件安全需要什么(2)v当前软件安全保证的策略努力寻找软件的安全漏洞如果能找到安全漏洞,从“攻”的角度是发现了漏洞,从“防”的角度是通过修复漏洞提升安全性如果不能找到安全漏洞,则认为软件暂时是安全的10/XX主要内容v为什么软件安全需要程序分析?v程序分析能提供什么?v软件安全需要什么?v现状与展望11现状v保守性的程序分析广泛地用在软件安全漏洞的检测中某些程序分析可以达到很高的精度,在软件安全漏洞的检测中使用并无问题v比如,字符串分析某些程序分析的精度不高,可能成为软件安全漏洞检测的瓶颈v比如,指针指向分析,指针别名分析12/XX展望v软件安全漏洞的检测不应总是简单地借用已有的程序分析技术v软件安全的研究人员和程序分析的研究人员应更密切地合作v针对软件安全的需要,应更多地开展非保守性的程序分析的研究13/XX