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

文章目录

  • 1. Information Flow Security
  • 2. Confidentiality and Integrity
  • 3. Explicit Flows and Covert/Hidden Channels
  • 4. Taint Analysis
  • 污点分析案例

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)

注入攻击违反了完整性,如: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;

一些信息泄露的例子:
尤其是最后一个例子,可推测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 <t_i, m> \in TaintFlows <ti,m>∈TaintFlows表示i处的污点数据流到了sink方法m中。

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

污点分析案例

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习实验】卷积神经网络(六):卷积神经网络模型(VGG)训练、评价

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集&#xff08;CIFAR10Dataset&#xff09; a. read_csv_labels&#xff08;&#xff09; b. CIFAR10Dataset 2. 构建模型&#xff08;FeedForward&…

【网络协议】TCP

TCP协议全称为传输控制协议(Transmission Control Protocol).要理解TCP就要从他的特性开始说&#xff0c;这些特性各自之间或多或少各有联结&#xff0c;需要以宏观视角来看待。 目录&#xff1a; 1.TCP报文格式 因为报文解释过于繁琐&#xff0c;具体内容请看这篇文章TCP报文…

问题 - 谷歌浏览器 network 看不到接口请求解决方案

谷歌浏览器 -> 设置 -> 重置设置 -> 将设置还原为其默认值 查看接口情况&#xff0c;选择 All 或 Fetch/XHR&#xff0c;勾选 Has blocked cookies 即可 如果万一还不行&#xff0c;卸载浏览器重装。 参考&#xff1a;https://www.cnblogs.com/tully/p/16479528.html

微信小程序开发基础(二)基本组件

本帖开始介绍小程序中的一些基本组件~ 微信小程序是一种轻量、快速、跨平台的应用程序&#xff0c;是微信公众号的重要组成部分。随着微信小程序的普及&#xff0c;越来越多的开发者和企业开始使用微信小程序来搭建自己的应用&#xff0c;但是对于初次接触微信小程序的开发者…

CSS 基础 3

目录 &#x1f680; 导读 -- target 盒子模型 看透网页布局的本质 盒子模型组成 边框(border) border-style ​编辑border-color border-width 边框写法 简写 分开写 表格细线边框 边框会影响盒子实际大小 内边距 内容 内边距-padding padding属性简写 pad…

《PPT 自我介绍》:一本让你的职场表现更加出色的秘籍?

这里提供一个2000字左右的PPT自我介绍模板制作指南&#xff1a; 自我介绍是面试或工作中常见的情况&#xff0c;利用PPT可以给人留下更深刻的印象。但如何快速且专业地制作一个自我介绍PPT呢?这里给大家介绍几点技巧&#xff1a; 1. 选择一个简洁大方的PPT模板 首先要选择一…

spark相关网站

Spark的五种JOIN策略解析 https://www.cnblogs.com/jmx-bigdata/p/14021183.html 万字详解整个数据仓库建设体系&#xff08;好文值得收藏&#xff09; https://mp.weixin.qq.com/s?__bizMzg2MzU2MDYzOA&mid2247484692&idx1&snf624672e62ba6cd4cc69bdb6db28756a&…

STM32F4X UCOSIII任务信号量

STM32F4X UCOSIII任务信号量 任务信号量与内核信号量对比内核信号量任务信号量 UCOSIII任务信号量API任务信号量发送函数任务信号量接收函数 UCOSIII任务信号量例程 之前的章节中讲解过信号量这个机制&#xff0c;UCOSIII除了有内核信号量之外&#xff0c;还有任务信号量。在UC…

OpenMesh 网格平滑之二

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里实现一种比较简单的平滑算法,即通过反复将顶点移动到其邻居的重心来实现我们平滑的目的。 二、实现代码 #define _USE_MATH_DEFINES #include <iostream>//OpenMesh #include <OpenMesh/Core/I

前端项目练习(练习-002-NodeJS项目初始化)

首先&#xff0c;创建一个web-002项目&#xff0c;内容和web-001一样。 下一步&#xff0c;规范一下项目结构&#xff0c;将html&#xff0c;js&#xff0c;css三个文件放到 src/view目录下面&#xff1a; 由于html引入css和js时&#xff0c;使用的是相对路径&#xff0c;所以…

详解C语言—文件操作

目录 1. 为什么使用文件 2. 什么是文件 3. 文件的使用 文件指针 文件的打开和关闭 三个标准的输入/输出流&#xff1a; 4. 文件的顺序读写 对字符操作&#xff1a; fputc&#xff1a; fgetc&#xff1a; 练习复制整个文件&#xff1a; 对字符串操作&#xff1a;…

WebGL雾化

目录 前言 如何实现雾化 线性雾化公式 雾化因子关系图 根据雾化因子计算片元颜色公式 示例程序&#xff08;Fog.js&#xff09; 代码详解​编辑 详解如何计算雾化因子&#xff08;clamp()&#xff09; 详解如何计算最终片元颜色&#xff08;根据雾化因子计算片元颜色…

数据库学习笔记——DDL

数据库学习笔记——DDL 建立EMPLOYEE数据库&#xff1a; CREATE TABLE employee(employee_ID int not null,employee_name varchar(20) not null,street varchar(20) not null,city varchar(20) not null,PRIMARY KEY(employee_ID) );CREATE TABLE company(company_name varc…

安装php扩展XLSXWriter,解决php导入excel表格时获取日期变成浮点数的方法

安装php扩展XLSXWriter 1、下载安装包 PECL :: Package :: xlswriter #例如选择下载1.3.6版本 2、解压下载包 tar -zxvf xlswriter-1.3.6.tgz 3、进入文件夹,编译 cd xlswriter-1.3.6 phpize ./configure --with-php-config=/usr/local/php7.1/bin/php-config make&am…

搭建自己的搜索引擎之四

一、前言 搭建自己的搜索引擎之三 介绍了通过HTTP RESTful 对ES进行增删改查&#xff0c;这一般手工运维ES时使用&#xff0c;程序代码中最好还是使用Java API去操作ES会更容易维护&#xff0c;但ES API竟然贼多&#xff0c;本篇介绍一下 四种 API及其简单使用。 注&#xff…

第1篇 目标检测概述 —(2)目标检测算法介绍

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。目标检测算法是一种计算机视觉算法&#xff0c;用于在图像或视频中识别和定位特定的目标物体。常见的目标检测算法包括传统的基于特征的方法&#xff08;如Haar特征和HOG特征&#xff09;以及基于深度学习的方法&#xff0…

webpack:使用externals配置来排除打包后的某个依赖插件IgnorePlugin的使用

背景 假设&#xff0c;我们写了一个库并使用 webpack 打包输出 bundle&#xff0c;但是这个库依赖一个第三方包&#xff0c;比如依赖 lodash&#xff0c;这时候我们不想把这个库打包进 bundle 里因为体积会变大&#xff0c;而且我们的主项目里已经安装了这个 lodash&#xff0…

Docker(三)、Dockerfile探究

Dockerfile探究 一、镜像层概念1、通过执行命令显化docker的机制 二、Dockerfile基础命令1、FROM 基于基准镜像【即构建镜像的时候&#xff0c;依托原有镜像做拓展】2、LABEL & MAINTAINER -说明信息3、WORKDIR 设置工作目录4、ADD & COPY 复制文件5、ENV 设置环境常量…

P1496 火烧赤壁【区间排序合并】

P1496 火烧赤壁【区间排序合并】 题目背景 曹操平定北方以后&#xff0c;公元 208 年&#xff0c;率领大军南下&#xff0c;进攻刘表。他的人马还没有到荆州&#xff0c;刘表已经病死。他的儿子刘琮听到曹军声势浩大&#xff0c;吓破了胆&#xff0c;先派人求降了。 孙权任命周…

crypto:Alice与Bob

题目 根据题目描述&#xff0c;将98554799767分解成两个素数 得到两个素数101999和966233。根据题目提示把它们拼接起来进行md5的32位小写哈希