导图社区 软件安全思维导图
这是一篇关于软件安全思维导图的思维导图,包括软件安全威胁,软件安全,软件漏洞,web安全漏洞,软件安全开发模型,软件安全编码,软件安全设计,软件安全需求分析。
编辑于2022-12-06 10:48:37 四川省软件安全
①软件安全威胁
软件漏洞
定义
设计错误
编码缺陷
运行故障
特点
持久,时效
广泛,具体
可利用,隐蔽
成因
系统结构决定的必然性
大型化,扩展增多
产生之初缺乏安全性考虑
使用场景有威胁
重视不够,缺乏安全知识
管控
识别:核心是漏洞扫描器
评估:风险管理策略
处理
报告
分级
严重:不许操作就能传播
重要:
危及数据
机密性
完整性
可用性
危及处理资源
完整性
可用性
中等
默认配置
利用难度大
低
利用非常困难
影响很小
恶意代码
定义
未被授权
破化软硬件设备
窃取用户信息
干扰用户正常使用
扰乱用户心里
软件侵权
②软件安全
定义
软件工程和软件保障的一个方面
提供一种系统的方法
来标识分析和追踪
危害性功能的软件
缓解措施与控制
软件危机
定义
开发和维护过程中遇到的一系列严重问题
表现
成本进度估计不准
用户不满意
质量靠不住
不可维护
没有文档资料
成本上升
软件生产率跟不上硬件和计算机普及
软件架构安全性
重要性
架构安全性分析完成,可以在推出设计进入开发前
检查设计方案
确保设计满足安全需求
验证安全设计要素
提供识别处理漏洞机会
减少重新设计
过程
软件安全开发哪几个方面
需求分析
设计
编码
测试
部署
软件安全防护基本方法
检测,分析,挖掘,对安全和漏洞发现,分析,评价, 安全控制措施进行,错误修复
分析错误原因,将安全错误修正嵌入到软件开发生命周期整个阶段
③软件漏洞
零日漏洞
定义
为被公开披露
没有打补丁或解决发方案
可以利用来破坏程序,数据,设备
不是发布后被立即发现的漏洞
零日攻击
利用零日漏洞开发攻击工具 进行的攻击
缓冲区溢出漏洞
没做边界检查
超出分配边界
覆盖了合法数据
栈溢出漏洞
定义
栈帧数组元素越界,覆盖了
相邻局部变量
前栈帧EBP
函数返回地址RET
TMP ESP覆盖方法
覆盖函数返回地址RET的攻击方式
用JMP ESP的地址 覆盖 返回地址
函数返回后的下一条指令开始被Shellcode覆盖
程序跳转到Shellcode
SEH覆盖方法
覆盖异常处理地址的攻击方式
SEH中 的 异常函数的入口地址 覆盖为
Shellcode的起始地址
可以跳转到Shellcode的跳转指令地址
厂商发布漏洞标准过程
预防阶段,提高产品安全水平。
收集阶段,提供接收漏洞信息的渠道,确认真实存在性。
消减阶段,修复且优先高危,保证补丁的有效性和安全性。
发布阶段,建立渠道,发布信息,通知用户。
④web安全漏洞
SQL注入
原理
利用现有的微博应用
恶意数据插入SQL查询
执行非授权操作
流行原因
广泛性,利用SQL语法
原理接单,教程多
防范困难
可利用方式
注入点选择
数据型和字符型注入
web端或直接访问对数据库注入
防护措施
代码层漏洞防护
专业漏洞扫描工具
XSS
原理
没有验证,转义不可信数据,直接发给用户浏览器
流行原因
网站用户规模大
可利用方式
HTML标签属性
<>标记
CSS
事件
混淆扰乱过滤规则
防护措施
输入验证
开发框架自带输入输出验证
数据净化
慎用DOM
检测工具
Cookie设置为HttpOnly
CSRF
原理
伪装受信任用户请求,利用受信任网站
流行原因
不流行,比XSS危险
可利用方式
利用浏览器网络链接
利用浏览器状态
改变浏览器状态
防护措施
验证
HPPT头部Referer
HTTP自定义属性
用户提交的额外验证信息
网址中添加的Token
避免在URL中显示特定操作参数
⑤软件安全开发模型模型
SDL
所有阶段引入安全和隐私注意
敏捷SDL
迭代开发模型,不是每个版本都要满足所有需求
典型SDL
瀑布开发模型
BSI
聚焦每一个阶段
NIST
经济性
OWASP
不同阶段不同角色
⑥软件安全需求分析
软件安全开发模型
首先考虑安全问题
明确安全需要
保证设计编码的安全性
成品安全性检测评估
软件开发模型
少代价建系统
用户早学习的机会
开发人员用户交互
满足用户需求
目的
实现信息安全
提高软件安全质量
减少软件安全漏洞
作用
只强调功能不考虑安全,导致漏洞
缺少分析会威胁信息的
保密性
完整性
可用性
与需求分析的区别
客观性
系统客观性决定,用户不了解不专业,分析员主要工作
用户要求,密切沟通
系统性
软硬件相互作用
人的使用
经济和适用性
不全采纳
成本控制
方法及优缺点
头脑风暴
新观念,新设想
忽略重要,钻牛角尖,不全面,太主观
问卷调查和访谈
直接生成安全需求
有效性取决于问题和对象
策略分析
过程简单直接
出现分歧
数据分类
敏感级有意识分配,,降低成本,提高投资回报率
偏差
主客体关系矩阵
在确定软件安全认证,授权需求最有用
太过绝对
使用用例和滥用案例建模
可以负面场景建模
预期行为和事件不一定正确
软件安全需求跟踪矩阵
数据分类
主客体关系矩阵
使用用例和滥用案例建模
⑦软件安全设计
目的和作用
将安全属性设计到架构中去,实现本质安全性
对软件安全有重要作用,安全问题由设计上的安全性考虑不足
设计原则
经济性,开放设计,默认安全配置,完全控制
最小特权,心理可接受,最少公用机制,权限分离
威胁建模
重要性
早发现安全缺陷
理解安全需求
设计更安全产品
解决其他技术无法解决的问题
过程
确定安全目标
程序概况图
分解程序
对威胁进行
确定
评估
缓解计划策略
验证
建档
⑧软件安全编码
主要工作
选择安全的编译语言
版本配置
代码检测
安全编译
原则
CERT
保持简单性,安全策略的架构和设计
最小权限原则,纵深防御
默认拒绝,输入验证
留意编译器警告,清洁发送数据
安全编码原则,质量保证技术
其他
最少反馈
检查返回
Java安全机制
软件安全编码实践
输入验证:证明输入数据的准确并符合规范;错误信息输出防护:输入数据,获取系统应对错误策略
数据净化:无危害形式;数据保护:编码技术
其他:内存、会话、例外、配置参数管理,标签化,沙箱,安全API
⑨(1)软件安全测试
与软件测试区别
角度
攻击者
用户
测试用例
安全需求,攻击模式,漏洞
功能需求,开发文档
测试数据
反向
正向
模糊测试
概念
黑灰盒
基于缺陷注入
监视非预期输入产生的异常结构
优点
目标二进制代码范围广
动态执行不存在误差
原理简单不用大量运算
自动化高人工参与少
局限性
对--发现能力有限
访问控制漏洞
设计逻辑漏洞
多阶段安全漏洞
点触发漏洞
不能覆盖所有代码,可能还存在漏洞
渗透测试
概念
模仿黑客攻击
做安全性深入探测
发现最脆弱环节
过程
前期交互
收集情报
威胁建模
漏洞分析
渗透攻击
后渗透攻击
报告
和漏洞扫描区别
漏洞
特点
展示缺陷,不衡量影响
非侵略性,定位量化漏洞
场景
web容器
前台开发框架
后台服务
测试
特点
定位后尝试攻击利用,维持控制权
侵略性,攻击真实环境
场景
上线前
重保前
迭代升级
日常运维
⑩(2)软件安全测试
定义
基本完成到发布阶段
验证符合
安全需求定义
产品质量标准
软件安全评估
利用系统工程原理和方法
评价预测
可能存在危险性
可能产生的后果
根据可能产生事故风险大小提出相应安全策略
主要工作
验证功能是否满足需求
发现并降低漏洞
评估其他质量属性
可靠性
可存活性
软件安全功能测试
保密性
完整性
可用性
可认证性
审计
步骤
功能测试
安全功能与安全属性一致
实现的强度和完备性
漏洞测试
站在攻击者的角度以发现漏洞为目标
原则
早测试,降低成本
适时终止
没有银弹
避免自查
不能随意
⑪恶意代码
计算机病毒
结构机制
引导模块(主控)
引入内存
设置激活条件,隐蔽自己
自保功能
传染模块
寻找文件
检测文件
实施感染
表现模块(主体)
判断触发条件,决定when,how
差异体现
类型
引导区:磁盘引导扇区
文件型:可执行文件,数据文件
混合型
特点
破坏性
传染性
潜伏性
隐藏性
防范
增强法律意识
健全管理制度
蠕虫
特点
智能化
自动化
高技术化
无需干预
机制
信息收集
扫描探测
攻击渗透
自我推进
14法案
《计算机软件保护条例》
《中华人民共和国专利法》
商业秘密所有权保护
《规划人民共和国商标法》
《互联网著作权行政保护办法》
《信息网络传播权保护条例》
《移动互联网应用程序信息服务管理规定》
木马
特点
破坏性
非授权性
隐蔽性
机制
配置
传播
运行
信息反馈
链接
控制
后门
特点
不感染