Falco安全审计

2019-12-20 16:41:08 浏览数 (1)

作者:Michael Ducy

定期审计代码库是发布安全软件的一个重要过程。对于依赖于来自各种贡献者的代码的开源项目,审计可能特别重要。我们很高兴地宣布Falco首次安全审计的发布,这是Falco作为CNCF沙箱项目参与完成的。非常感谢CNCF对审计工作的赞助,也非常感谢Cure53团队对审计工作的支持。

https://cure53.de/

总的来说,安全审计发现了3个潜在的漏洞(1个关键的,2个高的)和2个杂项问题(低的)。您可以在完整发布的报告(pdf)中找到审计的细节和漏洞。下面您可以找到每个漏洞的简要描述,以及实现的补救措施。除了实现的补救之外,这些问题还帮助我们更好地理解Falco团队如何重构Falco架构来减少安全漏洞的机会。

https://github.com/falcosecurity/falco/blob/dev/audits/SECURITY_AUDIT_2019_07.pdf

鼓励用户升级到Falco 0.18.0,其中包含针对以下每个问题的修复。

漏洞发现

FAL-01-001 Driver: Undetected crash disables Falco monitoring (Critical)

除了Falco审计之外,Sysdig(公司)还赞助了Sysdig OSS(开源项目)的类似审计。目前Falco直接依赖于sysdig OSS,特别是Falco利用libscap、libsinsp、内核模块和eBPF探测。FAL-01-001是关于内核模块可能由于整数溢出而崩溃的漏洞。libscap和libsinsp库没有检测到崩溃的内核模块,因此这就禁用了Falco用来检测异常行为的系统调用流。

FAL-01-002 Falco: Bypassing various rules with different techniques (High)

该漏洞涵盖了可以绕过规则的各种方法。Cure53发现,在Falco规则的默认设置中所做的各种假设忽略了允许绕过规则的几个边缘情况。为了更好地检测这些边缘情况,对默认规则进行了更改,Falco社区不断更新默认规则,以处理各种边缘情况,比如在审计中发现的情况。

FAL-01-003 Falco: HTTP request with incorrect data leads to crashes (High)

Falco包含一个嵌入式HTTPs服务器作为Kubernetes审计日志事件的后端。此web服务器的请求处理程序需要JSON格式的数据。Cure53发现请求处理程序没有正确地检查正确格式的JSON传入请求。此外,请求处理程序没有正确检查传入数据的类型(整数、字符串等)。这导致Falco守护进程崩溃,并禁用Falco提供的保护,直到systemd或Kubernetes重新启动Falco守护进程。

杂项问题

FAL-01-004 Falco: Dependencies pulled via hard-coded HTTP links (Low)

Falco利用cmake构建Falco及其依赖项。作为这个过程的一部分,如果本地操作系统不能提供所需的依赖项,cmake将下载它们。对于一些依赖项,cmake使用HTTP而不是HTTPs来下载依赖项。理论上,这将允许攻击者执行中间人攻击,用恶意包替换下载的包。但是,在实践中,cmake还验证下载依赖项的SHA256总和,以防止MITM攻击。

FAL-01-005 Falco: Security flags not enforced by Makefile (Low)

现代编译器提供的标记可以减少基于内存损坏的攻击的可能性。Falco没有在项目的CMakeLists.txt中显式地设置这些标志。为了实现这些标志,Falco需要上游依赖项(即sysdig OSS)也支持这些标志。Falco团队正在与sysdig OSS项目团队一起实现这些更改。

作为Falco团队持续致力于提高项目安全性的一部分,我们还发布了一个安全漏洞报告流程。我们再次感谢CNCF对Falco安全审计的赞助以及Cure53团队对我们的审计。让CNCF项目通过这些安全审计,允许项目构建和发布更安全的软件,并为CNCF中的项目提供信心。我们期待定期重复这一过程,并邀请Falco社区的任何人参与未来的审计。

https://github.com/falcosecurity/.github/blob/master/SECURITY.md

0 人点赞