搜狐SDL流程与Web应用安全运营实践董方@sohu.comSACC2011SACC2011AboutMexuammumu@gmail.com安全爱好者,PHPerSACC2011SACC20111信息安全与web应用风险介绍2微软SDL流程介绍3搜狐SDL流程介绍4搜狐web应用安全运营体系5Q&A提纲SACC2011SACC2011什么是信息安全–保护信息系统的硬件、软件及其系统中的数据受到保护,不受偶然或者恶意侵犯而遭到破坏、更改、泄露,保证信息系统连续、可靠、正常地运行。信息安全保密性confidentiality完整性integrity可用性availabilitySACC2011SACC2011安全风险分层•SANS:“TopCyberSecurityRisks-VulnerabilityExploitationTrendsSACC2011SACC2011Web应用风险•IBM:IBMX-Force2009TrendandRiskReportSACC2011SACC2011Web应用风险分类•Web威胁分级标签图SACC2011SACC2011Web应用风险分类•OWASPTOP10A1:InjectionA2:Cross-SiteScripting(XSS)A3:BrokenAuthenticationandSessionManagementA4:InsecureDirectObjectReferencesA5:Cross-SiteRequestForgery(CSRF)A6:SecurityMisconfigurationA7:InsecureCryptographicStorageA8:FailuretoRestrictURLAccessA9:InsufficientTransportLayerProtectionA10:UnvalidatedRedirectsandForwardsSACC2011SACC2011Web应用风险分类–输入/输出数据验证–身份验证–会话管理–授权–配置管理–敏感数据–加密–参数操作–异常管理–审核与记录SACC2011SACC2011Web攻击模型的演变Web1.0时期攻击模型SACC2011SACC2011Web攻击模型的演变Web2.0时期攻击模型SACC2011SACC2011微软SDL流程介绍•MSSDL(SecurityDevelopmentLifecycle)安全开发生命周期SecurityDevelopmentLifecycle(SDL),起源于微软,是一种专注于软件开发的安全保障流程。为实现保护最终用户为目标,它在软件开发流程的各个阶段引入安全和隐私问题。SACC2011SACC2011微软SDL流程介绍•在SDL流程中,包括了以下七个阶段:•安全培训:推广安全编程意识•需求分析:寻找安全嵌入的最优方式•系统设计:威胁建模•实现:安全开发•验证:黑白盒测试•发布:最后检查确认•响应:应急响应,BUG跟踪SACC2011SACC2011SDL的意义•SDL使设计、代码和文档中与安全相关的漏洞减到最少,在软件开发的生命周期中尽可能早地清除漏洞。•SDL是一种规范,指导,约束。由人制定,监管,执行。•SDL不是万能的。SACC2011SACC2011可能导致SDL失败的场景•输入的多样化导致威胁建模存在盲点•从一切用户的输入都是有害的到任何数据源都是有害的•人的因素不可控SACC2011SACC2011微博产品嵌入视频XSS漏洞•恶意视频名称叫:xxx”onmouseover=alert(1)“SACC2011SACC2011微博产品嵌入视频XSS漏洞•经过测试,搜狐,新浪,腾讯的微博产品均受影响•腾讯微博JSON跨站漏洞•来自系统的输入问题:从操作系统获得的信息可以作为可信任的输入么?你说这系统信息是不可信呢?还是不可信呢?还是不可信呢?SACC2011SACC2011人的因素•DiscuzX2SQL注入漏洞分析•forum_attachment.php14-18行:•base64_decode($_G[‘gp_aid’])//没有过滤只有base64解码•WHEREaid=‘$_G[gp_aid]’//通过对注入语句进行base64编码完美绕过单引号限制SACC2011SACC2011人的因素•DiscuzX2SQL注入漏洞分析•forum_attachment.php29-31行:•$aid=intval($_G[‘gp_aid’]);//限制了aid为整型•WHEREaid=‘$aid‘//之后的数据库查询语句使用$aid变量•安全与漏洞之间的距离,只有7行代码!SACC2011SACC2011搜狐SDL流程介绍•搜狐web安全面临的问题:•项目开发周期短•迭代频繁•缺乏安全设计•缺乏安全编程意识•老旧代码难以维护•业务线代码风格多变SACC2011SACC2011搜狐SDL流程介绍•从安全测试入手,事件驱动SDL流程。安全测试•黑盒+白盒测试,构建安全漏洞数据库•事件驱动SDL流程安全培训•对常见web漏洞原理以及解决方案进行培训需求分析•识别信息,风险评估,制定安全目标以及最低BUG标准系统设计•威胁建模:系统架构概述,分解应用程序,识别风险,识别漏洞•反馈《安全机制调查表》编码实现•使用安全API,源代码审计发布运营•上线审核机制,安全监控,BUG跟踪,漏洞管理SACC2011SACC2011搜狐SDL流程介绍•迭代的SDL流程安全培训安全测试需求分析系统设计编码实现发布运营SACC2011SACC2011搜狐SDL流程介绍•需求分析阶段:–识别重要信息(保护对象)–风险评估–安全目标–最低BUG标准–NO•SQL注入•XSS存储型跨站•恶意文件上传•CSRF•OpenRedirect(url跳转)SACC2011SACC2011搜狐SDL流程介绍•系统设计-威胁建模:•识别安全目标•系统架构概述•分解应用程序•识别威胁•识别漏洞SACC2011SACC2011搜狐SDL流程介绍•威胁建模-分解应用程序:•《安全机制调查表》:系统架构概述,功能模块介绍,安全机制介绍等•功能模块解析SACC2011SACC2011搜狐SDL流程介绍•威胁建模-识别威胁&漏洞:•分析安全测试数据结果,识别具体漏洞–从功能分析数据流–从数据流分析威胁–确认是否有相应的漏洞–改进安全设计,形成规范文档SACC2011SACC2011搜狐SDL流程介绍•编码实现(检测+监测):•ESAPISACC2011SACC2011搜狐SDL流程介绍•编码实现:•ESAPISACC2011SACC2011搜狐SDL流程介绍•编码实现(检测+监测):•部署webIDS,记录异常信息•参考资料(Discuz内置IDS,CodeIgniter内置IDS)•=%E5%AE%89%E5%85%A8%E6%9C%BA%E5%88%B6•搜狐SDL流程介绍•有效实施安全开发–高层支持–安全成为目标–需要足够的安全培训–需要有相关流程、技术、工具的支持–困难:•威胁不断变化•人员流动性•周期短、更新频繁•增加工作量•监督执行SACC2011SACC2011搜狐web应用安全运营体系•搜狐web应用安全框架–应用架构:业务分离,身份认证,数据加密,日志记录,数据安全,流量监控等–开发过程:SDL–测试:功能测试,压力测试,黑白盒测试–安全响应:安全接口人,安全响应流程,安全事件跟踪–其他:安全交流,安全培训SACC2011SACC2011•安全事件响应平台:–按业务线分类,对日常安全事件进行通报并跟踪处理结果。–通报最新安全漏洞或对最新攻击方式进行预警通知搜狐web应用安全运营体系SACC2011SACC2011搜狐web应用安全运营体系•Web服务器文件监控机制:•已经开源:搜狐web应用安全运营体系•日常安全扫描体系:•日志扫描•网站扫描•服务器扫描SACC2011SACC2011•无论问题最初看起来怎样,它始终是人的问题。--GeraldM.WeinbergSACC2011SACC2011•谢谢各位Q&ASACC2011SACC2011