| 标准编号 | JR/T 0191-2020 (JR/T0191-2020) | | 中文名称 | 证券期货业软件测试指南 软件安全测试 | | 英文名称 | (Software Testing Guide for Securities and Futures Industry Software Security Testing) | | 行业 | 金融行业标准 (推荐) | | 中标分类 | A11 | | 字数估计 | 21,298 | | 发布日期 | 2020-07-10 | | 实施日期 | 2020-07-10 | | 标准依据 | 证监会公告(2020)40号 | | 发布机构 | 中国人民银行 |
JR/T 0191-2020: 证券期货业软件测试指南 软件安全测试
JR/T 0191-2020 英文名称: (Software Testing Guide for Securities and Futures Industry Software Security Testing)
中 华 人 民 共 和 国 金 融 行 业 标 准
证券期货业软件测试指南 软件安全测试
中国证券监督管理委员会 发 布
1 范围
本标准给出了证券期货行业信息系统建设过程中的软件安全测试目标及流程、软件安全测试技术、
软件安全测试基本测试方法及移动应用安全测试特定测试方法。
本标准适用于指导证券期货行业市场核心机构(以下简称核心机构)、证券期货基金经营机构(以
下简称经营机构)以及证券期货信息技术服务机构(以下简称服务机构)实施证券期货业计算机软件和
外部信息系统的安全测试。
注1:核心机构,如证券期货交易所、证券登记结算机构、期货市场监控中心等;
注2:经营机构,如证券公司、期货公司、基金公司等;
注3:服务机构为软件开发商、信息商、服务商。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 20271-2006 信息安全技术 信息系统通用安全技术要求
GB/T 25069-2010 信息安全技术术语
JR/T 0060-2010 证券期货业信息系统安全等级保护基本要求(试行)
JR/T 0067-2011 证券期货业信息系统安全等级保护测评要求(试行)
JR/T 0146-2016(所有部分) 证券期货业信息系统审计指南
JR/T 0175-2019 证券期货业软件测试规范
3 术语和定义
GB/T 25069-2010界定的以及下列术语和定义适用于本文件。
4.2.1 系统分析
评估被测系统,分别从物理架构及逻辑架构的角度分析系统使用的组件、网络拓扑、系统配置与安
全防御措施等信息:
a) 物理架构:根据系统所使用的组件梳理得到物理架构,包括数据库、控制组件、前端库以及通
信协议等,进而了解系统的结构;
b) 逻辑架构:根据系统的业务逻辑梳理得到逻辑架构,进而了解系统内部的数据流。
4.2.2 威胁分析
根据系统分析的结果,选择合适的威胁模型,分析系统面临的主要安全威胁。风险分析应符合GB/T
20271-2006。如常见的基于数据流的威胁分析模型STRIDE,它包含六个维度(假冒、篡改、否认、信息
泄露、拒绝服务和提升权限)的威胁,通常结合使用数据流关系图(DFD)来辅助STRIDE分析,将系统分
解成部件,并证明每个部件都不易受相关威胁攻击。
系统分析及威胁分析完成后,应产出安全测试方案,方案内容包括系统分析阶段的物理架构、逻辑
架构,以及威胁分析阶段的数据流关系图、制定的技术方案、实施方案等,报告格式可参照模板输出(参
见附录A的图A.1)。
4.2.3 制定测试用例
根据威胁分析的结果编写测试用例,针对分解的每一个数据流图,对每一个数据流图元素,映射对
应的威胁,编写测试用例,用例可参照模板输出(参见附录A的图A.2)。
4.2.4 测试执行
测试执行包括自动化的工具执行以及手动执行两种方式,在此过程中需要用到各种自动化或手动测
试工具。对于每一个用例的测试过程,需要有对应的操作截图,如果能够获得应用程序源代码,可以进
行源码方向的安全审计。
4.2.5 报告输出
软件安全测试流程各阶段的输出文档,包括如下基本内容(见表 1 所示),可根据实际需要适当裁
剪,具体模板参照附录 A。
5.1 安全功能检查
通过人工检查、审核的方式对软件开发过程中涉及的安全策略、进度、技术决策(如开发模型等)
进行安全功能检查。
检查内容包括文档、代码安全策略、安全要求、架构安全性等,检查的形式包括人工文件分析、访
谈等。安全性测试的相关要求见 JR/T 0175-2019。
5.2 代码安全测试
通过对软件源代码进行安全扫描和审计,定位漏洞代码所在位置。
测试内容分为静态检测与动态检测,覆盖范围广、测试效率高。静态检测基于权威软件安全规范,
如开放式Web应用程序安全项目(OWASP)、公共漏洞和暴露(CWE)、支付卡行业数据安全标准(PCI DSS)
等,可以发现如变量未初始化、数组越界、缓冲区溢出、浮点数比较、除零等严重代码编写错误,以及
其它代码规范问题。动态检测是指运行被测程序,检测内存溢出、资源泄露、进程线程异常等在代码执
行时才会发现的安全问题。
5.3 漏洞扫描
通过自动化扫描方式,检测系统和应用中存在的安全漏洞。
测试内容为基于漏洞数据库或特征库,通过自动化工具扫描、探测等方法对目标系统的安全情况进
行检测,发现可利用漏洞的一种安全测试技术。它能够定位漏洞准确位置,覆盖范围广。但由于自动化
工具在很多情况下只是提示一种漏洞存在的可能,因此需要对结果进行人工的分析判断。
5.4 渗透测试
以攻击者视角进行的黑盒测试,从而获得对应用系统安全的主观评价。
测试内容为以未经授权的动作,主要指模拟黑客的各种攻击方法,绕过某一系统的安全机制,对主
机或网络进行攻击测试,以检查系统的安全功能,发现安全问题或风险,或者用于重现某一攻击场景。
该项测试的测试结果通常真实有效且较为严重。
5.5 模糊测试
以向目标系统提供非预期输入的方式,提高应用程序的健壮性及抵御意外输入时的安全性。
测试内容主要是向被测系统提供非预期的输入,并监视系统的异常表现或故障。它充分利用机器的
能力通过自动化或半自动化的方式执行,具有原理简单,易于开发适合自身系统的模糊测试工具的特点。
模糊测试根据实际场景可选择是否使用工具,使用工具时包含以下过程:
a) 测试工具通过随机或是半随机的方式生成大量变异数据;
b) 测试工具将生成的变异数据通过输入方式发送给被测系统;
c) 测试工具检测并监控被测系统的状态(如是否能够响应,响应是否正确等);
d) 测试工具根据被测系统的状态判断是否存在潜在的安全漏洞,并记录异常日志。
5.6 软件安全测试技术选择
软件测试人员可以根据不同的机构、部署环境和系统类别,选择与之相应的软件安全测试技术,见
表2~表8。机构的划分遵循JR/T 0146-2016(所有部分)。
6.1.1 测试目标
应用程序在授予访问权限之前进行了身份验证、对数据访问进行限制并且认证信息不会被绕过。
6.1.2 测试内容
若该系统安全等级为等保三级及以上或系统设计文档中明确具有身份认证功能,其应用安全应符合
JR/T 0060-2010和JR/T 0067-2011,检测内容包括:
a) 服务端对用户请求等操作均进行了认证授权,认证的方式包括采用静态密码、动态口令、USBkey
等;
b) 服务端与客户端使用双因子或多因子认证机制;
c) 服务端具备登录异常处理机制;
d) 服务端能够对验证码等措施的认证绕过进行防范;
e) 认证信息不会被轻易破解和篡改。
6.1.3 结果判定
若完全符合 6.1.2 测试内容,则判定应用程序符合本项测试需求,否则判定其不符合或部分符合本
项测试需求。
6.2 口令安全
6.2.1 测试目标
应用程序使用了强密码策略,对用户登录有错误次数限制,在超过规定错误次数后,对用户进行锁
定或冻结。
6.2.2 测试内容
检测内容包括:
a) 服务端能够对口令复杂度进行安全检测并提示;
b) 密码输入框不以明文形式显示密码;
c) 服务端对用户登录错误次数进行限制;
d) 服务端口令找回功能的密码找回凭证足够复杂、不可猜测并且不存在越权。
e) 服务端对用户登录失败进行统一提示。
6.2.3 结果判定
若完全符合 6.2.2 测试内容,则判定应用程序符合本项测试需求,否则判定其不符合或部分符合本
项测试需求。
6.3 访问权限安全
6.3.1 测试目标
应用程序对用户权限进行了配置,不会发生越权行为(包括横向越权和纵向越权)。
6.3.2 测试内容
若该系统安全等级为等保三级及以上或系统设计文档中明确具有访问权限控制功能,检测内容包
括:
a) 服务端具备权限配置功能,且有权限判断机制;
b) 服务端对敏感数据进行访问权限控制;
c) 服务端对每个请求 URL 进行鉴权,而非仅仅通过客户端的菜单屏蔽或者按钮不可用来限制;
d) 用户认证采用多因子认证方式,防止通过修改用户身份证明(UID)实现越权操作。
6.3.3 结果判定
若完全符合 6.3.2 测试内容,则判定应用程序符合本项测试需求,否则判定其不符合或部分符合本
项测试需求。
6.4 会话管理安全
6.4.1 测试目标
应用程序在用户登录并空闲一定时间后,会对用户会话进行检测,对超时会话进行自动终止。
6.4.2 测试内容
检测内容包括:
a) 已对会话信息进行安全加密;
b) 用户登录后,身份信息不再由客户端提交,而是以服务器端会话信息中保存的身份信息为准;
c) 应用程序提供注销登录功能,注销时,会话信息随之清除;
d) 每次登录成功后变更会话标识;
e) 对用户的操作进行 token 验证,防止跨站请求伪造(CSRF)的操作。
6.4.3 结果判定
若完全符合 6.4.2 测试内容,则判定应用程序符合本项测试需求,否则判定其不符合或部分符合本
项测试需求。
6.5 通信安全
6.5.1 测试目标
应用程序在处理通信过程中使用了安全的通信协议,并对传输数据采用了加密传输的机制。
6.5.2 测试内容
若该系统安全等级为等保三级及以上或系统设计文档中明确具有通信安全要求,检测内容包括:
a) 应用程序在进行通信时采用了安全通信协议,例如 SSL/T LS、IPSec 等;
b) 应用程序在进行通信时对通信数据进行加密保护;
c) 应用程序在进行通信时对通信数据进行完整性校验;
d) 应用程序对通信数字证书进行安全性校验。
6.5.3 结果判定
若完全符合 6.5.2 测试内容,则判定应用程序符合本项测试需求,否则判定其不符合或部分符合本
项测试需求。
6.6 业务逻辑安全
6.6.1 测试目标
使用户按照预定的规则运行应用程序,保护业务系统免受业务安全威胁。
6.6.2 测试内容
检测内容包括:
a) 应用程序业务数据不可被篡改;
b) 应用程序业务逻辑工作流不可被打破;
c) 应用程序不允许用户上传业务逻辑允许以外的文件类型的文件;
d) 应用程序业务接口调用足够安全。
6.6.3 结果判定
若完全符合 6.6.2 测试内容,则判定应用程序符合本项测试需求,否则判定其不符合或部分符合本
项测试需求。
6.7 输入数据安全
6.7.1 测试目标
应用程序的所有用户输入都应该经过验证,并且所有的输入都是合法的、期望的类型和方式。
6.7.2 测试内容
若该系统安全等级为等保三级及以上或系统设计文档中明确具有输入数据安全要求,检测内容包
括:
a) 应用程序不存在 SQL 注入漏洞;
b) 应用程序不存在跨站脚本攻击(XSS)漏洞;
d) 应用程序不存在命令执行漏洞;
e) 应用程序不存在文件包含漏洞;
f) 应用程序不存在 HTTP 代码注入漏洞;
g) 应用程序具备特殊字符过滤机制。
6.7.3 结果判定
若完全符合 6.7.2 测试内容,则判定应用程序符合本项测试需求,否则判定其不符合或部分符合本
项测试需求。
6.8 存储数据安全
6.8.1 测试目标
客户端程序对存储在客户端的敏感数据进行了加密保护。
6.8.2......
|