Featured image of post 第08节:软件安全开发(下)+安全评估测试

第08节:软件安全开发(下)+安全评估测试

CISSP课程笔记

系统开发的安全考虑

项目启动和规划阶段(初始阶段)

1、确定需求

2、评估备选方案:初始风险分析

3、方案的选择/批准:确定安全框架

功能需求定义

image-20240713154019619

系统设计阶段

image-20240729095503913

系统创建阶段

image-20240729100101616

系统接受阶段

image-20240729100217687

注:接受测试完后还要进行接受认可(风险是否能接受)才能上线,一般放到系统部署阶段

系统部署、维护和更新阶段

image-20240729100344932

做这些工作的主要目的是为了证明自己的工作该干的都干了

编程工具的安全问题

开源与闭源

隐匿获得安全:很多厂商觉得闭源会更安全

但其实开源和闭源都有虚假的安全感

编程语言

发展:

image-20240806114245091

2.越高级的编程语言,编程过程越快,编出来的程序越安全

3.用别人的库来搭建我们的应用,是效率高又安全的开发方法

Java

1.通常认为Java语言比C语言更安全,因为Java是强类型语言。

.Java为混合型语言:既是编译型,也是解释型语言

image-20240806115336864

.Java能提供的安全机制有:沙箱、碎片回收、代码签名等

沙箱:一种虚拟机沙箱,给管理员提供一个安全策略管理接口(指令级安全策略,如:不允许写操作等)

碎片回收:可能不使用的变量,Java会自动进行回收,释放内存(减少缓冲区溢出风险)。

代码签名:保证代码来源的透明性、真实性。

SOA(基于服务的架构)

image-20240806121042993

数据检验的部署

image-20240806121246084

数据检验策略

白名单策略优先考虑,其次考虑黑名单(对于黑名单上的采取停止处理的方式),最后考虑数据净化(复杂性高)

数据库及其安全

数据库管理系统类型

1.层次数据库:要找到目标需要知道对应的路径,只能表达上下级别的关系

2.网状数据库:模拟自然

3.关系数据库:当前主流数据库模型,基于各种数学原理,抽象级别较高

4.面向对象数据库:对象是一堆乱七八糟复杂的数据集,目前还没有通用的面向对象数据库

5.终端用户数据库、电子表格:Dbase、Access等文件型数据库,没有精细的数据访问控制,不在考虑范围内

关系数据库的数据结构

image-20240806135303297

主键:唯一标识符

外键:在其他表中是主键,在本表中称为外键。

外键的参照完整性:在主表中不存在的值,在外键中不能记录

关系数据库的完整性规则

image-20240806135942170

原子化:一个数据处理必须是完整的(要么处理完成,要么没进行处理),不能处于分割状态。

数据库接口语言

image-20240806140318650

ODBC不太安全

数据仓库

数据仓库与数据库没有直接的关系

2.数据仓库为一种新的应用类型,如大数据等

image-20240806140720066

3.数据仓库为一种高风险应用。保护级别比交易系统还高。使用时应该与外网进行物理隔离。

4.规格化:设计关系数据库表时涉及的原则。如:原子化;非主键的值只能依赖于主键,不能依赖其他任何数据。

数据仓库的使用方法

image-20240806141203133

数据挖掘与在线分析处理的区别:

1.数据挖掘为自动化分析数据的算法,比较泛化;

2.在线分析处理(OLAP)为人查询原始数据,找到其中的对应关系。注意与OLTP区分(交易系统在线事故处理)

3.尽量使用数据挖掘,在线分析处理对于人的要求更高

数据库的主要威胁

聚合:鸡蛋放在一个篮子里

推论:例如,根据非涉密信息推断出涉密信息。采取多实例化的方法可以减轻这个问题(给出假的非涉密信息进行混淆)

image-20240806141922771

查询攻击:SQL注入

基于知识的系统

知识管理

image-20240806142624315

专家系统

image-20240806142744175

————安全评估测试————

测试和评估(T&E)策略

总目标:尽早发现系统的不足

软件的验证和确认

验证:细节的比对

确认:对整体的判定

软件的内部逻辑比硬件复杂得多,增加了验证的复杂性

OWASP十大常见漏洞

安全控制措施的实施

开发过程的安全评估和测试

企业信息安全架构

一种企业安全需求分析工具SABSA,略

威胁建模

代码级的安全要求,一种完整的风险评估

image-20240806150057506

1.微软的威胁建模方法

image-20240806150133195

2.微软的威胁建模过程

image-20240806150528058

测试工作的一般原则

计划、用例尽早准备

很难穷尽所有输入和处理

发现错误的测试才是成功的测试

……

详尽的测试文档要妥善保存(应永久保存)

测试的分类

结构化测试(白盒):通过源代码进行测试。

白盒要考虑覆盖率的问题,是否把所有代码的情况尽可能地都测试到

2.功能测试(黑盒)

3.结构测试和功能测试都很难穷尽各种情况,难以测试系统的可靠性,基于统计的测试(如:Fuzzing)可以弥补这一不足

4.回归测试:软件进行变更后重新进行测试

回归分析——只对变更模块以及相关联的模块进行测试分析

5.不同阶段的测试

6.正向、负向测试:正向指对于功能是否正常使用的测试,负向指对于畸形输入或非预期行为的处理

7.接口测试:侧重系统与远程系统之间关系协调性的检查

8.渗透测试

必须经过批准,严格控制测试人员(数量、身份、是否可信),减少知情人员

安全数据(安全日志)的收集和分析

安全日志的管理

难点在于对于人员的管理(日志复杂、数量众多)

网站检测措施

1.真实用户检测:对于每位用户的事务进行被动捕获和分析,对网站的可用性、功能和响应性能进行监测

2.合成事务监测:使用脚本模拟用户行为生成日志

信息安全持续监控ISCM

一种全局风险管控机制(如:安全态势感知),提供了IT资产的安全可见性

2.SCAP安全内容自动化协议,如:CVE(漏洞)、CPE(资产)、CVSS(风险)

第三方安全审计

软件保障SwA

美国政府提供一个供应商白名单,细节略

供应商安全审计

SOC,对于外包供应商的一个评级报告

报告分类:

image-20240806154627976

Type1为一个时间点的报告、Type2为一段时期

SOC的区别在于面向的人群,1-3越来越广,关注点在于SOC2/3

审计过程

image-20240806155253641

本博客已稳定运行
发表了17篇文章 · 总计36.81k字
森 ICP备2024001234
Built with Hugo
主题 StackJimmy 设计