Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 13 Static Analysis for Security

Information Flow Security

跟踪程序中的信息流,确保全部信息都妥帖处理了
更关注信息传递。

与指针分析的关系

它与指针分析有相似之处,所以有taint analysis方法

Security Level

明显,程序中的变量(信息)有不同的安全等级,比如two-level policy将单个变量划分为high security或者low security。
变量的安全等级(security level)也能建模为格。

Information Flow Policy

限制不同Security levels间信息的传递

Noninterference Policy

高安全变量不能干扰到低安全变量的值,实践上,观察低安全变量应该无法推测高安全变量的任何信息。也即X_low_security_level=y_high_security_level * 10这种都不行。

Confidentiality and Integrity

Confidentiality: 秘密不应该被泄露
Integrity: 关键信息不应该被篡改,如Command injection, SQL注入,XSS攻击


Explicit Flow and Covert Channels

explicit flow: 通过拷贝关系传递的信息
implicit flow: 被high security variable影响的信息,注意有时通过运行时间或者抛出异常(比如数组越界)也能泄漏一部分信息

课件将能够泄漏信息的渠道称之为channels
Channels that exploit a mechanism whose primary purpose is not information transfer are called covert channels
示例:

由于Explicit flow泄漏的信息更多,所以课件主要关注Explicit Flow

Taint Analysis

Taint Analysis将数据分为两种,一种是带标签的成为Tainted data,剩下的是untainted data。发送或者确定tainted data的方法或者程序通常被称为sources。而一些令人感兴趣的程序点被称为sinks。
tainted data通过追踪从sources到sinks路径上的标签/被explicit flow影响到tainted data对应的变量来确定信息是否泄漏。



原文地址:https://www.cnblogs.com/xuesu/p/14340888.html