ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Falco 主机侧异常检测框架设计解析:基于 Count-Min Sketch 的 `anomalydetection` 插件提案

Falco 主机侧异常检测框架设计解析:基于 Count-Min Sketch 的 `anomalydetection` 插件提案 云原生运行时防护IDS应用安全【免费下载链接】falcoCloud Native Runtime Security项目地址https://gitcode.com/gh_mirrors/fa/falco点击查看免费下载本篇文章以 Falco 仓库中的设计提案 proposals/20230620-anomaly-detection-framework.md 为核心系统讲解 Falco 如何在保持单遍、零分配实时事件流的前提下借助 Count-Min Sketch 概率数据结构为应用建立行为画像behavior profile将计数估计暴露为新的 filtercheck 字段供 Falco 规则基于预过滤数据而非原始事件流做异常检测。读完本文你将理解该框架的动机、核心算法选型、面临的挑战、插件化接口设计方向与演进时间线并能结合仓库源码看懂插件系统与规则引擎如何被接入。一、背景与动机规则匹配为何追不上攻击者Falco 作为云原生运行时安全工具其传统检测方式依赖规则与签名匹配——基于我们认为攻击者会做什么来建模。这一范式存在两个结构性短板信息不对称威胁行为者不断变换手法规则与签名却假设攻击者的行为是静态的信噪比失控规则驱动的检测会产生大量告警足以把安全分析师淹没在沙暴般的低质量信号中。提案提出一个关键转向检测当前行为与过去行为的偏差而非仅匹配已知模式。通过高级数据分析把 Linux 内核的精细信号与主机侧异常检测结合识别运行应用的过往行为模式从而把注意力从签名与规则匹配转移到行为偏差上。这套框架本质上是用攻击者的思维做检测工程——先观察和学习目标从而产出更丰富、可操作的告警无论该行为是否曾被见过。二、核心思想Elevator Pitch从状态引擎到行为画像提案用一段精炼描述概括了整体思路Falco 在用户态处理事件时规则引擎对事件做过滤解析器同时更新并维护内部状态。该状态包含进程树缓存能依据历史事件为告警提供上下文。目标是把这套状态引擎进一步升级提供随时间监控应用行为的选项。具体流程可以拆解为四个环节定义行为画像终端用户在配置中将已有事件字段如进程名proc.name、文件描述符fd、可执行文件路径、父进程谱系、命令行cmdline等组合起来定义一个行为画像behavior profile热路径压缩存储在事件解析的热路径hot path上Falco 将这些信息压缩并存入一种高效的概率数据结构filter在空间、时间、鲁棒性、准确性之间取得平衡随时间提供计数估计随着时间推移Falco 能给出应用行为计数的更精确估计并把事件标记为rare稀有或heavy hitters高频项基于预过滤数据写规则分析对象不再是原始事件流而是预过滤后的数据规则可以直接消费 sketch 的计数估计。这套方案带来的直接价值是数据驱动、实时异常行为的识别来源于观察与学习无需运营人员重新配置 Falco零分配、单遍流设计灵感来自大数据流处理与数据库查询优化保证 Falco 维持精简的实时单遍one-pass流且零分配zero allocations多画像协作与 Falco 规则类似事件分析可能需要多个不同维度的行为画像这些画像可以**并行投票vote in parallel或级联cascading**工作——这是成熟算法中的常见做法DAST 式冷启动缓解提案展望了更进阶的用法——以类似 DAST动态应用安全测试的能力在工作负载上以测试数据构建预状态模式文件再分发到生产环境以缓解冷启动问题。三、挑战与设计考量3.1 数据正确性假设Falco 项目持续致力于扩大内核信号覆盖面并提升其质量例如验证 execve 调用是否关联到仅存在于内存中的文件描述符、提升可执行文件路径符号链接解析的效率与可靠性。本提案的异常检测框架假设已有正确的数据与上述提升日志覆盖面与质量的工作互补——框架的核心是从现有正确数据中挖掘更多价值。3.2 稀有概念的内生难点普遍认知是当数据或信号组合适当时针对运行中云应用的攻击及其入侵指标通常是稀有的。但把稀有应用于稳健的数据分析存在固有挑战攻击向量多样攻击者可能在取得初始访问后投放新的恶意二进制传统规则与高价值内核信号相对容易检测也可能利用现有二进制、shell 内建命令加混淆技术就地取材live off the land。后者在图灵完备性上意味着无穷多的攻击可能性信号选择更难真正的难点往往不在攻击本身而在于识别正确的信号及其恰当组合以区分正常与异常行为。应用行为随时间的自然波动、临时性的合法调试活动、例行部署更新都会造成扰动噪声场景某些应用正常运行时会生成随机文件名或执行任意可执行路径初次观察应用时还面临固有的冷启动cold start问题数据表征差异数据不一致、数值与语义各异的字符串混杂等都进一步增加复杂度。提案强调算法必须像人类一样通过考察文件名组合、命令参数、父进程谱系等属性来识别相同性具备灵活性与鲁棒性。3.3 运维人员启发式知识算法的引导之手提案用一个生动的例子说明现有算法能生成人脸但早期经常生成不同颜色眼睛的图像如果告诉机器人类通常双眼颜色一致机器很快就能修正这个偏差。这体现了安全工程师作为算法引导之手的作用——既包括噪声容忍度的处理也包括选择合适的数据喂给算法。这一点至关重要因为机器目前从有限数据与受限内存中得出有意义观察的能力仍然有限。数据驱动的异常检测与规则匹配的融合正是这一框架的落点。3.4 主机侧实时分析的独特价值在主机上做实时异常分析的价值在于它提供了其他方式无法实现的选项主机上可以基于所有相关且被观测到的内核事件观察异常而把海量内核事件发送到集中式系统则极不现实——数据管道管理与数据湖计算会带来高昂成本。这正是为什么选择在主机本地做异常检测的核心论据。四、初始范围Count-Min Sketch n 个共享 sketch filtercheck初始范围明确为三件事实现 Count-Min Sketch 算法使用 n 个共享 sketchn shared sketches并将其计数估计暴露为新的 filtercheck供 Falco 规则使用MVP 探索提案提到可在 libs 仓库的草案 PRlibs #1453wip: new(userspace/libsinsp): MVP CountMinSketch Powered Probabilistic Counting and Filtering中探索 MVP 实现透明的插件用户接口初始异常检测框架将包含一个透明的anomalydetection插件界面用于定义应用行为画像并在 Falco 规则中使用 sketch 计数估计。首要的直接收益为生产环境中的 Falco 规则建立安全边界safety boundary——允许更广泛地监控规则同时防止规则在生产中爆炸blow up。此外Falco 项目将为采用者提供有价值的初始用例use cases推荐的阈值recommended thresholds已知问题的提示known issues calloutsSRE 反模式的识别指导配置参数的非常清晰的设定指引包括推荐最小值定义应用行为画像时需要观察哪些指标以判断是否需要调整、以及向哪个方向调整的指导。五、高层技术设计概率数据结构与插件接口5.1 概率数据结构选型Count-Min Sketch实现概率过滤器的一个选择是使用稳健的二维概率数据结构Count-Min SketchCMS。它被广泛用于 Apache Spark、Apache Storm、Apache Flink 等分布式流处理框架以及 Redis、PostgreSQL 等数据库中。提案针对选型给出了关键决策点关注点要点哈希函数使用多个非加密哈希函数可缓解硬碰撞与软碰撞带来的挑战数学上已被证明有效单侧误差界sketch 提供单侧误差界、可避免低估undercounting但采用者必须定义过计数的容忍度——该容忍度决定什么算稀有或值得关注去偏与缩放可通过去偏如 Conservative Updates 的 Count-Min SketchCMS-CU或对数刻度来提升精度、降低估计误差对数刻度适合威胁检测中低频、长尾的攻击相关项但仅在性能开销可接受时使用共享与独立 sketch使用更大的共享 sketch并将容器 ID 纳入行为画像以区分不同工作负载/应用反之为不同行为画像我们在数什么使用独立的 sketch其他细节其余诸多方面将在后续实现 PR 中讨论5.2 管道与接口与现有插件/规则机制的集成终极目标是把这些新能力作为插件引入。大量工作将投入必要的管道plumbing使其与现有规则过滤、libsinsp和plugin机制集成提供一个对用户友好的、可配置的 opt-in 框架。接口设计需要让终端用户能够定义误差容忍度进而推导sketch 维度宽度与深度配置其他调优参数、边界与设置最终定义n 个行为画像以在 Falco 规则中使用计数估计。5.3 仓库中的插件系统佐证该提案所依托的插件系统在仓库中已有完整的设计与实现沉淀可对照阅读插件系统设计提案proposals/20210501-plugin-system.md 定义了 source 插件与 extractor 插件两类能力以及事件源event source、filtercheck 字段提取、插件动态库.so/.dll与plugin_*导出符号约定插件配置解析falco.yaml中的load_plugins与plugins配置节由 userspace/falco/configuration.cpp 解析plugin_config结构体含m_name、m_library_path、m_init_config、m_open_params定义于 userspace/falco/configuration.h当load_plugins未定义时全部插件默认加载指定时则仅加载匹配名称的插件否则抛出 Cannot load plugin 逻辑错误插件加载动作userspace/falco/app/actions/load_plugins.cpp 展示了 Falco 如何先注册插件、获取插件事件源并建立事件源与 filtercheck 列表的映射——anomalydetection插件的接入点与此完全一致它作为事件源插件注册为规则引擎提供新的 filtercheck 字段插件列表查看userspace/falco/app/actions/list_plugins.cpp 对应falco --list动作可枚举已配置插件及其字段信息便于调试行为画像字段是否被正确导出。从插件系统的成熟度看详见下文为什么是现在插件已能协作现有的 syscall 事件源——这正是提案中k8smeta插件所演示的能力其在 Helm 图表中已有配置沉淀见 chart/falco/values.yaml。5.4 典型配置形态基于现有插件配置语法推演虽然行为画像的最终定义位置插件配置还是规则文件在提案中尚未定论见下文社区反馈但基于 falco.yaml 中现有的插件配置语法plugins列表 load_plugins选择加载可以合理推演其接入形态# 在 falco.yaml 中声明 anomalydetection 插件示意字段以最终实现为准 load_plugins: [anomalydetection] plugins: - name: anomalydetection library_path: libanomalydetection.so init_config: | # 定义误差容忍度进而推导 sketch 维度 error_tolerance: 0.001 ...需要强调的是该配置仅为基于现有插件接口library_path、init_config、open_params等见 userspace/falco/configuration.h 的解析实现的推演示例最终配置键与行为画像语法以插件实际发布版本为准。从源码结构看插件配置采用 YAML 解码为plugin_configinit 配置可以是字符串或 YAML 映射这为承载画像字段列表这类结构化配置提供了空间。六、该框架不是什么边界澄清提案明确划定了框架边界避免误用不是事件聚合器/增强器不像 netflow 数据那样做事件聚合或富化。它的唯一目的是充当单个事件的异常过滤器利用现有 sinsp 状态、通过 sketch 新建的状态以及现有规则引擎不受过度特定用例左右框架开发不会被限制其广泛采用与覆盖面的、过于具体的用例所牵制初期不追求完美检测它不会从一开始就提供无懈可击的威胁检测而是作为全面事件日志与分析的第一步——捕获所有表现出任何形式新的或变化行为的事件。因此初期的最大价值在于将常规 Falco 规则与基于异常过滤后事件流的检测结合使用。七、为什么是现在时机的成熟度论证提案从两个维度论证为什么是当下算法已成熟高级数据分析如今是主流Falco 可以直接复用业界生产环境中广泛验证的稳健算法创新的重点在于解决网络安全领域特有的数据编码挑战而非重新发明算法插件系统已就绪过去多个 Falco 版本显著提升了稳定性、可配置性与能力。过去一年插件系统被持续打磨能够高效访问完整的libsinsp状态并新增了改进的CPP SDK更重要的是插件现已能与现有主 syscall 事件源无缝协作——这偏离了其最初处理新数据源的定位使得交互更直观k8smeta插件就是例证。因此现在正是进一步增强经过验证的威胁检测能力、进一步扩展插件系统的合适时机。八、社区反馈与待决事项8.1 KubeCon NA 2023 演讲反馈提案引用了 KubeCon NA 2023 的演讲A Wind of Change for Threat Detection反馈整体评价非常积极尤其认可其直接的现实收益——为 Falco 规则提供安全边界使监控范围更广而不至于在生产中爆掉未来发展方向建议包括把 sketch 直接集成进内核驱动若可行将是里程碑式成果多人询问该功能的可用时间线。演讲材料以 PDF 形式附于仓库proposals/kubeconna23-anomaly-detection-slides.pdf。8.2 Falco 社区例会2024-01-17关键反馈filtercheck 访问权限插件目前无法访问现有libsinsp的 filtercheck。社区反馈来自 jasondellaluce认为应开放该访问以避免重新实现它们并持续面临与libs不同步的风险leogr 表示随时间推移支持这一点是可能的画像定义位置未决每个 sketch 的行为画像定义即被字符串拼接并计数的字段究竟放在插件配置还是规则文件中尚未定论——后者可能需要一个新规则组件。最终决定将推迟到后期以确保配置直观并保证在尝试用anomalydetection插件运行 Falco 规则时 sketch 定义正确规则名暴露一个用例判断某规则是否曾在某容器中触发过可由该框架解决但如何暴露规则名尚不明确因为libsinsp并不感知规则名。这可能作为后期优化不阻塞初版开发未来扩展未来用例可能涉及统计不同值distinct counting可引入HyperLogLog算法但存在额外技术挑战驱动与用户态互通有人建议未来在驱动与用户态之间传递情报例如内核侧过滤方向但这属于长期考量。九、提案时间线与当前仓库状态提案提出的时间线如下版本里程碑Falco 0.37.0设计细节与脚手架scaffoldingFalco 0.38.0实验性发布experimental releaseFalco 0.39.0首次正式发布first release作为佐证该提案本身经由 PRfalco #2655合入仓库相关记录可见 CHANGELOG.md。需要说明的是上述时间线是提案撰写时的规划当前仓库主版本线截至 CHANGELOG 最新条目为 v0.45.0的实际发布节奏与特性状态应以各版本的发布说明与插件仓库为准本文不做过度的版本断言。十、参考资料与延伸阅读提案原文proposals/20230620-anomaly-detection-framework.md插件系统设计提案proposals/20210501-plugin-system.md特性采纳与弃用机制配置成熟度标签的背景proposals/20231220-features-adoption-and-deprecation.mdKubeCon NA 2023 演讲材料仓库附件proposals/kubeconna23-anomaly-detection-slides.pdf插件配置主文件falco.yaml插件配置解析实现userspace/falco/configuration.cpp 与 userspace/falco/configuration.h插件加载动作实现userspace/falco/app/actions/load_plugins.cppHelm 图表中的插件编排示例k8smetachart/falco/values.yaml提案在技术细节上还引用了若干经典资源供深入钻研关于大数据应用的概率数据结构与算法专著Probabilistic Data Structures and Algorithms for Big Data Applications、Count-Min Sketch 的系列博客、Count-Min Log Sketch 论文、Count-Min Sketch with Conservative UpdatesCMS-CU论文以及将xxHashxxh3作为新增依赖以提供快速可靠哈希的设想。这些资源的完整书目信息均列于提案末尾的 Resources / References 一节。赞分享云原生运行时防护IDS应用安全【免费下载链接】falcoCloud Native Runtime Security项目地址https://gitcode.com/gh_mirrors/fa/falco点击查看免费下载相关推荐系统设计项目解析大数据范围查询的Count-Min Sketch方案系统设计项目解析大数据范围查询的Count Min Sketch方案 什么是范围查询问题 在大数据处理领域范围查询 Range Query 是一个经典问题Telemanom基于LSTM的时间序列异常检测框架Telemanom基于LSTM的时间序列异常检测框架 项目介绍 Telemanom 是一个利用长短期记忆网络LSTM来在多变量时间序列数据中识别异常的框架TranAD异常检测框架基于Transformer的高效时间序列分析解决方案TranAD异常检测框架基于Transformer的高效时间序列分析解决方案 TranAD是一个基于深度Transformer架构的多变量时间序列异常检测系统上一篇终极UEViewer使用指南如何轻松查看和提取虚幻引擎1-4游戏资源下一篇告别风扇噪音5分钟学会用FanControl打造静音高效Windows电脑创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表