污点分析可以抽象成一个三元组 <sources,sinks,sanitizers>
的形式
- source 即污点源, 代表直接引入不受信任的数据或者机密数据到系统中
- sink 即污点汇聚点, 代表直接产生安全敏感操作(违反数据完整性)或者泄露隐私数据到外界(违反数据保密性)
- sanitizer 即无害处理, 代表通过数据加密或者移除危害操作等手段使数据传播不再对软件系统的信息安全产生危害
污点分析就是分析程序中由污点源引入的数据是否能够不经无害处理,而直接传播到污点汇聚点 。如果不能,说明系统是信息流安全的;否则,说明系统产生了隐私数据泄露或危险数据操作等安全问题。
显式流分析
通过直接或间接赋值形成的污染路径
隐式流污染分析
分析污点标记如何随程序中变量之间的控制依赖关系传播,也就是分析污点标记如何从条件指令传播到其所控制的语句