查看原文
其他

Facebook 服务器缺陷可泄露信息执行远程命令

Tara Seals 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

翻译:360代码卫士团队

Facebook 的某个服务器中存在一个漏洞,可导致信息泄露和远程代码执行问题。目前该漏洞已修复。

存在问题的是开源的错误追踪应用程序 Sentry,它帮助开发人员实时监控并修复崩溃问题。该服务的编程语言是 Python,使用的框架是 Django。

SCRT 信息安全研究员检查该应用程序时发现栈跟踪(出错时显示的函数栈列表)经常在页面弹出。该公司在文章中指出,应用程序似乎在用户密码重设功能方面不稳定,偶尔崩溃。

更重要的是,这些栈跟踪触发了整个应用程序的完整打印输出,尽管有一些关键信息遭编辑。文章指出,“Django 调试模式未关闭,从而在发生栈跟踪时会打印整个环境。”然而,Django 会在这些栈跟踪中删除关键信息(密码、秘密、密钥),从而避免的大规模的信息泄露问题。

尽管如此,栈跟踪确实泄露了足够的信息片段以构建用于在系统上执行命令的漏洞利用。这些信息包括会话 cookie 的名称、使用 Pickle 二进制协议来反序列化 Python 对象结构的会话序列化程序、会话引擎以及包含用于签名会话的一个密钥的 Sentry 配置信息列表。最后一种信息非常重要,因为 Django 用于签名会话 cookie 的密钥是从栈跟踪中编辑的。

SCRT 信息安全公司指出,“SENTRY_OPTIONS 列表包含一个名为 system.secret-key 且未被剪切的密钥。从 Sentry 文档中可知,system.secret-key 是用于会话签名的一种密钥。如果该密钥遭攻陷,那么重新生成就很重要,否则劫持用户会话就更容易。”

研究人员结合所有信息后发现他们能够创建自己的包含任意 pickle 内容的会话,以便在系统上执行命令。为测试该机制,他们写了一个简单的脚本,将任意 payload 写入一个特殊构造的 sentrysid cookie 中。

研究人员指出,“该代码是一个简单的 PoC,它拿走现有的 sentrysid cookie 内容,将其内容替换为在未序列化时运行的任意对象。”

这种 payload 是一种“睡眠30秒”命令:“当使用这个 cookie 时,页面实际上会额外加载30秒,这说明确实存在缺陷。”

Verodin 公司的行为研究团队主管 James Lerud 指出,“Facebook 看似并未能完全清理面向公众的 web app 的出错数据。这在 web 应用程序安全界是一个常见问题,可能所涉及的服务用于测试,而非一种生产资产,尽管这种判断并未得到 Facebook 的确认。”

Facebook 证实该漏洞存在,并在同一天(7月30日)关闭系统,同时准备补丁。一周后问题修复。

研究人员指出,虽然这个漏洞并未直接对 Facebook 用户造成影响,但它说明了在企业级别修复问题的重要性。

Recorded Future 公司的高级安全架构师 Allan Liska 表示,它是 Facebook 在某些服务器上运行的某款第三方应用程序中的信息泄露问题,应用程序似乎和用户信息断开连接。

Bromium 公司的企业战略和技术高级副总裁 Sherban Naum 表示,“我们试图在主机(而非服务器)上回答的问题是即使在漏洞存在的情况下也要维护完整性。或者,更好的情况是,我们如何在维护企业高价值资产完整性和隐私性的同时在数据泄露事件中存活下来。”

Naum 对研究人员和 Facebook 公司的做法和响应态度表示赞赏,希望也能引起其他人的注意并更新自己的系统。




关联阅读

Facebook隐私设置出问题  80万用户受影响

Facebook 又曝丑闻  NameTests 应用泄露1.2亿用户数据

GDPR 已生效?然并卵:Facebook 和谷歌被指“威逼利诱”用户共享个人信息


原文链接

https://threatpost.com/facebook-flaw-allowed-remote-commands/136987/



本文由360代码卫士编译,不代表360观点,转载请注明 “转自360代码卫士www.codesafe.cn”。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存