软件安全

本文详细介绍了软件安全的各个方面,包括软件面临的安全威胁、软件漏洞的定义和生命周期、Windows系统的安全保护技术如栈溢出检测/GS、数据执行保护(DEP)、地址空间布局随机化(ASLR)和安全结构化异常处理(SafeSEH),以及微软的SDL简化模型。文章还探讨了软件安全需求分析、设计原则和威胁建模在软件开发中的重要性,最后简要概述了软件安全测试,特别是渗透测试的方法和流程。
摘要由CSDN通过智能技术生成

软件安全

软件安全的概述

软件面临的安全威胁
  • 软件漏洞:通常被认为是软件生命周期中与安全相关的设计错误、编码缺陷及运行故障等。
  • 恶意代码:是在未被授权的情况下,以破坏软硬件设备、窃取用户信息、干扰用户正常使用、扰乱用户心理为目的而编制的软件或代码片段。
  • 软件侵权
SDS

SDS是使用SDN复杂网络的安全防护新思想,基本原理是将物理及虚拟的网络安全设备预期接入模式、部署方式和实现功能进行解耦,底层抽象为安全资源池里的资源,顶层同意通过软件编程的方式进行智能化、自动化的业务编排和管理,以完成相应的安全功能,从而实现一种灵活的安全防护。SDS可以分解为软件定义流量、软件定义资源和软件定义威胁模型,三个举措环环相扣,形成一个动态、闭环的工作模型

软件漏洞概述

概念

软件漏洞通常被认为是软件生命周期中与安全相关的设计错误、编码缺陷及运行故障等。
软件漏洞包括错误(Error/Mistake)、缺陷(Defect/Flaw/Bug)及失效(Failure)等。

  • 软件错误:指在软件开发过程中出现不符合期望或不可接受的人为差错,其结果将可能导致软件缺陷的产生。
  • 软件缺陷:指由于人为差错或其他客观原因,导致软件隐含能导致其在运行过程中出现不希望或不可接受的偏差,例如软件需求定义,以及设计、实现等错误。
  • 软件故障:指软件出现可感知的不正常、不正确、或不按规范执行的状态。
  • 软件失效:指软件丧失完成规定功能的能力的事件。
漏洞生命时间轴

从时间维度上,漏洞都会经历产生、发现、公开和消亡等过程。从漏洞是否可利用且相应的补丁是否已经发布的角度,可以将漏洞分成以下三类:

  • 0day漏洞:已经被发现但是官方还没有相关补丁的漏洞。
  • 1day漏洞:厂商发布安全补丁之后但大部分用户还未打补丁时的漏洞,此类漏洞依然具有可利用性。
  • 历史漏洞:距离补丁发布日期已久且可利用性不高的漏洞。
软件漏洞的定义

软件系统或产品在设计、实现、配置和运行等过程中,由操作实体有意或无意产生的缺陷、瑕疵或错误,它们以不同形式存在于信息系统的各个层次和环节之中,且随着信息系统的变化而改变。

Windows系统典型漏洞分析

Windows安全漏洞保护分析

Windows平台下集中点秀的漏洞利用阻断技术:/GS、DEP、ASLR及SafeSEH。

栈溢出检测选项/GS
  1. /GS保护机制

    调用函数时将一个随机生成的秘密值(Cookie)存放在栈上,当函数返回时,检查这个堆栈检测仪的值是否被修改,以此判断是否发生了栈溢出。

  2. 对抗/GS保护

    1. 猜测Cookie值
    2. 通过同时替换栈中的Cookie和Cookie副本
    3. 覆盖SEH绕过Cookie检查
    4. 覆盖父函数的栈数据绕过Cookie检查
数据执行保护DEP
  1. 数据执行保护DEP机制

    栈溢出漏洞最常见的利用方式是:在栈中精心构造二进制串溢出原有数据结构,进而改写函数返回地址,使其跳转到位于栈中的Shellcode中执行。如果使栈上数据不可执行,那么就可以阻止这种漏洞利用方式的成功实施。而DEP就是通过使可写内存不可执行或使可执行内存不可惜写,以消除类似威胁

  2. 对抗数据执行保护DEP

    • 利用ret-to-libc执行命令或进行API调用,如调用WinExec实现执行程序。
    • 将包含Shellcode的内存页面标记为可执行,然后再跳过去执行。
    • 通过分配可执行内存,再将Shellcode复制到内存区域,然后跳过去执行。
    • 先尝试关闭当前进程的DEP保护,然后再运行Shellcode。
地址空间布局随机化ASLR
  1. 地址空间布局随机化ASLR机制
    原理:通过对堆、栈和共享库映射等线性区域布局的随机化,增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止漏洞利用的目的。

    包括以下几个方面:

    • 映像随机化:改变可执行文件和DLL文件的加载地址。
    • 栈随机化:改变每个线程栈的起始地址。
    • 堆随机化:改变已分配堆的基地址
  2. ASLR机制的缺陷和绕过方法

    1. 对本地攻击者无能为力
    2. 造成内存碎片的增多
    3. 利用没用采用/DYNAMICBASE选项保护的模块作为跳板
安全结构化异常处理SafeSEH
  1. SafeSEH机制
    原理:编译器在连接生成二进制IMAGE时,把所有合法的异常处理函数的地址解析出来制成一张安全的SEH表,保存在程序的IMAGE数据库中,当程序调用异常处理时会将函数地址与安全SEH表中的地址进行匹配,检查调用的异常处理函数是否位于该表中。如果IMAGE不支持SafeSEH,则表的地址为0。
  2. 对抗SafeSEH机制的方法
    1. 利用未启用SafeSEH的模块作为跳板进行绕过
    2. 利用加载模块之外的地址进行绕过

软件安全开发模型

微软的SDL简化模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值