Q/CDTXXXXX—201X1信息化应用系统开发安全规范1概述软件不安全的因素主要来源于两个方面,一是软件自身存在错误和缺陷引起的安全漏洞,二是来自外部的攻击。良好的软件开发过程管理可以很好地减少软件自身缺陷,并有效抵抗外部的攻击。本规范主要规定了集团信息化应用系统在系统开发的各个阶段所应遵守的各种安全规范,将在不同阶段中所需要注意的安全问题和相关的安全规范进行进一步的描述和规定,以提高集团信息化应用系统的安全性和抵抗外部攻击的能力。2可行性计划可行性计划是对项目所要解决的问题进行总体定义和描述,包括了解用户的要求及现实环境,从技术、经济和需求3个方面研究并论证项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如硬件、软件、人力等)成本,可取得的效益和开发进度作出估计,制订完成开发任务的实施计划。2.1阶段性成果可行性研究报告。2.2可行性研究报告重点如下4个方面:1、设计方案可行性研究报告的需对预先设计的方案进行论证,设计研究方案,明确研究对象。2、内容真实可行性研究报告涉及的内容以及反映情况的数据,必须绝对真实可靠,不许有任何偏差及失误。可行性研究报告中所运用资料、数据,都要经过反复核实,以确保内容的真实性。3、预测准确可行性研究是投资决策前的活动,对可能遇到的问题和结果的估计,具有预测性。因此,必须进行深入地调查研究,充分地占有资料,运用切合实际的预测方法,科学地预测未来前景。4、论证严密论证性是可行性研究报告的一个显著特点。要使其有论证性,必须做到运用系统的分析方法,围绕影响项目的各种因素进行全面、系统的分析,既要作宏观的分析,又要作微观的分析。3需求分析软件需求分析就是对开发什么样的软件的一个系统的分析与设想,它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言表达出来的过程。需求分析阶段主要工作是完成需求对业务的表达,这体现在对需求规格说明书中,包括业务流程,子系统划分,状态图,数据流图等,最终通过用户用例完成业务分析测试。需求分析阶段最大的隐患即需求未能准确地描述表达对用户需求的真正正确理解,因此,需求分析阶段的安全工作,应主要在对用户需求真正准确的理解上。Q/CDTXXXXX—201X2需求分析阶段需深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。需求分析阶段需形成的文档包括《需求分析说明书》、《业务分析测试报告》、《用户使用手册初稿》。需求分析可分为需求提出、需求描述及需求评审三个阶段。3.1需求提出需求主要集中于描述系统目的。开发人员和用户确定一个问题领域,并定义一个描述该问题的系统,形成系统规格说明。3.2需求描述在需求分析阶段分析人员的主要任务是:对用户的需求进行鉴别、综合和建模,清除用户需求的模糊性、歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型。分析人员应发现并提出哪些要求是由于用户的片面性或短期行为所导致的不合理要求,哪些是用户尚未提出但具有真正价值的潜在需求。3.3需求评审在需求评审阶段,分析人员要在用户和软件设计人员的配合下对自己生成的需求规格说明和初步的用户手册进行复核,以确保软件需求的完整、准确、清晰、具体,并使用户和软件设计人员对需求规格说明和初步的用户手册的理解达成一致。一旦发现遗漏或模糊点,必须尽快更正,再行检查。需求评审内容需至少包含以下内容:1、需求分析进度日程实施计划进行需求分析时,应注意一切信息与需求都是站在用户的角度上。要避免分析员的主观想象,并将分析进度提交给用户,以确保需求分析过程及时与用户沟通交流,让用户进行检查与评价,从而达到需求分析的准确性。2、描述软件的功能和性能确定软件设计的限制和软件同其它系统元素的接口细节。3、需求评审的目的通过需求分析,逐步细化对软件的要求,描述软件要处理的数据域,并给软件开发提供一种可转化为数据设计、结构设计和过程设计的数据和功能表示。在软件开发完成后,制定的需求分析说明书还要为评价软件质量提供依据。3.4需求分析的基本原则:1、开发安全需求分析计划应由项目开发单位、信息化主管部门、业务主管部门共同商议决定。2、应用系统安全需求应能够达到业务所期望的安全水平。3、所有关于应用系统的业务更新或改进原则上都必须基于业务需求,并有业务事件支持。4业务需求是系统更新和改动的基础,因此必须清晰明确地定义业务的需求,禁止在业务需求未经业务部门和主要负责人员认可的情况下,盲目地进行开发工作。5、系统的每一次更新或改进都必须重新对安全需求进行定义、分析和测试评估,以保证不会对业务造成影响。6、系统设计前,需建立开发安全需求分析报告,并通过信息化主管部门审核。7、应用系统开发需符合相关法律法规上的要求,符合相关的行业标准和管理制度。Q/CDTXXXXX—201X34设计软件设计通常分为概要设计和详细设计两个阶段,主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,以及设计数据库。系统的设计需达到一个从来没有接触过的人一看就能从各个方面都对系统的作用,功能,实现方面有一个大概了解,并为以后的各类详细设计文档提供一个指引和方向。设计析阶段需形成的文档包括《概要设计说明书》、《详细设计说明书》。设计阶段的主要安全工作包括:4.1功能划分设计阶段的功能划分不合理,难以发现,且不好处理。因此功能模块设计需详细描述系统有那些主要功能,这些功能应该用何种技术,大致是如何实现的,以便发现问题。4.2模块协作描述模块间如何协同运作的,以便发现问题。4.3系统定级安全设计描述系统应该具有的安全级别,以及达到此安全等级的所采用的技术。4.4隐通道本来受安全策略限制不能进行通信的实体,利用可执行的操作的副作用而实现通信。4.5认证不充分只有分配有足够权限访问的操作进程才可以访问和操作相应的进程,攻击者同城会采取一些攻击获权限而执行一些非法操作,使得系统不可靠。在设计中,需加强访问孔子,确保操作都经过相应的授权认证允许。4.6缓冲区溢出缓冲区是分配的一段大小确定的内存空间,是内存中用来存放数据的地方。发生缓冲区溢出时,会覆盖相邻内存块,从而引发程序安全问题。因此在设计阶段,就需做好缓冲区溢出防范工作。4.7并发控制策略并发作为一种提高计算机系统运行效率的重要手段,在得到广泛应用的同时,其机制本身容易引起以下问题(1)竞争(2)活锁(3)死锁设计阶段需考虑到并发带来的上述问题,并做处理。4.8TOCTTOU错误是一种利用公用可写文件,攻击者可以创建同名连接到其访问的文件,来达到非法访问的目的。因Q/CDTXXXXX—201X4此,系统设计时,需有相应的防护策略。4.9数据库重要信息的保护数据库中的重要信息需加密存储,并有相应的防控措施。4.10配置管理:对管理界面进行未经授权的访问、具有更新配置数据的能力以及对用户帐户和帐户配置文件进行未经授权的访问。4.11身份验证口令长度不低于8位;口令至少需数字和字符串组合;口令需加密存储;口令验证通信信道需加密,以保护身份验证;使用强密码,支持密码有效期和帐户禁用。4.12访问控制任何用户如果希望访问应用系统中的某一部分,则必须通过唯一的认证授权方式。4.13授权使用最少超级管理帐户,每个系统不得多于2个;不得采用集中授权,凡是授权,均进行单独授权(初始化授权可批量,但初始化权限分配必须经过信息化主管部门审核);限制用户访问最小权限资源。4.14收权用户离职或其它原因不需再访问系统,需要及时有关系统的权限4.15敏感数据对网络上传输的敏感数据进行加密;确保通信通道的安全;对敏感数据存储提供强访问控制。4.16Cookie管理不要在cookie中永久性存储敏感数据;不要使用HTTP-GET协议传递敏感数据;不要通过HTTP连接传递身份验证cookie。在授权cookie内设置安全的cookie属性,以便指示浏览器只通过HTTPS连接向服务器传回cookie。4.17远程维护管理在管理界面上使用身份验证后授权;远程管理时要确保通信通道的安全。4.18会话管理限制会话时常,具体时长由业务系统决定,闲置会话原则上不超过15分钟。保护会话状态,以防止未经授权的访问。4.19加密考虑到集团公司会代表国家荣誉,加密算法,需采用我国的算法或我国改造的算法。SM1-SM9算法,SSF33算法,祖冲之对称秘钥算法等,密钥最低不得低于32位。定期回收管理密钥。Q/CDTXXXXX—201X54.20异常管理设计好异常处理机制。4.21审核和记录在所有应用中审核和记录活动,确保日志文件访问的安全,定期备份日志文件。4.225.1.12后门预防控制系统须有机制,防止恶意攻击绕过安全性控制而获取对系统资源访问和控制。4.23安全设计评审应用系统设计方案需要由信息化主管部门进行组织安全评审。4.24确保日志管理机制健全建立可根据情况自由设置的日志管理机制,日志记录的范围和详细程度可以根据需求自行定制,且可以实现在应用系统的使用过程中进行日志的定制和记录。保留所有与系统开发相关的程序库的更新审核记录。日志信息不可删除和修改,日志信息需是自动记录,不允许存在手工参与情况。4.25审计安全规范(1)应包括每个用户的安全审计功能,对应用系统的重要安全事件进行审计。(2)应保证无法单独中断审计进程,审计记录无法删除、修改或覆盖。(3)审计内容应包含事件主要信息:日期、时间、操作人、类型、事件信息和结果等。(4)应提供审计记录数据统计、查询。4.26数据及通信有效性管理规范(1)应提供校验码技术,保证通信过程的数据完整性。(2)应具有在请求的情况下为数据原发者或接收者提供数据原发和接收数据的功能。(3)提供有效性验证功能,保证人机接口或通过通信接口输入的数据格式或长度符合系统设定要求。(4)提供自动保护功能,当故障发生时自动保护当前状态,保证系统能够恢复。(5)当应用系统的通信双方中的一方在一段时间内未作任何响应,另一方应能够自动结束会话。(6)应能够对系统的最大并发会话连接数进行限制。(7)应能够对单个帐户的多重并发会话进行限制。(8)应能够对一个时间段内可能的并发会话连接数进行限制。(9)应能够对一个访问帐户或一个请求进程占用的资源分配最大限额和最小限额。(10)、应能够对系统服务水平降低到预先规定的最小值进行检测和报警。(11)应提供服务优先级设定功能,并在安装后根据安全策略设定访问帐户或请求进程的优先级,根据优先级分配系统资源。5编码软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的“源程序清单”。Q/CDTXXXXX—201X65.1编码阶段的主要工作:1、基于软件产品开发质量要求,充分了解开发语言、工具的特性和风格,选取合适的编程语言。2、编码。3、提供源程序清单。5.2编码阶段需要考虑的安全问题包括:1、内存安全的实现编程过程中内存数据出现的常见安全问题,如缓冲区溢出、整数溢出、字符串格式化等。2、线程/进程安全如线程同步、线程死锁等3、科学地处理异常异常是程序设计中必须处理的,主要解决怎样处理异常能够保证系统的安全性。4、输入输出的安全保障如对输入的合法性检测。5、权限控制的处理系统中涉及授权和限制访问,需要有完善的权限控制机制。6、数据的保护数据篡改和抵赖的防护和检验除了加密解密外,还需要对对信息来源的鉴别、对信息的完整和不可否认等功能进行保障。7、代码的优化处理所有的程序,都需经过代码优化,代码性能的好坏有时候不仅关系到系统的运行效率,也关系到系统的安全。8、Web编程安全。Web编程中安全问题多种多样,但至少应有应付跨站脚本、SQL注入、Web认证攻击、URL操作攻击等安全问题。9、参数变量处理如果需要设置变量,不能使用缺失的默认值,如需设置PA