最近在做代码安全加固相关的工作,在这里顺便做一个总结
1、系统安全设计
1.1 数据流模型建模
数据流图简介:软件功能模型-数据流图 - 简书
绘图工具(亿图蛮好用它):亿图图示设计软件 - 亿图图示
1.2 STRIDE威胁建模
威胁建模是一个非常有用的工具,它的核心是“像攻击者一样思考”。威胁建模可以在产品设计阶段、架构评审阶段或者产品运行时开展,强迫我们站在攻击者的角度去评估产品的安全性,分析产品中每个组件是否可能被篡改、仿冒,是否可能会造成信息泄露、拒绝攻击。威胁建模的作用更偏向于确保产品架构、功能设计的安全,无法保证编码的安全,但是输出的威胁建模报告中包含了全面的安全需求,这些安全需求不仅包括大的方案设计,如要认证、鉴权、审计,也可以包括安全细节的实现,比如具体的认证方式、密码使用哪种安全算法存储,使用什么方法生成安全随机数等。所以,威胁建模虽不能保证编码的安全,但可以指导研发人员编写出安全的代码,同时也可以辅助渗透测试人员开展安全测试。
STRIDE是微软开发的用于威胁建模的方法和工具。
STRIDE威胁建模的总体流程:
六类威胁:
STRIDE是从攻击者的角度,把威胁划分成6个类别,分别是Spooling(仿冒)、Tampering(篡改)、Repudiation(抵赖)、InformationDisclosure(信息泄露)、Dos(拒绝服务)和Elevation of privilege (权限提升)。
什么划分这6类,这与信息安全三要素和信息安全基本的三个属性相关。
信息安全三要素 | 信息安全三属性 |
保密性 | 认证 |
完整性 | 鉴权 |
可用性 | 审计 |
表:六类威胁与信息安全三要素、三属性的对应关系
威胁 | 安全属性 | 定义 | 举例 |
仿冒(S) | 认证 | 冒充人或物 | 冒充其他用户账号 |
篡改(T) | 完整性 | 修改数据或代码 | 修改订单信息 |
抵赖(R) | 审计 | 不承认做过某行为 | 不承认修改行为 |
信息泄露(I) | 保密性 | 信息被泄露或窃取 | 用户信息被泄露 |
拒绝服务(D) | 可用性 | 消耗资源、服务可不用 | DDOS导致网站不可用 |
权限提升(E) | 授权 | 未经授权获取、提升权限 | 普通用户提升到管理员 |
随着全球对隐私保护重视程度的加大,隐私安全也成了产品的一个重要威胁,因此STRIDE的6个威胁也添加了一项隐私(Privacy),也就变成了ASTRIDE,A代表Advanced。
具体参考此文:STRIDE威胁建模_dl71181的博客-CSDN博客
2、应用安全
1、web与系统漏洞扫描:
漏洞扫描是指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测(渗透攻击)行为。
常见web安全漏洞总结以及防范措施:
常用进行渗透测试以及漏洞扫描扫描的工具:
一、Web漏洞扫描-AppScan
IBM Security AppScan是一个适合安全专家的Web应用程序和Web服务渗透测试解决方案。
国外商业漏扫产品中,少有的能支持中文的漏扫,运行于Windows平台;
界面清晰、配置简单丰富的中文和产品文档,详细的漏洞说明和修复建议;
支持丰富的扫描报告,包括安全性、行业标准、合规一次性报告。
缺点:扫描速度一般; 在国内漏洞方面(cms)的扫描能力不如国内安全产品; 占用内存大
优点:登录扫描; 准确率最高; 漏洞规则库最全面(在通用漏洞方面(SQL注入 XSS等)功能强大)
二、fortify 静态代码扫描工具
fottify全名叫:Fortify SCA ,是HP的产品 ,是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则集进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给予整理报告。
三、源代码静态分析与安全测试工具(Coverity)
Coverity静态分析软件是最新一代的源代码静态分析工具,技术源自于斯坦福大学,能够快速检测并定位源代码中可能导致产品崩溃、未知行为、安全缺口或者灾难性故障的软件缺陷。Coverity包含900多种质量和安全检测规则,曾协助找到多个0Day漏洞,包括Struts2的远程注入S032,S029,Roller远程攻击,心脏出血漏洞等问题。
Coverity误报率极低,因此研发团队非常愿意接受Coverity的分析结果,缺陷的修复率很高。Coverity具有缺陷分析种类多、分析精度高和误报率低的特点。
四、Web漏洞扫描-awvs
漏洞扫描速度较快,准确率较高,漏洞规则库较为全面。漏洞验证可查看请求响应代码,但无中文界面。报表功能完整。有多重漏洞的验证工具。
五:主机扫描-nmap
主要用于端口扫描和主机发现,不能实现web扫描和系统层扫描。对渗透测试起帮助作用。
3、隐私保护
个人隐私保护分类及保护原则:
1、基本定义
可追溯原则:可追溯是指数据相关方(例如数据控制者)有责任采取具体、实际的措施保护个人数据,确保隐私保护可追溯。3、隐私设计基本规则
序号
|
规则、建议
|
设备供应者
|
数据处理者
|
数据控制者
|
来源
|
1
|
规则:产品或服务必须在客户资料或界面中提供隐私声明
|
●
|
●
|
●
|
法律、业界最佳实践
|
2
|
规则:对于数据控制者,收集个人数据必须要获得数据主体的授权
|
○
|
○
|
●
|
法律
|
3
|
规则:个人数据收集范围、使用目的不得超出隐私声明
|
●
|
●
|
●
|
法律
|
4
|
规则:产品必须在设计文档中列出所收集的个人数据列表,标明个人数据的收集目的及保护措施
|
●
|
●
|
●
|
|
5
|
规则:在B/S系统中,如果提交的数据中包含个人数据,则禁止使用Get方式提交个人数据
|
●
|
●
|
●
|
业界最佳实践
|
6
|
建议:对于数据控制者,如在数据主体系统上运行的应用软件需要连接到互联网,数据控制者须在连接前告知数据主体,并提供获得数据主体同意的机制
|
○
|
○
|
○
|
业界最佳实践
|
7
|
规则:对于数据控制者和设备供应者,在从数据主体系统中传出包含个人数据的错误报告之前,必须提供机制告知数据主体,并获得其同意
|
●
|
○
|
●
|
法律、业界最佳实践
|
8
|
规则:对于数据控制者,若需要将个人数据用于营销、市场调查,数据控制者必须提供机制提前获取数据主体同意并提供随时撤销同意的机制
|
○
|
○
|
●
|
法律
|
9
|
规则:对于数据控制者和设备供应者,除了法律允许的情况以外,在设置或读取在数据主体系统上的Cookie前(如用于营销或广告),应提供获取数据主体同意及撤销的机制
|
●
|
○
|
●
|
法律
|
10
|
规则:产品须对本地存储的个人数据提供适当的安全保护机制,如认证、授权、加密、日志等
|
●
|
●
|
●
|
法律、标准
|
11
|
规则:对于数据控制者,提供数据主体录入个人数据功能时,必须提供查询和更新相应个人数据的机制
|
○
|
○
|
●
|
法律
|
12
|
建议:产品应对银行卡号的查询操作记录日志
|
○
|
○
|
○
|
标准、业界最佳实践
|
13
|
规则:对于数据控制者,将数据主体个人数据提供给第三方前,必须获得数据主体的授权
|
○
|
○
|
●
|
法律
|
14
|
建议:对于数据处理者,出于定位问题目的,如需将个人数据拿出客户网络,应提供对其中包含的个人数据进行过滤或匿名化处理的机制或指导
|
○
|
○
|
/
|
法律
|
15
|
规则:对于数据控制者和处理者,必须提供机制或指导来删除或匿名化超过存留期的个人数据
|
○
|
●
|
●
|
法律、业界最佳实践
|
16
|
规则:对于数据控制者,数据主体撤销同意之后,产品必须禁止继续处理其相应个人数据
|
○
|
○
|
●
|
法律、业界最佳实践
|
17
|
规则:对于数据控制者和处理者,如在设备维修、销毁或云资源回收的场景下,必须提供安全删除的机制或指导,设备供应者不强制要求
|
○
|
●
|
●
|
标准、业界最佳实践
|
国内的可以参考华为云的隐私保护白皮书:百度安全验证
备注:常见的网络安全扫描和攻击工具:
1、Nmap (网络映射器):用于扫描端口和地图网络 。
2、Metasploit(渗透测试软件,免费与付费): 漏洞利用工具。
3、John The Ripper: 密码破解工具。
4、OWASP Zed :Web漏洞扫描器。
5、Wireshark :Web漏洞扫描器。
6、Aircrack-ng:密码破解工具。
7、Maltego (免费与付费): 数字取证。
8、AWVS :WEB漏洞扫描。
9、burpsite :抓包工具。
10、sqlmap : sql注入工具。