安全生产_软件安全基础课件_第1页
安全生产_软件安全基础课件_第2页
安全生产_软件安全基础课件_第3页
安全生产_软件安全基础课件_第4页
安全生产_软件安全基础课件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件安全基础 DevelopSecuritySoftware 主讲人 王宏 主题 基本概念 软件安全的重要性 分析软件安全越来越严重的原因和根源 解决软件安全问题的措施和方法 基本概念 软件安全的定义 在软件受到恶意的攻击下 软件能够正常运行 功能 性能 软件安全课题 了解产生软件安全的风险并怎样去管理他们 Buildingsecuresoftware designingsoftwaretobesecure makesurethatsoftwareissecure educatingsoftwaredevelopers architectsandusersabouthowtobuildsecurityin 软件安全的重要性 信息安全的期望信息安全的现状软件安全漏洞的发展趋势传统解决信息安全的努力和投资方向软件安全在信息安全中的重要地位 信息安全的期望 在原理上 我们花更多钱去降低的安全事件和安全利用 以此来帮助我们 保护我们的业务不会被恶义的家伙破坏 限制责任和义务 满足法规和标准避免对公司品牌和声誉造成破坏 info secspending incidents exploits 然而在事实上 我们每年都花了数百万的资金在信息安全上 但是效果并不如意 我们遭遇的安全问题越来越多 breachesgrowdramatically seriouslyimpacting uptime regulatorycompliance liability brandandreputation 信息安全的现状 分析机构的最近统计 In2004 averagetimefromvulnerabilityannouncementto1stattack 5 8days 99days 2003 532 increaseinCERTincidentsreported 2000 2003 43 reportanincreaseine crimesandintrusionsversuspreviousyearOnaverage 48newvulnerabilitiesperweekweredisclosedin1H04ThesefourfactoidsarejustasamplingofresultsfoundbytheFBI CarnegieMellon sSEICERTCoordinationCenter anindustrybodythatfocusesonalertingcorporationsofsecurityvulnerabilities andSymantecinits5thInternetSecurityThreatReport Jan June2004 软件安全漏洞的发展趋势 CERT2006年的报告 我们的钱花在哪儿去了 为什么我们的安全工作毫无效果 Why 传统信息安全的方法和投资方向 Theexpertsaretellingus wehaveaSOFTWAREproblem Over70 ofsecurityvulnerabilitiesexistattheapplicationlayer notthenetworklayer It snotjustoperatingsystemsorwebbrowsers butalltypesofapplications particularlyapplicationsthatautomatekeybusinessprocesses GartnerGroup2004 软件安全在信息安全中的重要地位 结论 目前我们信息安全的主要问题是 应用软件安全问题 软件安全越来越严重的原因 为什么软件安全问题日益增长黑客攻击方式的进化传统的分层保护方案减轻系统的风险为什么传统的基于网络的方案不工作黑客可直接利用软件的弱点达到攻击系统演示如何通过攻击软件达到窃取商业信息和破坏应用系统 软件必须保护它们自己传统学校关于安全技术的教育软件补丁和软件安全攻击的关系软件安全的根源问题 为什么软件安全问题增长 Connectivity 互联性 Extensibility 延展性 Complexity 复杂性 为什么软件安全问题变得如此困难 ConnectivityTheInternetiseverywhereandmostsoftwareisonitComplexityNetworked distributed mobilecodeishardExtensibilitySystemsevolveinunexpectedwaysandarechangedonthefly Thissimpleinterface isthiscomplexprogram NET 1980 1985 1990 1995 2000 黑客攻击方式的进化 PasswordGuessing Self ReplicatingCode PasswordCracking ExploitingKnownVulnerabilities Burglaries HijackingSessions NetworkedManagementDiagnosis GUI AutomatedProbes Scans wwwAttacks DistributedAttackTools StagedAttack AttackSophistication IntruderKnowledge LOW HIGH 1980 1985 1990 1995 2000 DisablingAudits BackDoors Sweepers Sniffers PacketSpoofing DenialofService Stealth AdvancedScanningTechniques Cross SiteScripting 传统的 加层 保护方案 Hackers Worms Viruses MaliciousInsiders 软件的应用因为业务和功能的需要必须打破传统的保护层 直接与外面的系统交互 WebFacingApplications LegacyAppIntegration Connectivityw Partners Suppliers Outsourcing EmployeeSelf Service 为什么传统的基于网络方案不工作 KeyNetworkWebRestrictAccessFirewallEveryonehasaccessAuthenticateusersWindows UnixauthHTTPhasWEAKauthentication MonitorforattacksIDS IPSCriticaltrafficisinSSLTunnelTrackusers state UserofTCP IPconnectionsHTTPisstatelessBlockknownattacksIPS Self defendingnetworks Webattacksareextremelyhardtodistinguishfromnormalactivity Internet DMZ TrustedInside CorporateInside HTTP S IMAPFTPSSHTELNETPOP3 FirewallonlyallowsPORT80 or443SSL trafficfromtheInternettothewebserver Any WebServer 80 Firewallonlyallowsapplicationsonthewebservertotalktoapplicationserver Firewallonlyallowsapplicationservertotalktodatabaseserver IISSunOneApache ASP NETWebSphereJava SQLOracleDB2 软件易于遭受的安全弱点 SQLInjectionsBufferOverflowsInformationLeakageOtherCategories软件安全弱点的底线 Operations AvailabilityComplianceCredibility Reputation 黑客直接利用软件的弱点攻击我们的系统 演示如何通过攻击应用系统达到窃取商业信息和破坏应用系统 使用的攻击方式 SQLInjectionCross SiteScriptingPrivacyViolationForcefulBrowsing 演示攻击 软件必须自我保护 Outside SourceIPDestinationIPFragmenteddataHTTPrequests Inside UsersessionsSQLqueriesApplicationvariablesHistoricalpatterns Inside 软件必须自我保护 Outside 传统学校关于安全技术的教育的原则 用防火墙来定义系统的 边界 把软件与外界隔离 过分依赖加密技术SSLsecurelockonapaperbag 当产品要发布的时候才去审查产品在这个阶段所做的都是 Whydidwedothislikethis 我们将以补丁 patch 的方式修复它 我们已经了解到这个问题 不允许高级技术使用 如果它是新的 肯定有问题 让我们等 直到这种技术成熟了 保险了 我们才使用 想尽一切办法去否定使用新技术的想法 学校传统的安全技术教育 渗透测试和打补丁都不是最好的消除软件安全问题的方式 PenetrateandPatchisBad AverageCurveofNumberofIntrusionsforaSecurityBugOverTime asReportedbyArbaugh FithenandMcHugh 2000 传统的安全模式 保护 边界 网络安全安全负责的人是IT MIS CISSP等部门被动式新的安全模式 构建安全的系统设计安全的软件软件开发人员和设计人员对安全负责主动式 COTS Commercialofftheshelf 学校传统的安全技术教育 软件安全的根源问题 软件安全的问题是软件自身的缺陷问题 其主要在软件设计和软件实现的过程中产生 具体表现在软件设计的架构问题和实现上的错误 开发软件 造房子实现上的错误 软件代码错误 砖的问题架构问题 软件架构风险 墙问题在软件安全问题上 架构上的风险往往比实现上的分析更重要 更难理解 解决软件安全问题 软件安全涉及软件工程 编程语言 安全工程 根据GaryMcGraw的建议 解决软件安全主要要从如下几个方面下手 AppliedRiskManagementSoftwareSecurityBestpracticesKnowledge 什么是风险管理 Riskmanagement 预先去识别 分析和修复那些对商业有负面影响的软件缺陷 决定花多少成本去修复它 软件安全其实就是风险管理 AppliedRiskManagement 在软件设计的时候就风险模型分析或者安全设计分析 并在软件的全生命开发周期去跟踪和消除风险 分成如下六个阶段 UnderstandtheBusinessContext 了解业务需求 IdentifytheBusinessandTechnicalRisk 确认业务 技术风险 SynthesizeandRanktheRisks 综合分析风险并划分级别 DefinetheRiskMitigationStrategy 定制降低风险的策略 CarryOutFixesandValidate 实施修复并验证结果 MeasuringandReportingOnRisk 测量并报告风险 并利用风险管理框架 RMF 风险管理框架 软件安全最佳实践 Securityrequirements 安全需求 Abusecase 不好的测试用例 Architectureriskanalysis 软件架构风险分析 Risk basedsecuritytests 基于风险的安全测试 Codereview 代码审查 Penetrationtesting 渗透测试 Securityoperations 安全操作 安全需求 需求阶段识别和维护那些是安全的需求 那些是不安全的需求 从而从需求中除去威胁 一些安全的需求可以帮助清理需求分析 敏感数据需要加密用户识别机制调整方针 安全是一个突发的需求 黑客仅需一个漏洞 bufferoverflows 要消除 Makeitsecure 是模糊的 不好的测试用例 需求分析和用例 UseCases 阶段 用例来描述系统的行为 1 正式的 标准的测试用例 描述正确行为2 非正式的 非标准的测试用例 描述攻击时的行为作用 使设计人员了解更多信息文档化说明非法使用的情况 架构风险分析 在系统设计和构造系统框架时 设计者 构架师和分析人员都要非常清晰地文档化所有的假定的和已经识别的风险 在基于特定架构设计阶段和不同的类的设计阶段 风险分析非常必要 并且在整个开发生命周期中采用一致的风险管理进行软件的风险登记 修改 跟踪 设计人员那些不能做描绘出设计的模型UsehypothesistestingtocategorizerisksThreatmodeling AttackpatternsRankrisksTietobusinesscontextSuggestfixesRepeat 估计和理解风险需要准备的问题 1 每个攻击的可能性有多大 2 软件应用系统用什么来完成任务 3 是否灾难的恢复计划 4 系统瘫痪的影响有多大 5 可以接受的系统瘫痪时间是多少 架构风险分析 基于风险的安全测试 测试两种策略 1 测试安全功能以标准的功能测试2 基于风险的安全测试是以攻击模式换句话说 1 是确保好的事情发生 2 安全测试是确保坏的事情不发生在系统中具有潜在风险的产物是 1 需求2 设计3 架构 代码审查 在代码级关注代码实现上带来的软件安全漏洞 代码标准 CodeStandard 是特定语言相关的编程规则 它主要用于减少应用代码产生错误的可能性 它来源于一些专家的研究 他们分析代码在编写的时候 Bug是怎么产生的 然后用一些特定的代码实践去纠正这些bug 他们分析特定的代码实践和bug之间的关系 整理出一系列的规则 然后用这些规则去预防代码错误的发生 Fortify主要关注在代码安全方面的代码标准 渗透测试 系统在真实的环境下的时候 由结构风险分析去通知和驱动渗透测试 是指安全工程师尽可能完整地模拟黑客使用的漏洞发现技术和攻击手段 对目标网络 系统 主机 应用的安全性作深入的探测 发现系统最脆弱的环节的过程 渗透测试能够直观的让管理人员知道自己网络所面临的问题 软件要与环境相绑定才可以做好的渗透测试 结合网络的所以安全机制 防火墙应用系统的加密技术 安全操作指南 系统的应用阶段 软件安全受益于网络安全的操作 没有足够的日志信息去起诉已经知道的攻击 集成软件安全实践到软件开发生命周期 AboutblackHatandwhitehat Destructiveactivities asthoseaboutAttacks exploits breakingsoftware Constructiveactivities asthoseaboutdesigndefenseandfunctionality ExternalAnalysisWhyonlyseven 安全知识 软件安全的最大的挑战是我们缺乏在软件安全方面的知识和经验 因此我们需要 也非常有必要给我们的开发人员设计人员 分析人员更多的有关软件安全的知识的培训 以期他们具备丰富的软件安全的知识 安全知识 Attacksarecomplexandfollowpatterns MaketheClientInvisibleTargetProgramsThatWritetoPrivilegedOSResourcesUseaUser SuppliedConfigurationFiletoRunCommandsThatElevatePrivilegeMakeUseofConfigurationFileSearchPathsDirectAccesstoExecutableFilesEmbeddingScriptswithinScriptsLeverageExecutableCodeinNonexecutableFilesArgumentInjectionCommandDelimitersMultipleParsersandDoubleEscapesUser SuppliedVariablePassedtoFileSystemCallsPostfixNULLTerminatorPostfix NullTerminate andBackslashRelativePathTraversalClient ControlledEnvironmentVariablesUser SuppliedGlobalVariables DEBUG 1 PHPGlobals andSoForth SessionID ResourceID andBlindTrustAnalogIn BandSwitchingSignals aka BlueBoxing AttackPatternFragment Manipul

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论