1.应用软件安全基础.ppt

上传人:本田雅阁 文档编号:2128673 上传时间:2019-02-19 格式:PPT 页数:49 大小:2.94MB
返回 下载 相关 举报
1.应用软件安全基础.ppt_第1页
第1页 / 共49页
1.应用软件安全基础.ppt_第2页
第2页 / 共49页
1.应用软件安全基础.ppt_第3页
第3页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《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 ,archite

2、cts and users about how to build security in”,软件安全的重要性,信息安全的期望 信息安全的现状 软件安全漏洞的发展趋势 传统解决信息安全的努力和投资方向 软件安全在信息安全中的重要地位,信息安全的期望,在原理上: 我们花更多钱去降低的安全事件和安全利用,以此来帮助我们:,保护我们的业务不会被恶义的家伙破坏” 限制责任和义务,满足法规和标准 避免对公司品牌和声誉造成破坏,info-sec spending ($),incidents & exploits (#),然而在事实上: 我们每年都花了数百万的资金在信息安全上,但是效果并不如意,我们遭遇的安全

3、问题越来越多.,breaches grow dramatically - 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

4、 increase in e-crimes and intrusions versus 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 se

5、curity vulnerabilities), and Symantec in its 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, n

6、ot the network layer. Its not just operating systems or web browsers, but all types of applications - particularly applications that automate key business processes.” Gartner Group 2004,软件安全在信息安全中的重要地位,结 论,目前我们信息安全的主要问题是: 应用软件安全问题!,软件安全越来越严重的原因,为什么软件安全问题日益增长 黑客攻击方式的进化 传统的分层保护方案减轻系统的风险 为什么传统的基于网络的方案不

7、工作 黑客可直接利用软件的弱点达到攻击系统 演示如何通过攻击软件达到窃取商业信息和破坏应用系统。 软件必须保护它们自己 传统学校关于安全技术的教育 软件补丁和软件安全攻击的关系 软件安全的根源问题。,为什么软件安全问题增长,Connectivity(互联性) Extensibility(延展性) Complexity (复杂性),为什么软件安全问题变得如此困难?,Connectivity The Internet is everywhere and most software is on it Complexity Networked, distributed, mobile code is

8、hard Extensibility Systems evolve in unexpected ways and are changed on the 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 Man

9、agement Diagnosis,GUI,Automated Probes/Scans,www Attacks,Distributed Attack 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

10、 Scripting,传统的“加层”保护方案,Hackers,Worms & Viruses,Malicious Insiders,软件的应用因为业务和功能的需要必须 打破传统的保护层,直接与外面的系统交互,Web Facing Applications,Legacy App Integration,Connectivity w/ Partners & Suppliers,Outsourcing,Employee Self-Service,为什么传统的基于网络方案不工作,Key Network Web Restrict Access Firewall Everyone has access A

11、uthenticate users Windows / Unix auth HTTP has WEAK authentication,Monitor for attacks IDS / IPS Critical traffic is in SSL Tunnel Track users (state) User of TCP/IP connections HTTP is stateless Block known attacks IPS (Self-defending networks) Web attacks are extremely hard to distinguish from nor

12、mal activity,Internet,DMZ,Trusted Inside,Corporate Inside,HTTP(S),IMAP FTP SSH TELNET POP3,Firewall only 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

13、 application server to talk to database server.,IIS SunOne Apache,ASP .NET WebSphere Java,SQL Oracle DB2,软件易于遭受的安全弱点: SQL Injections Buffer Overflows Information Leakage Other Categories 软件安全弱点的底线: Operations, Availability Compliance Credibility, Reputation,黑客直接利用软件的弱点攻击我们的系统,演示如何通过攻击应用系统达到窃取商业信息和破坏

14、应用系统,使用的攻击方式: SQL Injection Cross-Site Scripting Privacy Violation Forceful Browsing,演 示 攻 击,软件必须自我保护,Outside:,Source IP Destination IP Fragmented data HTTP requests?,Inside,User sessions SQL queries Application variables Historical patterns,Inside,软件必须自我保护,Outside:,传统学校关于安全技术的教育的原则: 用防火墙来定义系统的”边界”,

15、把软件与外界隔离. 过分依赖加密技术 SSL secure lock on a paper bag ! 当产品要发布的时候才去审查产品 在这个阶段所做的都是 “Why did we do this like this?” 我们将以补丁(patch)的方式修复它. 我们已经了解到这个问题. 不允许高级技术使用: 如果它是新的,肯定有问题. 让我们等,直到这种技术成熟了,保险了,我们才使用. 想尽一切办法去否定使用新技术的想法,学校传统的安全技术教育,渗透测试和打补丁都不是最好的消除软件安全问题的方式,Penetrate and Patch is Bad,Average Curve of Numb

16、er of Intrusions for a Security Bug Over Time, as Reported by Arbaugh, Fithen and McHugh, 2000.,传统的安全模式: 保护”边界” 网络安全 安全负责的人是 IT/MIS/CISSP等部门 被动式 新的安全模式: 构建安全的系统 设计安全的软件 软件开发人员和设计人员对安全负责 主动式,* COTS = Commercial off the shelf,学校传统的安全技术教育,软件安全的根源问题,软件安全的问题是软件自身的缺陷问题,其主要在软件设计和软件实现的过程中产生,具体表现在软件设计的架构问题和实

17、现上的错误. 开发软件 - 造房子 实现上的错误-软件代码错误- 砖的问题 架构问题- 软件架构风险- 墙问题 在软件安全问题上,架构上的风险往往比实现上的分析更重要,更难理解.,解决软件安全问题,软件安全涉及 软件工程,编程语言,安全工程.根据Gary Mc Graw的建议,解决软件安全主要要从如下几个方面下手: Applied Risk Management Software Security Best practices Knowledge,什么是风险管理,Risk management. 预先去识别分析和修复那些对商业有负面影响的软件缺陷,决定花多少成本去修复它. 软件安全其实就是风险

18、管理.,Applied Risk Management,在软件设计的时候就风险模型分析或者安全设计分析,并在软件的全生命开发周期去跟踪和消除风险.分成如下六个阶段: Understand the Business Context(了解业务需求) Identify the Business and Technical Risk(确认业务/技术风险) Synthesize and Rank the Risks(综合分析风险并划分级别) Define the Risk Mitigation Strategy(定制降低风险的策略) Carry Out Fixes and Validate(实施修复并验

19、证结果) Measuring and Reporting On Risk (测量并报告风险) 并利用风险管理框架(RMF),风险管理框架,软件安全最佳实践,Security requirements (安全需求) Abuse case (不好的测试用例) Architecture risk analysis(软件架构风险分析) Risk-based security tests (基于风险的安全测试) Code review (代码审查) Penetration testing (渗透测试) Security operations (安全操作),安全需求,需求阶段 识别和维护那些是安全的需求,

20、那些是不安全的需求,从而从需求中除去威胁,一些安全的需求可以帮助清理需求分析。 敏感数据需要加密 用户识别机制 调整方针,安全是一个突发的需求。 黑客仅需一个漏洞 “buffer overflows” 要消除 “Make it secure” 是模糊的,不好的测试用例,需求分析和用例(Use Cases)阶段 用例来描述系统的行为 1。正式的、标准的测试用例。描述正确行为 2。非正式的、非标准的测试用例。描述攻击时的行为 作用:使设计人员了解更多信息 文档化说明非法使用的情况,架构风险分析,在系统设计和构造系统框架时,设计者,构架师和分析人员都要非常清晰地文档化所有的假定的和已经识别的风险在基

21、于特定架构设计阶段和不同的类的设计阶段,风险分析非常必要并且在整个开发生命周期中采用一致的风险管理进行软件的风险登记,修改,跟踪,设计人员那些不能做 描绘出设计的模型 Use hypothesis testing to categorize risks Threat modeling/Attack patterns Rank risks Tie to business context Suggest fixes Repeat,估计和理解风险需要准备的问题: 1.每个攻击的可能性有多大? 2.软件应用系统用什么来完成任务? 3.是否灾难的恢复计划? 4.系统瘫痪的影响有多大? 5.可以接受的系统

22、瘫痪时间是多少?,架构风险分析,基于风险的安全测试,测试两种策略: 1.测试安全功能以标准的功能测试 2.基于风险的安全测试是以攻击模式 换句话说:1.是确保好的事情发生, 2. 安全测试是确保坏的事情不发生 在系统中具有潜在风险的产物是: 1.需求 2.设计 3.架构,代码审查,在代码级关注代码实现上带来的软件安全漏洞. 代码标准(Code Standard):是特定语言相关的编程规则,它主要用于减少应用代码产生错误的可能性。它来源于一些专家的研究,他们分析代码在编写的时候,Bug是怎么产生的,然后用一些特定的代码实践去纠正这些bug,他们分析特定的代码实践和bug之间的关系,整理出一系列的

23、规则,然后用这些规则去预防代码错误的发生。-Fortify主要关注在代码安全方面的代码标准 http:/ 人工执行或者使用工具,渗透测试,系统在真实的环境下的时候由结构风险分析去通知和驱动渗透测试 是指安全工程师尽可能完整地模拟黑客使用的漏洞发现技术和攻击手段,对目标网络/系统/主机/应用的安全性作深入的探测,发现系统最脆弱的环节的过程。渗透测试能够直观的让管理人员知道自己网络所面临的问题。 软件要与环境相绑定才可以做好的渗透测试, 结合网络的所以安全机制。 防火墙 应用系统的加密技术,安全操作指南,系统的应用阶段 软件安全受益于网络安全的操作. 没有足够的日志信息去起诉已经知道的攻击,集成软

24、件安全实践到软件开发生命周期,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 Analysis Why only seven?,安全知识,软件安全的最大的挑战是我们缺乏在 软件安全方面的知识和经验因此我们需要,也非常有必要给我们的开发人员设计人员,分析人员更多的有关软件安全

25、的知识的培训,以期他们具备丰富的软件安全的知识,安全知识,Attacks are complex and follow patterns,Make the Client Invisible Target Programs That Write to Privileged OS Resources Use a User-Supplied Configuration File to Run Commands That Elevate Privilege Make Use of Configuration File Search Paths Direct Access to Executable F

26、iles 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, Null Terminate, and Backslash Relative Path Traversal Cl

27、ient-Controlled Environment Variables User-Supplied Global Variables (DEBUG=1, PHP Globals, and So Forth) Session ID, Resource ID, and Blind Trust Analog In-Band Switching Signals (aka “Blue Boxing”) Attack Pattern Fragment: Manipulating Terminal Devices Simple Script Injection Embedding Script in N

28、onscript 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 Header File System Function Injection, Content Based Client-side Injection, Buffer Overflow Cause Web Server Misclassification Alternate

29、Encoding the Leading Ghost Characters Using Slashes in Alternate Encoding Using 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 Overflow 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:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1