1、软件安全知识软件安全相关知识一、前言许多项目在上线前,用户会要求提供产品安全性检测报告,或者用户方(或请第三方)对产品进行安全性测试后,给出产品安全性评测报告提出产品整改要求,在碰到这类问题时,由于前后台业务人员对软件安全方面的知识不够了解,往往不知道如何处理。由于计算机安全性方面的知识体系非常庞杂,平时接触较少,且在需求了解、产品研发阶段常常被忽略,当遇到客户方信息化建设比较健全,对产品提出安全性要求时,才临时采取策略。软件安全性是产品质量评估的一个重要方面,测试中心在跟进一些项目的过程中,接触了一些相关知识,本文档总结了关于安全性方面的基础知识,软件安全评测的方法、内容,以及针对软件安全性
2、方面遇到的问题的一些建议处理方法,供大家学习了解。二、术语解释 信息系统安全等级保护:是根据信息系统重要性不同对其进行分级别保护,不同级别有不同的安全措施及标准。建设单位应该根据系统的安全等级评估结果,对系统实施相应安全保护措施。参考公安部信息安全等级保护评估中心编制的信息系统安全等级保护政策。 信息安全服务资质认证:信息安全服务资质是对信息安全服务提供者的资格状况、技术实力和实施安全工程过程的质量保证能力等方面的具体衡量和评价。资质等级的评定,是在其基本能力水平、安全工程项目的组织管理水平、安全工程基本过程的控制能力等方面的单项评估结果的基础上,针对不同的服务种类,采用一定的权值综合考虑后确
3、定的,并由国家认证机构授予相应的资质级别。 信息安全保障系统:是一个在网络上,集成各种硬件、软件和密码设备,以保护其他业务应用信息系统正常运行的专用的信息应用系统,以及与之相关的岗位、人员、策略、制度和规范的总和。 软件安全性评测:对软件系统进行安全性评测,确保软件满足其相应级别的安全性标准要求。依据的软件安全评测标准有:国际标准ISO/IEC 15408 国家标准 GB 18336 信息技术安全性评测准则;主要的评测中心有:中国信息安全测评中心、国家计算机网络与信息安全管理中心;其他第三方安恒信息、三零卫士信息技术公司;企业信息中心自己的安全评估检验部门 安全漏洞:是在硬件、软件、协议的具体
4、实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统 入侵检测:入侵检测(Intrusion Detection)是对入侵行为的检测。它通过收集和分析网络行为、安全日志、审计数据、其它网络上可以获得的信息以及计算机系统中若干关键点的信息,检查网络或系统中是否存在违反安全策略的行为和被攻击的迹象。 渗透测试:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。 PKI(Public Key Infras
5、tructure)公共密钥基础设施:它是以不对称密钥加密技术为基础,以数据机密性、安全性、身份认证和行为不可抵赖性为安全目的,来实施和提供安全服务的具有普适性的安全基础设施。其内容包括数字证书、不对称密钥密码技术、认证中心、证书和密钥的管理、安全代理软件、不可否认性服务、时间戳服务、相关信息标准、操作规范等。 数字证书:是由认证机构经过数字签名后发给网上信息交易主体(企业或个人、设备或程序)的一段电子文档。 CA(Certification Authority)认证中心:,PKI的核心。它是公正、权威、可信的第三方网上认证机构,负责数字证书的签发、撤销和生命周期管理。 https:安全超文本传
6、输协议,它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作的。 SDL:安全开发周期(Security Development Lifecycle)是微软提出的从安全角度指导软件开发过程的管理模式。三、安全性基础知识介绍1、了解信息系统的安全空间信息系统的安全与网络息息相关,只有基于网络的信息系统才需要考虑安全性问题。信息系统安全空间的五大属性包括:认证、权限、完整、加密、不可否认,主要有安全机制、安全服务与安全技术三个维度组成。1) 安全机制包括: 基础设施实体安全、 平台安全:操作系统漏洞检测与修复、网络基础设施(路由器、交换机和防火墙等)漏洞检测与修复、通用基础应
7、用程序(数据库、WEB、DNS、系统守护进程)漏洞检测与修复、网络安全产品(防火墙、入侵检测、防病毒)部署 数据安全:访问控制、数据完整性、数据可用性、数据监控和审计、数据存储备份 通信安全 应用安全:业务软件程序安全性测试,业务交往的防抵赖测试、业务资源的访问控制验证、业务现场的备份与恢复机制、业务数据的唯一性、业务数据保密性、可靠性、可用性 运行安全 管理安全 授权和审计安全 安全防范体系2) 安全服务 对等实体认证服务:用于两个开发系统同等层中的实体监理链接和数据传输时,对对方实体的合法性、真实性进行确认 数据完整性服务 数据源点认证服务 禁止否认服务 犯罪证据提供服务3) 安全技术 加
8、密技术 数字签名技术 访问控制技术 数据完整性技术 认证技术 数据挖掘技术这三个维度组成信息系统的安全空间,每个维度的内容越丰富、越深入,安全空间就越大,安全性越好。2、安全保障体系大型企业及政府在进行信息化建设时都有一套信息安全保障体系,信息系统安全保障体系结构图如下:安全保障系统的核心是保证信息及数据的安全,长期以来网络安全一直比较重视,如防病毒、防止黑客攻击、加密传输,网络安全设备:防火墙、网络隔离、安全路由、病毒防治系统、漏洞扫描系统、入侵检测系统、动态口令卡、VPN。随着MIS系统成熟发展到一定阶段,处理的信息越来越多,涉及的业务面越来越宽,环节越来越复杂,交互人员越来越广泛,企业的
9、运营越来越离不开业务应用信息系统,人们逐步认识到软件的不稳定导致系统崩溃和数据丢失,病毒攻击的是软件的缺陷,黑客利用的是软件的弱点,机密和隐私的泄漏是因为软件存在漏洞。应用软件系统的安全性在软件开发及运行过程中必须得以考虑和保证。3、安全风险评估及安全策略提前识别管理软件安全性风险,从风险源的角度划分,可以划分为自然事件风险、人为事件风险、软件风险、软件过程风险、项目管理风险、应用风险、用户使用风险等。确定安全性风险后,为避免损失,所采取的一切,包括各种措施手段,以及建立的各种管理制度、法规等都称为安全策略。国家质量技术监督局发布的计算机信息安全保护等级划分准则规定,计算机信息系统划分为5个安
10、全保护等级:1)用户自主保护级,普通内联网用户;2)系统审计保护级,适用于通过内联网或国际网进行商务活动,需要保密的非重要单位;3)安全标记保护级,适用于地方各级国家机关、金融单位机构、邮电通信、能源与水源供给部门、交通运输、大型工商与信息技术企业、重点工程建设等单位;4)结构化保护级,适用于中央级国家机关、广播电视部门、重要物资储备单位、社会应急服务部门、尖端科技企业集团、国家重点科研单位机构和国防建设等部门;5)访问验证保护级,适用于国防关键部门和依法需要对计算机信息系统实施特殊隔离的单位。根据业务应用信息系统所处理信息的敏感度、业务应用的性质和部门的重要程度,按照国家有关标准分别确定其计
11、算机信息系统的安全保护等级。4、信息安全技术与安全产品管理信息安全技术主要包含:密码技术、虚拟专用网和虚拟本地网、无线安全网络。PKI可以作为支持安全5要素的技术基础设施,从技术体系上解决网上身份认证、权限管理、信息完整性、机密性和抗抵赖等安全问题,为网络信息应用提供可靠的信息安全基础设施。PKI/CA主要应用于电子商务应用、电子政务、网上银行、网上证券及其他网络应用。国家对安全产品按种类,由不同的政府职能部门进行管理,具体分工: 所有有关商用密码及密码产品,都由“国家密码管理委员会办公室”,负责立项、检验、检查和产品鉴定。并负责对密码和密码产品研制、生产、销售的企业进行资质认证 所有商用安全
12、产品(涉及密码部分除外),由国家公安部公共信息检查局负责产品的检验和发放“市场准入证”,并与工商部门合作,负责安全产品的市场管理、监督 所有有关军用安全产品(涉及密码部分除外),由部队指定的“检测机构”,负责军用安全产品检验和发放“军用合格证” 国家质量监督局委托国家安全部成立“计算机网络安全产品检测中心”,对计算机网络安全产品的质量进行检测,并发放合格证 普密和绝密仍然由中央和地方的机要部门管理使用5、软件安全测试工具Rational AppScan是目前比较通用的商用软件安全性测试工具,使用AppScan应用软件开发团队在项目交付前,可以对所开发的应用程序与服务进行安全缺陷的扫描,自动化检
13、测 Web 应用的安全漏洞,从系统开发的起始阶段就扫除 Web 应用安全漏洞。扫描过程如下:1)扫描步骤:根据数据库里的扫描规则爬行服务网站,获取所有的网页链接;2)分析步骤:对扫描步骤中读取的网页进行分析,找出基本元素,发现漏洞;3)攻击步骤:根据漏洞数据库中的规则,调用相应的测试函数对可能存有问题的网页进行模拟攻击;4)评估步骤:根据攻击结果,对网站安全的风险性进行评估。所述的攻击并非传统意义上的探测,而是针对不同漏洞而设计的不同的攻击方法,通过自动攻击和半自动攻击(人工辅助)方式,通过评估引擎,综合全部攻击结果及对扫描页面的分析后,系统地做完整的评估。四、软件安全性测试主要内容及测试方法
14、软件安全性测试是确定软件的安全特性实现是否与预期设计一致的过程,包括安全功能测试、渗透测试(安全漏洞测试)与验证过程;软件主要安全功能需求包括:数据机密性、完整性、可用性、身份认证、授权、访问控制、审计日志、委托、隐私保护、安全管理等。安全漏洞测试从攻击者的角度,以发现软件安全漏洞为目的。目前检测的内容基本上可以分为静态代码扫描、部署环境扫描、应用系统扫描、渗透测试、安全性分析:静态代码扫描:理论上是最有效的检测方式,但是一般费用较高,误报或者有风险但是实际情况很难利用的漏洞较多,项目上采取的比较少部署环境扫描:针对部署环境系统、中间件、数据等的安全性扫描,项目上极少见到,一般针对具体部署环境
15、,与我们产品无直接关系应用系统扫描:项目绝大部分以此类为主,由于不同扫描工具能力不一样,扫描出来的问题和偏重点也不一样,不过对于核心类型的问题是比较相似的渗透测试:模拟实际攻击者,不同渗透测试人员渗透步骤和习惯各不相同,这个只能给出一个系统是否足够糟糕的结论,没必要也无法统一。安全性分析:针对既定的安全机制进行手工检查和分析,既包含常见的安全风险也包含安全功能,一般等保项目做得比较多目前安全性测试基础理论薄弱,测试方法缺少理论指导,没有统一标准,缺乏技术产品工具,不同单位机构采用的测试方法及测试内容各不相同。测试中心对软件安全性测试有一定了解,能够进行基本安全性测试,但不能保证测试过的产品不存
16、在安全性问题,确保通过第三方评测机构的检测,测试中心软件安全性测试主要包括的内容及方法如下:1、安全性测试主要内容 物理安全需求项需求描述优先级物理访问控制通信线路、物理设备、机房的访问控制中通信线路、软硬件设备可靠性设备容错及备份中防盗窃和防破坏防盗窃和防破坏低防雷击防雷击低防火防火低防水和防潮防水和防潮低防静电防静电低温湿度控制设备的运行环境控制低电力供应不间断电源保障中 网络安全需求项需求描述优先级网络资源的访问控制网络资源是否进行了强的访问控制低网络设施防病毒网络设施防病毒低入侵防范是否对入侵行为进行检测并进行防范,能够应对拒绝服务攻击及常见的网络攻击等中安全审计是否定期对网络行为进行
17、记录并分析低数据传输的保密与完整性关键数据以强加密的方式进行传输并进行完整性检查防止非法篡改数据,可以考虑在应用层或者传输层实现(数据传输的加密及完整性校验可能在一定程度上影响系统效率并带来一定的成本,该需求需要讨论)中 系统安全需求项需求描述优先级操作系统、数据库系统的漏洞维护操作系统、数据库需要安装最新的安全补丁中操作系统、数据库系统的安全配置用户口令设置操作系统、数据库应该使用不易破解的用户口令并关闭不使用的默认用户高操作系统端口设置不开放不必要的端口中数据库访问控制不允许通过外网直接访问数据库高操作系统的防病毒定期更新病毒库并进行病毒、木马扫描,防止病毒、木马对操作系统的危害中 应用安
18、全需求项需求描述优先级授权权限控制用户不能访问XX的功能和数据高身份验证身份验证健壮性身份验证是否可以被绕过高密码加密传输及存储密码必须加密传输及存储,且使用高强度的加密方式高密码不能被暴力破解密码不能通过自动化的方式进行穷举破解高密码强度控制用户设置密码必须符合一定的密码强度(字母和数字组合,最小位数限制,不能使用最近几次使用的密码等)中密码定期更新要求密码必须定期更新中密码密文显示且不可复制粘贴,不可通过显示源代码显示密码密文显示且不可复制粘贴,不可通过显示源代码显示中同一个账号不能在多台电脑上同时使用同一个账号不能在多台电脑上同时使用中输入有效性防止用户输入恶意数据,非法查询、修改系统数
19、据防止用户输入恶意数据,非法查询、修改系统数据高防止用户输入恶意数据,对访问该数据的其他客户造成危害防止用户输入恶意数据,对访问该数据的其他客户造成危害高上传恶意文件防范对用户上传的恶意文件进行校验,不允许非法文件的上传及执行高不依赖客户端的验证输入有效性校验不依赖客户端脚本的校验高数据保密性敏感数据加密敏感数据在传输和存储过程中应该始终使用强加密处理中会话管理会话能够定期自动销毁设置会话最大存活时间及未响应状态的最大存活时间中会话注销后能够正确销毁注销后,立即结束会话,通过后退按钮不可返回之前访问的非公共页面中异常管理异常处理使用自定义的错误信息,不向用户暴露系统关键信息中日志管理日志记录能
20、够记录并查看系统关键操作的信息,至少包含操作时间、用户、IP、操作模块和操作内容中日志访问控制日志不允许被非法访问和修改中配置管理文件管理XX的用户不得访问服务的配置存储或者进行目录浏览高配置管理界面访问权限控制XX的用户不得访问服务的配置管理地址,包含两部分配置管理,一个是dna的配置管理,一个是运营平台高安全配置应用系统、认证服务、运营系统、dna配置管理系统不存在弱密码或者硬编码密码高2、安全性测试方法安全性测试的方法目前主要以手工测试和扫描工具为主。1)手工测试:采用已知的恶意攻击手段(漏洞案例为基础),对系统的主要功能页面、输入框进行渗透测试;对安全性功能进行测试,如用户认证、权限控
21、制、密码复杂度等;2)工具测试:使用如AppScan工具对系统进行安全漏洞扫描。3、常见产品安全性缺陷 跨站脚本攻击漏洞:用户可以将恶意构造的脚本储存在系统中,其他用户访问到构造的脚本时将会受到恶意脚本的攻击;解决办法:一般的解决办法:将HTML标记使用的“”,单双引号,反斜杠等进行转码或者过滤,如转换成“<”“>”。 SQL注入(盲注):通过输入在传递的参数中包含了SQL语言的元字符,破坏了原有的SQL语句结构,使程序要处理的数据变成了程序的一部分,以此来实现某些攻击操作,造成数据丢失、篡改或被非法获取。 用户名、密码明文传输:一些敏感数据或信息在传输过程中没有加密,可以被嗅探工
22、具监听获取;解决方法:启用https使用ssl对数据进行加密。 权限验证存在安全漏洞:某些网页没有对用户权限进行有效检查,不通过登录输入URL可以直接访问获取系统信息。 元字符攻击:输入语言中具有特定含义的字符或者字符串,如一些危险的元字符:在SQL查询中,单引号”是危险字符,在文件系统路径中两个句号”.”是危险字符,对于命令行程序来说,分号“;”和双&(&)符号是危险字符,而换行符(n)对于日志文件是危险字符。 异常处理:由于异常处理的不合理,用户可以通过构造异常语句的方式,通过系统给出的错误提示收集信息,为其他攻击提供便利。五、公司产品安全性现状公司部分产品已经经过内部安全性测试或者第三方
23、及用户方的安全性检测,各产品安全性测试情况如下: CI产品:在内部进行过安全性测试,同时实施项目中进行过多次第三方评测(见产品安全性测试案例),并进行了完善,安全性有一定保障,可以接受第三方安全性测试或提供参考的安全性评测报告; RO产品:测试中心进行过基本安全性测试,有内部安全性测试报告; GMC预算:新华项目进行过第三方安全性测试; 行政事业资产:1.0版本财政部安排第三方进行过安全性评测,2.6版本目前还没有; 其他产品目前还没有进行过任何安全方面的测试或评测。虽然测试中心对个别产品进行过安全性测试,但由于安全性测试方法多种多样,采用的技术不同,同时我们对安全性方面知识掌握还不够全面,经
24、验不够丰富,内部测试过第三方测试仍然可能存在问题。第三方安全性评测案例:序号所属产品项目名称客户检测单位工具日期1CI科工局船舶统计系统2CI工业经济基础数据系统工信部国家网络与信息安全管理中心2011-6-2CI中国科协系统统计工作网络平台中国科协信息中心信息安全共性技术国家工程研究中心(中科正阳)2011CI中化报表安恒信息MatriXay2011-8-24CI烟草财审信息网烟草TBM全面预算管理系统中国移动中国移动应用安全评估检测中心2011-5-23TBM浙江移动预算浙江移动北京安域领创科技有限公司WebRavor2012-8-3GMC新华预算新华集团2011-12-20CI万达集团财
25、务报表合并项目万达集团万达内部Rational AppScan 8.5.0.12012-9-24CI北京财政企业服务网北京市财政局网神信息技术(北京)股份有限公司Rational AppScan2012-10-213GMC产权登记产权登记系统三零卫士信息技术公司六、软件安全性常见问题处理方法1、上线前客户要求提供产品安全性评测报告,或对产品安全性如何保障提出疑问。系统的安全等级一般由用户根据“信息系统安全等级保护制度”的规定来确定,各单位会根据安全等级保护制度的要求制定内部的信息安全保障体系,根据内部的安全保障体系要求,不同安全级别的软件系统有不同安全性标准,有一定安全性要求的产品,上线前用户
26、方应该会有专人进行评估,软件提供商需要确保提供的软件产品的安全性。不同单位的安全保障体系健全度不同,比较低的要求是只要你提供证明软件进行过安全性测试的测试报告即可,有些可能要求必须是第三方的评测报告(有一定的费用需要考虑应该由哪方承担);安全保障体系比较健全的单位一般会指定专门的第三方评测机构或内部的安全性检测专家对上线软件产品进行安全性评测。遇到这类问题时需要知己知彼,了解对方信息化建设在安全性方面的制度,根据用户方的要求与产品研发负责人及测试中心联系,一起配合完成相关事宜。2、用户经过安全性检测后提供安全性评测报告,测试没有通过,要求进行产品整改,通过后在上线,怎么办?没有进行过安全性测试
27、的产品首次进行安全性评测,由于需求及设计没有考虑安全性问题,可能会存在较多安全性问题;同时由于安全性测试没有统一标准,不同机构单位的安全性测试内容及方法都不同,之前测试通过的产品,在另一个项目中可能就测试通不过了。如果产品在上线前安全性测试没有通过,请联系对应的产品研发负责人及测试中心,可以对测试结果进行分析和处理,目前项目上提供的检测漏洞基本都能够得到修复或解释。3、用户要求填写安全相关调研表测试中心有对软件安全性知识掌握的人员,对公司产品的安全性状况基本了解,如果还没有进行过安全性测试的产品,可以根据需要进行测试,遇到此类问题可以将调研表发给测试中心及对应的产品研发负责人,进行分析处理。4
28、、软件安全性需求主要有哪些目前了解到得主要产品功能安全性需求有:用户认证方式:用户名/口令和CA证书、三员管理、审计日志、登陆失败次数限定、密码复杂度要求、多个业务系统统一账号管理、密级数据访问控制等。七、其他关于软件安全性方面工作改进1、项目需求阶段注意软件安全性需求了解软件安全等级及对应等级的安全性要求。2、制定运维安全性方面的工作规范 系统维护人员录用、离职、使用系统的安全管理 口令的安全管理 系统管理用户的权限分离与制约 系统维护人员日常行为的日志审查 定期更换管理密码 定期备份数据、检测磁盘空间 定期更新操作系统数据库安全补丁 定期更新病毒库并执行病毒扫描 安装、升级部署手册CVE 的英文全称是“Common Vulnerabilities & Exposures”公共漏洞和暴露。CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1