软件研发安全管理制度
. . 文档密级:一般 文档状态:[ ] 草案 [√]正式发布 [ ]正在修订 受控状态:[√] 受控 [ ]非受控 日期日期 版版 本本 描述描述作者作者 质量小组 审核审核 孙佩 审批审批 连春华2015-01-08A0A 版首次发布 a . . . 目 录 1.1.适用适用 1 1 2.2.目的目的 1 1 3.3.职责职责 1 1 4.4.相关文件相关文件 1 1 5.5.规定要求规定要求 1 1 5.1.5.1. 5.2.5.2. 5.3.5.3. 5.4.5.4. 安全需求策划分析安全需求策划分析. .1 1 系统设计与安全编码系统设计与安全编码. .2 2 安全测试安全测试. .3 3 发布与运行发布与运行. .4 4 6.6.记录记录 4 4 a . . . 1. 1.适适用用 本程适用于公司软件生产相关的过程安全管理。 2. 2.目目的的 为了对公司软件生产相关的策划、 开发、 测试、 交付等进行有效的控制, 特制定本程序。 3. 3.职职责责 1)技术总监 负责批准各种软件的开发项目和开发方案。 2)研发中心 负责软件生产过程,包括策划、开发、测试、交付等过程。 3)信息部 负责基础设施的维护,包括开发服务器、测试服务器、开发PC 机的硬件、操作系统、 防病毒软件。 4. 4.相相关文件关文件 《信息安全管理手册》 5. 5.规规定要求定要求 5.1.5.1.安全需求策划分析安全需求策划分析 研发中心应根据开发任务的需求,编制《软件开发需求书》。 《软件开发需求书》应包括 功能需求背景、项目建设目标、项目建设原则、具体功能需求、项目开发的时间要求以及安 a . . . 全要求等。 《软件开发需求书》交技术总监审核。安全需求分析内容可以作为《软件开发需 求书》的一个部分,也可单独编写《软件开发安全需求书》 软件开发的安全要求应包括以下方面: 1)客户的安全要求: 与客户沟通过程中, 客户明确要求软件应具有的安全功能与安全性能, 例如客户要求对 存储数据的安全、传输数据的安全、行为审计、权限分配、防抵赖等。 2)技术的安全要求: 技术的安全要求包括两个部分, 其一是客户安全要求的技术实现, 如客户要求电子商务 系统的交易应具备防抵赖的安全要求,则其技术的安全要求为符合第3)项所要求数字签名 技术; 其二是软件本身所涉及技术的安全, 包括业界的通用安全技术, 例如数据库安全技术、 Java 安全技术等; 3)法律法规的安全要求: 法律法规安全包括了国内、 国际法律法规所确认要求采用的安全技术与准则, 也包括了 业界普遍公认的安全技术与准则, 例如对口令的保护应采用单向散列技术、 国内使用商用加 密产品,则该产品应得到国家相关部门的认可等; 5.2.5.2.系统设计与安全编码系统设计与安全编码 在系统设计与编码过程中,开发人员应关注系统架构与软件代码自身的安全性与健壮 性:以确保: 1)输入数据的安全: 开发人员应考虑到用户输入数据的不确定性,在设计与编码时,应采用以下控制措施: a)双输入或其他输入校验, 例如边界校验或者限制特定输人数据范围的域, 以检 测下列差错: i. ii. iii. iv. v. 范围之外的值 数据字段中的无效字符 丢失或不完整的数据 超过数据的上下容量限制 未授权的或矛盾的控制数据 b)系统文件不得有何未授权的变更; a . . . c)软件差错应得到及时相应; d)定义在数据输人过程中所涉及的全部人员的职责; e)创建数据输入过程中所涉及的活动的日志; 2)内部处理的控制: 应用系统的设计与实施应确保导致完整性损坏的处理故障的风险减至最小。 在开发的软 件中要考虑的特定范围应包括: a)使用添加、修改和删除功能,以实现数据变更; b)防止程序以错误次序运行或在前面处理出现故障后运行的机制; c)恢复故障的机制,以确保数据的正确处理, d)防范利用缓冲区超出/溢出进行的攻击。 3)消息完整性 若需要保护消息的完整性,可采用密码技术,参见《加密管理制度》 4)输出数据的确认 输出确认应包括: a)调节控制计数,以确保处理所有数据; b)为读者或后续的处理系统提供足够的信息, 以确定信息的准确性、完备性、精 确性和分类; c)定义在数据输出过程中所涉及的全部人员的职责; d)创建在数据输出确认过程中活动的日志。 5.3.5.3.安全测试安全测试 本公司研发的软件产品都必须经过测试后方可发布给客户,测试过程应包括安全测试。 安全测试的环境应独立于公司的开发环境与日常办公环境, 包括网络的隔离, 以避免安全测 试对于公司其他业务与系统的影响。安全测试应涵盖以下内容: 1)客户安全要求的测试: 包括对客户安全要求的功能与性能测试,以检验软件是否满足客户的安全要求; 2)技术安全要求的测试: a)应测试输入数据与输出数据的合理性; b)缓冲区溢出测试; a . . . c)边界值与特殊值校验; d)业界安全技术的测试:如数据库安全测试等; 3)法律法规安全要求检查: 核查软件中所采用安全技术未违法国家或国际相关法律法规, 未使用具有知识产权问题 的安全技术,未使用违背业界普遍承认准则的安全技术; 在测试过程中, 严禁使用包含个人信息或其他敏感信息的运行数据库用于测试。 如果测 试使用了个人或其他敏感信息, 那么在使用之前宜去除或修改所有的敏感细节和内容。 测试 数据作为项目文档的一部分, 应存放于 VSS 内并得到保护, 参见风险评估相关文档以及 《用 户访问管理制度》 ; 测试完成后,应编写《软件测试报告》 ,安全测试内容应做为报告的以部分,或者编写 单独的《软件安全测试报告》 。 5.4.5.4.发布与运行发布与运行 软件产品的发布方式应遵循以下要求: a)将产品(可执行代码与相关组件)打包后,通过 FTP 等方式发送至客户制定的服 务器。客户服务器的账号与密码应由专人保管, 不得外泄,若需要长期保管客户服务器账号 与密码,应与客户协商并定期更换服务器密码(至少3 个月更换一次) ;产品打包至少应采 用压缩加密的方式,解密口令可通过电话、 电子邮件等方式告知客户, 但不得将解密密码通 过与产品传送相同方式传至客户。 b)将产品加密打包后,刻录光盘,邮寄至客户。解密密码不得随光盘邮寄至客户,但 可以通过电话、电子邮件等方式告知客户, c)仅在与客户有书面合同或协议约定应发送产品源代码的前提下, 方可将产品源代码 发送至于客户,否则不得将产品源代码发送至任何第三方。发送方式见a)与 b)项; 6. 6.记记录录 《软件开发需求书》/《软件开发安全需求书》 《软件测试报告》/《软件安全测试报告》 a .