Overview & Preliminaries
两类分析:
- may Analysis:over-approximation
- must Analysis:under-approximation
实际上都是为了safety of analysis。
对于一个含 $k$ 个节点的CFG,每个迭代算法对于每个node $n$ 更新$\mathrm{OUT}[n]$。
假设迭代算法的研究对象(domain)是$V$,定义一个k元组
,
$ V^k $ 即一次迭代产生的输出,每次迭代会更新$V^k$,可以将每次迭代经过transfer functions和control-flow handing的过程抽象为$F: V^k\rightarrow {V^{k}}’$
当$V^k\rightarrow {V^{k}}’$时,即$X=F(X)$ ,称$F(x)$在$X$处到达了不动点,$X$为$F(x)$的不动点,
母校计算机院的李樾、谭添老师讲的课,听了第一节课就哭了,决定做一下笔记,课程网站 https://pascal-group.bitbucket.io/teaching.html。
如上图所示,主要分三大块,理论部分包含语言设计、类型系统、语义和逻辑检查;环境部分包含编译器和运行时设计等;应用部分包含程序分析、程序验证和程序生成等,本课程主要关注于应用方面的程序分析。
OpenRASP是一种较为成熟的RASP技术开源实现,技术思路主要是上一篇文章中的主动型RASP原理,详细可以见hook函数列表(商业版有动态污点追踪),本文为试用报告,之后有时间会深入看看代码。
安装MongoDB和ElasticSearch(5.6~6)
在https://packages.baidu.com/app/openrasp/release/latest/下载rasp-cloud.tar.gz
解压并配置conf/app.conf
:
1 | [prod] |
启动./rasp-cloud -d
,用户名密码为openrasp::admin@123
,后台如下图所示:
本文首次发表在慕测头条公众号,这里只作归档用
随着人们对软件安全的不断重视,静态安全扫描系统被部署于开发流程。相对于其他传统分析方法,污点分析技术由于具有较高的可解释性和准确性,目前作为挖掘 Web 漏洞的常用技术,广泛应用于开源和商用扫描器中。
然而,污点分析方法存在种种不足。首先,污点分析无法处理容器类型,静态污点分析只能将容器变量(如Map、List变量)的传播规则设为传播/不传播污点,造成过污染/欠污染;其次,污点分析无法处理控制流,污点分析并不能识别用于检查数据是否合法的分支语句,导致误报;最后,污点分析无法处理特殊的传播条件,如SSRF漏洞要求攻击者能操纵域名,若污点拼接在URL参数部分,则代码不存在漏洞,而污点分析仍会报告漏洞。为解决这些问题,目前安全工程师只有手动设计精巧的规则,可即使这样仍会产生大量误报甚至漏报。
Python 开发扫描器时往往会调用其他第三方工具,但是通过 os.system()
或者其他命令中是会有这样或那样的坑或不足,本文对这些问题进行总结并提出解决方案,并在结尾给出了一个封装好的类,能较为完美的解决Python调用第三方命令的问题。
登录点击记住密码时,有rememberMe,下次登陆时会带rememberMe的cookie,rememberMe存在反序列化问题
调试得到序列化入口和解密方法:
1 | org.apache.shiro.mgt.AbstractRememberMeManager#rememberIdentity(AuthenticationToken, AuthenticationInfo):321 |