南大《软件分析》13.0 Static Analysis for Security

南大《软件分析》13.0 Static Analysis for Security

henry Lv4

课程环境:https://tai-e.pascal-lab.net/lectures.html

课程视频:https://www.bilibili.com/video/BV1b7411K7P4

南大《软件分析》13.0 Static Analysis for Security

这一部分主要介绍一些静态分析在安全中的一些应用,其中污点分析是一个比较重要的应用领域。

Information Flow Security

首先对比访问控制和信息流安全的区别,

nipaste_2024-09-12_13-23-3

需要记住的核心就是访问控制更加关心信息是怎么被访问的,而信息流安全更加关心信息是如何被传播的

nipaste_2024-09-12_14-00-0

在信息流策略当中,将信息分为不同的安全等级,同时有一个重要规定就是高安全等级的信息流(高密)不能传播到低安全等级的信息流(低密)。

具体如下:

nipaste_2024-09-12_14-02-2

Confidentiality and Integrity

下面来介绍两个概念机密性和完整性,

nipaste_2024-09-12_14-06-1

这张图形象的说明了这两者之间的区别,机密性要防止信息被泄露,而完整性是防止信息被篡改

Explicit Flows and Covert Channels

信息泄露无处不在,不光是普通的显示流(如赋值语句),还有一些隐式流也会存在泄露问题,比如说如下的一些情况

nipaste_2024-09-12_14-20-4

这里先给出 Convert Channel 的定义

Mechanisms for signalling information through a computing system are known as channels.
Channels that exploit a mechanism whose primary purpose is not information transfer are called covert channels*.

显式流通常传播的信息要多于隐式流传播的信息,但是隐式流更不容易被发现。

nipaste_2024-09-12_14-24-5

在这个例子中显示流一次可以传播 32 bit 信息,而隐式流一次只传播 1 bit 信息。

Taint Analysis

首先看看污点分析里面的一些概念,tainted data,sources,sinks

nipaste_2024-09-12_14-28-1

sources 理解为产生污点数据的地方,sinks 可以理解为观察污点数据是否进入的地方。而我们前面提到的机密性和完整性都可以使用污点分析的理论来进行分析,如下所示

nipaste_2024-09-12_14-30-2

而这些分析过程,完全可以将我们之前指针分析的方法拿来直接使用,只需要新增一点东西即可。

nipaste_2024-09-12_14-33-0

由于重点关注污点数据如何传播,所以这里为产生的污点数据单独划分为一类对象。污点分析的输入输出定义如下:

nipaste_2024-09-12_14-34-4

同时污点分析的 rule 与指针分析大多数都相同,但是在 call 上稍有区别

nipaste_2024-09-12_14-40-1

这里分别针对 sources 和 sinks 设置了两种不同的 call rule。

nipaste_2024-09-12_14-41-0

比如在上面这个例子中,getPassword 是 sources,然后触发 call 的规则,将返回的污点数据标记,用 表示。

nipaste_2024-09-12_14-42-1

最后结果如下,可以发现污点数据最后流向了 log 处,即我们定义的 sink。

nipaste_2024-09-12_14-42-4

思考题

nipaste_2024-09-12_14-44-2

  • Title: 南大《软件分析》13.0 Static Analysis for Security
  • Author: henry
  • Created at : 2024-09-12 14:45:42
  • Updated at : 2024-09-12 14:47:13
  • Link: https://henrymartin262.github.io/2024/09/12/13.0_Static Analysis_For_Security/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments