如何理解配置错误类漏洞

配置错误(Security Misconfiguration)类漏洞是指在对应用程序、框架、应用程序服务器、web服务器、数据库服务器等执行配置时,由于配置不当导致的漏洞。例如使用了有缺陷的版本、没有修改默认的帐户密码、给了某些帐户过高的权限、对敏感资源没有做访问控制等等,让攻击者有了可乘之机,可以不经授权就可以访问某些系统数据或使用系统功能。

据 OWASP 的统计数据显示,4%的应用程序都发生过各种各样的配置错误问题。现代化的的应用程序基本都是高度可配置化的,所以配置错误类漏洞会越来越多,在配置使用三方应用程序或自研应用程序时,都需要特别注意避免此类漏洞的产生。

下面列举几个典型案例:

应用服务器程序附带的示例应用程序在生产环境中没有删除,示例应用程序本身具有缺陷,可能被攻击者利用。假设示例应用程序是管理控制台并且默认帐户密码没有更改的情况下,攻击者可以很轻松使用默认帐户密码登录并管理应用服务器程序。Web 服务器没有禁用目录遍历,攻击者可以通过遍历目录很容易得获取到服务器上的数据。应用程序将详细的错误消息(例如堆栈信息)返回给用户,这可能会暴露敏感信息或潜在问题。

容易出现配置错误类漏洞的场景

在应用程序堆栈的某些部分缺少适当的强化,或对系统用户的权限配置不当。安装或使用了不必要的功能,例如服务器启用了不必要的端口、系统添加了不必要的帐户、给帐户分配了不当的权限等。没有禁用系统的默认帐户密码或者没有修改默认帐户密码。程序的错误处理信息或堆栈信息返回给了用户。升级系统或程序时,禁用了功能部分的升级。应用服务器、应用框架(例如Struts、Spring、ASP.NET)、库、数据库等的配置项未设置为值。服务器禁用了配置,例如 Web 服务器没有配置支持 HTTPS 协议。系统或应用程序版本过低,没有及时升级,会有很多隐患。

避免出现配置错误类漏洞产生需要注意的点

每个环境都应该使用相同的配置,使用不同的凭证。每个环境的配置应该做到自动化,以减少设置新环境产生的风险。安装系统时做到化安装,不安装非必要的功能;使用一个应用程序时,删除示例代码和文档。作为补丁管理流程的一部分,需要及时更新说明和更新说明文档。使用自动化工具和流程来验证所有环境中的配置。在配置权限时,应当使用”权限原则”并使用”默认拒绝“的策略。秘钥禁止硬编码在代码中,禁止生产环境和非生产环境使用相同的秘钥。