51Testing软件测试论坛

标题: [有奖问答8]您认为应该如何评估和改进应用的安全性? [打印本页]

作者: 默默巫    时间: 2009-11-16 09:59
标题: [有奖问答8]您认为应该如何评估和改进应用的安全性?
基于Web的应用日益增多,您了解您的应用安全性么?您认为应该如何评估和改进应用的安全性?


答题前请复制以下回贴格式(蓝字部分),并填写好个人真实有效信息,以确保奖品发送无误



  1. 答题:
复制代码

作者: houzeal    时间: 2009-11-19 10:54

答题:
我所了解应用安全  
1. 注册和登录 密码是否加密?
2. 在线是否超时,Session是否有时间限制?
3. 是否使用https and ssl?(性能有一定的影响)
4. 备份和恢复能力
5. 网站服务器端错误信息是否暴露?
6. Application server 和 DB 访问密码复杂度怎样?
7. 脚本漏洞检测
8. 防火墙测试
等等
作者: 斯文的败类    时间: 2009-11-19 15:40

答题:

应用安全评估采用文档分析、人员访谈、现场检查、代码审计等方法,是全面深入地发现系统在应用层的安全问题的一种有效手段。

目前,面向业务系统的安全评估工作主要有应用层的安全扫描和渗透测试。采用应用层的扫描工具可以较全面的发现WEB应用中的SQL注入、XSS跨站等程序编码细节造成的安全问题,但深入地程度不够,不能代替安全人员手工的技术检测。渗透测试作为一种可以真正让系统所有者直观地看到系统脆弱性的有效手段,同入侵者的方法一样,以一个系统的安全问题为入手点,获得对目标预期权限的获得,评估范围上不能全面地发现系统存在的问题。而人工审计评估目前还主要停留在操作系统和数据库等应用软件的使用配置阶段,没有面向应用和业务。

为了完善对系统脆弱性的发现,让用户对系统业务的安全状况有一个整体深入的了解。我们这里提出应用安全评估相关实施方法。

安全问题的产生从应用的设计开始,尽管我们日常的安全评估对象是一个处于运行阶段的系统,但问题的产生不仅仅是来自于运行阶段。所以我们要通过应用安全评估,发现系统在设计、开发(编码)、部署运维、改进四个阶段所出现的安全问题。

1由于设计不当而引起的潜在问题

1.1逻辑流程:不当的流程设计,可能导致如用户验证或权限管理机制被绕过等安全问题,需要根据安全人员以往经验进行评估。

1.2输入验证:

嵌入到查询字符串、表单字段、cookie 和 HTTP 头中的恶意字符串的攻击。这些攻击包括命令执行、跨站点脚本(XSS)、SQL 注入和缓冲区溢出攻击。

输入验证是一个很复杂的问题,并且是应用程序开发人员需要解决的首要问题。然而,正确的输入验证是防御目前应用程序攻击的最有效方法之一。正确的输入验证是防止 XSS、SQL 注入和其他输入攻击的有效对策。

1.3身份验证:标识欺骗、密码破解、特权提升和未经授权的访问。身份验证是确定调用方身份的过程。这里需要考虑的问题包括:

a)是否区分公共区域和受限区域;

b)是否对最终用户帐户使用帐户锁定策略;

c)是否支持密码有效期;

d)是否能够禁用帐户;

e)是否在用户存储中存储密码;

f)是否使用强制强密码策略;

g)是否在网络上以纯文本形式发送密码;

h)是否对验证cookies及session有保护措施。

1.4授权:访问保密数据或受限数据、篡改数据以及执行未经授权的操作。授权确定已通过验证的标识可以执行哪些操作以及可以访问哪些资源。错误授权或弱授权会导致信息泄漏和数据篡改。深入防御是应用程序授权策略的关键安全原则。

1.5配置管理:对管理界面进行未经授权的访问、具有更新配置数据的能力以及对用户帐户和帐户配置文件进行未经授权的访问。

1.6敏感数据:泄露保密信息以及篡改数据。

1.7会话管理:捕捉会话标识符,从而导致会话劫持及标识欺骗。

1.8加密:访问保密数据或帐户凭据,或二者均能访问。

1.9参数操作:路径遍历攻击、命令执行以及绕过访问控制机制,从而导致信息泄漏、特权提升和拒绝服务。

1.10异常管理:拒绝服务和敏感的系统级详细信息的泄漏。

1.11审核和记录:不能发现入侵迹象、不能验证用户操作,以及在诊断问题时出现困难。

---------------------------------------------
2开发(编码)阶段

数据的整理:在对输入数据的整理过程中,是否引发了新的安全问题(如对上传文件名的替换,导致通过构造特殊的文件名可以上传可执行的文件类型)。

信息泄露:是否在WEB页面及WEB页面的注释中出现了敏感信息(如用户名、密码、开发方信息、管理后台入口等)。

验证的有效性:针对前面提到的验证要求,开发人员的编码是否有效(如:测试人员以sElect替换select,或通过字符转码等方式绕过验证)。
---------------------------------------------
3部署运维阶段

本部分内容根据被检查目标的具体环境不同,需要根据实际情况选择,以下为评估要点:网络 、操作系统 、中间件 、数据库、部署方式 、部署流程 、应用账户管理。
---------------------------------------------
4系统改进阶段

4.1对已有数据的保护
对测试系统数据、数据备份、废弃系统残余等信息的保护。

4.2资源的使用趋势

系统的改进过程中,应考虑未来应用系统对资源的需求,及资源限制可能导致可用性被破坏。

4.3变更管理

变更申请、变更接受、变更测试、变更执行及必要的人员签字授权。
应用评估由于其检查范围的全面性,同其他安全服务工作相比需要更多人力,如何在可承受的人力成本范围内, 最大深度地发现客户系统存在的不足。我们需要整理出可以量化工作的、最必要的应、针对应用层安全检查各环节的checklist,以保证项目成本的可控及 任务实施的质量。
作者: zxm51testing    时间: 2009-11-19 19:24

答题:
基于Web的应用日益增多,您了解您的应用安全性么?您认为应该如何评估和改进应用的安全性?
我自己回答了一个,感觉不是很好,上网找了一下,希望对大家也能有个帮助。
10要素列表
以下列表来自OWASP 10要素项目:(OWASP,2006):
一、Unvalidated Input 非法输入——在数据被输入程序前忽略对数据合法性的检验,是一个常见的编程漏洞。随着我们对Web应用程序脆弱性的调查,非法输入的问题已经成为了大多数Web应用程序安全漏洞的一个主要特点。

二、Broken Access Control 失效的访问控制——大部分企业都非常关注对已经建立的连接进行控制,但是,允许一个特定的字符串输入可以让攻击行为绕过企业的控制。

三、Broken Authentication and Session Management 失效的账户和线程管理——良好的访问控制并不代表万事大吉了。企业还应该保护用户的密码,会话令牌,账户列表以及其它任何可以给攻击者提供有利信息帮助他们攻击企业网络的内容。

四、Cross Site Scripting (XSS) Flaws 跨站点脚本攻击——XSS是一种常见的攻击。当攻击脚本被嵌入企业的Web页面或其它可以访问的Web资源中,当没有保护能力的台式机访问这个页面或资源时,脚本就会被启动。这种问题可以影响成百上千的员工以及企业客户的终端电脑。

五、Buffer Overflows 缓存溢出——缓存溢出问题一般出现在较早的编程语言如C语言编写的程序中。这种编程错误其实也是由于没有很好的确定输入内容在内存中的位置所草成的。在本文的后续部分中,我们会讲到,通过一些高级的编程环境,如Java以及.Net,可以很好的控制此类问题。

六、Injection Flaws 注入式攻击——如果没有成功的阻止带有语法含义的输入内容,有可能导致对数据库信息的非法访问。比如在Web表单中输入的内容,应该保持简单,并且不应该还有可被执行的代码内容。

七、Improper Error Handling 异常错误处理——当错误发生时,向用户提交错误提示是很正常的事情,但是如果提交的错误提示中包含了太多的内容,就有可能会被攻击者分析出网络环境的结构或配置。

八、Insecure Storage 不安全的存储——对于Web应用程序来说,妥善的保存密码,用户名,以及其它与身份验证有关的信息是非常重要的工作。对这些信息进行加密是非常有效的方式,但是一些企业会采用那些未经实践验证的加密解决方案,其中就可能存在漏洞。

九、Application Denial of Service 程序拒绝服务——与拒绝服务攻击(DoS)类似,应用程序的DoS攻击利用大量非法用户抢占应用程序资源,导致合法用户无法使用该Web应用程序。

十、Insecure Configuration Management 不安全的配置管理——有效的配置管理过程可以为Web应用程序和企业的网络架构提供良好的保护。 针对以上列表,我有两点要说明一下。首先,这个列表并不能涵盖企业的Web应用程序中的全部脆弱点,它只是OWASP的成员组织最常遇到的问题,因此也是你应该着重检查的内容。
作者: 283017152    时间: 2009-11-20 11:28

答题:
同意3楼详细的分析和解答。我的总结和看法补充如下:
1、缓冲区溢出——比较常见的一种代码编写错误,导致安全漏洞——在第一时间和地点防止他们发生;
2、使用新的“安全字符串函数集”,编写和审核时确保任何安全漏洞被发现并解决;
3、潜在数据(用户变更未删除的保留数据)是潜在的安全漏洞——需要在小组采用的任何威胁模式分析中讨论。

为帮助设计一个安全的系统,在产品设计的最开始就必须注意安全的问题,软件安全必须先计划,评审,设计,测试

[ 本帖最后由 283017152 于 2009-11-20 16:33 编辑 ]
作者: atomtiger    时间: 2009-12-9 17:32
我觉得我的很不安全,我的MSN登陆不上去,换个机器就好了。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2