本发明涉及网络安全,具体而言,涉及一种针对跨站攻击检测方法及系统。
背景技术:
1、互联网技术的快速发展为人们的生活带来了便利,但随之而来的网络安全攻击问题也日益严峻。跨站攻击是网络应用面对的最为严重的攻击之一。传统的跨站攻击指面对输入型漏洞的脚本注入攻击,即跨站脚本攻击(cross-site scripting,xss)。攻击者通过注入恶意脚本来窃取用户登陆凭证、会话令牌等敏感信息。更隐蔽的跨站攻击是跨站隐私泄露攻击(cross-site leaks,xs-leak),攻击者利用网页的侧信道窃取用户的浏览历史、cookie等隐私,以进一步利用。为了有效地抵御跨站攻击,进行安全检测是维护网站安全的重要措施。
2、现有的安全检测方案存在以下关键问题:
3、(1)源码静态分析可有效解决跨站脚本攻击问题,但是许多程序内置的变量状态检查函数往往会干扰静态分析结果。
4、(2)非注入型跨站隐私泄露问题更为隐蔽,攻击者利用侧信道窃取用户的状态信息以进一步利用。以往查找这类响应都是人工进行,效率较低。
技术实现思路
1、为解决上述问题,本发明实施例提供一种针对跨站攻击检测方法,所述方法包括:将网络应用的源代码转化为抽象语法树,以及将所述抽象语法树转化为静态单赋值形式;将所述静态单赋值形式的变量映射为符号值,得到变量的取值范围和约束条件,以及依据符号值进行符号执行;生成可达路径以及提取所述可达路径的约束条件;基于污点分析算法对所述可达路径进行跟踪,得到污点分析结果;基于求解器将所述污点分析结果转化为逻辑表达式进行验证;根据所述求解器的验证结果输出静态分析报告;所述静态分析报告包括可达路径、跨站脚本攻击上下文信息。
2、可选地,基于变量检查函数分析算法生成可达路径,所述变量检查函数分析算法的输入为变量检查函数列表和已分析变量列表,输出为可达路径标记;包括:
3、步骤1,判断所述变量检查函数列表的变量检查函数是否为判空值函数;若是则执行步骤2,若否则执行步骤4;
4、步骤2,如果所述变量检查函数的参数存在于所述已分析变量列表,则该路径标记为未知,继续探测路径;
5、步骤3,如果所述变量检查函数的参数不存在于所述已分析变量列表,则该路径标记为安全,生成新路径;若没有新路径生成,则结束所述变量检查函数分析算法;
6、步骤4,判断所述变量检查函数是否为字符串检查函数;若是则执行步骤5,若否则执行步骤7;
7、步骤5,如果所述变量检查函数的参数存在于所述已分析变量列表,则该路径标记为安全,继续探测路径;
8、步骤6,如果所述变量检查函数的参数不存在于所述已分析变量列表,则该路径标记为未知,继续探测路径;
9、步骤7,判断所述变量检查函数是否为数字检查函数;若是则执行步骤8,若否则执行步骤1;
10、步骤8,如果所述变量检查函数的参数存在于所述已分析变量列表,则该路径标记为安全,继续探测路径;
11、步骤9,如果所述变量检查函数的参数不存在于所述已分析变量列表,则该路径标记为未知,继续探测路径。
12、可选地,所述基于污点分析算法对所述可达路径进行跟踪,得到污点分析结果,包括:
13、步骤1,输入污点源列表、汇聚点列表、过滤器列表;
14、步骤2,遍历所述污点源列表中污点源,如果跟踪到的汇聚点在所述汇聚点列表中,则执行步骤3,否则执行步骤4;
15、步骤3,获取跟踪的所述汇聚点的上下文类型,以及依据所述上下文类型判断跟踪的过滤器是否在所述过滤器列表中;如果是,则执行步骤4,如果否,则执行步骤5;
16、步骤4,返回被分析污点源的安全状态为安全;
17、步骤5,返回被分析污点源的安全状态为存在泄露。
18、可选地,所述将所述静态单赋值形式的变量映射为符号值,得到变量的取值范围和约束条件,以及依据符号值进行符号执行,包括:将所述静态单赋值形式转换为控制流图并进行数据流分析;将数据流分析的结果作为依据进行符号解释,将所述静态单赋值形式映射为符号值,得到变量的取值范围和约束条件。
19、本发明实施例提供一种针对跨站攻击检测方法,其特征在于,所述方法包括:
20、定义监听函数fl=(mi,ml,r)、定义监听信道cl=(mi,ml)、定义风险信道wcl为存在跨站隐私泄露风险的监听信道,其中mi为包含方法,ml为监听方法,r为响应,所述监听方法ml为用来获取网络应用在某一时刻状态的信息的方法;
21、构建包含方法集si=set{mi}、监听方法集sl=set{ml}、响应集sr=set{r},组合得到三元组测试集合t=set{(mi,ml,r)},其中mi∈si、ml∈sl、r∈sr;
22、以测试集t为输入进行请求测试,选择目标网站的跨站url,收集返回的响应;
23、检查响应结果构成的三元组,确定风险信道wcl;所述风险信道wcl为对应大于或等于两个不同响应的监听信道;
24、验证所述风险信道的攻击可行性。
25、可选地,所述验证所述风险信道的攻击可行性,包括:
26、步骤1,选定目标网站作为输入,构造至少两个不同的状态信息;所述两个不同的状态信息对应于两个不同的监听信道;
27、步骤2,收集所述目标网站的统一资源定位符url;
28、步骤3,发送状态请求至所有所述统一资源定位符url,收集对应的响应;
29、步骤4,排除静态统一资源定位符url;
30、步骤5,多次动态地测试剩余的所述统一资源定位符url;
31、步骤6,输出所述监听信道和统一资源定位符二元组集合set{(cl,url)}。
32、可选地,所述排除静态统一资源定位符,包括:过滤掉多个重复的监听信道上响应结果一致的静态url。
33、本发明实施例提供一种针对跨站攻击检测系统,其特征在于,用于执行上述针对跨站攻击检测方法。
34、可选地,包括静态分析模块、侧信道检测模块;所述静态分析模块及所述侧信道检测模块,用于执行上述针对跨站攻击检测方法。
35、可选地,还包括算法和流水线模块,所述算法和流水线模块用于执行变量检查函数分析算法及验证流水线算法。
36、本发明实施例提供的针对跨站攻击检测方法及系统,可以检测输入型漏洞,结合污点跟踪进行源代码静态分析,改善可行路径检测误报率,识别跨站脚本攻击;以及,定义了监听信道以及设计自动化探测侧信道信息泄露的方案,构建攻击验证流水线,表征跨站隐私泄露威胁,可以自动化地检测跨站隐私泄露威胁。
1.一种针对跨站攻击检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,基于变量检查函数分析算法生成可达路径,所述变量检查函数分析算法的输入为变量检查函数列表和已分析变量列表,输出为可达路径标记;包括:
3.根据权利要求1所述的方法,其特征在于,所述基于污点分析算法对所述可达路径进行跟踪,得到污点分析结果,包括:
4.根据权利要求1所述的方法,其特征在于,所述将所述静态单赋值形式的变量映射为符号值,得到变量的取值范围和约束条件,以及依据符号值进行符号执行,包括:
5.一种针对跨站攻击检测方法,其特征在于,所述方法包括:
6.根据权利要求5所述的方法,其特征在于,所述验证所述风险信道的攻击可行性,包括:
7.根据权利要求6所述的方法,其特征在于,所述排除静态统一资源定位符,包括:
8.一种针对跨站攻击检测系统,其特征在于,用于执行权利要求1-7任一项所述的针对跨站攻击检测方法。
9.根据权利要求8所述的系统,其特征在于,包括静态分析模块、侧信道检测模块;
10.根据权利要求9所述的系统,其特征在于,还包括算法和流水线模块,所述算法和流水线模块用于执行变量检查函数分析算法及验证流水线算法。