《1.应用软件安全基础.ppt》由会员分享,可在线阅读,更多相关《1.应用软件安全基础.ppt(49页珍藏版)》请在三一办公上搜索。
1、软件安全基础-Develop Security Software,主讲人:王 宏,主 题,基本概念.软件安全的重要性.分析软件安全越来越严重的原因和根源.解决软件安全问题的措施和方法.,基本概念,软件安全的定义:在软件受到恶意的攻击下,软件能够正常运行(功能/性能)软件安全课题:了解产生软件安全的风险并怎样去管理他们:“Building secure software:designing software to be secure,make sure that software is secure,educating software developers,architects and use
2、rs about how to build security in”,软件安全的重要性,信息安全的期望信息安全的现状软件安全漏洞的发展趋势传统解决信息安全的努力和投资方向软件安全在信息安全中的重要地位,信息安全的期望,在原理上:我们花更多钱去降低的安全事件和安全利用,以此来帮助我们:,保护我们的业务不会被恶义的家伙破坏”限制责任和义务,满足法规和标准避免对公司品牌和声誉造成破坏,info-sec spending($),incidents&exploits(#),然而在事实上:我们每年都花了数百万的资金在信息安全上,但是效果并不如意,我们遭遇的安全问题越来越多.,breaches grow d
3、ramatically-seriously impacting:uptime,regulatory compliance,liability,brand and reputation,信息安全的现状,分析机构的最近统计,In 2004,average time from vulnerability announcement to 1st attack=5.8 days(99 days,2003)532%increase in CERT incidents reported(2000-2003)43%report an increase in e-crimes and intrusions ve
4、rsus previous year On average,48 new vulnerabilities per week were disclosed in 1H04These four factoids are just a sampling of results found by the FBI,Carnegie Mellons SEI CERT Coordination Center(an industry body that focuses on alerting corporations of security vulnerabilities),and Symantec in it
5、s 5th Internet Security Threat Report(Jan-June 2004).,软件安全漏洞的发展趋势,CERT 2006年的报告,我们的钱花在哪儿去了?为什么我们的安全工作毫无效果?,Why?,传统信息安全的方法和投资方向,The experts are telling us:we have a SOFTWARE problem,“Over 70%of security vulnerabilities exist at the application layer,not the network layer.Its not just operating system
6、s or web browsers,but all types of applications-particularly applications that automate key business processes.”Gartner Group 2004,软件安全在信息安全中的重要地位,结 论,目前我们信息安全的主要问题是:应用软件安全问题!,软件安全越来越严重的原因,为什么软件安全问题日益增长黑客攻击方式的进化传统的分层保护方案减轻系统的风险为什么传统的基于网络的方案不工作黑客可直接利用软件的弱点达到攻击系统演示如何通过攻击软件达到窃取商业信息和破坏应用系统。软件必须保护它们自己传统学
7、校关于安全技术的教育软件补丁和软件安全攻击的关系软件安全的根源问题。,为什么软件安全问题增长,Connectivity(互联性)Extensibility(延展性)Complexity(复杂性),为什么软件安全问题变得如此困难?,ConnectivityThe Internet is everywhere and most software is on itComplexityNetworked,distributed,mobile code is hardExtensibilitySystems evolve in unexpected ways and are changed on the
8、 fly,This simple interface,is this complex program,.NET,1980,1985,1990,1995,2000,黑客攻击方式的进化,Password Guessing,Self-Replicating Code,Password Cracking,Exploiting Known Vulnerabilities,Burglaries,Hijacking Sessions,Networked Management Diagnosis,GUI,Automated Probes/Scans,www Attacks,Distributed Attack
9、 Tools,Staged Attack,Attack Sophistication,Intruder Knowledge,LOW,HIGH,1980,1985,1990,1995,2000,Disabling Audits,Back Doors,Sweepers,Sniffers,Packet Spoofing,Denial of Service,“Stealth”/Advanced Scanning Techniques,Cross-Site Scripting,传统的“加层”保护方案,Hackers,Worms&Viruses,Malicious Insiders,软件的应用因为业务和功
10、能的需要必须打破传统的保护层,直接与外面的系统交互,Web Facing Applications,Legacy App Integration,Connectivity w/Partners&Suppliers,Outsourcing,Employee Self-Service,为什么传统的基于网络方案不工作,KeyNetworkWebRestrict AccessFirewallEveryone has accessAuthenticate usersWindows/Unix authHTTP has WEAK authentication,Monitor for attacksIDS/I
11、PSCritical traffic is in SSL TunnelTrack users(state)User of TCP/IP connectionsHTTP is statelessBlock known attacksIPS(Self-defending networks)Web attacks are extremely hard to distinguish from normal activity,Internet,DMZ,Trusted Inside,Corporate Inside,HTTP(S),IMAP FTPSSH TELNETPOP3,Firewall only
12、allows PORT 80(or 443 SSL)traffic from the Internet to the web server.Any Web Server:80,Firewall only allows applications on the web server to talk to application server.,Firewall only allows application server to talk to database server.,IISSunOneApache,ASP.NETWebSphereJava,SQLOracleDB2,软件易于遭受的安全弱点
13、:SQL Injections Buffer Overflows Information Leakage Other Categories 软件安全弱点的底线:Operations,Availability Compliance Credibility,Reputation,黑客直接利用软件的弱点攻击我们的系统,演示如何通过攻击应用系统达到窃取商业信息和破坏应用系统,使用的攻击方式:SQL Injection Cross-Site Scripting Privacy Violation Forceful Browsing,演 示 攻 击,软件必须自我保护,Outside:,Source IPD
14、estination IPFragmented dataHTTP requests?,Inside,User sessionsSQL queriesApplication variablesHistorical patterns,Inside,软件必须自我保护,Outside:,传统学校关于安全技术的教育的原则:用防火墙来定义系统的”边界”,把软件与外界隔离.过分依赖加密技术 SSLsecure lock on a paper bag!当产品要发布的时候才去审查产品在这个阶段所做的都是“Why did we do this like this?”我们将以补丁(patch)的方式修复它.我们已经
15、了解到这个问题.不允许高级技术使用:如果它是新的,肯定有问题.让我们等,直到这种技术成熟了,保险了,我们才使用.想尽一切办法去否定使用新技术的想法,学校传统的安全技术教育,渗透测试和打补丁都不是最好的消除软件安全问题的方式,Penetrate and Patch is Bad,Average Curve of Number of Intrusions for a Security Bug Over Time,as Reported by Arbaugh,Fithen and McHugh,2000.,传统的安全模式:保护”边界”网络安全安全负责的人是 IT/MIS/CISSP等部门被动式新的安
16、全模式:构建安全的系统设计安全的软件软件开发人员和设计人员对安全负责主动式,*COTS=Commercial off the shelf,学校传统的安全技术教育,软件安全的根源问题,软件安全的问题是软件自身的缺陷问题,其主要在软件设计和软件实现的过程中产生,具体表现在软件设计的架构问题和实现上的错误.开发软件-造房子实现上的错误-软件代码错误-砖的问题架构问题-软件架构风险-墙问题在软件安全问题上,架构上的风险往往比实现上的分析更重要,更难理解.,解决软件安全问题,软件安全涉及 软件工程,编程语言,安全工程.根据Gary Mc Graw的建议,解决软件安全主要要从如下几个方面下手:Applie
17、d Risk Management Software Security Best practicesKnowledge,什么是风险管理,Risk management.预先去识别分析和修复那些对商业有负面影响的软件缺陷,决定花多少成本去修复它.软件安全其实就是风险管理.,Applied Risk Management,在软件设计的时候就风险模型分析或者安全设计分析,并在软件的全生命开发周期去跟踪和消除风险.分成如下六个阶段:Understand the Business Context(了解业务需求)Identify the Business and Technical Risk(确认业务/技
18、术风险)Synthesize and Rank the Risks(综合分析风险并划分级别)Define the Risk Mitigation Strategy(定制降低风险的策略)Carry Out Fixes and Validate(实施修复并验证结果)Measuring and Reporting On Risk(测量并报告风险)并利用风险管理框架(RMF),风险管理框架,软件安全最佳实践,Security requirements(安全需求)Abuse case(不好的测试用例)Architecture risk analysis(软件架构风险分析)Risk-based secur
19、ity tests(基于风险的安全测试)Code review(代码审查)Penetration testing(渗透测试)Security operations(安全操作),安全需求,需求阶段识别和维护那些是安全的需求,那些是不安全的需求,从而从需求中除去威胁,一些安全的需求可以帮助清理需求分析。敏感数据需要加密用户识别机制调整方针,安全是一个突发的需求。黑客仅需一个漏洞“buffer overflows”要消除“Make it secure”是模糊的,不好的测试用例,需求分析和用例(Use Cases)阶段用例来描述系统的行为 1。正式的、标准的测试用例。描述正确行为 2。非正式的、非标准
20、的测试用例。描述攻击时的行为 作用:使设计人员了解更多信息 文档化说明非法使用的情况,架构风险分析,在系统设计和构造系统框架时,设计者,构架师和分析人员都要非常清晰地文档化所有的假定的和已经识别的风险在基于特定架构设计阶段和不同的类的设计阶段,风险分析非常必要并且在整个开发生命周期中采用一致的风险管理进行软件的风险登记,修改,跟踪,设计人员那些不能做描绘出设计的模型Use hypothesis testing to categorize risksThreat modeling/Attack patternsRank risksTie to business contextSuggest fi
21、xesRepeat,估计和理解风险需要准备的问题:1.每个攻击的可能性有多大?2.软件应用系统用什么来完成任务?3.是否灾难的恢复计划?4.系统瘫痪的影响有多大?5.可以接受的系统瘫痪时间是多少?,架构风险分析,基于风险的安全测试,测试两种策略:1.测试安全功能以标准的功能测试 2.基于风险的安全测试是以攻击模式 换句话说:1.是确保好的事情发生,2.安全测试是确保坏的事情不发生在系统中具有潜在风险的产物是:1.需求2.设计3.架构,代码审查,在代码级关注代码实现上带来的软件安全漏洞.代码标准(Code Standard):是特定语言相关的编程规则,它主要用于减少应用代码产生错误的可能性。它来
22、源于一些专家的研究,他们分析代码在编写的时候,Bug是怎么产生的,然后用一些特定的代码实践去纠正这些bug,他们分析特定的代码实践和bug之间的关系,整理出一系列的规则,然后用这些规则去预防代码错误的发生。-Fortify主要关注在代码安全方面的代码标准http:/,渗透测试,系统在真实的环境下的时候由结构风险分析去通知和驱动渗透测试是指安全工程师尽可能完整地模拟黑客使用的漏洞发现技术和攻击手段,对目标网络/系统/主机/应用的安全性作深入的探测,发现系统最脆弱的环节的过程。渗透测试能够直观的让管理人员知道自己网络所面临的问题。软件要与环境相绑定才可以做好的渗透测试,结合网络的所以安全机制。防火
23、墙 应用系统的加密技术,安全操作指南,系统的应用阶段软件安全受益于网络安全的操作.没有足够的日志信息去起诉已经知道的攻击,集成软件安全实践到软件开发生命周期,About black Hat and white hat,Destructive activities-as those about Attacks,exploits,breaking software,Constructive activities-as those about design defense and functionality,External AnalysisWhy only seven?,安全知识,软件安全的最大的
24、挑战是我们缺乏在软件安全方面的知识和经验因此我们需要,也非常有必要给我们的开发人员设计人员,分析人员更多的有关软件安全的知识的培训,以期他们具备丰富的软件安全的知识,安全知识,Attacks are complex and follow patterns,Make the Client InvisibleTarget Programs That Write to Privileged OS Resources Use a User-Supplied Configuration File to Run Commands That Elevate Privilege Make Use of Con
25、figuration File Search Paths Direct Access to Executable Files Embedding Scripts within Scripts Leverage Executable Code in Nonexecutable Files Argument Injection Command Delimiters Multiple Parsers and Double Escapes User-Supplied Variable Passed to File System Calls Postfix NULL Terminator Postfix
26、,Null Terminate,and Backslash Relative Path Traversal Client-Controlled Environment Variables User-Supplied Global Variables(DEBUG=1,PHP Globals,and So Forth)Session ID,Resource ID,and Blind TrustAnalog In-Band Switching Signals(aka“Blue Boxing”)Attack Pattern Fragment:Manipulating Terminal Devices
27、Simple Script Injection Embedding Script in Nonscript Elements XSS in HTTP Headers HTTP Query Strings,User-Controlled Filename Passing Local Filenames to Functions That Expect a URL Meta-characters in E-mail HeaderFile System Function Injection,Content BasedClient-side Injection,Buffer OverflowCause
28、 Web Server MisclassificationAlternate Encoding the Leading Ghost CharactersUsing Slashes in Alternate EncodingUsing Escaped Slashes in Alternate Encoding Unicode Encoding UTF-8 Encoding URL Encoding Alternative IP Addresses Slashes and URL Encoding Combined Web Logs Overflow Binary Resource File Ov
29、erflow Variables and Tags Overflow Symbolic Links MIME Conversion HTTP Cookies Filter Failure through Buffer Overflow Buffer Overflow with Environment Variables Buffer Overflow in an API Call Buffer Overflow in Local Command-Line Utilities Parameter Expansion String Format Overflow in syslog(),http:/,