- 1、本文档共235页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件安全开发之道 系统设计: 自毁技术 自毁技术是对某些特殊敏感性软件而研究的,作为一种特殊的软件保护机制,自毁技术研究的重点是自毁码的保密、自毁条件的确认与控制技术,以防止不应有的误触发、误毁。 正常的自毁程序是专用程序。 自毁程序是负有特殊任务的合法程序,其合法性由研制部门承担。 软件自毁必须取得权威认证。 《中华人民共和国计算机信息系统安全保护条例》规定:不得以任何借口在程序中设置有破坏计算机系统功能的特殊程序。 常见的特殊程序是“逻辑锁”、“时间锁”,也称逻辑炸弹。当逻辑方程满足或时间定时满足时,程序中含有破坏计算机功能(锁死硬盘、清除文件等)的子程序被激活,对计算机系统造成损坏。 例如,1997,9公安部对北京江民公司软件KV300-L++网络升级版中的“逻辑锁”行为的调查处理。 软件安全开发之道 编码与开发管理: 采用有效的源代码管理 使用cvs或其他有权限限制的源代码管理软件。特定人员只能看到特定代码。 代码安全测试 在开发过程中定期进行安全测试。例如利用一些源代码审计软件或者进行黑箱测试。 使用安全函数进行编程 软件安全开发之道 编码与开发管理: 基于编译器的方法 在代码内自动增加边界检查(very slow) 运行过程中进行栈完整性检查(slight slowdown) Visual Studio .Net: cl /GS Immunix: StackGuard 重新排列栈变量(no slowdown) 将安全相关的功能隔离到仔细检查的代码内 软件安全开发之道 编码与开发管理: 基于编译器的方法 在代码内自动增加边界检查(very slow) 运行过程中进行栈完整性检查(slight slowdown) Visual Studio .Net: cl /GS Immunix: StackGuard 重新排列栈变量(no slowdown) 将安全相关的功能隔离到仔细检查的代码内 编码与开发管理: 让栈不可运行 会导致若干技术难题 基于编译器的方法 在代码内自动增加边界检查(very slow) 运行过程中进行栈完整性检查(slight slowdown) Visual Studio .Net: cl /GS Immunix: StackGuard 重新排列栈变量(no slowdown) 锁住敏感内存区:并不容易 软件安全开发之道 锁住敏感内存区:并不容易 Unix:mlock(),只能由超级用户使用 Win95/98:提供VirtualLock(),但不起作用 WinNT:提供VirtualLock(),但非强制(数据仍可能被换出) 扫描内存,查找数据 VirtualQueryEx() VirtualUnprotectEx() ReadProcessMemory() 谈谈保护内存 使用内存映射文件自己创建交换文件 内存即使被交换出去也是交换到已知文件上,而不是由系统自动处理 用完后文件即可删除 问题 真正彻底删除磁盘数据是不可能的 当系统崩溃或掉电后数据不会自动清除 谈谈保护内存 使数据总保持在内存中 用一后台线程定时访问该数据 不按页分配内存 需要Kernel支持 很难将内存从kernel空间映射到user空间 谈谈保护内存 软件安全开发之道 测试 软件测试的目的包括验证软件是否达到设计指标、是否满足所需功能、是否满足运行平台要求、软件运行是否正常。测试的结果将证明该软件的可用性和可信性。 软件安全性测试需要遵循若干测试规程、任用相应测试人员、建立相应测试环境与测试设备。 测试文档 在测试一个系统(应用)软件之前,必须拟定测试文档(纲要)。测试文档根据测试的目的可以构成各类测试组和测试组合,对每一类测试组或测试组合列出详细的测试项目,分别由能够胜任该项测试的专门人员进行。软件测试完成后,相关测试文档必须由测试人员签名并归档。 测试规划 功能测试、软硬件兼容性测试、用户应用测试等 发现软件设计中的隐型故障,发现运行中可能的bug,即那些影响和防碍软件功能执行、程序正常运行、正常进入退出、任务交替切换、数据处理传输、存储记录、显示等过程中的错误、失误、死机和数据丢失 攻击者调用一个函数后,堆栈内容: 堆栈中的数据 栈底 返回地址 SP 其他数据,例如 函数的局部变量 n bytes 4 bytes 如果这个函数发生了溢出… 堆栈中的数据 栈底 新的返回地址 SP 其它被覆盖的数据 n bytes 4 bytes 某些数据可能已经被覆盖了 攻击者提供的shellcode 例如,一段执行 execve(/bin/sh)的机器码 一个典型的问题程序 void function(char *str) { char buffer[
您可能关注的文档
最近下载
- GB50365-空调通风系统运行管理规范.pdf VIP
- 优秀毕业生评选求及准备材料.doc VIP
- 酒店行业市场前景及投资研究报告:亚朵酒店招股说明书详解,生活方式品牌领军者.pdf
- 2024届安徽省合肥市蜀山区琥珀中学数学八年级第二学期期末教学质量检测模拟试题含解析.doc VIP
- 湘艺版五年级下册音乐素养测试题.docx VIP
- ISO 16750-4-2023中文-道路车辆-第4部分: 气候负荷.pdf
- 《故事》读书笔记.pdf VIP
- 医院招聘护士方案.pdf VIP
- 2024届安徽省合肥市蜀山区琥珀中学数学八年级第二学期期末监测模拟试题含解析.doc VIP
- 求一个数比另一个数多几(或少几)(说课稿)-2024-2025学年一年级下册数学人教版.docx VIP
文档评论(0)