隐藏版本 - 有价值或只是默默无闻的安全?

信息安全 Web应用程序 朦胧
2021-09-01 15:56:39

许多自动安全扫描程序内置了警告软件版本存在的规则,并且在许多安全列表中,任意人访问系统的版本暴露被称为安全问题之一。

所以我的问题是——这是一个真正的问题吗?隐藏版本是否会增加安全性?

支持它的论点是,隐藏版本使目标漏洞更难使用,但是大多数攻击者现在拥有自动漏洞利用工具包,可以立即对目标运行数百次漏洞利用尝试,因此对于知情的攻击者而言,差异几乎为零。没有被告知的人将不知道如何使用版本信息。隐藏版本还使得自我扫描遗留的易受攻击的安装变得更加困难。

我还看到这种做法被广泛忽略 - 例如,将其描述为安全技术的 OWASP 页面公开显示服务器软件(OS、Apache、PHP)和 Wiki 软件的版本。但即使你试图隐藏它,大多数 Web 应用程序——尤其是复杂的应用程序——很容易通过对它们生成的各种内容进行指纹识别来进行版本控制。

那么是否值得为 Web 应用程序隐藏版本?或者对于任何应用程序/操作系统/平台?

4个回答

默默无闻的安全问题是当您依靠默默无闻来获得安全性时。如果这是你唯一或主要的防御形式,那你就有问题了。

话虽如此,默默无闻可以为已经使用更好的安全策略的系统增加安全性。没有理由公开这些信息,所以你不应该。这对攻击者来说是有用的信息,因此您当然应该尽可能隐藏它。问题是当你开始思考“好吧,我隐藏了这些信息,所以没有攻击者可以发现并使用它来攻击我的系统,所以我很安全”。

无论该信息是否保密,您的系统都应该是安全的,但您不应该通过发布它来帮助攻击者。

默默无闻的安全有利于纵深防御;它不适合作为唯一/主要的防御模式或当默默无闻干扰正常操作时。

如果您的应用程序出现了 0-day 漏洞,并且您到处宣传您的应用程序/版本号(例如,在 google 搜索中,在 HTTP 响应标头“服务器:nginx 0.7.1”中),那么对于意识到在您有时间应用安全补丁之前,找到您的站点并尝试利用它的新漏洞。如果您不提供此信息(或其他错误消息),他们将不得不通过功能猜测您的应用程序的身份/版本(原则上模糊的功能检查可能会提示像 fail2ban 这样的程序进行持续攻击)或尝试每个可能的应用程序/版本组合的每个已知漏洞。这对攻击者来说要麻烦得多。

是的,最好使用所有安全补丁使您的应用程序软件保持最新;但在现实世界中,这往往滞后。不要在应用程序上线后提供不必要的调试信息(尽管在调试时将信息留给您可能会有所帮助)。

当流行的 Web 应用程序中出现有用的漏洞时,攻击者将使用Google Hacking(或有时称为Google dork)来获取运行该软件的每个人的列表。尽管这个 Google hack 可能包含版本号,但通常一些像“ Powered By Wordpress ”这样简单的内容就足够了。为什么要检查版本号,当您可以启动漏洞并查看它是否成功时。

因此,隐藏版本号并不像隐藏应用程序本身那么重要。

这是(不是非常)默默无闻的安全性。

脚本小子/蠕虫在发起攻击之前不会费心检查横幅。IME,识别不同的供应商和不返回横幅信息的服务器软件版本也相对简单(通过映射对不太常见的功能和错误条件的响应)。关于唯一的威胁模型确实提供了任何保护,攻击者使用第三方搜索引擎来识别目标 - 但是大多数搜索引擎不会索引横幅信息 - 而且通常只有 URL 中的信息很多