Fuzz入门教学——污点分析

news2024/12/24 8:45:43

1、简介

  • 污点分析是一种用于检测和防止安全漏洞的技术。它关注数据流中的敏感信息(污点)如何在程序中传播,从而导致安全风险。这种分析通常用于发现潜在的安全漏洞,例如隐私数据泄露或者对数据完整性的威胁。
  • 污点分析标记程序中的数据(外部输入数据或者内部数据)为污点,通过对带有污点标记的数据的传播实施分析来达到保护数据完整性和保密性的目的。
  • 如果信息从被标记的污点数据传播给未标记的数据,那么需要将未标记的标记为污点数据;如果被标记的污点数据传递到重要数据区域或者信息泄露点,那就意味着信息流策略被违反
  • 污点分析被广泛地应用在隐私数据泄露检测、漏洞挖掘等实际领域。

2、原理

  • 污点分析可以抽象成一个三元组 (sources,sinks,sanitizers)的形式。
    • source:污点源,代表不受信任的输入或敏感数据的来源。
    • sink:污点汇聚点,表示敏感信息可能泄露或被误用的地方。
    • sanitizer:无害处理,代表通过数据加密或者移除危害操作等手段使数据传播不再对软件系统的信息安全产生危害。
  • 污点分析就是分析程序中由污点源引入的数据是否能够不经无害处理而直接传播到污点汇聚点。如果不能,说明系统是信息流安全的;否则,说明系统存在隐私数据泄露或危险数据操作等安全问题。
  • 污点分析可以分成3个阶段:识别污点源和汇聚点、污点传播分析和无害处理。

2.1、识别污点源和汇聚点

  • 识别污点源和汇聚点是污点分析的前提。现有的识别方法可以大致分为3类:
    • 使用启发式的策略进行标记,例如把来自程序外部输入的数据统称为“污点”数据,保守地认为这些数据有可能包含恶意的攻击数据。
    • 根据具体应用程序调用的API或者重要的数据类型,手工标记污点源和汇聚点。
    • 使用统计或机器学习技术自动地识别和标记污点源及汇聚点。

2.2、污点传播分析

  • 污点传播分析就是分析污点标记数据在程序中的传播途径。按照分析过程中关注的程序依赖关系的不同,可以将污点传播分析分为显式流分析和隐式流分析
2.2.1、显式流分析
  • 分析污点标记如何随程序中变量之间的数据依赖关系传播
  • 例如下图中,a和b是污点源,x和y分别被a和b污染了。在对sink点进行污点判定的时候,可以发现代码存在信息泄露的问题,即可以通过sink点的x和y推断出a和b的值。
2.2.2、隐式流分析
  • 分析污点标记如何随程序中变量之间的控制依赖关系传播,也就是分析污点标记如何从条件指令传播到其所控制的语句。
  • 例如下图中,变量X是被污点标记的字符串类型变量,变量Y和变量X之间并没有直接或间接的数据依赖关系(显式流关系),但X上的污点标记可以经过控制依赖隐式地传播到Y(for循环中的语句)。最终,第12行的Y值和X值相同。但是,如果不进行隐式流污点传播分析,第12行的变量Y将不会被赋予污点标记。
  • 隐式流污点传播一直以来都是一个重要的问题,如果不被正确处理,会使污点分析的结果不准确。
    • 欠污染 (under-taint):由于对隐式流污点传播处理不当导致本应被标记的变量没有被标记。
    • 过污染 (over-taint):由于污点标记的数量过多而导致污点变量大量扩散。
  • 目前,针对隐式流问题的研究重点是尽量减少欠污染和过污染的情况。

2.3、无害处理

  • 污点数据在传播的过程中可能会经过无害处理模块,无害处理模块是指污点数据经过该模块的处理后,数据本身不再携带敏感信息或者针对该数据的操作不会再对系统产生危害。简单来说,带污点标记的数据在经过无害处理模块后,污点标记可以被移除。
  • 正确地使用无害处理可以降低系统中污点标记的数量,提高污点分析的效率,并且避免由于污点扩散导致的分析结果不准确的问题。
  • 常数赋值是最直观的无害处理的方式。加密处理、程序验证等在一定程度上也可以认为是无害处理。

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

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

相关文章

集成显卡Intel® UHD Graphics 630 安装Pytorch

安装Pytorch是为了搭建maskrcnn环境。 查了一圈发现: 显卡Intel UHD Graphics 630是集成显卡,所以不能安装cuda和cudann,也不能使用GPU加速 所以也需要放弃在该电脑上的用VMware新建Ubuntu虚拟机,然后安装有cuda版本的Pytorch&a…

2023-12-08 队列与栈

栈与队列一 232. 用栈实现队列 思路:对于使用栈实现队列的话,必须使用两个共同来维护使得每次都能先进先出! class MyQueue:def __init__(self):# 需要建立两个list来维护出栈以及进栈self.stack_in []self.stack_out []def push(self, x…

C# 两个日期比较大小

文章目录 C# 两个日期比较大小直接比较大小工具类DateTime.Compare C# 两个日期比较大小 直接比较大小 string ed "2023-12-13 09:27:59.000";//过去式DateTime nowDateTime DateTime.Now;DateTime expirationDate Convert.ToDateTime(ed);//质保期 长日期DateT…

压缩pdf怎么压缩又小又清晰?超级实用!

当PDF文件过大时,很容易遇到无法上传等现象,这时候我们可以借助一些专业的压缩工具,将PDF文件压缩变小,如果你还不知道怎么做,下面就来看下具体的压缩方法吧。 方法一:使用嗨格式压缩大师 1、打开电脑上安…

【Debug小结】关于部署Java项目的Jar包到本地服务器失败

问题描述: 在Idea中完成项目编码后,使用Package打包成.jar文件 接下来使用cmd执行java -jar xxx 命令后 报错如下:Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" j…

【内存函数】

目录 memcpy使用和模拟实现memmove使用和模拟实现memset使用memcmp使用 1. memcpy使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num) ; 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存的位置这个函数在遇到…

【Jenkins】Centos环境安装Jenkins(通过docker安装)

通过docker环境安装Jenkins 参考官网 https://hub.docker.com/r/jenkins/jenkins/ 1、安装docker环境 # 删除已有安装包 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-…

企业考勤技术,这个方法很靠谱!

在当今社会,随着科技的不断进步,人脸识别技术在各个领域得到了广泛应用。其中,三维人脸考勤系统作为一种高效、准确的考勤解决方案,正在成为企业管理和人力资源管理的重要工具之一。 与传统的二维人脸识别相比,三维人脸…

Corona最新渲染器Corona11详解,附送下载地址

近日,Corona进行了大版本更新,发布了最新的Corona11。这次更新,包含众多新功能和新修复,借助 Corona 11 用户可将作品提升到更高的创作水准,更真实可感的视觉水平。 那么更新了那些呢?一起来看看吧&#x…

Restormer技术点小结

1. 解决cnn的不足: 1)感受野有限 2)输入尺寸固定 2. 解决transform的不足: 1)计算复杂度随着空间分辨率的增加而二次增长 3. 优势结构:MDTA(Multi-Dconv Head Transposed Attention)和GDFN( Gated-Dco…

第16章 网络io与io多路复用select/pool/epool

第16.1节 写一个服务端代码 服务端代码 #include <stdio.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h>#include <fcntl.h>int main() {//openint sockfd sock…

【UE 材质】切换颜色、纹理时的过渡效果

效果 步骤 1. 新建一个工程&#xff0c;创建Basic关卡 2. 创建一个材质&#xff0c;这里命名为“M_Plane”&#xff0c;打开这个材质&#xff0c;在材质图表中添加如下节点 注意“Noise”节点中的函数选择“Voronoi” 3. 对材质“M_Plane”创建材质实例 4. 在场景中放置一个平…

idea SpringBoot target 不自动更新,不自动生成问题

如题,为什么不自动更新? 我使用Maven中的insert命令生成了target文件夹,但是,修改了代码重新启动还是不会自动更新,检查了文件,发现了resources文件夹是一个普通文件夹,没有标记为项目资源文件夹,所以idea不会给你自动生成的

Cglib动态代理从入门到掌握

Cglib 动态代理 本文的写作目的是为了探究 Spring 框架中在使用Transactional标注的方法中使用 this 进行自调用时事务失效的原因&#xff0c;各种视频教程中只是简单指出 this 指向的不是代理类对象&#xff0c;而是目标类对象&#xff0c;但是并没有解释为什么 this 不是代理…

工业性能CCD图像处理

硬件部分 软件部分 CCD新相机的调试处理(更换相机处理,都要点执行检测来查看图像变化) 问题:新相机拍摄出现黑屏,图像拍摄不清晰,(可以点击图像,向下转动鼠标的滚轮(Mouse Wheel)放大图像) 解决办法:进入CCD的设定,选择对应的相机,调试好参数(如下图) 选择好相…

技术Leader:像李云龙一样打造学习型团队

今天跟大家分享一下怎么样构建一个学习型的团队。 首先对于计算机行业而言&#xff0c;不明而喻&#xff0c;我们要接受的东西真的太多了。我们接触的信息和变化也太多了。如果只是因循守旧&#xff0c;排斥新东西&#xff0c;那么我们被时代淘汰只是个时间问题。 想当年我大…

【电子取证:FTK IMAGER 篇】DD、E01系统镜像动态仿真

​ 文章目录 【电子取证&#xff1a;FTK Imager 篇】DD、E01系统镜像动态仿真一、DD、E01系统镜像动态仿真 &#xff08;一&#xff09;使用到的软件 1、FTK Imager (v4.5.0.3)2、VMware Workstation 15 Pro (v15.5.2)&#xff08;二&#xff09;FTK Imager 挂载镜像 1、选择 …

thinkphp6入门(13)-- 一对多关联模型

定义一对一关联&#xff0c;例如&#xff0c;一个用户都有多个工作经历。 一、两表 1.用户表:user 2.工作经验表&#xff1a;work_experience user表的id关联work_experience表的user_id。 注意看&#xff0c;user_id1的有2条工作经验 二、数据模型 主表模型&#xff1a;…

Centos7 安装Redis详细教程

1. 安装依赖 redis是由C语言开发&#xff0c;因此安装之前必须要确保服务器已经安装了gcc&#xff0c;可以通过如下命令查看机器是否安装&#xff1a; gcc -v如果没有安装则通过以下命令安装&#xff1a; yum install -y gcc2.下载redis安装包并解压 # 下载&#xff0c;我是…