Fuzz入门教学——污点分析

2023-12-14 03:44
文章标签 分析 教学 入门 fuzz 污点

本文主要是介绍Fuzz入门教学——污点分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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、无害处理

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

这篇关于Fuzz入门教学——污点分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/491022

相关文章

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请