面向源代码的软件漏洞静态检测综述

0X00 前言

无意间在看到信息安全学报的一片最新的论文,和我最近看的有点关系,感觉还不错,就放到这里来

PS:师傅们如果喜欢这个 PDF 请尽量不要直接从我这里下载,因为走的是下行流量需要我每天付费(:3 」∠ ),我提供原始下载链接叭!
http://www.infocomm-journal.com/cjnis/CN/article/downloadArticleFile.do?attachType=PDF&id=168198

Mehr lesen

简单理解污点分析技术

0X00 前言

同符号执行一样,污点分析也是我们分析代码漏洞,检测攻击方式的重要手段,在漏洞自动化扫描或者检测工具中有着十分广泛的应用,本文主要是对污点分析进行一些简单的介绍,文中内容来源于网络,在最后我会附上参考的文章以及论文的链接。

0X01 污点分析基本原理

1.污点分析定义

污点分析可以抽象成一个三元组<sources,sinks,sanitizers>的形式,其中,source 即污点源,代表直接引入不受信任的数据或者机密数据到系统中;sink即污点汇聚点,代表直接产生安全敏感操作(违反数据完整性)或者泄露隐私数据到外界(违反数据保密性);sanitizer即无害处理,代表通过数据加密或者移除危害操作等手段使数据传播不再对软件系统的信息安全产生危害.污点分析就是分析程序中由污点源引入的数据是否能够不经无害处理,而直接传播到污点汇聚点.如果不能,说明系统是信息流安全的;否则,说明系统产生了隐私数据泄露或危险数据操作等安全问题.

Mehr lesen

简单理解符号执行技术

0X00 前言

因为最近看的很多静态检测的论文中涉及到了符号执行的概念,而在我第一次听到符号执行实际上是在我的一些搞二进制学长口中,自然认为是和 web 没啥关系,但是现在看来只是因为我我太菜了,很多知识在更高的层次看起来都是交融的,而不是我现在看到的全部都是互不相关的板块,或许这也就是为什么要读研吧,不读研那就疯狂努力吧。好了,废话不多讲了,由于我对符号执行的理解没有达到很高的层次,不能进行更详尽的总结分析,故我只能在网上找了一些我个人认为总结的比较好,并且通俗易懂的文章进行一些摘录,在此之前先对这些优秀的作者表示感谢,文章之后我会附上我引用的文章或者论文的链接。

0X01 通俗地解释符号执行

Wiki中的定义是:在计算机科学中,符号执行技术指的是通过程序分析的方法,确定哪些输入向量会对应导致程序的执行结果为某个向量的方法(绕)。通俗的说,如果把一个程序比作DOTA英雄,英雄的最终属性值为程序的输出(包括攻击力、防御力、血槽、蓝槽),英雄的武器出装为程序的输入(出A杖还是BKB)。那么符号执行技术的任务就是,给定了一个英雄的最终属性值,分析出该英雄可以通过哪些出装方式达到这种最终属性值效果。

Mehr lesen

脚本语言中安全漏洞的静态检测(半机翻有删增)

摘要

我们提出了一种静态分析算法,用于检测PHP中的安全漏洞,PHP是一种用于构建Web应用程序的流行服务器端脚本语言。我们的分析采用了一种新颖的三层体系结构以在内部块,过程内和过程间级别以更低的粒度级别捕获信息。这种架构使我们能够处理脚本语言的动态特性,这些特性尚未被先前技术充分解决。
我们在六个流行的开源PHP代码库中证明了我们的方法的有效性,发现了105个以前未知的安全漏洞,其中大多数我们认为可以远程利用。

介绍

近年来,基于Web的应用程序迅速扩散,并已成为提供从论坛到银行和零售等安全敏感领域的在线服务的事实标准
因此,这些应用程序中的安全漏洞对这些服务的提供者和用户都构成了越来越大的威胁。在2004年下半年,赛门铁克编制了670个影响Web应用程序的漏洞,比2003年同期增加了81%。在可预见的未来,这种趋势可能会持续下去。

Mehr lesen

考虑要点:检测跨站点脚本(半机翻有删增)

摘要

Web应用程序(WA)扩展其用途以提供越来越多的服务,它已成为服务提供商和用户之间最重要的通信渠道之一。为了增强用户体验,许多Web应用程序正在使用客户端脚本语言(如JavaScript),但这种JavaScript的增长也增加了Web应用程序中的严重安全漏洞,例如跨站点脚本(XSS)。在本文中,我调查了用于检测XSS的所有技术,并安排了大量分析来评估这些方法的性能。本文指出了检测XSS的主要困难。我没有实现此漏洞问题的任何解决方案,因为我的重点是审查这个问题。但是,我相信这个评估将合作进一步研究这个问题,因为这篇论文弄清了这个超越性安全问题的一切。

介绍

一类脚本代码被注入动态生成的可信站点页面,用于将敏感数据传输到任何第三方(即攻击者的服务器)并避免同源策略或cookie保护机制,以允许攻击者访问机密数据。

Mehr lesen

KameleonFuzz:黑盒XSS检测的进化模糊测试(半机翻有删增)

摘要

模糊测试包括自动生成恶意输入并将其发送到应用程序,以便有可能触发漏洞。模糊测试需要这样的问题:在哪里模糊?模糊哪个参数?在哪里观察它的影响?等等

在本文中,我们特别针对以下问题:如何模糊参数?如何观察其影响?为了解决这些问题,我们提出了KameleonFuzz,一个用于Web应用程序的blackbox Cross Site Scripting(XSS)fuzzer(模糊器)。

KameleonFuzz不仅可以生成利用XSS的恶意输入,还可以检测它揭示漏洞的接近程度。恶意输入的产生和演变是通过一种由攻击语法引导的遗传算法实现的。双重污点推断,直到浏览器解析树能够精确检测利用代码是否成功执行。我们的评估显示没有误报并且有着很好的 XSS 漏洞检测功能:KameleonFuzz检测到其他黑盒扫描仪遗漏下来的漏洞。

Mehr lesen

使用Fuzzing自动检测Web应用程序中的漏洞(半机翻有删增)

摘要

自动检测漏洞是文献中研究的问题,也是具有安全要求的应用程序开发中非常重要的问题。Fuzzing是一种软件测试技术,自动或半自动化,涉及在软件中注入大量半随机输入以解决安全漏洞。许多漏洞检测技术需要专业人员进行手动分析,以确定是否存在任何漏洞。为了解决这个问题,决定开发一个使用模糊测试自动检测Web应用程序漏洞的系统。检测Web应用程序中的漏洞与在其他类型的软件中检测不同。发生这种情况是因为Web应用程序包含许多后端组件,这会导致特定的漏洞,因此,它可以方便地监视这些组件。这项工作提供了一个模糊Web应用程序的框架。在这项工作中,在每个Web应用程序组件内部进行监视。该框架检测一组有代表性的Web应用程序漏洞:SQL注入、本地或者远程文件包含、反射型或者存储型XSS。我们的SQL注入检测机制能够检测最近提出的这一类别的细微攻击。我们使用易受攻击的代码示例和开源Web应用程序对框架进行实验性评估。

介绍

漏洞检测是文献中广泛研究的主题,也是具有安全性要求的软件开发中的一个非常重要的问题。通过模糊测试发现了许多软件漏洞。Fuzzing 是一种软件测试技术,涉及在软件中重复注入半随机输入,以便由目标应用程序处理,并检查是否存在与预期不同的行为。如果是这样,某个输入可能会利用错误或漏洞。

Mehr lesen

用模糊测试对抗预期输入(半机翻有删增)

摘要:

模糊测试是一种高度自动化的测试技术,它使用无效数据(来自文件,网络协议,API调用和其他目标)作为应用程序输入来覆盖大量边界情况,以更好地确保不存在可利用的漏洞。模糊测试让开发人员或质量保证(QA)团队在使用功能测试等技术进行测试时测试大量边界情况成本过高。综合的负面测试案例( 那些验证产品不做它不应该做的事情,而不是它做了它应该做的事情(正测试案例)) 很难构建,因为可能的排列数量是天文数字。然而,模糊测试覆盖了大部分负面测试用例,而没有强迫测试人员针对给定的边界条件处理每个特定的测试用例。

介绍

例如,如果输入包含一个4字节有符号整数,应该在1到10之间,边界情况将包括0,-1,11,12,大负数和字节边界周围的情况(2^8,2^16,2^24,2^31)。单独编码这些情况很困难,考虑到整数是一种相对受限的输入形式(字符串具有更多的排列),这实际上是一组最好的测试用例。边界条件很重要,因为边界条件故障的重要子集是安全故障。因此,我们今天未测试的边界条件是我们明天必须发布的安全补丁。

Mehr lesen

SQL注入漏洞的自动化测试:输入数据变异法(半机翻有删增)

摘要

Web服务越来越多地应用于各种领域,从nance和e-government到社交媒体。由于它们是基于Web技术构建的,因此它们也遭受了前所未有的攻击和渗透。在这些攻击中,那些针对SQL注入漏洞的攻击在过去几年一直排名第一。在上线Web服务之前进行测试以检测此类漏洞至关重要。我们在本文中提出了一种自动化测试方法,即μ4SQLi,以及它的基础变异算子集。μ4SQLi可以产生有效的输入,从而导致可执行和有害的SQL语句。可执行性是关键,否则不能利用注入漏洞。我们的评估表明,该方法对于检测SQL注入漏洞并产生绕过现实世界中常见配置的应用程序防火墙是有效的。

介绍

在本文中,我们提出了一种针对SQLi漏洞的黑盒自动化测试方法,称为 μ4SQLi。
从一般的初始测试用例开始,我们的方法应用了一组特定设计的变异算子,以增加产生成功SQLi攻击的可能性

Mehr lesen

图形化显示 Python 函数之间的调用关系

0X00 前言

由于最近在分析 Python 写成的项目的代码,但是由于项目庞大、设计函数繁多、调用关系复杂,往往单纯地依靠肉眼和注释等方式去记录或者是使用 Pycharm 等编译工具去动态的调试在我看来都不能满足我对整个项目运行过程清楚理解的需要,因此就需要一款工具能比较方便的记录程序运行过程中的函数调用关系,最好还能使用图形化的形式表示出来,就非常类似于 IDA 的函数流程框图的功能,我找了一下还真有这样的好用的东西,于是这里简单的记录一下,方便后面的使用。

0X01 安装方法

1.下载并安装graphviz

下载地址:https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi

注意:安装路径可任意选择

2.配置环境变量

比如我的安装路径是

E:\Graphviz2.38

那么就在系统环境变量 path 中添加下面的项

E:\Graphviz2.38\bin

3.安装 pycallgraph

pip install pycallgraph

Mehr lesen