启用源代码分析技术处理大数据Checkmarx中国区技术专家陈安明陈安明介绍•端玛科技总经理,独立应用安全风险分析师,Checkmarx中国区技术专家。•是中国最早从事源代码分析技术调查和研究人员,专门从事应用软件安全风险评估、风险消除、培训、教育和软件安全生命开发周期SDL咨询。其优秀的软件安全方案、产品及专业化的软件安全开发生命周期SDL服务已进入金融银行、保险、电信、汽车、媒体娱乐、软件、服务和军事等财富1000的企业议题概述•传统以安全为导向的源代码分析工具只能检测到黑客明显可以利用的漏洞,而且这些工具所找到的安全漏洞的数量非常多,即使这些结果是精确的,都很难在短时间修复,这样一来,我们就不得不面临两个现实问题:–一、我们如何对付那些工具没有覆盖到的代码?–二、我们怎样才能提高安全漏洞修复的能力?•为了应对这些挑战,我们把研究的侧重点放在了大数据分析领域,将大数据的先进技术与我们的研究整合到一起。借这次交流的机会,我想与大家分享一下我们的研究方法以及我们的成果。源代码分析的历史•第一代源代码分析–系统安全知识是通过绑定静态的规则体现。静态规则依据原始或者标准语言的缺陷来制定的,对用户而言,技术是不可见的。–用户代码架构和框架适应能力差。几乎无法适应在开发语言基础上用户私有的架构和框架代码封装的扫描。规则主要细节不公开,用户很难自定义或者调整规则满足用户自身的系统架构和代码封装的需求。–使用依赖操作系统环境和编译器源代码分析的历史(续)•新一代源代码分析–系统的安全知识是通过绑定静态的规则体现。静态规则依据原始或者标准语言技术架构和框架的缺陷来制定的,公开规则实现的技术和细节。–用户代码架构和框架适应能力强。适应在开发语言基础上用户私有的架构和框架代码的扫描。规则主要细节完全公开,用户很容易自定义或者调整规则满足用户自身的系统架构和代码封装的需求。–能够任意添加自己需要的有关业务逻辑和代码质量相关的查询–使用简便!虚拟编译器,无须代码编译。无需依赖操作系统环境和编译。–分析范围:SQL注入-〉恶意后门-〉代码质量缺陷AbstractStore安全漏洞代码质量业务逻辑示例安全漏洞质量缺陷业务逻辑应用程序智能分析SCKD源代码知识发现“使用群体的智慧”(大数据)通过代码的不规则性来识别安全漏洞零日?零配置?•如果我们连自己要问什么问题都不清楚,该怎么办呢?•如果我们没办法对系统进行配置,怎么办?•我们需要一位“大师”,–来替我们问问题。–替我们配置系统。–替我们找到漏洞。–给我们提供指导。有这样一位大师•是你!•是你!•是你!•还是你!!!•我们大家–形成集体智慧•大多数开发人员在大多数时间都能编写出好的、标准、高质量代码群体•我们可以根据代码统计来设定一个基准,并发现偏差。源代码知识发现-SCKD•源代码知识发现–时下最为活跃的研究课题之一(数据库中的知识发现-)“知识发现描述的是一个自动搜索大规模数据模式的过程,而该模式可以被称之为有关数据的知识。通常我们称之为来自于输入数据的知识。从方法和术语两个层面来说,知识发现与其发掘来源数据领域的关系都非常紧密。”技术实现•建立参考数据、•寻找共同序列•查找违规情况获取数据S=input();If(isValid(s)){…response.write(s);…}A=input();If(isValid(A)){…response.write(A);…}K=input();If(isValid(k)){…response.write(k);…}M=input();If(isValid(M)){…response.write(M);…}C=input();If(isValid(C)){…response.write(C);…}查找偏差,设立基准*=input();If(isValid(*)){…response.write(*);…}v=input();…response.write(v);…?X后门–若我的名字是Maty,登录If(isAuthenticated(user)){….}If(isAuthenticated(user)){….}If(isAuthenticated(user)){….}If(isAuthenticated(user)){….}If(isAuthenticated(user)){….}If(isAuthenticated(user)||user.name==“maty”){….}If(isAuthenticated(user)||user.name==“maty”){….}增值–利用应用云服务?VAT=1.05…VAT=1.08…VAT=1.08…VAT=1.08寻找不同应用之间的相似之处,建立一个内部标准。使用零定义!只要我们能修复一些应用就行,这些应用会帮助我们找到那些没被修复的。我们的优势•总体来说:–我们能够找到群体中隐藏的知识,给它命名,并找到违规情况。•安全:–确定在每一个页面都对客户进行验证–自动识别消毒程序–后门(“if(isValid(user)oruser==“Maty”)…”)–业务逻辑(“if(qty0){charge(qty*amnt)}”)•质量–发布的永远都是具体资源–最佳编码实践(自动识别策略)–变量初始化•群体的智慧–对于大型企业和代码库作用更为明显图形可视化优化代码修复活动“使用智能图形方法识别安全漏洞交汇的连接节点及最佳的修复位置”代码扫描结果修复问题•找到数以千计的准确结果,但其实并不是我们希望看到的。•例如Webgoat有大约220个跨站脚本和SQL注入漏洞。•假设我们需要30分钟来修复一个漏洞+30分钟来验证修复,那就会需要220个小时,几乎是一个月的工作量•我们把这些工作缩到16个地方•约耗费1/14的时间•这样一来,我们就有时间去打打高尔夫球了代码扫描分析结果现状•每一个代码扫描结果都有一个独立于其它调查结果的数据流。单一数据流路径–跨站脚本Strings=Request.QueryString[“param1”];…Response.Write(s);Request.QueryString[“param1”];sResponse.Write(s);Request.QueryString[“param1”];sResponse.Write(s);代码扫描分析结果现状•一个漏洞,很好解决。•14个同时出现,怎么办?多个单一路径–跨站脚本–大量工作但。。。•他们有什么共同点?•这些扫描结果之间有关联吗?组合路径我们就能够。。。•指出、点击、检查,甚至连源代码都不用读吗“•我修复这里可以吗?”“或者这里?”我修复这里可以吗?修复这里其实效率更高还有这?自动提出“假设”问句=找到最佳的修复位置比较这两种情况:图形可视化修复建议的优势•展示相同安全漏洞类型和不同问题调用之间的相关性。•处理的并不是个人或者单个问题路径的发现–事实上是整个系统。•让您得以更好地利用时间Webgoat220个修复位置示例•只要轻轻一点,我们就可以把220个位置缩减到16个。•结果越多,我们的解决方式就越能体现其效率Q&A•AnyQuestion?代码安全漏洞和质量缺陷扫描云服务中心•为使用Java、JSP、JavaSript、VBSript、C#、ASP.net、VB.Net、VB6、C/C++、ASP、PHP,Ruby、Perl、PL/SQL、Android、OWASPESAPI、MISRA、和Objective-C(iOS).(AppExchangeplatform)、APIto3rdpartylanguages等多种语言开发的软件开发企业和项目提供源代码安全漏洞和质量缺陷扫描和分析,并提供结果审计、管理和报表生成。www.dumascacloud.com应用安全服务平台框架及内容应用安全在线eLearning培训•在线培训课程是基于世界顶级的应用安全讲师和咨询专家的丰富的安全实践和教学经验而组织,帮助开发组织快速了解和普及应用软件安全方面的知识、技能和成熟软件安全分析方法和最佳实践。以期他们在最短的时间里学习到最需要的软件安全知识,从而有效地应用到软件开发的生命周期里应用安全开发标准指导系统