软件分析13 指针分析的应用-Security

信息流安全

Security

在敌人/威胁存在的情况下达成一些目的

Information flow

变量\(x\)的信息传递到变量\(y\), 就说存在一个\(x\to y\)的信息流

Information flow Security

如何联系信息流与安全这两个概念呢?回顾安全的定义,即要将程序变量划分安全等级,控制不同等级之间的信息流来防止威胁对程序产生影响。

这种等级实际上形成

image-20211125125727671

Policy

为了保证信息流安全,在不同应用场景下有不同的Policy.

比如:

image-20211125125835122

这种Policy下,只允许以下几种信息流

image-20211125125930986

image-20211125125939270

又比如安全方面的两大目的:保密性完整性.分别只允许以下信息流

image-20211125130037090

保密性和完整性定义如下:

image-20211125130121708

显式流和隐藏信道

直接赋值产生的信息流称为显式流。通常特点是:易于发现且泄露信息量大

与之相对的称为隐藏信道

image-20211125130249738

特点是很难发现(几乎无法避免),但泄露信息量小

image-20211125130318977

污点分析

鉴于显式流和隐藏信道的特点,找出显式流中的安全问题操作性较强也效率较高。污点分析就是为了达成这一目的

规范定义

image-20211125130428713

简单来讲, 就是将一些产生敏感数据的方法标记为source,其产生的数据称为tainted data.通过指针分析观察其流向,如果流入敏感方法sinks.就报告出来

保密性和完整性本质上都是对敏感信息流的监测,因此都可以用污点分析的方法进行。

image-20211125130721589

相比指针分析只多了上面两个内容(call有更新,等21年slides)

存在的问题

事实上,污点分析只能分析通过指针流动的信息流.而对于一些特定的语法,虽然其也会流通信息但无法被指针分析捕获。

比如

image-20211125130847656

这就要求污点分析需要再附加对具有特定语义的语句的监测

posted @ 2021-11-25 21:12  xheiyan  阅读(69)  评论(0)    收藏  举报