type
status
date
slug
summary
tags
category
icon
password
1. 简介
Falco (CNCF孵化项目) 是一款适用于 Linux 操作系统的云原生运行时安全工具,旨在实时检测异常行为和潜在安全威胁并发出警报。该工具无需在容器内安装agent,而是通过 eBPF 探针有收集容器行为。
下面以攻击者发现一个K8S环境内具有
CAP_SYS_ADMIN
权限的容器RCE漏洞为例,介绍 Falco 容器逃逸行为检测2. Falco 默认检测行为
攻击者通过
cat /proc/1/cgroup
发现是容器环境,通过 cdk 收集容器信息运行 cdk 后,由于 cdk 不属于镜像原有的二进制文件,便触发 Drop and execute new binary in container 规则告警
攻击者获取到容器权限后进行后渗透时就能及时发现
回到
CAP_SYS_ADMIN
权限场景,攻击者可以选择利用镜像内置命令进行容器逃逸,当然 Falco 内置了我们常用的挂载cgroups子系统逃逸检测 Detect release_agent File Container Escapes,但 mount 宿主机磁盘逃逸并没有内置,我们自定义规则检测即可3. 自定义 Falco rules
根据根据官方文档编写需要的规则,
-rule
规则部分可以用官方提供的 playground 验证语法因我是通过 helm 安装的,下一份 charts/falco/values.yaml 到本地,修改
customRules:
部分为然后应用即可,注意修改
user:changeme
为你自己的名字所写的 Falco 是劫持系统调用参数,尽管 shell 执行命令存在混淆,也一样可以识别到
4. K8S 安装 Falco 和排障
K8S版本:v1.27.3Linux内核版本:Linux kmaster1 5.15.0-84-generic #93-Ubuntu SMP Tue Sep 5 17:16:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
添加 Falco Helm 仓库 和 创建 Falco 服务命名空间
安装 Falco 和 Falcosidekick,注意修改
user:changeme
为你自己的名字执行,查看安装进展,发现有个 pod 起不来
排障
发现为内核配置问题,各个 K8S 节点执行
过会就OK了
总结
Falco 提供的容器运行时安全检测功能是十分强大的,除了直接的屏幕输出,还支持 HTTP/gRPC 推送,为基于 Falco 开发容器安全平台提高了很强的可拓展性
参考
[4] https://github.com/falcosecurity/rules/blob/falco-rules-2.0.0/rules/falco_rules.yaml#L1018-L1034