3.3 业务安全测试流程
业务安全测试流程总体上分为七个阶段,前期工作主要以测试准备和业务调研为主,通过收集并参考业务系统相关设计文档和实际操作,与相关开发人员沟通、调研等方式熟悉了解被测系统业务内容和流程,然后在前期工作的基础上,根据业务类型进行业务场景建模,并把重要业务系统功能拆分成待测试的业务模块,进而对重要业务功能的各个业务模块进行业务流程梳理,之后对梳理后的业务关键点进行风险识别工作,这也是业务测试安全最重要的关键环节,最终根据风险点设计相应的测试用例,开展测试工作并最终输出测试报告。具体业务安全测试流程如图3-2所示。
流程一:测试准备
准备阶段主要包括对业务系统的前期熟悉工作,以了解被测试业务系统的数量、规模和场景等内容。针对白盒性质的测试,可以结合相关开发文档去熟悉相关系统业务;针对黑盒测试,可通过实际操作还原业务流程的方式理解业务。
流程二:业务调研
业务调研阶段主要针对业务系统相关负责人进行访谈调研,了解业务系统的整体情况,包括部署情况、功能模块、业务流程、数据流、业务逻辑以及现有的安全措施等内容。根据以往测试实施经验,在业务调研前可先设计访谈问卷,访谈后可能会随着对客户业务系统具体情况了解的深入而不断调整、更新问卷(黑盒测试此步骤可忽略)。
流程三:业务场景建模
针对不同行业、不同平台的业务系统,如电商、银行、金融、证券、保险、游戏、社交、招聘等业务系统,识别出其中的高风险业务场景进行建模。以电商系统为例,如图3-3所示为业务场景建模模型图。
流程四:业务流程梳理
建模完成后需要对重要业务场景的各个业务模块逐一进行业务流程梳理,从前台和后台、业务和支撑系统等4个不同维度进行分析,识别各业务模块的业务逻辑、业务数据流和功能字段等。
业务模块的流程梳理主要遵循以下原则:
√ 区分业务主流程和分支流程,业务梳理工作是围绕主流程进行分析的,而主流程一定是核心业务流程,业务流程重点梳理的对象首先应放在核心主流程上,务必梳理出业务关键环节;
√ 概括归纳业务分支流程,业务分支流程往往存在通用点,可将具有业务相似性的分支流程归纳成某一类型的业务流程,无须单独对其进行测试;
√ 识别业务流程数据信息流,特别是业务数据流在交互方双方之间传输的先后顺序、路径等;
√ 识别业务数据流功能字段,识别数据流中包含的重要程度不等的信息,理解这些字段的含义有助于下阶段风险点分析。
如图3-4所示是针对某电商类网站的用户登录功能的业务流程梳理图。
通过业务流程的各个阶段梳理出业务流程各个关键环节点,如图3-5所示。
流程五:业务风险点识别
在完成前期不同维度的业务流程梳理工作后,针对前台业务应着重关注用户界面操作每一步可能的逻辑风险和技术风险;针对后台业务应着重关注数据安全、数据流转及处理的日志和审计。
业务风险点识别应主要关注以下安全风险内容。
(1)业务环节存在的安全风险
业务环节存在的安全风险指的是业务使用者可见的业务存在的安全风险,如注册、登录和密码找回等身份认证环节,是否存在完善的验证码机制、数据一致性校验机制、Session和Cookie校验机制等,是否能规避验证码绕过、暴利破解和SQL注入等漏洞。
(2)支持系统存在的安全风险
支持系统存在的安全风险,如用户访问控制机制是否完善,是否存在水平越权或垂直越权漏洞。系统内加密存储机制是否完善,业务数据是否明文传输。系统使用的业务接口是否可以未授权访问/调用,是否可以调用重放、遍历,接口调用参数是否可篡改等。
(3)业务环节间存在的安全风险
业务环节间存在的安全风险,如系统业务流程是否存在乱序,导致某个业务环节可绕过、回退,或某个业务请求可以无限重放。业务环节间传输的数据是否有一致性校验机制,是否存在业务数据可被篡改的风险。
(4)支持系统间存在的安全风险
支持系统间存在的安全风险,如系统间数据传输是否加密、系统间传输的参数是否可篡改。系统间输入参数的过滤机制是否完善,是否可能导致SQL注入、XSS跨站脚本和代码执行漏洞。
(5)业务环节与支持系统间存在的安全风险
业务环节与支持系统间存在的风险,如数据传输是否加密、加密方式是否完善,是否采用前端加密、简单MD5编码等不安全的加密方式。系统处理多线程并发请求的机制是否完善,服务端逻辑与数据库读写是否存在时序问题,导致竞争条件漏洞。系统间输入参数的过滤机制是否完善。
具体业务风险点识别示例如图3-6所示。
流程六:开展测试
对前期业务流程梳理和识别出的风险点,进行有针对性的测试工作。
流程七:撰写报告
最后是针对业务安全测试过程中发现的风险结果进行评价和建议,综合评价利用场景的风险程度和造成影响的严重程度,最终完成测试报告的撰写。