Python 的 http.server 库“基本安全检查”

信息安全 Web应用程序 Python
2021-09-09 05:52:44

根据:

https://docs.python.org/3/library/http.server.html

警告 http.server 不建议用于生产。它只实现基本的安全检查。

它没有说明服务器暴露了哪些安全漏洞。我是一名系统管理员,并且有一个开发团队想要将其推向生产(我的理解是他们在扩展 http.server.SimpleHTTPRequestHandler 的同时使用它)和一个为他们开绿灯的 CIO。我不知道其中涉及哪些风险,因为文档没有详细说明细节。有人能告诉我这个产品有哪些安全漏洞吗?

1个回答

问题不在于存在已知的安全漏洞。

问题在于,并没有真正努力解决不太常见但关键的漏洞。

例如,许多 Web 服务器会显示错误消息。直到最近,Apache Httpd 才会在错误页面中包含一些请求数据,这允许在 mod_proxy (CVE-2019-10092) 的默认配置中执行跨站点脚本,而应用程序开发人员无法缓解这种针对网站用户。

主要的 Web 服务器,如 Apache Httpd、Nginx、IIS 和 Lighttpd,每个都有数百个活跃的贡献者(或者在 IIS 的情况下,背后有一个大型企业结构),数十名了解安全最佳实践的核心开发人员,以及一个专门的团队特别是审查潜在漏洞的代码。正如您通过浏览任何这些项目的 CVE 所知道的那样,在版本发布后人们仍然会发现一些东西。

为编程语言编写 HTTP 服务器的开发人员是小型子项目,开发工具来支持主要产品:语言。可能有十几个人为该工具贡献代码,以及该项目的一两个核心开发人员。

他们没有可用于搜索漏洞的资源,因此虽然没有任何已知漏洞(或者至少,在这里指出可能仍未解决的已知漏洞是非常糟糕的形式),但大多数肯定存在漏洞,这仅仅是由于 HTTP 服务器的复杂性。

其中一些漏洞可能非常严重,例如允许攻击者完全控制您的服务器,包括使用特权帐户执行任意代码。这样的漏洞可能不存在,但如果没有彻底的代码审查 - 以及 Python 文档页面顶部的大红框警告 - 这样的漏洞可能存在是合理的。

在您的具体情况下,首席信息官签署了它。

确保完成风险评估是 CIO 的责任。作为系统管理员,您的工作是执行公司官员的指示,并且您有责任确保这些官员拥有做出明智决策所需的信息。

由于职责的界限,我会做的回击是要求查看风险评估。如果风险评估不包括非常高的概率(由于自动化工具可以在数小时内快速找到易受攻击的服务器)服务器感染恶意软件并用作机器人场的命令和控制中继器节点,请提供帮助进行现实的风险评估。