软件安全期末论文_第1页
软件安全期末论文_第2页
软件安全期末论文_第3页
软件安全期末论文_第4页
软件安全期末论文_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、软件安全期末论文软件安全开发 一、软件安全发展概述1 .软件安全开发背景第一次“软件危机”XXXX时代,根源:汇编语言无法处理日益庞大和复杂的程序,解决:高级语言 FORTRAN 和 C 的诞生;第二次“软件危机”XXXX时代,根源:大程序,百万行,百万人同时开发,解决:1。面向对象语言 c+/Java/c#; 2.软件工程;第三次 “软件危机 ” 21 世纪的第一个十年,根本原因 :软件安全。软件应用非常广泛:电脑游戏、火车票售票系统、多媒体教学、手机、航天飞机、人造卫星、 、 、 、软件安全问题普遍存在:操作错误、响应缓慢、票务系统断开或崩溃、多媒体教学系统崩溃、黑客窃取用户银行密码、软件

2、安全问题造成的一般后果:产品运行不稳定、无法获得正确结果甚至崩溃、恶意攻击、导致信息泄露/数据破坏等。软件安全问题造成的严重后果:票务系统故障、美国放射治疗设备的超剂量辐射事件、 阿丽亚娜 5 号火箭发射失败、 伊朗布什尔核电厂受斯图克网病毒攻击。造成软件安全问题的原因有很多 :软件开发周期短,工作量大,没有时间考虑安全问题; 软件设计中缺乏安全设计; 软件开发人员缺乏安全编程的经验;功能越来越多,情况越来越复杂;软件模块复用,高可扩展性 /灵活性要求;互联网环境中的安全挑战。总结可以归纳为两点 :漏洞和威胁。漏洞已成为危及软件安全的主要因素, 危及用户对软件和业务运营以及一些关键基础设施和应

3、用程序的信任。漏洞是常见的。普通软件工程师每千行代码有 20 个缺陷。虽然采用了严格的软件开发质量管理机制和多次测试, 但软件公司的缺陷率仍然很高。 其中, 普通软件开发公司的缺陷密度为 4-40, 高级软件开发公司的缺陷密度为 2-4,美国宇航局的缺陷密度为 0.1。2 .软件安全发展简介所谓的安全软件是指不存在安全漏洞, 能够抵御各种攻击威胁并按预期执行。 软件安全开发是指在软件开发生命周期的所有阶段采取必要和适当的安全措施来避免绝大多数安全漏洞。 采取措施防止设计、 开发、提交、升级或维护中的缺陷造成系统漏洞。软件安全开发需要提前进行安全干预, 软件发布后的修复成本是软件设计和编码阶段修

4、复成本的 30 倍。此外,软件发布后修复对软件用户造成的损失是巨大的, 因此存在软件安全开发, 即安全的软件开发生命周期 :包括安全设计原则、安全开发方法、最佳实践和安全专家经验。此外,还提出了一些安全开发模型,包括微软提出的可信计算安全开发生命周期,加里麦格劳等人提出的BSI系列模型,SAMM和OWASP提出的CLASP模型。信任价值计算安全开发生命周期是一个安全保证过程, 它在开发过程的所有阶段引入了安全和隐私原则,总共有 5+2 个阶段和 16 个必要的安全活动。它不需要改变现有的软件建筑安全使安全成为软件开发的重要部分。开发方法,适用于各种软件开发生命周期。SAMM( 软件保证成熟度模

5、型) ,是一个软件保证成熟度模型,是一个开放的框架, 用于帮助制定和实施针对软件安全特定风险的策略。 它定义了软件开发过程中的四个核心业务功能:治理、构建、验证和部署。综合轻量级应用程序安全过程,一个综合轻量级应用程序安全过程,选择 30 个特定的基于角色的活动来增强整个开发团队的安全意识,并为这些活动提供相应的指导方针、指导方针和清单。二、软件安全开发的关键工作1.软件安全设计在这个环节中, 我们应该理解软件安全设计的重要性, 理解软件安全设计的基本原则,理解攻击面的概念和减少攻击面的常用保护措施,理解威胁建模的概念和目的,理解威胁建模的关键因素和功能。在传统方法中,软件在发布后进行测试,等

6、待修复错误。一些研究表明,50%的安全问题是由设计缺陷引起的,因此安全干预是先进的,效益高,成本低。所谓的设计缺陷, 如明文存储密码, 甚至将密码交给客户进行对比验证,都会给系统带来严重的威胁。安全设计的目标是制定项目计划以定义安全行为,制定安全检查点以确保安全控制措施的质量,并确定配置过程和变更控制过程。安全设计的主要设计内容包括确定访问控制机制、定义主要角色和权解决敏感数据处理问题、评估内部通信机制、确定完整性机制、安全设计的安全设计原则包括保护最薄弱环节、 纵深防御、 最小特权、最小共享、权限分离、经济、保护隐私、正确理解 “秘密 ” 、安全错误处理、心理接受等原则。攻击面是指可以对软件

7、系统采取的攻击方法的集合。 可攻击的表面包括函数、 API 、接口、资源、数据存储等。软件的攻击面越大,安全风险就越大。因此,减少攻击面对提高软件安全性非常重要。为了减少攻击面, 第一步是分析产品功能的重要性, 即这个功能是否必要; 第二步是分析从哪里访问这些功能; 第三步是采取合理的措施,比如降低权威。威胁建模是以结构化的方式识别和评估应用系统面临的威胁。 目的是在设计阶段帮助全面了解各种安全威胁, 并指导选择适当的对策。 管理可能的风险;它的架构可以重新验证。威胁建模过程:确定建模对象;识别威胁;评估威胁;消除威胁。建模对象包括应用程序可信边界内和边界外的所有功能组件应用最实用的部分。 识

8、别威胁包括发现组件或流程中存在的威胁, 但威胁不是漏洞。 评估威胁包括判断攻击的概率、 攻击的后果和计算风险。 消除威胁包括重新设计和消除这种威胁, 使用标准的威胁缓解技术,发明新的缓解方法,根据安全漏洞标准确定风险是否可接受,将威胁记录为漏洞,然后寻找解决方法。常见威胁的例子包括:1 。欺骗是指模仿其他人或实体,例如假装成; 2.篡改,即修改数据或代码,如修改动态链接库;硬盘、 DVD 或网络数据包;3.否认,即声称没有采取任何行动;4.信息披露是指向无权知道的人披露信息, 如允许他人阅读windows 源代码和发布网站用户名单;5.拒绝服务,即拒绝向用户提供服务,例如导致窗口或网站崩溃,

9、发送数据包并耗尽处理器时间, 将数据包路由到黑洞;6.权限提升意味着获得未经授权的访问,例如,允许远程互联网用户执行命令,并允许受限用户获得管理员权限。威胁缓解的例子包括:1。对于假威胁,验证方法,如 Cookie 验证、KerBeros验证、PKI等。2.针对篡改威胁,采取了哈希函数、消息认证码、数字签名和防篡改协议等措施来降低篡改威胁。 3.为了应对拒绝的威胁,采取了强认证、安全审计、数字签名、时间戳等措施来减少拒绝。 4.为了应对信息泄露的威胁,采取了加密、秘密保护、访问控制、不保守秘密和隐私保护协议等措施来降低威胁。5.采取认证、访问控制、过滤、流量控制和授权等措施,减少拒绝服务的威胁

10、; 6.针对特权提升的威胁,采取了建立访问控制列表和最小特权操作等措施来减少特权提升。2.软件安全编码软件安全编码属于软件安全发展的关键阶段。 在这里, 我们首先了解一般的安全编程准则,包括验证输入、避免缓存溢出、 程序内部安全、安全调用组件、程序编译等概念。了解编码时不允许使用的功能,了解相关的安全编码标准和建议。了解常见的代码安全问题和处理方法。理解代码审查的目的。了解常见的源代码静态分析工具。验证输入是安全程序的第一道防线。 我们需要检查、 验证或过滤输入,以防止恶意数据进入程序进行后续处理, 类似于网络中的防火墙。 数据检查应在最初接收数据时设置。最常见的输入,即输入源,包括1。命令行

11、,检查参数的数量、数据格式和内容;2、环境变量,环境变量可能超出预期,一些环境变量的存储格式可能有危险;3.文件,包括由不受信任的用户控制的临时文件,这些文件可以容纳,但不可信任; 4、网络,来自网络的数据是高度不可靠的;5,还包括一些其他来源。常见数据类型, 1。字符串,确定合法范围,拒绝非法字符(字符串 ),识别特定字符, 使用强类型, 过滤单引号、 双引号、 反斜杠和空字符,过滤字符串,如 “选择 ”、 “插入 ”、 “更新 ”、 “关闭 ”、 “删除 ”和 “删除 ” 。对于数字类型的字段,许多程序员会写 “从 id= 的测试中选择” 。因为变量不是用单引号括起来的,所以会发生 sql

12、_inject 攻击,所以程序员应该过滤用户提交的所有变量,将其放入sql 语句中。2 、数字,确定合法范围,大数溢出为负数;3.文件名。最好不要让用户自己设置文件名,并避免使用特殊字符,如。 、 /、 - rf、 。 /、 com1 等。 4. 电子邮件地址。使用正则表达式来限制合法表达式电子邮件地址; 5.网址 /URI ,检查它是否是非法的地址形式,以防止恶意内容被添加到合法地址之后。缓冲区溢出是指计算机内存中包含相同数据类型实例的连续块; 溢出意味着数据被添加到分配给缓冲区的内存块中。缓冲区溢出是一个常见且非常严重的问题。 如果发生溢出, 攻击者可攻击者也可以设计在溢出后执行 的代码,

13、从而实现他们自己的目标。溢出是由于C/C+语言的特点造成的。大量库函数溢出,如strcpy、 strcat、 get 等。 ,而其他许多语言都称之为 C 语言库。缓冲区溢出的解决方案是什么?1.填充数据时计算边界,如动态分配内存、控制输入等。2.使用没有缓冲区溢出问题的函数,如strncpy、strncat等。3.使用替代库,如Libmib、libsafe等。4.基于探测方法的 防御,例如StackGuard ProPolice和/GS,在返回地址前插入一个 探 测 ”值;5.非执行堆栈防御,即代码不能在堆栈上执行。程序内部安全包括程序内部接口安全、安全故障、最小化反馈、避免拒绝服务攻击、避免

14、竞争条件和临时文件的安全使用。程序内部接口的安全性是指对程序内部接口数据的检查。 安全失败意味着检测异常、 安全处理各种可能的操作路径, 当检测到某些错误行为 /数据时,必须以适当的方式处理,以确保程序的安全运行、必要时立即拒绝服务,甚至不返回详细的错误代码。尽量减少反馈,也就是说, 避免给不可靠的用户提供太多的信息。 认证程序应该在认证之前给出尽可能少的信息。如果程序接受密码,不要返回。避免拒绝服务攻击,即尽快返回输入错误、设置超时、延迟服务等。避免竞争条件, 即对共享资源(文件 /变量) 的访问没有得到适当控制,使用原子操作,使用锁操作- 避免死锁;临时文件的安全使用,当访问已知文件名或推

15、测性临时文件时,会出现许多安全漏洞。其他组件的安全调用意味着应用程序实际上不是独立的, 它们通常调 用其他组件,如底层操作系统、数据库、可重用库、网络服务等。其组件的安全调用包括仅以安全的方式使用安全组件, 例如检查组件文档、搜索相关说明、使用批准的组件、尽可能不调用外部命令,以及必要时严格检查参数。 为了正确处理返回值, 有必要检查返回值并确定调用是否成功。成功后, 检查数据是否按照预期值进行处理。数据可能包含空字符、无效字符或其他可能导致问题的内容。失败时,检查错误代码。 保护应用程序和组件之间传递的数据, 并考虑传输加密,包括加密算法和安全协议。在程序的编写和编译阶段,必须遵守以下条约

16、:使用最新版本的编译器和支持工具; 使用编译器内置的防御功能; 减少可以利用的潜在编码结构和设计;保护机密,及时清除密码、密钥等敏感数据;该程序只实现您设置的功能。不要相信用户的输入;必须考虑和处理事故。使用安全代码检查核对表。对于WEB应用程序,应特别注意以下安全威胁。1.SQL注入。注射问题的解决方案是不信任用户的输入。 所有输入都是危险的。 为了验证用户的输入,转义所有用户输入,参数化查询,使用存储过程,使用视图,以及最小权限原则。2.跨站点攻击(XSS) ,即恶意攻击攻击者将恶意的 HTML 代码插入网页。当用户浏览网页时,嵌入的HTML 代码将被执行, 从而达到恶意攻击的目的。 这些

17、攻击的危害包括 :敏感信息泄露、网络钓鱼攻击、封锁 /伪造网页特定信息、 Cookie欺骗、拒绝服务攻击等。跨站点攻击防御方法:处理传入的网址参数或确保传入的来源是可靠的。软件安全开发开发阶段的最后一个安全步骤是源代码审查, 它关注编码中的实现缺陷。 这可以通过静态分析工具来完成, 这些工具扫描源代码,可以发现大约50%的安全问题。3.软件安全测试 软件安全测试是根据特定的程序发现软件错误, 检查软件是否满足规定的要求, 或者清楚地了解预期结果和实际结果之间的差异, 目的是发现软件中的错误。软件安全测试是验证软件安全级别和识别潜在安全缺陷的过程。 它不仅搜索软件自身编程中存在的安全风险, 还检

18、查应用程序防止非法入侵的能力。 与传统测试相比, 传统的软件测试只考虑软件出错时的处理,不考虑对软件的有意攻击。在软件投入生产之前, 一个独立的安全团队应该对应用程序安全性进行全面的评估, 评估分为功能性安全测试和对抗性安全测试。 传统的测试方法包括:白盒测试、黑盒测试和灰盒测试。具体的安全测试方法包括 :模糊测试和渗透测试。模糊测试是一种通过提供意外输入和监控异常结果来发现软件故障的方法。 这个测试属于黑盒测试, 因为它不关心被测试目标的内部实现,只设计输入、 测试结果和发现安全漏洞。这是一种非常有效的漏洞发现技术。 大多数已知的漏洞都是通过这项技术发现的。 当用这种方法测试时, 不够强大的程序会崩溃, 而良好编码的程序

温馨提示

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

评论

0/150

提交评论