原文作者:Mikhail Shcherbakov, Musard Balliu
原文标题:SerialDetector: Principled and Practical Exploration of Object Injection Vulnerabilities for the Web
原文链接:https://www.diva-portal.org/smash/get/diva2:1515038/FULLTEXT01.pdf
原文来源:Network and Distributed Systems Security (NDSS) Symposium 2021
笔记作者:cherry@SecQuan
实际情况中,多数已知的对象注入攻击源于框架和库的漏洞,但由于框架大量的基础代码、复杂的语法特征和缺乏源代码等特点,分析这些应用程序的底层框架和库具有挑战性。而现有方法多依赖于对应用程序的静态源代码分析,忽略框架和库,同时也缺乏自动化的开源工具调查潜在攻击的可行性。
论文介绍了在.NET应用程序(包括框架和库)中检测和利用对象注入漏洞(OIV)的第一个系统方法。作者的主要见解是:OIV的根本原因是从应用程序的公共入口点到敏感方法的不可信信息流,该敏感方法创建任意类型的对象以调用方法触发小工具的执行。论文开发并实现了基于污点的数据流分析系统SerialDetector,可以自动发现.NET程序集中的OIV模式,然后使用这些模式来匹配公开可用的小工具,自动验证OIV攻击的可行性。
SerialDetector分两个阶段运行:全自动检测阶段和半自动化漏洞利用阶段。在检测阶段,将.NET程序集列表和敏感方法列表作为输入,并进行系统分析以自动生成OIV模式,作者将OIV模式定义为触发敏感方法执行以创建控制攻击触发器执行的对象的公共入口点。漏洞利用阶段将生成的模式与可公开获得的小工具列表进行匹配,知识库中描述匹配的小工具,以生成用于不同格式的payload。
分析以面向对象的CIL(面向对象的基于堆栈的二进制指令集)为目标,利用具有模块化的过程间字段敏感数据流分析功能检测大型代码的OIV模式。
模式检测:(1)SerialDetector为整个.NET程序集数据集建立方法调用图的索引。(2)它使用定义敏感方法的条件过滤所有本机方法签名。此步骤将生成敏感方法的签名,从敏感方法到入口点方法,我们将其用于向后构建调用图的切片。(3)SerialDetector执行基于摘要的过程间数据流分析。(4)输出一系列模式,其中包含对每个敏感方法的攻击触发的调用以及从入口点到敏感方法的跟踪。我们在知识库中收集这些模式,并将其用作开发阶段的输入。
漏洞利用的生成和验证:(1)手动匹配:将生成的模式与实际的敏感方法和具有已知漏洞利用工具的的攻击触发器进行匹配,为工具生成payload并重现漏洞。给检测到的敏感接收器和攻击触发调用设置断点。如果触发了断点,并且攻击触发器对payload的恶意行为执行了调用链,则认为该模式是可利用的。(2)用匹配到的结果手动填充知识库。(3)自动生成payload和模板。(4)自动执行调用图分析。(5)自动化模板验证:验证给定的payload可以利用模板中的入口点。(6)安全人员进行漏洞利用。
检测阶段
漏洞利用阶段
安全学术圈招募队友-ing, 有兴趣加入学术圈的请联系secdr#qq.com