• 南京大学【软件分析】13 Static Analysis for Security


    1. Information Flow Security

    引起安全问题最主要的两大原因是:injection errors(2013-2019排名第一)、information leak(2013-2019排名第四)
    来自:https://nvd.nist.gov/

    可以把信息流简单的分成两类:高密级(high,如密码)、低密级(low,如一般性数据)
    高密级的数据不能流向低密级
    在这里插入图片描述

    2. Confidentiality and Integrity

    Confidentiality:保密性,防止信息泄露
    Integrity:完整性,防止不可信的信息破坏(可信的)关键信息
    在这里插入图片描述

    x=readInput(); // untrusted
    cmd="..."+x;
    execute(cmd); // critical(trusted)
    
    • 1
    • 2
    • 3

    注入攻击违反了完整性,如:command injection、SQL injection、XSS attacks

    保密性和完整性实际上是从不同的视角来认识信息流安全问题的,是一种双向的对称关系。这种对偶带来的好处时,可以用一种技术问题解决这两个问题。

    • 保密性是对的保护,低密级数据可以流向高密级
    • 机密性是对的保护,高密级数据可以流向低密级
      在这里插入图片描述

    3. Explicit Flows and Covert/Hidden Channels

    Explicit Flows and Covert/Hidden Channels:显示流和隐藏信道
    信息流包含数据流:可以把直接的赋值语句理解为数据流,如下例,publicL和secretH之间没有数据流,但有信息流(可以通过publicL推断出secretH是否大于0),这种信息流也被称为隐式信息流implicit flow

    secretH=getSecret();
    if(secretH<0)
    	publicL=1;
    else 
    	publicL=0;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    一些信息泄露的例子:
    尤其是最后一个例子,可推测secret是否小于0,如果secret小于0,会抛出异常
    在这里插入图片描述
    信道channels:计算机系统中,传递信息、发送信息的机制
    隐藏信道Covert/Hidden Channels:如果该机制本身不是用来传递信息流的,但它仍把信息传递出去了,就称它为隐藏信道。
    在这里插入图片描述
    相比于显式信息流,隐藏信道难以寻找,但同时隐藏信道携带的信息也较少,泄漏的信息有限,显式信息流携带的信息更多。如下图,左侧泄漏32位信息,右侧泄漏1bit信息。
    在这里插入图片描述

    4. Taint Analysis

    简单解释污点分析:给敏感数据打上标记,跟踪这些被标记的数据(污点数据),是否到达了敏感操作点(sink),或调用敏感操作的指针会不会指向污点数据(类似于指针分析)。
    污点分析中常把数据分为两类:

    • 感兴趣的数据tainted data:通常把他们做一个标记,这类数据称为污点数据,在污点分析中追踪这类数据
    • 其他数据untainted data:不关心的数据

    sources:污点数据tainted data的来源。 在实践中,tainted data通常来自方法/API的返回值,把这些数据打上taint标记。
    sinks:通常是某些敏感方法,检查tainted data是否作为参数传入了这些敏感方法。

    在这里插入图片描述

    污点分析与指针分析的共同之处:
    污点分析的本质是跟踪程序中的污点分析,指针分析的本质是跟踪程序中的抽象对象。

    • 可以把污点数据看作对象
    • 可以把sources看作allocation sites
    • 借助指针分析传播污点数据

    形式化表示:

    污点分析的输入输出:
    input:

    • source:source方法集合(调用这些方法返回污点数据)
    • sink:sink方法集合(流到这里的污点数据违反了安全策略)
      output
    • TaintFlows:污点数据和sink方法对。<污点数据,sink方法>。 < t i , m > ∈ T a i n t F l o w s \in TaintFlows <ti,m>∈TaintFlows表示i处的污点数据流到了sink方法m中。

    传播规则
    在这里插入图片描述
    处理source和sink的规则
    在这里插入图片描述

    污点分析案例

    和指针分析结合的好处:很好的处理了别名问题,并且可以追踪信息流的流向。
    在这里插入图片描述

  • 相关阅读:
    vue3 iconify 图标几种使用 并加载本地 svg 图标
    面试机器学习你一定会遇到的知识点汇总
    Python开发环境搭建
    Scrapy简介-快速开始-项目实战-注意事项-踩坑之路
    git:一个本地仓库绑定多个远程的方法以及遇到的问题
    ubuntu 修改nginx端口
    两道ospf 网络优化题目解析
    Qt之使用bitblt抓取bitmap(位图)并转QImage
    Junit5单元测试Service中的方法
    动态规划-买卖股票系列
  • 原文地址:https://blog.csdn.net/qq_44807176/article/details/133411743