1. 概述
为更好地规避应用系统可能面临的安全威胁并减少软件脆弱性,我们基于业务需求的文档对软件进行威胁建模分析,从开发阶段提前识别潜在风险并规划防护措施。
威胁建模的核心步骤
- 攻击者视角分析:从潜在攻击者的视角出发,分析系统可能受到的攻击路径和方式,定位风险点。
- 数据流分析:对软件内部数据流进行梳理,识别数据传输、存储或处理过程中可能暴露的安全问题。
- 威胁评估与分级:对已识别的威胁进行风险等级评估,将威胁划分为高、中、低风险,并明确其可能造成的影响范围。
- 提出风险消减措施:针对高风险威胁,结合业务需求提出可行的消减措施,例如通过使用加密技术、增加身份验证机制等来降低威胁影响。
2. 威胁建模的原则
在本次威胁建模过程中,我们明确建模的范围和内容,依据以下两大原则:
- 建模安全假设原则
安全假设为建模提供了边界和前提条件,详细说明请参阅第四章节“定义安全假设”部分。
- 建模内容筛选原则
为了提高建模效率并确保覆盖关键风险点,我们制定了以下筛选规则:
- 用户资产变动相关操作
对涉及用户资产变动的功能,必须进行威胁建模。例如:申购:用户资金从账户中转出。赎回:用户资金从系统中转入账户。
- 用户认证数据变更相关操作
涉及用户认证信息的修改必须纳入建模范围。例如:密码修改:用户更新登录凭据。绑定变更:调整设备或账户绑定信息。
- 影响业务功能正常运行的操作
对可能影响用户正常使用系统业务的功能进行建模。例如:签约/解约:服务功能的启用或终止。
- 类似或重复性操作的归并处理
针对相似的功能,归并为一类操作进行建模。例如:查询与修改:流程相似的数据流操作,合并分析一次即可。
3. 威胁建模流程
本次威胁建模采用以下结构化流程,以系统性地识别和消减潜在威胁:
- 明确资源对象
明确系统中需要重点保护的资源,包括:数据资产:如用户账户、订单数据库、交易记录等机密信息;服务可用性:如Web页面的正常访问、系统接口的可靠调用等。
确保所有有价值的资源在建模过程中得到充分关注。
- 分析体系结构
分析应用程序的功能、体系结构和物理部署配置,明确系统组件及其交互方式:功能结构:核心功能模块及其依赖关系;部署配置:包括服务器位置、负载均衡策略、数据传输路径等。建立清晰的体系结构图,为后续威胁分析奠定基础。
- 定义安全边界
明确建模的范围和前提条件,通过安全假设界定分析边界:例如:假设所有内部网络节点为可信,外部流量为不可信。细化假设的内容,使建模重点突出且范围可控。
- 识别潜在威胁
识别可能影响应用程序的威胁,结合攻击者的目标和潜在的系统缺陷:绘制详细的数据流图(DFD),标注关键的数据输入、输出和处理节点;识别数据流中可能的攻击点,如未验证输入、未加密的传输路径等。
- 消减安全风险
针对已识别的威胁,采取以下措施以降低风险:防御措施:如验证输入数据、启用加密协议、限制访问权限等;设计优化:调整体系结构或流程,消除潜在攻击路径;验证手段:通过测试和评估确保消减措施的有效性。
4. 威胁建模
我们将按照威胁建模流程进行“网上基金销售信息系统”威胁建模分析。分析过程概述如下:
- 明确资源对象
- 分析体系结构
- 定义安全假设
- 识别潜在威胁
- 消减安全风险
4.1. 明确资源对象
我们将客户与系统交互过程中产生的“动态数据”作为此次威胁建模过程需要识别的受保护资源。这些资源主要以客户信息数据为主,以及为符合合规要求和安全要求而产生的信息数据。
4.2. 分析体系结构
在这个阶段,目标是要分析应用程序的功能、体系结构、物理部署配置,清楚系统的整体体系结构。我们从总体逻辑结构和总体物理结构两个方面进行分析。
4.2.1. 技术架构
网上基金销售信息系统假设采用B/S架构,逻辑划分为五个层次,分别如下:
(1)Web层:
FreeMarker:一个基于模板引擎的Java框架,用于生成动态网页,通常用于将后端数据渲染到前端页面。
SpringMVC:Spring框架的一部分,用于构建Web应用程序,支持请求-响应模型,处理