准则

安全配置错误

安全配置错误在某种程度上是一个总括术语,它涵盖了因应用程序配置设置而非代码错误而产生的常见漏洞。 这是一个涉及面很广的话题,在很大程度上取决于技术堆栈等因素。 

很多时候,解决这些问题看似简单,比如更改一个配置文件甚至一行代码,但这些漏洞的影响和后果可能非常严重。 

让我们来看看下面的几个类别。

类别

网络服务器

网络服务器上的一个典型错误配置是启用目录列表。 

启用目录列表通常不会产生什么直接影响,但攻击者却很容易发现其他可能存在的错误。这些错误可能是故意隐藏的页面、备份文件和其他类似项目。 

值得注意的是,所有这些事情本身也都是糟糕的做法,属于隐蔽安全。 

目录列表的禁用非常简单,它可以增加深度防御,使攻击者在枚举主机以寻找潜在攻击向量时付出更高的代价。

框架

调试模式

大多数框架都为开发人员提供了 "调试 "模式。除其他功能外,该模式通常会在出现未处理异常时显示堆栈跟踪详情。有些框架甚至会在堆栈跟踪的同时显示代码片段。这对你的开发工作大有帮助,但同时也会为攻击者提供很多他们不应该获取的信息。 

监测终点

许多框架还可以启用一系列端点,以便监控应用程序,无论是在生产环境还是测试/开发环境中。 

其中包括

  • 度量衡(普罗米修斯)
  • 日志
  • 环境信息
  • 路径/网址映射

虽然这些信息通常并不敏感,但仍能提供一些细节,帮助潜在攻击者更好地了解您的应用程序。当然,您的环境或日志实际上可能包含敏感信息,因此,如果被窥探到,一定要注意哪些信息是可见的,哪些信息是可以利用的。 

生产环境与非生产环境的区别

人们经常会犯这样的错误,即在开发/测试环境中不遵守禁用目录列表、调试模式和调试端点等准则,而只在生产环境中这样做。 理由是这些非生产系统是用于测试的,而获取这些功能提供的信息非常重要。

然而,这种想法是错误的。攻击者仍然能够探查和披露非生产系统的信息,然后利用从测试系统收集到的信息攻击你的生产系统。在测试系统中使用生产数据库副本的公司也并不少见,这就进一步增加了风险。 

XXE

一种非常严重的安全配置错误是 XML 外部实体 (XXE)。 

在启用实体解析的情况下从不具信任度的来源进行解析时,就会出现这种情况。XXE 可导致任意文件读取和服务器端请求伪造等。

请查看下面的示例,了解更多细节,尤其是这个简单的示例。 

XXE 示例