<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Falco – The Falco blog</title><link>https://v0-43--falcosecurity.netlify.app/blog/</link><description>Recent content in The Falco blog on Falco</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Tue, 12 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://v0-43--falcosecurity.netlify.app/blog/feed.xml" rel="self" type="application/rss+xml"/><item><title>Blog: Introducing Prempti: Falco meets AI coding agents</title><link>https://v0-43--falcosecurity.netlify.app/blog/introducing-prempti/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/introducing-prempti/</guid><description>
&lt;p&gt;Today's developer workflow is increasingly reliant on AI coding agents. Tools like Claude Code sit in your terminal, read your files, run shell commands, make network requests, and write code, all on your behalf. They are fast, capable, and increasingly trusted with real tasks on real machines.&lt;/p&gt;
&lt;p&gt;But with that trust comes a question worth taking seriously: what exactly is your coding agent doing on your machine?&lt;/p&gt;
&lt;p&gt;Today, we're introducing an experimental project that brings Falco to this new frontier: &lt;a href="https://prempti.falco.org"&gt;Prempti&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="agents-are-a-black-box-at-runtime"&gt;Agents are a black box at runtime&lt;/h2&gt;
&lt;p&gt;When a coding agent runs a bash command, writes a file, or reads a configuration, those actions happen inside your user session, with your permissions, in your filesystem, against your credentials. Most developers using these tools have no structured visibility into that activity. You see the agent's chat output, but you don't see what's happening under the hood.&lt;/p&gt;
&lt;p&gt;Here's a simple scenario: you ask your coding agent to refactor a module. It reads your source files. It makes edits. Then, perhaps prompted by a malicious dependency or an unexpected instruction in a file it just parsed, it attempts to read &lt;code&gt;~/.ssh/known_hosts&lt;/code&gt; or write a file to &lt;code&gt;~/.aws/&lt;/code&gt;. Should it be allowed to? Would you even know if it tried?&lt;/p&gt;
&lt;p&gt;The demo below captures exactly this situation:&lt;/p&gt;
&lt;div id="demo3"&gt;&lt;/div&gt;
&lt;script&gt;
AsciinemaPlayer.create("https://asciinema.org/a/857572.json", document.getElementById('demo3'), {
"autoPlay": true ,"loop": true ,"poster": "npt:0:04",
});
&lt;/script&gt;
&lt;noscript&gt;&lt;blockquote&gt;&lt;p&gt;To run this asciicast without javascript, use &lt;code&gt;asciinema play https://asciinema.org/a/857572.json&lt;/code&gt; with &lt;a href="https://asciinema.org/"&gt;Asciinema&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/noscript&gt;
&lt;p&gt;The agent tried to both read and write to sections it's not allowed to, and both were blocked. The agent itself received a structured message explaining why, and showed that to the user. This is detection and enforcement working together at the tool-call level.&lt;/p&gt;
&lt;h2 id="how-prempti-works"&gt;How Prempti works&lt;/h2&gt;
&lt;p&gt;Prempti runs as a lightweight user-space service alongside your coding agent. It does not require root, kernel modules, or containers. When your agent makes a tool call such as a file write, a shell command, or a file read, Prempti intercepts it &lt;strong&gt;before it executes&lt;/strong&gt;, evaluates it against Falco rules, and delivers a verdict:&lt;/p&gt;
&lt;div class="table-responsive"&gt;
&lt;table class="table table-striped"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;th&gt;What Happens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Allow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The tool call proceeds normally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deny&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The tool call is blocked and the agent is told why&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ask&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You are prompted to approve or reject interactively&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;The architecture looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Prempti's hook fires before each tool call&lt;/li&gt;
&lt;li&gt;An interceptor sends the event to Falco via a Unix socket&lt;/li&gt;
&lt;li&gt;Falco's rule engine evaluates the event against your policies&lt;/li&gt;
&lt;li&gt;Matching rules produce verdicts (deny / ask / allow)&lt;/li&gt;
&lt;li&gt;The interceptor delivers the verdict back to the agent&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Prempti uses Falco's plugin system to define a new event source (&lt;code&gt;coding_agent&lt;/code&gt;) with fields purpose-built for this context: &lt;code&gt;tool.name&lt;/code&gt;, &lt;code&gt;tool.input_command&lt;/code&gt;, &lt;code&gt;tool.file_path&lt;/code&gt;, &lt;code&gt;agent.cwd&lt;/code&gt;, and so on.&lt;/p&gt;
&lt;h2 id="two-modes-monitor-and-guardrails"&gt;Two modes: Monitor and Guardrails&lt;/h2&gt;
&lt;p&gt;Prempti is designed to let you both observe what the agent is doing and align it with your security policy:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Monitor mode&lt;/strong&gt; evaluates every tool call against your rules and logs the results, but does not enforce any action. This is what we recommend as a starting point: run it for a few sessions, see what your agent actually touches, and tune your rules before you enable blocking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Guardrails mode&lt;/strong&gt; (the default) fully enforces verdicts as explained above — deny blocks, ask prompts you, allow proceeds.&lt;/p&gt;
&lt;p&gt;You can switch between modes at any time:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;premptictl mode monitor &lt;span style="color:#080;font-style:italic"&gt;# observe only&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;premptictl mode guardrails &lt;span style="color:#080;font-style:italic"&gt;# enforce verdicts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;premptictl logs &lt;span style="color:#080;font-style:italic"&gt;# watch live events&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="writing-rules-familiar-territory"&gt;Writing rules: Familiar territory&lt;/h2&gt;
&lt;p&gt;If you've written Falco rules before, agent security policies will feel very familiar. Here's a rule that blocks piping content directly to a shell interpreter, a classic vector for prompt injection attacks:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Deny pipe to shell&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;desc&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Block piping content to shell interpreters&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&amp;gt;&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; tool.name = &amp;#34;Bash&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; and (tool.input_command contains &amp;#34;| sh&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; or tool.input_command contains &amp;#34;| bash&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; or tool.input_command contains &amp;#34;| zsh&amp;#34;)&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&amp;gt;&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Falco blocked piping to a shell interpreter (%tool.input_command)&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;CRITICAL&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;source&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;coding_agent&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tags&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[coding_agent_deny]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The output field is designed to be LLM-friendly, so that the agent receives it as a structured message it can surface directly to the user. Correlation IDs allow you to trace every event across your logs.&lt;/p&gt;
&lt;p&gt;The default ruleset ships with policies covering six areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Working-directory boundary&lt;/strong&gt; — monitor and ask on file access outside the session's project directory&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sensitive paths&lt;/strong&gt; — deny reads and writes to &lt;code&gt;/etc/&lt;/code&gt;, &lt;code&gt;~/.ssh/&lt;/code&gt;, &lt;code&gt;~/.aws/&lt;/code&gt;, cloud credentials, &lt;code&gt;.env&lt;/code&gt; files, and similar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandbox disable&lt;/strong&gt; — detect attempts to disable the agent's own sandbox configuration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Threats&lt;/strong&gt; — credential access, destructive commands, pipe-to-shell, encoded payloads, exfiltration, IMDS access, reverse shells, and supply-chain installs from known-malicious hosts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP and skill content&lt;/strong&gt; — MCP server config poisoning and slash-command file injection&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Persistence vectors&lt;/strong&gt; — hook injection, git hooks, package-registry redirects, AI API base-URL overrides, and API keys leaking into env files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can add your own rules to &lt;code&gt;~/.prempti/rules/user/&lt;/code&gt;; they're preserved across upgrades.&lt;/p&gt;
&lt;h2 id="rule-authoring-with-claude-code"&gt;Rule authoring with Claude Code&lt;/h2&gt;
&lt;p&gt;The project also includes a Claude Code skill for writing Falco rules for Prempti interactively. You can install it directly from the Prempti plugin marketplace:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/plugin marketplace add falcosecurity/prempti
/plugin install prempti-falco-rules@prempti-skills
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then you can ask Claude Code to create rules like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Block the agent from running git push&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Deny any read outside the working directory&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Create a rule that requires confirmation before editing Dockerfiles&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The skill guides you through writing the rule, placing it in the right directory, and validating it with Falco. It's a great example of the kind of human-AI collaboration this project is designed to enable: the agent helps you constrain itself.&lt;/p&gt;
&lt;h2 id="let-s-be-honest-about-limitations"&gt;Let's be honest about limitations&lt;/h2&gt;
&lt;p&gt;We want to be clear about what this project is and isn't.&lt;/p&gt;
&lt;p&gt;Prempti intercepts tool calls as declared by the agent, not the system calls those tool calls produce. If an agent writes a malicious binary and runs it, Falco sees &lt;code&gt;gcc main.c -o main&lt;/code&gt; and &lt;code&gt;./main&lt;/code&gt;, not what &lt;code&gt;./main&lt;/code&gt; does at the OS level. For deep syscall-level visibility on Linux, Falco's kernel instrumentation (eBPF/kmod) remains the right tool.&lt;/p&gt;
&lt;p&gt;Prempti is also not a sandbox. It doesn't prevent a sufficiently determined agent from circumventing the hook mechanism if it can find a path the hook doesn't cover. Think of it as a policy layer at the agent level — a valuable complement to sandboxing and system hardening, not a replacement for them.&lt;/p&gt;
&lt;p&gt;What it does provide is visibility and a programmable policy boundary that lives at the most natural enforcement point: the moment the agent decides to act.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting started&lt;/h2&gt;
&lt;p&gt;Download the latest release from the GitHub repository: &lt;a href="https://github.com/falcosecurity/prempti/releases"&gt;https://github.com/falcosecurity/prempti/releases&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;macOS:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;installer -pkg prempti-&amp;lt;version&amp;gt;-darwin-universal.pkg &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -target CurrentUserHomeDirectory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The installer wizard handles everything. The service starts automatically on login.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar xzf prempti-&amp;lt;version&amp;gt;-linux-x86_64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a2f"&gt;cd&lt;/span&gt; prempti-&amp;lt;version&amp;gt;-linux-x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bash install.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Windows:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;msiexec /i prempti-&amp;lt;version&amp;gt;-windows-&amp;lt;arch&amp;gt;.msi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verify your setup:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;premptictl status
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;premptictl hook status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="explore-together-with-us"&gt;Explore together with us&lt;/h2&gt;
&lt;p&gt;Runtime security for AI coding agents is genuinely new territory. The threat models are still being defined. The right default policies are still being discovered. We believe our community of developers, security engineers, and the people running these agents day to day are the ones who will figure out what good looks like here. If you've used Prempti, we'd love to hear what you found:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What rules have you written? What did you catch?&lt;/li&gt;
&lt;li&gt;What agents or platforms do you need support for?&lt;/li&gt;
&lt;li&gt;What didn't work as expected?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Open an &lt;a href="https://github.com/falcosecurity/prempti/issues"&gt;issue&lt;/a&gt;, start a &lt;a href="https://github.com/falcosecurity/prempti/discussions"&gt;discussion&lt;/a&gt;, or come chat with us in the &lt;a href="https://kubernetes.slack.com/archives/CMWH3EH32"&gt;Falco Slack&lt;/a&gt;. Every piece of feedback shapes what this project becomes.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Prempti is released under the Apache License 2.0. Currently supports Claude Code on Linux (x86_64, aarch64), macOS (Apple Silicon, Intel), and Windows (x86_64, ARM64). Codex integration is on the roadmap.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco Operator 0.2.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/</guid><description>
&lt;p&gt;Dear Falco Community, today we are excited to announce the release of &lt;strong&gt;Falco Operator 0.2.0&lt;/strong&gt;, the first production-ready release of the &lt;a href="https://github.com/falcosecurity/falco-operator"&gt;Kubernetes operator for Falco&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Since the &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-41-0/#kubernetes-operator"&gt;technical preview announced with Falco 0.41.0&lt;/a&gt;, we have been working hard to make the operator robust, extensible, and ready for real-world environments. This release brings a redesigned API, a new Component controller for managing the Falco ecosystem, new artifact management capabilities, enhanced observability, and a significantly improved operational model, all grounded in Kubernetes-native patterns.&lt;/p&gt;
&lt;p&gt;We merged &lt;strong&gt;58 commits&lt;/strong&gt; since v0.1.1, delivering major new features, 10 bug fixes, and comprehensive architectural improvements. Thank you to all our contributors and the community for your feedback along the way!&lt;/p&gt;
&lt;p&gt;Going forward, the Falco Operator is the recommended way to deploy and manage Falco on Kubernetes. While the existing &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/setup/kubernetes/"&gt;Helm chart&lt;/a&gt; remains fully supported, we plan to transition to the operator as the standard deployment method. More details on the transition timeline will follow in a future announcement.&lt;/p&gt;
&lt;p&gt;To learn everything about the changes, read on!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What's new? TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Key features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/#ecosystem-components"&gt;Ecosystem components&lt;/a&gt; - deploy Falcosidekick, Falcosidekick UI, and k8s-metacollector as managed components&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/#configmap-support-for-rules-and-configuration"&gt;ConfigMap support&lt;/a&gt; for rules and configuration, alongside OCI artifacts and inline definitions&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/#structured-api-types"&gt;Structured API types&lt;/a&gt; for inline rules and configuration - YAML objects instead of strings&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/#redesigned-oci-artifact-api"&gt;Redesigned OCI artifact API&lt;/a&gt; with separate image and registry configuration&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/#reference-tracking-with-finalizers"&gt;Reference tracking with finalizers&lt;/a&gt; to prevent accidental deletion of Secrets and ConfigMaps&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/#enhanced-observability"&gt;Enhanced observability&lt;/a&gt; with Kubernetes events and status conditions across all controllers&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/#update-strategy-support"&gt;Update strategy support&lt;/a&gt; for DaemonSet and Deployment modes&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/#server-side-apply"&gt;Server-Side Apply migration&lt;/a&gt; for safer, conflict-free reconciliation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Key fixes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugin &lt;code&gt;initConfig&lt;/code&gt; now supports nested configuration objects&lt;/li&gt;
&lt;li&gt;RBAC compatibility with Kubernetes 1.32+&lt;/li&gt;
&lt;li&gt;Spurious update prevention via managed fields comparison&lt;/li&gt;
&lt;li&gt;Correct event recording with node-level attribution&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="card card-sm pageinfo pageinfo-warning my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;This release comes with &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-operator-0-2-0/#breaking-changes"&gt;breaking changes&lt;/a&gt; that require updating your existing custom resources before upgrading. Please read the &lt;a href="https://github.com/falcosecurity/falco-operator/blob/main/docs/migration-guide.md"&gt;migration guide&lt;/a&gt; carefully before proceeding.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="the-road-to-production-readiness"&gt;The road to production readiness&lt;/h2&gt;
&lt;p&gt;When we introduced the Falco Operator as a technical preview in Falco 0.41.0, the vision was clear: provide a Kubernetes-native way to deploy and manage Falco that goes beyond what Helm charts and static manifests can offer. Since then, every aspect of the operator has been refined.&lt;/p&gt;
&lt;p&gt;The reconciliation logic now uses Server-Side Apply for conflict-free updates. Status conditions follow Kubernetes conventions (&lt;code&gt;Programmed&lt;/code&gt;, &lt;code&gt;ResolvedRefs&lt;/code&gt;, &lt;code&gt;Available&lt;/code&gt;, &lt;code&gt;Reconciled&lt;/code&gt;) so that standard tooling and dashboards can monitor operator health out of the box. Finalizers protect referenced resources from accidental deletion. And the new Component controller lays the groundwork for managing the entire Falco ecosystem from a single operator.&lt;/p&gt;
&lt;p&gt;Version 0.2.0 is the result of this effort, a release we are confident in for production environments.&lt;/p&gt;
&lt;h2 id="major-features-and-improvements"&gt;Major features and improvements&lt;/h2&gt;
&lt;h3 id="ecosystem-components"&gt;Ecosystem components&lt;/h3&gt;
&lt;p&gt;The new &lt;code&gt;Component&lt;/code&gt; custom resource (&lt;code&gt;instance.falcosecurity.dev/v1alpha1&lt;/code&gt;) enables the operator to deploy and manage the full Falco ecosystem from a single control plane. Three component types are supported:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;metacollector&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Centralized Kubernetes metadata for Falco instances&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;falcosidekick&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;Falcosidekick&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Fan-out daemon - routes Falco events to 70+ integrations (Slack, Elasticsearch, S3, Kafka, and more)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;falcosidekick-ui&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/falcosecurity/falcosidekick-ui"&gt;Falcosidekick UI&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Web dashboard for real-time event visualization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Deploying Falcosidekick is as simple as:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;instance.falcosecurity.dev/v1alpha1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Component&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;sidekick&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;component&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falcosidekick&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;replicas&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;2&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The operator handles the Deployment, Service, ServiceAccount, and RBAC automatically. Each component type ships with production-ready defaults (health probes, security context, resource profiles) that can be fully customized via &lt;code&gt;podTemplateSpec&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For Falcosidekick UI, note that an external Redis instance is required. If Redis is not available, the pod stays in &lt;code&gt;Init:0/1&lt;/code&gt; state, the built-in &lt;code&gt;wait-redis&lt;/code&gt; init container blocks until Redis is reachable. See the &lt;a href="https://github.com/falcosecurity/falco-operator/blob/main/docs/crds/component.md"&gt;component documentation&lt;/a&gt; for setup examples including a bundled Redis StatefulSet.&lt;/p&gt;
&lt;p&gt;As part of this work, the internal controller structure was reorganized under &lt;code&gt;controllers/instance/&lt;/code&gt; with shared reconciliation logic extracted into reusable packages, improving maintainability and consistency across all instance-level controllers.&lt;/p&gt;
&lt;h3 id="configmap-support-for-rules-and-configuration"&gt;ConfigMap support for rules and configuration&lt;/h3&gt;
&lt;p&gt;Rulesfile and Config resources can now source their content from Kubernetes ConfigMaps, in addition to OCI artifacts and inline definitions. This provides a familiar, Git-friendly workflow for teams that manage configuration through standard Kubernetes tooling.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rulesfile from a ConfigMap:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;artifact.falcosecurity.dev/v1alpha1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Rulesfile&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;custom-rules&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;configMapRef&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;my-rules-configmap&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;50&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Config from a ConfigMap:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;artifact.falcosecurity.dev/v1alpha1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Config&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;custom-config&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;configMapRef&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;my-config-configmap&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;50&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The referenced ConfigMap must contain the content under a key named &lt;code&gt;rules.yaml&lt;/code&gt; (for Rulesfile) or &lt;code&gt;config.yaml&lt;/code&gt; (for Config). All three sources (OCI, inline, and ConfigMap) can be combined in a single resource when needed.&lt;/p&gt;
&lt;h3 id="structured-api-types"&gt;Structured API types&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;inlineRules&lt;/code&gt; field in the Rulesfile CRD and the &lt;code&gt;config&lt;/code&gt; field in the Config CRD are now structured YAML objects instead of plain strings. This enables proper validation, better editor support, and eliminates the need for YAML-in-YAML escaping.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before (v0.1.x):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|-&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; engine:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; kind: modern_ebpf&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;After (v0.2.0):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;engine&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;modern_ebpf&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The same applies to &lt;code&gt;inlineRules&lt;/code&gt;: rules are now defined as structured YAML lists rather than pipe-literal strings.&lt;/p&gt;
&lt;h3 id="redesigned-oci-artifact-api"&gt;Redesigned OCI artifact API&lt;/h3&gt;
&lt;p&gt;The OCI artifact reference model has been completely redesigned for clarity and extensibility. The previous flat &lt;code&gt;reference&lt;/code&gt; and &lt;code&gt;pullSecret&lt;/code&gt; fields are replaced with a structured &lt;code&gt;image&lt;/code&gt; and &lt;code&gt;registry&lt;/code&gt; model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before (v0.1.x):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;ociArtifact&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;reference&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ghcr.io/falcosecurity/rules/falco-rules:latest&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;pullSecret&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;secretName&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;my-secret&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;After (v0.2.0):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;ociArtifact&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;image&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;repository&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falcosecurity/rules/falco-rules&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tag&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;latest&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;registry&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ghcr.io&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;auth&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;secretRef&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;my-secret&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This separation makes the API more explicit and enables per-registry TLS configuration, plain HTTP support, and a consistent credential model. See the &lt;a href="https://github.com/falcosecurity/falco-operator/blob/main/docs/migration-guide.md"&gt;migration guide&lt;/a&gt; for details on updating your resources.&lt;/p&gt;
&lt;h3 id="reference-tracking-with-finalizers"&gt;Reference tracking with finalizers&lt;/h3&gt;
&lt;p&gt;The operator now adds finalizers to Secrets and ConfigMaps that are referenced by artifact resources. This prevents accidental deletion of credentials or configuration data that would break Falco deployments. When a referenced resource is deleted, the operator blocks the deletion until all referencing artifacts are updated or removed.&lt;/p&gt;
&lt;h3 id="enhanced-observability"&gt;Enhanced observability&lt;/h3&gt;
&lt;p&gt;All controllers now emit Kubernetes events for significant operations: artifact creation, updates, removals, and priority changes. Events include the node name for artifact controllers, making it straightforward to trace which operations happened on which nodes.&lt;/p&gt;
&lt;p&gt;Status conditions have been overhauled to follow Kubernetes conventions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Artifact resources&lt;/strong&gt; report &lt;code&gt;Programmed&lt;/code&gt; (whether the artifact is successfully applied) and &lt;code&gt;ResolvedRefs&lt;/code&gt; (whether referenced ConfigMaps/Secrets exist)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falco instances&lt;/strong&gt; report &lt;code&gt;Reconciled&lt;/code&gt; and &lt;code&gt;Available&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;All artifact CRDs now include &lt;code&gt;printcolumns&lt;/code&gt; for readable &lt;code&gt;kubectl get&lt;/code&gt; output&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="update-strategy-support"&gt;Update strategy support&lt;/h3&gt;
&lt;p&gt;The Falco CRD now accepts update strategy configuration for both deployment modes:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# DaemonSet mode&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;DaemonSet&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;updateStrategy&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;RollingUpdate&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rollingUpdate&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;maxUnavailable&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Deployment mode&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Deployment&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;strategy&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;RollingUpdate&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rollingUpdate&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;maxUnavailable&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;maxSurge&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="server-side-apply"&gt;Server-Side Apply&lt;/h3&gt;
&lt;p&gt;Under the hood, the operator has migrated from the dry-run/update pattern to &lt;a href="https://kubernetes.io/docs/reference/using-api/server-side-apply/"&gt;Server-Side Apply&lt;/a&gt; (SSA) for all reconciliation operations. This brings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Conflict detection&lt;/strong&gt;: concurrent modifications to managed fields are detected and reported&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ownership tracking&lt;/strong&gt;: the operator only manages fields it owns, leaving user-applied changes intact&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduced spurious updates&lt;/strong&gt;: managed fields comparison prevents unnecessary API calls&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="breaking-changes"&gt;Breaking changes ⚠️&lt;/h2&gt;
&lt;p&gt;Version 0.2.0 includes several API breaking changes. All existing custom resources must be updated before upgrading. A detailed &lt;a href="https://github.com/falcosecurity/falco-operator/blob/main/docs/migration-guide.md"&gt;migration guide&lt;/a&gt; is available in the repository documentation.&lt;/p&gt;
&lt;h3 id="summary-of-breaking-changes"&gt;Summary of breaking changes&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;th&gt;Impact&lt;/th&gt;
&lt;th&gt;Migration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ociArtifact.reference&lt;/code&gt; replaced by &lt;code&gt;ociArtifact.image&lt;/code&gt; + &lt;code&gt;ociArtifact.registry&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All Rulesfile and Plugin CRs using OCI artifacts&lt;/td&gt;
&lt;td&gt;Split the reference into &lt;code&gt;image.repository&lt;/code&gt;, &lt;code&gt;image.tag&lt;/code&gt;, and &lt;code&gt;registry.name&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ociArtifact.pullSecret&lt;/code&gt; replaced by &lt;code&gt;ociArtifact.registry.auth.secretRef&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;CRs with private registry credentials&lt;/td&gt;
&lt;td&gt;Update the credential reference path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Config &lt;code&gt;spec.config&lt;/code&gt; changed from string to structured YAML&lt;/td&gt;
&lt;td&gt;All Config CRs&lt;/td&gt;
&lt;td&gt;Remove the &lt;code&gt;|-&lt;/code&gt; pipe literal, write YAML directly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rulesfile &lt;code&gt;spec.inlineRules&lt;/code&gt; changed from string to structured YAML&lt;/td&gt;
&lt;td&gt;Rulesfile CRs with inline rules&lt;/td&gt;
&lt;td&gt;Remove the &lt;code&gt;|-&lt;/code&gt; pipe literal, write YAML directly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plugin &lt;code&gt;spec.config.initConfig&lt;/code&gt; changed from &lt;code&gt;map[string]string&lt;/code&gt; to JSON&lt;/td&gt;
&lt;td&gt;Plugin CRs with init config&lt;/td&gt;
&lt;td&gt;Re-apply CRD; flat maps still validate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Falco resource &lt;code&gt;shortName&lt;/code&gt; changed from &lt;code&gt;prom&lt;/code&gt; to &lt;code&gt;falco&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scripts using &lt;code&gt;kubectl get prom&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;kubectl get falco&lt;/code&gt; instead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Condition types renamed (&lt;code&gt;ConditionReconciled&lt;/code&gt; → &lt;code&gt;Reconciled&lt;/code&gt;, &lt;code&gt;ConditionAvailable&lt;/code&gt; → &lt;code&gt;Available&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Monitoring tools filtering on condition types&lt;/td&gt;
&lt;td&gt;Update condition type filters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl get&lt;/code&gt; column output changed for all CRDs&lt;/td&gt;
&lt;td&gt;Dashboard parsing or scripts&lt;/td&gt;
&lt;td&gt;Update parsers to match new column names&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RBAC permissions expanded&lt;/td&gt;
&lt;td&gt;Security-sensitive environments&lt;/td&gt;
&lt;td&gt;Review the updated ClusterRole&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;After upgrading, re-apply all CRDs and update your custom resources following the migration guide. The operator will reconcile the new format automatically.&lt;/p&gt;
&lt;h2 id="a-helm-chart-is-on-its-way"&gt;A Helm chart is on its way&lt;/h2&gt;
&lt;p&gt;We are currently developing a Helm chart for installing the Falco Operator itself, which will simplify deployment and configuration of the operator in production environments. Stay tuned for the announcement.&lt;/p&gt;
&lt;h2 id="meet-us-at-kubecon"&gt;Meet us at KubeCon&lt;/h2&gt;
&lt;p&gt;We will be talking about the Falco Operator during the &lt;strong&gt;maintainer track&lt;/strong&gt; at the upcoming KubeCon. If you are interested in learning more, asking questions, or sharing feedback, come find us at the &lt;strong&gt;CNCF Falco kiosk&lt;/strong&gt;, we would love to chat!&lt;/p&gt;
&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;Install the operator:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b8860b"&gt;VERSION&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;latest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;if&lt;/span&gt; &lt;span style="color:#666"&gt;[&lt;/span&gt; &lt;span style="color:#b44"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#b8860b"&gt;$VERSION&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#666"&gt;=&lt;/span&gt; &lt;span style="color:#b44"&gt;&amp;#34;latest&amp;#34;&lt;/span&gt; &lt;span style="color:#666"&gt;]&lt;/span&gt;; &lt;span style="color:#a2f;font-weight:bold"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; kubectl apply --server-side -f https://github.com/falcosecurity/falco-operator/releases/latest/download/install.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; kubectl apply --server-side -f https://github.com/falcosecurity/falco-operator/releases/download/&lt;span style="color:#b68;font-weight:bold"&gt;${&lt;/span&gt;&lt;span style="color:#b8860b"&gt;VERSION&lt;/span&gt;&lt;span style="color:#b68;font-weight:bold"&gt;}&lt;/span&gt;/install.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then choose how you want to get started:&lt;/p&gt;
&lt;h3 id="full-stack-quickstart"&gt;Full stack quickstart&lt;/h3&gt;
&lt;p&gt;Deploy the entire Falco ecosystem in the &lt;code&gt;falco&lt;/code&gt; namespace with one command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b8860b"&gt;VERSION&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;latest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;if&lt;/span&gt; &lt;span style="color:#666"&gt;[&lt;/span&gt; &lt;span style="color:#b44"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#b8860b"&gt;$VERSION&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#666"&gt;=&lt;/span&gt; &lt;span style="color:#b44"&gt;&amp;#34;latest&amp;#34;&lt;/span&gt; &lt;span style="color:#666"&gt;]&lt;/span&gt;; &lt;span style="color:#a2f;font-weight:bold"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; kubectl apply --server-side -f https://github.com/falcosecurity/falco-operator/releases/latest/download/quickstart.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; kubectl apply --server-side -f https://github.com/falcosecurity/falco-operator/releases/download/&lt;span style="color:#b68;font-weight:bold"&gt;${&lt;/span&gt;&lt;span style="color:#b8860b"&gt;VERSION&lt;/span&gt;&lt;span style="color:#b68;font-weight:bold"&gt;}&lt;/span&gt;/quickstart.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This deploys Falco, container and k8smeta plugins, detection rules, Falcosidekick, Falcosidekick UI with Redis, and k8s-metacollector - all pre-wired.&lt;/p&gt;
&lt;p&gt;Verify:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get falco,plugins,rulesfiles,configs,components -n falco
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -n falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-by-step"&gt;Step by step&lt;/h3&gt;
&lt;p&gt;Deploy Falco:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#b44"&gt;&amp;lt;&amp;lt;EOF | kubectl apply -f -
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;apiVersion: instance.falcosecurity.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;kind: Falco
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; name: falco
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;spec: {}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add the container plugin (required by the official rules for container metadata fields):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#b44"&gt;&amp;lt;&amp;lt;EOF | kubectl apply -f -
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;apiVersion: artifact.falcosecurity.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;kind: Plugin
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; name: container
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; ociArtifact:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; image:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; repository: falcosecurity/plugins/plugin/container
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; tag: latest
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; registry:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; name: ghcr.io
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And add detection rules:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#b44"&gt;&amp;lt;&amp;lt;EOF | kubectl apply -f -
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;apiVersion: artifact.falcosecurity.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;kind: Rulesfile
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; name: falco-rules
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; ociArtifact:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; image:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; repository: falcosecurity/rules/falco-rules
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; tag: latest
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; registry:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; name: ghcr.io
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; priority: 50
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Optionally, add Falcosidekick to route events to your favorite integrations:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#b44"&gt;&amp;lt;&amp;lt;EOF | kubectl apply -f -
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;apiVersion: instance.falcosecurity.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;kind: Component
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; name: sidekick
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; component:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; type: falcosidekick
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; replicas: 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For the complete documentation, including the CRD reference, configuration options, and architecture overview, visit the &lt;a href="https://github.com/falcosecurity/falco-operator"&gt;Falco Operator repository&lt;/a&gt; and the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/setup/operator/"&gt;operator setup guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="stay-connected"&gt;Stay connected&lt;/h2&gt;
&lt;p&gt;Join us on social media and in our community calls! It's always great to have new members in the community, and we're looking forward to hearing your feedback and ideas.&lt;/p&gt;
&lt;p&gt;You can find all the most up-to-date information at &lt;a href="https://falco.org/community/"&gt;https://falco.org/community/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog: Falco at KubeCon Europe 2026 — See You in Amsterdam! 🐦</title><link>https://v0-43--falcosecurity.netlify.app/blog/kubecon-eu-2026/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/kubecon-eu-2026/</guid><description>
&lt;p&gt;We're excited to share that the Falco community will be at &lt;strong&gt;KubeCon + CloudNativeCon Europe 2026&lt;/strong&gt; in Amsterdam! Whether you're a long-time contributor, a curious user, or just want to say hi, we'd love to see you there.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/falco-ten-year-badge.png" alt="Falco 10 years badge" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Falco is celebrating &lt;strong&gt;10 years&lt;/strong&gt; of development and adoption, and we are on the lookout for people who would like to say Happy Birthday to the project or share their best Falco story. Libby Schulze and I will be on the event floor with mic and camera to capture some amazing moments and memories from Falco's 10 years. So bring your best story, and we'll see you at the Falco booth!&lt;/p&gt;
&lt;h2 id="sneak-peek"&gt;Sneak peek&lt;/h2&gt;
&lt;p&gt;Psst... we have something really cool brewing that we will show at the Falco booth. You, our amazing reader, is the first to hear about this. It's a way to run Falco locally on your development machine, and make sure your AI coding agents are following new rules that are being defined. We'd love to get your feedback on this as we're currently building it!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Here’s where you can find us in Amsterdam and everything we have lined up:&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="project-lightning-talk"&gt;Project lightning talk&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://kccnceu2026.sched.com/event/2EFx1/project-lightning-talk-forensics-with-falco-gerald-combs-maintainer"&gt;&lt;strong&gt;Forensics With Falco&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Speaker:&lt;/strong&gt; Gerald Combs, Maintainer&lt;br&gt;
&lt;strong&gt;When:&lt;/strong&gt; Monday, March 23, 2026 — 10:27 to 10:32 CET&lt;br&gt;
&lt;strong&gt;Where:&lt;/strong&gt; Elicium 2&lt;/p&gt;
&lt;p&gt;Falco has recently expanded its capabilities with capture recording, opening the door to seamless integration with forensic analysis tools like Stratoshark. In this lightning talk, Gerald will walk through how the two tools work together to provide deep visibility into container and system activity. He will demonstrate how captured event data can accelerate investigations and discuss key considerations for safely and efficiently deploying these features in production environments.&lt;/p&gt;
&lt;h2 id="sysdig-led-workshop"&gt;Sysdig-led workshop&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://sysdig.pathfactory.com/kceu26-falco-workshop/"&gt;&lt;strong&gt;Hands-On Cloud Native Security Workshop&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;When:&lt;/strong&gt; Monday, March 23 — 2:00–4:00 PM CET&lt;/p&gt;
&lt;p&gt;Run Atomic Red Team™ tests, then step into the Blue Team role to detect threats and create custom Falco™ detection rules in this hands‑on 90‑minute keyboard workshop.&lt;/p&gt;
&lt;h2 id="conference-talk"&gt;Conference talk&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://kccnceu2026.sched.com/event/2EF6W/in-falcos-nest-the-evolution-of-cloud-native-runtime-security-iacopo-rozzo-sysdig-aldo-lacuku-kong-inc"&gt;&lt;strong&gt;In Falco's Nest: The Evolution of Cloud Native Runtime Security&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Speakers:&lt;/strong&gt; Iacopo Rozzo (Sysdig), Aldo Lacuku (Kong Inc.)&lt;br&gt;
&lt;strong&gt;When:&lt;/strong&gt; Tuesday, March 24, 2026 — 12:00 to 12:30 CET&lt;br&gt;
&lt;strong&gt;Where:&lt;/strong&gt; G102–103&lt;/p&gt;
&lt;p&gt;Falco, the Cloud Native Runtime Security project, is constantly evolving to meet the demands of modern cloud environments. This maintainer track session, led by the Falco maintainers, will dive deep into the latest advancements and the strategic direction of the project. We will focus on two major areas of growth: the introduction of the new Falco Operator and the new features that enhance Falco's performance and reliability.&lt;/p&gt;
&lt;p&gt;The new Falco Operator simplifies the deployment, configuration, and management of Falco across Kubernetes clusters, making it easier than ever for users to secure their runtime environments at scale.&lt;/p&gt;
&lt;p&gt;Furthermore, we will explore the most significant new features integrated into Falco. This includes performance optimizations for high-throughput environments. The session will also touch upon community contributions, ecosystem integrations, and the roadmap for the upcoming release.&lt;/p&gt;
&lt;h2 id="booth-demo"&gt;Booth demo&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Pivoting from detection to investigation with Falco and Stratoshark&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Speaker:&lt;/strong&gt; Gerald Combs&lt;br&gt;
&lt;strong&gt;When:&lt;/strong&gt; Tuesday, March 24, 2026 — 15:45 CET&lt;br&gt;
&lt;strong&gt;Where:&lt;/strong&gt; Sysdig Booth #671&lt;/p&gt;
&lt;p&gt;See how to move from “we detected something” to “here’s what happened” using Falco and Stratoshark. Stop by the Sysdig booth and say hello!&lt;/p&gt;
&lt;h2 id="thank-you"&gt;Thank you!&lt;/h2&gt;
&lt;p&gt;We couldn’t do this without you all in our community - the contributors, users, and everyone who shows up at events. If you’re in Amsterdam, come find us at the talks, the workshop, or the booth. We’d love to meet you and hear how you’re using Falco.&lt;/p&gt;
&lt;p&gt;See you there! 🐦&lt;/p&gt;</description></item><item><title>Blog: Hey Falco Flock! 🐦 Let's Soar Into 2026</title><link>https://v0-43--falcosecurity.netlify.app/blog/soar-into-2026/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/soar-into-2026/</guid><description>
&lt;p&gt;New year, new opportunities!&lt;/p&gt;
&lt;p&gt;As we spread our wings and glide into 2026, we want to make sure this community is one you’re proud (and excited!) to be a part of. Falco has always been more than just a project: it’s a flock of builders, defenders, contributors, question-askers, doc-writers, rule-tuners, and runtime security enthusiasts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And now we want to hear from you.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We’ve put together a quick community survey (5 minutes or less!) to better understand:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How connected you feel to the community&lt;/li&gt;
&lt;li&gt;What you love about being a part of it&lt;/li&gt;
&lt;li&gt;What could be better&lt;/li&gt;
&lt;li&gt;What you’d like to see us focus on this year&lt;/li&gt;
&lt;li&gt;What resources would make your life easier&lt;/li&gt;
&lt;li&gt;How you’re using Falco and what tools you integrate it with&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your feedback directly shapes our focus on what we build, improve, prioritize, and invest in this year - from documentation and content to events, integrations, and contributor experience. A report detailing the responses will be shared at the same time as KubeCon Europe 2026.&lt;/p&gt;
&lt;p&gt;Whether you’re building, using, learning, or just keeping an eye on things, your voice matters.&lt;/p&gt;
&lt;h3 id="take-the-survey-here"&gt;👉 Take the &lt;a href="https://forms.gle/vsxpUUdgMtjU4Rdb7"&gt;survey here&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thanks for being part of the flock. We couldn’t do this without you and we’re excited to build 2026 together!&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.43.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-43-0/</link><pubDate>Mon, 26 Jan 2026 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-43-0/</guid><description>
&lt;p&gt;Dear Falco Community, we are happy to announce the release of Falco 0.43.0 today!&lt;/p&gt;
&lt;p&gt;This is a stabilization release that consolidates the changes introduced in 0.42.0, including
the &lt;a href="https://falco.org/blog/falco-0-42-0/#drop-enter-initiative"&gt;drop-enter initiative&lt;/a&gt; and
the &lt;a href="https://falco.org/blog/falco-0-42-0/#capture-recording-feature"&gt;capture recording feature&lt;/a&gt;. It also introduces
several deprecations to improve maintainability and fixes minor issues across falcoctl, plugins, and libs.&lt;/p&gt;
&lt;p&gt;During this release cycle, we merged:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;31 PRs on Falco, including 11 release note-worthy changes&lt;/li&gt;
&lt;li&gt;48 PRs on Falco libs, including 17 release note-worthy changes&lt;/li&gt;
&lt;li&gt;8 PRs on Falco drivers, including 3 release note-worthy changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We upgraded libs to version &lt;code&gt;0.23.1&lt;/code&gt; and drivers to &lt;code&gt;9.1.0+driver&lt;/code&gt;. Thank you to our maintainers and contributors. This
would not have been possible without your support and dedication!&lt;/p&gt;
&lt;p&gt;To learn everything about the changes, read on!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What's new? TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-43-0/#deprecations"&gt;Deprecations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-43-0/#gpg-key-rotation"&gt;GPG key rotation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-43-0/#container-plugin-improvements"&gt;Container plugin improvements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-43-0/#falcoctl-tweaks-and-improvements"&gt;Falcoctl tweaks and improvements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Key fixes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-43-0/#evtargfilename-field-reintroduction"&gt;&lt;code&gt;evt.arg.filename&lt;/code&gt; field reintroduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-43-0/#falcoctl-signature-verification-fixes"&gt;Falcoctl signature verification fixes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;overflow and NULL pointer dereferences fixes for the &lt;code&gt;container&lt;/code&gt; plugin, shipped with &lt;code&gt;plugins/container/0.6.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;race condition fix for the &lt;code&gt;k8smeta&lt;/code&gt; plugin, shipped with &lt;code&gt;plugins/k8smeta/0.4.1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="card card-sm pageinfo pageinfo-warning my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;This release also comes with &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-43-0/#breaking-changes-and-deprecations"&gt;breaking changes&lt;/a&gt; that you should be aware of before
upgrading.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="latest-updates"&gt;Latest updates&lt;/h2&gt;
&lt;h3 id="deprecations"&gt;Deprecations&lt;/h3&gt;
&lt;p&gt;In Falco 0.43.0, we are announcing the deprecation of three significant components to streamline the project, reduce
maintenance burden, and focus on modern, more efficient alternatives. All these components are stable, and considering
that the deprecation is first enforced in this version, they could be removed at any future version starting from
0.44.0.&lt;/p&gt;
&lt;h4 id="legacy-ebpf-probe-deprecation"&gt;Legacy eBPF probe deprecation&lt;/h4&gt;
&lt;p&gt;The &amp;quot;legacy&amp;quot; eBPF probe (configured via &lt;code&gt;engine.kind=ebpf&lt;/code&gt;) was the original eBPF implementation in Falco. It required
compiling a specific probe for each kernel version, often necessitating the dynamic usage of the &lt;code&gt;falco-driver-loader&lt;/code&gt;
or pre-built drivers. The Modern eBPF probe (&lt;code&gt;engine.kind=modern_ebpf&lt;/code&gt;), which leverages CO-RE (Compile Once – Run
Everywhere), has reached maturity and feature parity. It offers superior stability, portability (no need to compile
drivers on the fly), flexibility and performance. Maintaining two eBPF drivers splits engineering effort and complicates
the codebase. Users currently using the legacy eBPF probe are strongly encouraged to switch to the Modern eBPF probe by
setting &lt;code&gt;engine.kind=modern_ebpf&lt;/code&gt; in their &lt;code&gt;falco.yaml&lt;/code&gt;, or to &lt;code&gt;engine.kind=kmod&lt;/code&gt; if the used kernel doesn't provide
support for the modern eBPF probe.&lt;/p&gt;
&lt;p&gt;See &lt;a href="https://github.com/falcosecurity/falco/blob/master/proposals/20251215-legacy-bpf-grpc-output-gvisor-engine-deprecation.md#legacy-ebpf-probe-deprecation"&gt;the relevant section&lt;/a&gt;
of the deprecation proposal for the detailed motivation behind the deprecation.&lt;/p&gt;
&lt;h4 id="gvisor-deprecation"&gt;gVisor deprecation&lt;/h4&gt;
&lt;p&gt;The gVisor engine is a dedicated, internal C++ implementation designed to monitor system calls from gVisor sandboxes
leveraging events coming from gVisor itself through gRPC. There is evidence that this engine is little used. Moreover,
gVisor doesn't provide all information required to build all supported event types, indeed resulting in a system call
source not completely equivalent to the ones provided by drivers. Finally, it requires libs being dependent on protobuf,
this latter introducing a non-negligible build time overhead and maintainability burden.&lt;/p&gt;
&lt;p&gt;See &lt;a href="https://github.com/falcosecurity/falco/blob/master/proposals/20251215-legacy-bpf-grpc-output-gvisor-engine-deprecation.md#gvisor-libscap-engine-deprecation"&gt;the relevant section&lt;/a&gt;
of the deprecation proposal for the detailed motivation behind the deprecation.&lt;/p&gt;
&lt;h4 id="grpc-output-and-server-deprecation"&gt;gRPC output and server deprecation&lt;/h4&gt;
&lt;p&gt;The gRPC output was implemented to allow external consumers to subscribe to a stream of Falco security alerts over a
gRPC connection. It was notably utilized by tools like the &lt;code&gt;event-generator&lt;/code&gt; (in test mode) and custom integrations
requiring a streaming API for alerts. The gRPC output and the gRPC server embedded in Falco add substantial complexity
to the core codebase, including dependencies on specific protobuf and gRPC framework versions in Falco and libs. Over
time, it has become clear that the community prefers standard, widespread integration patterns for alert consumption -
primarily HTTP and the ecosystem enabled by Falcosidekick. Users consuming alerts via gRPC should migrate to the HTTP
output or use Falcosidekick to forward events to their destination of choice.&lt;/p&gt;
&lt;p&gt;See &lt;a href="https://github.com/falcosecurity/falco/blob/master/proposals/20251215-legacy-bpf-grpc-output-gvisor-engine-deprecation.md#grpc-output-deprecation"&gt;the relevant section&lt;/a&gt;
of the deprecation proposal for the detailed motivation behind the deprecation.&lt;/p&gt;
&lt;h3 id="gpg-key-rotation"&gt;GPG key rotation&lt;/h3&gt;
&lt;p&gt;In anticipation of the previous GPG key's expiration in January 2026, we have rotated the GPG key used to sign the
official RPM and DEB packages. Pre-existing Falco installations (installed via apt or yum before the rotation) must
manually import the new GPG key. Failure to do so may result in errors during package updates or verification failures.
Please follow the &amp;quot;Trust the falcosecurity GPG key&amp;quot; step in the official documentation for your package manager:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;apt (Debian/Ubuntu): &lt;a href="https://falco.org/docs/setup/packages/#install-with-apt"&gt;Install with apt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;yum/dnf (CentOS/RHEL/Fedora): &lt;a href="https://falco.org/docs/setup/packages/#install-with-yum"&gt;Install with yum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notice that new installations following the current documentation will automatically receive the updated key bundle and
do not require additional steps.&lt;/p&gt;
&lt;p&gt;For more details
see &lt;a href="https://github.com/falcosecurity/falco/issues/3750"&gt;[TRACKING] [deadline 2026-01-17] Rotate public GPG key for RPM/DEB package signing&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="container-plugin-improvements"&gt;Container plugin improvements&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;container&lt;/code&gt; plugin, which extracts metadata from container runtimes to enrich Falco events, includes important
updates in version &lt;code&gt;0.6.1&lt;/code&gt; to enhance its API capabilities and performance. This release exposes &lt;code&gt;container.id&lt;/code&gt;,
&lt;code&gt;container.image&lt;/code&gt;, &lt;code&gt;container.name&lt;/code&gt;, and &lt;code&gt;container.type&lt;/code&gt; through the table API and adds comprehensive logging across
all engines, while also preventing allocations by extensively using zero-allocation tools offered by the C++ (like
&lt;code&gt;std::string_view&lt;/code&gt;) and avoiding reflex matcher allocations during resolve operations.&lt;/p&gt;
&lt;h3 id="falcoctl-tweaks-and-improvements"&gt;Falcoctl tweaks and improvements&lt;/h3&gt;
&lt;h4 id="follow-polling-interval-increase-to-1-week"&gt;&lt;code&gt;follow&lt;/code&gt; polling interval increase to 1 week&lt;/h4&gt;
&lt;p&gt;About three years ago, we started distributing Falco artifacts (rules files and plugins) via ghcr.io, and later added
automatic rule updates in falcoctl with a 6h check interval. With years of data now, it’s clear we don’t need checks
that frequent: our rule updates happen far less often. Moreover, due to the growth of Falco adoption, these frequent
checks are now hitting ghcr.io rate limit. These two reasons drove the decision to increase the artifact follow interval
from 6h to 1 week.&lt;/p&gt;
&lt;p&gt;For more details
see &lt;a href="https://github.com/falcosecurity/falco/pull/3757"&gt;chore(scripts/falcoctl): increase follow interval to 1 week&lt;/a&gt;
and &lt;a href="https://github.com/falcosecurity/charts/blob/master/charts/falco/CHANGELOG.md#v702"&gt;Falco's Helm chart changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="dependency-resolution-improvements"&gt;Dependency resolution improvements&lt;/h4&gt;
&lt;p&gt;The artifact installation logic has been reworked to handle dependencies and references correctly. Previously,
dependencies could be duplicated or incorrectly resolved, and signature verification was skipped for full registry
references. Now dependencies are properly deduplicated, all refs are correctly resolved, and &lt;strong&gt;signatures are verified
for all resolved dependencies&lt;/strong&gt;, not just the top-level artifacts. This provides end-to-end verification of the entire
dependency chain.&lt;/p&gt;
&lt;p&gt;For more details
see &lt;a href="https://github.com/falcosecurity/falcoctl/issues/868"&gt;Inefficient deduplication logic and incorrect input handling for dependency resolution&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="support-for-cosign-v3"&gt;Support for cosign v3&lt;/h4&gt;
&lt;p&gt;Falcoctl now supports &lt;strong&gt;Cosign v3 bundle format&lt;/strong&gt; for signature verification. This is the new standard for signing OCI
artifacts, replacing the legacy &lt;code&gt;.sig&lt;/code&gt; tag format.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What this means for you:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Artifacts signed with cosign v3 are now fully supported&lt;/li&gt;
&lt;li&gt;Backward compatibility with cosign v2 signatures is maintained&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details see &lt;a href="https://github.com/falcosecurity/falcoctl/pull/880"&gt;feat: Upgrade to Cosign v3 with Bundle Format&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="key-fixes"&gt;Key fixes&lt;/h2&gt;
&lt;h3 id="evt-arg-filename-field-reintroduction"&gt;&lt;code&gt;evt.arg.filename&lt;/code&gt; field reintroduction&lt;/h3&gt;
&lt;p&gt;As part of the recent &amp;quot;drop enter&amp;quot; optimization initiative (which removed enter events for most syscalls to improve
performance), the filename argument - historically available only in the enter event for &lt;code&gt;execve&lt;/code&gt; and &lt;code&gt;execveat&lt;/code&gt; - was
inadvertently made unavailable. This caused a regression where specific context, such as the exact path provided to the
syscall (e.g., a symlink path versus the resolved binary path), was lost in the remaining exit event.&lt;/p&gt;
&lt;p&gt;In Falco 0.43.0 (via libs &lt;code&gt;0.23.0&lt;/code&gt;), this has been fixed. The filename argument is now correctly populated in the exit
events for these syscalls. Users can once again access this data using the evt.arg.filename field in their rules,
ensuring that the critical execution context is preserved without needing the deprecated enter events.&lt;/p&gt;
&lt;p&gt;For more details
see &lt;a href="https://github.com/falcosecurity/libs/issues/2709"&gt;Missing &amp;quot;filename&amp;quot; argument to execve syscall in libscap 0.22.x&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="falcoctl-signature-verification-fixes"&gt;Falcoctl signature verification fixes&lt;/h3&gt;
&lt;h4 id="signature-verification-fix-for-full-reference-artifacts"&gt;Signature verification fix for full reference artifacts&lt;/h4&gt;
&lt;p&gt;Fixed an issue where &lt;strong&gt;signature verification&lt;/strong&gt; was skipped for artifacts specified with a full registry reference (
e.g., &lt;code&gt;ghcr.io/falcosecurity/plugins/plugin/container:0.4.1&lt;/code&gt;). Now all artifacts are verified regardless of how they are
referenced.&lt;/p&gt;
&lt;h4 id="signature-verification-fix-for-authenticated-registries"&gt;Signature verification fix for authenticated registries&lt;/h4&gt;
&lt;p&gt;Signature verification now works correctly on &lt;strong&gt;private/authenticated registries&lt;/strong&gt;. Previously, verification would fail
with authentication errors even though the artifact pull succeeded, and credentials were not being passed to the
signature verification component.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Supported authentication methods:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Basic auth (Docker credentials)&lt;/li&gt;
&lt;li&gt;OAuth2 client credentials&lt;/li&gt;
&lt;li&gt;GCP Workload Identity (for GKE deployments)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details
see &lt;a href="https://github.com/falcosecurity/falcoctl/pull/891"&gt;fix(signature): pass registry credentials to cosign for signature verification&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="breaking-changes-and-deprecations"&gt;Breaking changes and deprecations&lt;/h2&gt;
&lt;p&gt;This version includes breaking changes you should be aware of before upgrading.&lt;/p&gt;
&lt;h3 id="bump-drivers-minimum-required-kernel-version-to-3-10"&gt;Bump drivers minimum required kernel version to &lt;code&gt;3.10&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Falco 0.43.0 introduces a breaking change regarding the Falco drivers. Starting with drivers version &lt;code&gt;9.1.0+driver&lt;/code&gt;, the
minimum required Linux kernel version has been bumped to &lt;code&gt;3.10&lt;/code&gt;. In practice, this only affects the &lt;code&gt;kmod&lt;/code&gt; driver and
means that the kernel module will explicitly fail to compile on kernels older than &lt;code&gt;3.10&lt;/code&gt;. This choice is motivated by
the fact that even Linux &lt;code&gt;3.10&lt;/code&gt; is a 12-year-old kernel, and its support ended in 2017: maintaining support for older
kernels is a maintenance burden and limits progress. This change enables the team to focus on modernizing the codebase
and improving stability for current environments.&lt;/p&gt;
&lt;h3 id="deprecation-warnings"&gt;Deprecation warnings&lt;/h3&gt;
&lt;p&gt;Falco 0.43.0 introduces several deprecation warnings to help users migrate to newer components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Legacy eBPF probe deprecation&lt;/strong&gt;: using the legacy eBPF probe (&lt;code&gt;engine.kind=ebpf&lt;/code&gt;) will now generate warnings&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gVisor engine deprecation&lt;/strong&gt;: using the gVisor engine (&lt;code&gt;engine.kind=gvisor&lt;/code&gt;) will now generate warnings&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gRPC deprecation&lt;/strong&gt;: using the gRPC output or the gRPC server (&lt;code&gt;grpc_output.enabled=true&lt;/code&gt; or &lt;code&gt;grpc.enabled=true&lt;/code&gt;),
will now generate warnings&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;Interested in trying out the new features? Use the resources below to get started.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/running/#docker"&gt;Container Images&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;falco&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-driver-loader&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-driver-loader"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="stay-connected"&gt;Stay connected&lt;/h2&gt;
&lt;p&gt;Join us on social media and in our community calls, held every other Wednesday! It's always great to have new members in
the community, and we're looking forward to hearing your feedback and ideas.&lt;/p&gt;
&lt;p&gt;You can find all the most up-to-date information at &lt;a href="https://falco.org/community/"&gt;https://falco.org/community/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog: GPG Key Rotation for Falco Packages (2026)</title><link>https://v0-43--falcosecurity.netlify.app/blog/gpg-key-rotation-2026/</link><pubDate>Fri, 12 Dec 2025 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/gpg-key-rotation-2026/</guid><description>
&lt;p&gt;The GPG key used to sign official Falco packages (RPM and DEB) is set to expire on &lt;strong&gt;January 17, 2026&lt;/strong&gt;. To ensure the security and continuity of our software distribution, the Falco maintainers will be rotating to a new 4096-bit RSA key.&lt;/p&gt;
&lt;p&gt;We have designed a two-phase &lt;strong&gt;&amp;quot;Soft Launch&amp;quot;&lt;/strong&gt; strategy to make this transition as smooth as possible, providing a one-month transition window before the old key is retired.&lt;/p&gt;
&lt;h2 id="the-rotation-plan"&gt;The Rotation Plan&lt;/h2&gt;
&lt;p&gt;To avoid immediate disruption, we are rolling out the new key in two distinct phases. You can follow the detailed progress in our &lt;a href="https://github.com/falcosecurity/falco/issues/3750"&gt;tracking issue #3750&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="phase-1-soft-launch-dec-12-2025"&gt;Phase 1: Soft Launch (Dec 12, 2025)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What happens:&lt;/strong&gt; The new GPG key has been published and added to our repository configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dev Builds:&lt;/strong&gt; Will begin using the &lt;strong&gt;New Key&lt;/strong&gt; immediately.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stable Builds:&lt;/strong&gt; No stable releases are planned for this phase. If any hotfixes are released, they will be signed with &lt;strong&gt;New Key&lt;/strong&gt; as well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Key Bundle:&lt;/strong&gt; The &lt;a href="https://falco.org/repo/falcosecurity-packages.asc"&gt;official key URL&lt;/a&gt; has been updated to serve a &lt;strong&gt;bundle&lt;/strong&gt; containing &lt;em&gt;both&lt;/em&gt; the Old (valid) and New (valid) keys.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="phase-2-hard-cut-over-jan-12-17-2026"&gt;Phase 2: Hard Cut-Over (Jan 12–17, 2026)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What happens:&lt;/strong&gt; This is the maintenance window where we fully switch to the new key.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mass Resign:&lt;/strong&gt; All existing stable packages on &lt;code&gt;download.falco.org&lt;/code&gt; will be resigned with the &lt;strong&gt;New Key&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revocation:&lt;/strong&gt; The Old Key will be officially revoked and removed from the active bundle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact:&lt;/strong&gt; If you have not updated your keyring by this date, your package manager (&lt;code&gt;apt&lt;/code&gt; or &lt;code&gt;yum&lt;/code&gt;) will reject updates with a signature verification error.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="action-items-for-users"&gt;Action Items for Users&lt;/h2&gt;
&lt;p&gt;We strongly recommend all users update their GPG keyring &lt;strong&gt;before January 12, 2026&lt;/strong&gt; to avoid interruption.&lt;/p&gt;
&lt;h3 id="new-users"&gt;New Users&lt;/h3&gt;
&lt;p&gt;If you are installing Falco for the first time following our &lt;a href="https://falco.org/docs/setup/packages/"&gt;Install on a host (DEB,RPM)&lt;/a&gt; instructions, no action is required. The installation process will guide you to fetch the new key bundle, ensuring you are ready for both phases.&lt;/p&gt;
&lt;h3 id="existing-users"&gt;Existing Users&lt;/h3&gt;
&lt;p&gt;If you have an existing Falco installation, you must manually import the new key. We have updated the key file at our standard URL to include both the old and new keys, allowing you to transition safely.&lt;/p&gt;
&lt;p&gt;For &lt;strong&gt;&lt;code&gt;apt&lt;/code&gt; users&lt;/strong&gt;, to update your keyring, run the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Download the updated key bundle (Old + New) and import it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://falco.org/repo/falcosecurity-packages.asc | &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sudo gpg --dearmor -o /usr/share/keyrings/falco-archive-keyring.gpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For &lt;strong&gt;&lt;code&gt;yum&lt;/code&gt; users&lt;/strong&gt;, to update your keyring, run the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Download the updated key bundle (Old + New) and import it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpm --import https://falco.org/repo/falcosecurity-packages.asc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Note: These commands overwrite the existing keyring file with the new bundle. Since the bundle contains both keys, your current installation will continue to work immediately, and will remain working after the January cut-over.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;For more details on &lt;code&gt;apt&lt;/code&gt; and &lt;code&gt;yum&lt;/code&gt; specific instructions, please refer to the &lt;a href="https://falco.org/docs/setup/packages/"&gt;Install on a host (DEB,RPM)&lt;/a&gt; page of our documentation.&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deadline:&lt;/strong&gt; Update your keys before &lt;strong&gt;Jan 12, 2026&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Old Key (Expiring Jan 17, 2026):&lt;/strong&gt; &lt;a href="https://v0-43--falcosecurity.netlify.app/repo/falcosecurity-14CB7A8D.asc"&gt;falcosecurity-14CB7A8D.asc&lt;/a&gt; (Fingerprint &lt;code&gt;2005399002D5E8FF59F28CE64021833E14CB7A8D&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Key:&lt;/strong&gt; &lt;a href="https://v0-43--falcosecurity.netlify.app/repo/falcosecurity-B35B1B1F.asc"&gt;falcosecurity-B35B1B1F.asc&lt;/a&gt; (Fingerprint &lt;code&gt;478B2FBBC75F4237B731DA4365106822B35B1B1F&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracking Issue:&lt;/strong&gt; &lt;a href="https://github.com/falcosecurity/falco/issues/3750"&gt;falcosecurity/falco#3750&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you encounter any issues during this transition, please reach out to us on the &lt;a href="https://www.google.com/search?q=https://kubernetes.slack.com/archives/CMWH3EH32"&gt;#falco channel&lt;/a&gt; on Kubernetes Slack or open an issue on GitHub.&lt;/p&gt;
&lt;p&gt;Thank you for your attention and cooperation in keeping Falco secure!&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.42.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-42-0/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-42-0/</guid><description>
&lt;p&gt;Dear Falco Community, today we are happy to announce the release of Falco 0.42.0!&lt;/p&gt;
&lt;p&gt;This release brings exciting new capabilities, including the capture feature, significant performance improvements, and important bug fixes that enhance Falco's capabilities.
During this release cycle, we merged:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;52 PRs on Falco, including 23 release note-worthy changes&lt;/li&gt;
&lt;li&gt;110 PRs on Falco libs, including 47 release note-worthy changes&lt;/li&gt;
&lt;li&gt;102 PRs on Falco drivers, including 29 release note-worthy changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We upgraded libs to version 0.22.1 and drivers to v9.0.0+driver. Thank you to our maintainers and contributors. This would not have been possible without your support and dedication!&lt;/p&gt;
&lt;p&gt;To learn everything about the changes, read on!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What's new? TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Key features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-42-0/#capture-recording-feature"&gt;Capture recording feature&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-42-0/#drop-enter-initiative"&gt;Drop enter initiative for performance&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-42-0/#plugin-event-schema-versioning"&gt;Plugin event schema validation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-42-0/#thread-table-auto-purging-configuration"&gt;Thread table auto-purging configuration&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-42-0/#static-fields"&gt;Static fields&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Key fixes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix thread table memory leak when parsing vfork (or equivalent clone/clone3 with CLONE_VFORK) exit from the caller process;&lt;/li&gt;
&lt;li&gt;Enable handling of multiple actions configured with &lt;code&gt;syscall_event_drops.actions&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;Disable dry-run restarts when Falco runs with config-watching disabled;&lt;/li&gt;
&lt;li&gt;Fix abseil-cpp for Alpine build;&lt;/li&gt;
&lt;li&gt;Fix detection sandbox containers for CRI and containerd runtimes (container plugin);&lt;/li&gt;
&lt;li&gt;Stability improvements for container plugin and static linking of libgcc/libstdc++ for legacy compatibility;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="card card-sm pageinfo pageinfo-warning my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;This release also comes with &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-42-0/#breaking-changes-and-deprecations"&gt;breaking changes&lt;/a&gt; that you should be aware of before upgrading.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="major-features-and-improvements"&gt;Major features and improvements&lt;/h2&gt;
&lt;p&gt;The 0.42.0 release contains a new capture feature and significant performance improvements. Here is a list of the key new capabilities.&lt;/p&gt;
&lt;h3 id="capture-recording-feature"&gt;Capture recording feature&lt;/h3&gt;
&lt;p&gt;Falco 0.42.0 introduces the new capture recording feature, now available at sandbox maturity. This capability allows Falco to generate &lt;code&gt;.scap&lt;/code&gt; files whenever a detection rule is triggered automatically.&lt;/p&gt;
&lt;p&gt;Each capture contains a detailed trace of system calls around the event, providing forensic-level visibility into what happened. The recordings can be opened directly in Stratoshark for Wireshark-style analysis of runtime behavior.&lt;/p&gt;
&lt;p&gt;The capture system is fully configurable: you can enable global recording or tie captures to specific Falco rules for targeted runtime snapshots.&lt;/p&gt;
&lt;p&gt;When targeting specific Falco rules (by setting &lt;code&gt;mode: rules&lt;/code&gt;, as shown in the configuration below), users can modify individual rules to enable capture by adding &lt;code&gt;capture: true&lt;/code&gt; and optionally &lt;code&gt;capture_duration&lt;/code&gt; to specific rules.
For example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Suspicious File Access&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;desc&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Detect suspicious file access patterns&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&amp;gt;&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; open_read and fd.name startswith &amp;#34;/etc/&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&amp;gt;&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Suspicious file access (user=%user.name command=%proc.cmdline file=%fd.name)&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;WARNING&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;capture&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;capture_duration&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;10000&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Capture for 10 seconds when this rule triggers&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This configuration will capture events for 10 seconds whenever the &amp;quot;Suspicious File Access&amp;quot; rule is triggered, overriding the default duration.&lt;/p&gt;
&lt;p&gt;Find below the configuration snippet to enable the capture feature in &lt;code&gt;falco.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;capture&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# -- Set to true to enable event capturing.&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# -- Prefix for capture files. Falco appends a timestamp and event number to ensure unique filenames.&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;path_prefix&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/tmp/falco&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# -- Capture mode. Can be &amp;#34;rules&amp;#34; or &amp;#34;all_rules&amp;#34;.&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;mode&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;rules&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# -- Default capture duration in milliseconds if not specified in the rule.&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;default_duration&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;5000&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Learn more at KubeCon + CloudNativeCon North America 2025:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kccncna2025.sched.com/event/27d4o/project-lightning-talk-when-falco-spots-trouble-the-shark-swims-in-gerald-combs-falco-core-maintainer"&gt;Project Lightning Talk: When Falco Spots Trouble, The Shark Swims In&lt;/a&gt; - Gerald Combs, Falco Core Maintainer&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kccncna2025.sched.com/event/27No0/beyond-the-clouds-falcos-ascent-in-performanc%5B%E2%80%A6%5Deep-visibility-leonardo-grasso-leonardo-di-giovanna-sysdig"&gt;Beyond the Cloud(s): Falco's Ascent in Performance and Deep Visibility&lt;/a&gt; - Leonardo Grasso &amp;amp; Leonardo Di Giovanna, Sysdig&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="drop-enter-initiative"&gt;Drop enter initiative&lt;/h3&gt;
&lt;p&gt;We've just shipped a significant performance improvement: syscall enter events have been completely removed from our event pipeline.&lt;/p&gt;
&lt;p&gt;In Falco, each system call traditionally used to generate two events: an enter event when syscall kernel processing starts (i.e., before its arguments are processed) and an exit event when the kernel processing completes. Now that we collect all relevant information on exit events, we can drop the generation and processing of enter events.&lt;/p&gt;
&lt;p&gt;Nevertheless, for TOCTOU (Time-of-Check to Time-of-Use) mitigation, a few selected enter events are still monitored internally — their relevant data is captured and stored — but these events are no longer pushed downstream to the userspace processing pipeline.&lt;/p&gt;
&lt;p&gt;By focusing solely on syscall exit events, we've nearly halved the number of events generated and processed by userspace, eliminating redundant data collection.
This reduces the Falco instrumentation overhead, improving workloads' performance up to 20% (by reducing syscall execution latency).
It also decreases Falco's CPU usage up to 30%, especially in high-syscall environments.&lt;/p&gt;
&lt;p&gt;From a developer's perspective, this also removes ambiguity about where syscall parameters should be defined, streamlines event processing logic, and makes event handling code cleaner and easier to maintain.&lt;/p&gt;
&lt;p&gt;Overall, you can expect better performance, leaner code, and a more predictable event model moving forward.&lt;/p&gt;
&lt;p&gt;For more details, see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/libs/pull/2068"&gt;Proposal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/libs/issues/2427"&gt;[Tracking] Extend syscall exit events with syscall enter events parameters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/libs/issues/2407"&gt;TOCTOU mitigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/libs/issues/2588"&gt;[Tracking] Drop syscall enter events&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="plugin-event-schema-versioning"&gt;Plugin event schema versioning&lt;/h3&gt;
&lt;p&gt;Falco 0.42.0 introduces plugin event schema validation, enabling plugins to specify their compatible event schema version.&lt;/p&gt;
&lt;p&gt;It provides an event schema validation system for syscall events consumed by plugins that offer parsing and/or field extraction capabilities, ensuring backward compatibility and clear error reporting for plugins that depend on specific Event Schema Versions.&lt;/p&gt;
&lt;p&gt;If the plugin does not declare a required Schema Version, it is assumed to be compatible with 3.0.0, the initial major version when the plugin event schema validation was introduced.&lt;/p&gt;
&lt;p&gt;The plugins should implement a new function of the Plugin API to declare the required schema version.
Find below the signature of the new API function:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// New plugin API functions for schema management
typedef struct {
...
// Event schema version check
//
// Return the minimum event schema version required by this plugin.
// Required: no
// Arguments:
// - s: the plugin state, returned by init(). Can be NULL.
// Return value: the event schema version string, in the following format:
// &amp;#34;&amp;lt;major&amp;gt;.&amp;lt;minor&amp;gt;.&amp;lt;patch&amp;gt;&amp;#34;, e.g. &amp;#34;4.0.0&amp;#34;.
// If the function is not implemented or NULL is returned, the plugin is assumed to be
// compatible with schema version 3.0.0.
//
const char* (*get_required_event_schema_version)(ss_plugin_t* s);
} plugin_api;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For more details, see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/libs/blob/master/proposals/20250923-plugin-system-event-schema-versioning.md"&gt;Plugin system event schema versioning proposal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="thread-table-auto-purging-configuration"&gt;Thread table auto-purging configuration&lt;/h3&gt;
&lt;p&gt;We've added a few new &lt;code&gt;falco_libs&lt;/code&gt; configurations for advanced users who want finer control over Falco's performance and resource usage.
It introduces tunable parameters for Falco's internal thread table, which tracks active threads:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;thread_table_size&lt;/code&gt; defines the maximum number of entries.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;thread_table_auto_purging_interval_s&lt;/code&gt; controls how often stale threads are cleaned up.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;thread_table_auto_purging_thread_timeout_s&lt;/code&gt; sets how long inactive threads are kept before removal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These options let you balance memory efficiency, CPU usage, and state accuracy, with related metrics (&lt;code&gt;n_drops_full_threadtable&lt;/code&gt;, &lt;code&gt;n_store_evts_drops&lt;/code&gt;) available to guide tuning.&lt;/p&gt;
&lt;h3 id="static-fields"&gt;Static fields&lt;/h3&gt;
&lt;p&gt;Falco 0.42.0 adds a new &lt;code&gt;static_fields&lt;/code&gt; configuration object allowing users to add statically defined fields to the
Falco engine. The following example illustrates how to specify new static fields:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;static_fields&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;foo&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;bar&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;foo2&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;${bar2}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Notice that &lt;code&gt;foo2: ${bar2}&lt;/code&gt; leverages the Falco's behavior of expanding env variables in config YAML.&lt;/p&gt;
&lt;p&gt;After specifying them, these fields can be used in normal rule conditions, by prepending the &lt;code&gt;static.&lt;/code&gt; prefix (e.g.:
&lt;code&gt;evt.type=open and static.foo=bar&lt;/code&gt;).
Moreover, if &lt;code&gt;append_output.suggested_output&lt;/code&gt; is true, they'll be automatically appended to each rule output, in the
form &lt;code&gt;static_foo=bar&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For more details, see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/issues/3554"&gt;Feature request&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/3557"&gt;PR adding the feature&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="breaking-changes-and-deprecations"&gt;Breaking changes and deprecations ⚠️&lt;/h2&gt;
&lt;p&gt;This version comes with breaking changes that you should be aware of before upgrading.&lt;/p&gt;
&lt;h3 id="event-direction-and-evt-dir-deprecation"&gt;Event direction and &lt;code&gt;evt.dir&lt;/code&gt; deprecation&lt;/h3&gt;
&lt;p&gt;Following the enter events initiative, the &lt;code&gt;evt.dir&lt;/code&gt; field, as well as the concept of &amp;quot;direction&amp;quot;, have been deprecated in Falco &lt;code&gt;0.42.0&lt;/code&gt; and will be removed in a future release.
Until field removal and since Falco &lt;code&gt;0.42.0&lt;/code&gt;, specifying &lt;code&gt;evt.dir='&amp;gt;'&lt;/code&gt; will match nothing, while specifying &lt;code&gt;evt.dir='&amp;lt;'&lt;/code&gt; will match everything, with a warning informing the user about the deprecation.
Users are encouraged to get rid of any reference to &lt;code&gt;evt.dir&lt;/code&gt;, as its presence will result in an error at rules loading time after its removal.&lt;/p&gt;
&lt;h3 id="plugin-api-changes"&gt;Plugin API changes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Old plugins consuming syscall events not declaring the required event schema version will be incompatible with Falco 0.42.0 and later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="deprecation-warnings"&gt;Deprecation warnings&lt;/h3&gt;
&lt;p&gt;Falco 0.42.0 introduces several deprecation warnings to help users migrate to newer APIs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;evt.dir field deprecation&lt;/strong&gt;: Rules using the deprecated &lt;code&gt;evt.dir&lt;/code&gt; field will now generate warnings;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enter events drop stats&lt;/strong&gt;: Prometheus metrics for enter events drop statistics have been deprecated;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuration warnings&lt;/strong&gt;: Enhanced warning system for deprecated configuration options;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;Interested in trying out the new features? Use the resources below to get started.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/running/#docker"&gt;Container Images&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;falco&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-driver-loader&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-driver-loader"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="stay-connected"&gt;Stay connected&lt;/h2&gt;
&lt;p&gt;Join us on social media and in our community calls, held every other Wednesday! It's always great to have new members in the community, and we're looking forward to hearing your feedback and ideas.&lt;/p&gt;
&lt;p&gt;You can find all the most up-to-date information at &lt;a href="https://falco.org/community/"&gt;https://falco.org/community/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.41.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-41-0/</link><pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-41-0/</guid><description>
&lt;p&gt;Dear Falco Community, today we are happy to announce the release of Falco 0.41.0!&lt;/p&gt;
&lt;p&gt;This version brings several new features, performance enhancements, and bug fixes that streamline Falco’s detection capabilities.
During this release cycle, we merged more than 50 PRs on Falco and around 130 PRs for libs and drivers, version 0.21.0 and version 8.1.0, respectively. Thank you to our maintainers and contributors. This would not have been possible without your support and dedication!&lt;/p&gt;
&lt;p&gt;To learn everything about the changes, read on!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What’s new? TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Key features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-41-0/#reimplemented-container-engines-support"&gt;Reimplemented container engines support from scratch&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-41-0/#kubernetes-operator"&gt;A Kubernetes operator is taking shape&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Falco's &lt;code&gt;config_files&lt;/code&gt; configuration gained support to specify the merge strategy;&lt;/li&gt;
&lt;li&gt;Modern eBPF driver is now capable of trying to load multiple programs for each event; consequently, &lt;code&gt;sendmmsg&lt;/code&gt; and &lt;code&gt;recvmmsg&lt;/code&gt; will now make use of &lt;code&gt;bpf_loop&lt;/code&gt; eBPF helper where available, boosting their performances;&lt;/li&gt;
&lt;li&gt;New &lt;code&gt;proc.aargs&lt;/code&gt; field available, ie: a lookup for an ancestor args field;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;proc.args&lt;/code&gt; gained support for indexed access, to only check a certain argument;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;json_include_output_fields&lt;/code&gt; configuration key for Falco to control whether output fields are included in the JSON message;&lt;/li&gt;
&lt;li&gt;Ongoing work to improve libs code modularity;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Key fixes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avoid kmod crashing when a CPU gets enabled at runtime;&lt;/li&gt;
&lt;li&gt;Fixed Falco Prometheus metrics with multiple event sources enabled;&lt;/li&gt;
&lt;li&gt;Fixed RPM packages evaluation of RPM scripts;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-o&lt;/code&gt; options do now correctly override included &lt;code&gt;config_files&lt;/code&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="card card-sm pageinfo pageinfo-warning my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;This release also comes with &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-41-0/#breaking-changes-and-deprecations"&gt;breaking changes&lt;/a&gt; that you should be aware of before upgrading.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="major-features-and-improvements"&gt;Major features and improvements&lt;/h2&gt;
&lt;p&gt;The 0.41.0 release contains a number of features and UX improvements. Here is a list of some of the key new capabilities.&lt;/p&gt;
&lt;h3 id="reimplemented-container-engines-support"&gt;Reimplemented container engines support&lt;/h3&gt;
&lt;p&gt;In the Falco 0.41.0 release, the Falco team has completely revised its support for container engines.
Key improvements include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Container support is now a plugin;&lt;/li&gt;
&lt;li&gt;The plugin will attach a listener to the engine's SDKs &lt;code&gt;onCreate&lt;/code&gt; signal; since &lt;code&gt;onCreate&lt;/code&gt; comes way before &lt;code&gt;onStart&lt;/code&gt;, we have plenty of time to deliver the container's metadata before the first process in the container is even started;&lt;/li&gt;
&lt;li&gt;For now, it is bundled within Falco to avoid breaking changes, but in the future, it will need to be downloaded through &lt;code&gt;falcoctl&lt;/code&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These changes should address all issues related to missing container metadata.&lt;/p&gt;
&lt;h3 id="kubernetes-operator"&gt;Kubernetes operator&lt;/h3&gt;
&lt;p&gt;In Falco 0.41.0, we worked hard to create a Falco k8s operator: &lt;a href="https://github.com/falcosecurity/falco-operator/"&gt;https://github.com/falcosecurity/falco-operator/&lt;/a&gt;.
For now, this is considered a technical preview, but we will deliver a fully functional operator very soon. Expect more news in a new blog post!&lt;/p&gt;
&lt;h2 id="security-best-practices-improvements"&gt;Security best practices improvements&lt;/h2&gt;
&lt;p&gt;We are grateful for the suggestions we received from security experts and adopters in our community, and so we implemented the following enhancements:&lt;/p&gt;
&lt;p&gt;The modern eBPF probe will no longer store security sensitive settings in the &lt;code&gt;.bss&lt;/code&gt; mmapable segment but will use dedicated maps instead. This is a security best practice because it prevents other processes running with elevated privileges from tampering with the map file descriptor, which would be harder to detect. We would like to thank &lt;a href="https://github.com/mouadk"&gt;Mouad Kondah&lt;/a&gt; for suggesting this change!&lt;/p&gt;
&lt;p&gt;Falco will no longer consider rule files or contents of rule directories that do not have a &lt;code&gt;.yml&lt;/code&gt;/&lt;code&gt;.yaml&lt;/code&gt; extension. This prevents accidental processing of files that are not related to rules. We would like to thank our user &lt;a href="https://github.com/tks98"&gt;Travis Smith&lt;/a&gt; for suggesting this change!&lt;/p&gt;
&lt;h2 id="breaking-changes-and-deprecations"&gt;Breaking changes and deprecations ⚠️&lt;/h2&gt;
&lt;p&gt;This version comes with breaking changes, mostly in the configuration interface.&lt;/p&gt;
&lt;h3 id="removed-command-line-options-and-equivalent-configuration-options"&gt;Removed command line options and equivalent configuration options&lt;/h3&gt;
&lt;p&gt;We removed the already deprecated options &lt;code&gt;-S&lt;/code&gt;/&lt;code&gt;--snaplen&lt;/code&gt;, &lt;code&gt;-A&lt;/code&gt;, and &lt;code&gt;-b&lt;/code&gt;, and it is now possible to achieve the same result through the Falco configuration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;for &lt;code&gt;-S/--snaplen&lt;/code&gt;: &lt;code&gt;falco_libs.snaplen&lt;/code&gt; config key;&lt;/li&gt;
&lt;li&gt;for &lt;code&gt;-A&lt;/code&gt;: &lt;code&gt;base_syscalls.all&lt;/code&gt; config key;&lt;/li&gt;
&lt;li&gt;for &lt;code&gt;-b&lt;/code&gt;: &lt;code&gt;buffer_format_base64&lt;/code&gt; config key;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The configuration options for the container engines, added in 0.40.0, have been completely dropped in favor of the new plugin init configuration which can be found at &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/container#configuration"&gt;https://github.com/falcosecurity/plugins/tree/main/plugins/container#configuration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can find more information on breaking changes in the &lt;a href="https://github.com/falcosecurity/falco/issues/3497"&gt;tracking issue&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="behavior-changes"&gt;Behavior changes&lt;/h3&gt;
&lt;p&gt;Falco will now only consider and consequently load rules whose name ends in &lt;code&gt;.yml&lt;/code&gt; or &lt;code&gt;.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="dropped-features"&gt;Dropped features&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;syslog&lt;/code&gt; related fields were dropped by libs, since they were unused.&lt;/p&gt;
&lt;p&gt;Also, as a consequence of the new &lt;code&gt;container&lt;/code&gt; plugin, some breaking changes had to take place:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the musl build is inherently not able to load plugins; that means that it loses container metadata support;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falcosecurity_scap_n_containers&lt;/code&gt; and &lt;code&gt;falcosecurity_scap_n_missing_container_images&lt;/code&gt; metrics are now moved to the plugin, and their name now have the &lt;code&gt;falcosecurity_plugins_&lt;/code&gt; prefix;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-pc&lt;/code&gt; and &lt;code&gt;-pk&lt;/code&gt; command line options are now ineffective; it is up to the container and k8smeta plugins to declare suggested fields to be used as output fields; consequently, &lt;code&gt;container_image=%container.image.repository&lt;/code&gt; and &lt;code&gt;k8s_ns=%k8s.ns.name&lt;/code&gt; changed their name to &lt;code&gt;container_image_repository=&lt;/code&gt; and &lt;code&gt;k8s_ns_name=&lt;/code&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="deprecations"&gt;Deprecations&lt;/h3&gt;
&lt;p&gt;In Falco 0.41.0, we have deprecated the following options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-p&lt;/code&gt; cli flag; the only remaining user for it is gVisor, which will be ported to a plugin sooner or later and will then make use of the suggested output fields plugin API;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;Interested in trying out the new features? Use the resources below to get started.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/running/#docker"&gt;Container Images&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;falco&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-driver-loader&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-driver-loader"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-s-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;Falco is more mature with each release. Following its &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-graduation/"&gt;graduation&lt;/a&gt;, we have published the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/roadmap/#road-to-falco-1-0-0"&gt;roadmap&lt;/a&gt; for version 1.0.0, which is guiding us in the next steps. For the next release, you can expect more stability, a refined k8s operator, improved performance, and, as always, new detections and fixes.&lt;/p&gt;
&lt;h2 id="stay-connected"&gt;Stay connected&lt;/h2&gt;
&lt;p&gt;Join us on social media and in our weekly community calls! It’s always great to have new members in the community, and we’re looking forward to hearing your feedback and ideas.&lt;/p&gt;
&lt;p&gt;You can find all the most up-to-date information at &lt;a href="https://falco.org/community/"&gt;https://falco.org/community/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog: Detecting Supply Chain Attacks with Falco Actions</title><link>https://v0-43--falcosecurity.netlify.app/blog/detecting-supplychain-attacks-with-falco-action/</link><pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/detecting-supplychain-attacks-with-falco-action/</guid><description>
&lt;p&gt;The recently discovered CVE for the GitHub action &lt;code&gt;tj-actions/changed-files&lt;/code&gt; brought to light a topic that is really critical for companies: supply chain attacks. With that, we want to discuss and show a bit about how Falco can help your organization detect this kind of attack and other suspect behaviors inside your CI/CD pipeline.&lt;/p&gt;
&lt;h2 id="what-is-falco"&gt;What is Falco?&lt;/h2&gt;
&lt;p&gt;Falco is a cloud native security tool that provides runtime security across hosts, containers, Kubernetes, and cloud environments. It leverages custom rules on Linux kernel events and other data sources through plugins, enriching event data with contextual metadata to deliver real-time alerts. Falco enables the detection of abnormal behavior, potential security threats, and compliance violations.&lt;/p&gt;
&lt;h2 id="what-is-falco-actions"&gt;What is Falco Actions?&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/falcosecurity/falco-actions"&gt;Falco Actions&lt;/a&gt; enable you to run Falco in GitHub Actions to detect suspicious behavior in your CI/CD workflows. If you run it in a pull request, the action will create a comment with the findings.&lt;/p&gt;
&lt;p&gt;Thanks to ad-hoc Falco rules specific to this use case, these GitHub actions can monitor your GitHub runner and detect software supply chain attacks.&lt;/p&gt;
&lt;h2 id="using-falco-actions"&gt;Using Falco Actions&lt;/h2&gt;
&lt;p&gt;To have Falco inside your pipeline, you need to add these two actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;falcosecurity/falco-actions/start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falcosecurity/falco-actions/stop&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Below you can see an example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;CI&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;on&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;push&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;pull_request&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;jobs&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;build&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;runs-on&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ubuntu-latest&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;permissions&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;contents&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;read&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;actions&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;read&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;steps&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;uses&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;actions/checkout@v4&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Start Falco&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;uses&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falcosecurity/falco-actions/start@main&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;with&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;mode&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;live&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falco-version&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#39;0.40.0&amp;#39;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;verbose&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;My Custom Step&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;run&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; echo &amp;#34;This is my custom step&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Stop Falco&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;uses&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falcosecurity/falco-actions/start@main&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;with&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;mode&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;live&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;verbose&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;OBS: main is being used here only to simplify how it works, you should always pin your dependencies to a specific commit SHA.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;After the execution, you will be able to see the results at the github action summary.&lt;/p&gt;
&lt;p&gt;If you want a more detailed report, you can use the action &lt;code&gt;falcosecurity/falco-actions/analyze&lt;/code&gt;; it will allow you to have a better report with information like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Falco rules triggered during steps' execution.&lt;/li&gt;
&lt;li&gt;Contacted IPs&lt;/li&gt;
&lt;li&gt;Contacted DNS domains&lt;/li&gt;
&lt;li&gt;SHA256 hash of spawned executables&lt;/li&gt;
&lt;li&gt;Spawned container images&lt;/li&gt;
&lt;li&gt;Written files&lt;/li&gt;
&lt;li&gt;A summary of the report generated with OpenAI&lt;/li&gt;
&lt;li&gt;Reputation of Contacted IPs&lt;/li&gt;
&lt;li&gt;Reputation of SHA256 hashes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more informations about the usage, you can check the &lt;a href="https://github.com/falcosecurity/falco-actions"&gt;github repository&lt;/a&gt; for the actions.&lt;/p&gt;
&lt;h2 id="default-rules-file"&gt;Default rules file&lt;/h2&gt;
&lt;p&gt;By default, Falco action will detect a variety of events, following the &lt;a href="https://github.com/falcosecurity/falco-actions/blob/main/rules/falco_cicd_rules.yaml"&gt;default CICD rules&lt;/a&gt;, that can be overridden if you want.&lt;/p&gt;
&lt;p&gt;In the example from the &lt;code&gt;tj-actions/changed-files&lt;/code&gt; exploit, one rule that would be triggered is the &lt;strong&gt;Process Dumping Memory of Others&lt;/strong&gt;, which was used during the exploit to dump environment variables from the main process and print them as part of the Github runner execution.&lt;/p&gt;
&lt;p&gt;The Falco team is always adding new rules to ensure our users get value out of the box, but you can also write your own rules according to your company policy.&lt;/p&gt;
&lt;h2 id="conclusions"&gt;Conclusions&lt;/h2&gt;
&lt;p&gt;These actions are just the beginning of having the Falco capabilities inside the CI/CD pipelines. You can customize and have your own set of rules, keeping all environments and scenarios covered and protected from supply chain attacks.&lt;/p&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet!&lt;/h2&gt;
&lt;p&gt;As always, we meet every 2 weeks on Wednesday at 4pm UTC in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the #falco channel on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Join the Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy 😎,&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Igor and Edson&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Detecting Threats in OVHcloud MKS Audit Logs with Falco</title><link>https://v0-43--falcosecurity.netlify.app/blog/detect-threats-falco-ovh-mks-audit-logs-plugin/</link><pubDate>Thu, 13 Mar 2025 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/detect-threats-falco-ovh-mks-audit-logs-plugin/</guid><description>
&lt;p&gt;Detecting threats in a Kubernetes cluster can be challenging, we generally don't know where and how to start.
The good news is that we have an amount of valuable logs that can help us to know what is happened in the cluster. Indeed, each action requested or done by a user or an app, in a cluster, is recorded in Audit Logs.
Kubernetes events are key to understanding the behavior of a cluster.&lt;/p&gt;
&lt;p&gt;We already provide plugins that let you parse Audit Logs and use Falco to detect threats from GKE, EKS and AKS clusters. With our latest plugin, you'll now have the same powerful threat detection capabilities for your OVHcloud MKS clusters 🎉.&lt;/p&gt;
&lt;h2 id="what-is-falco"&gt;What is Falco?&lt;/h2&gt;
&lt;p&gt;Falco is an Open Source cloud-native runtime security tool. It provides near real-time threat detection for cloud, container, and Kubernetes workloads by leveraging runtime insights. Falco can monitor events from various sources, including the Linux kernel, and enrich them with metadata from the Kubernetes API server, container runtime, and more.&lt;/p&gt;
&lt;p&gt;Falco can receive &lt;strong&gt;Events&lt;/strong&gt;, compare them to a set of &lt;strong&gt;Rules&lt;/strong&gt; to determine the actions to perform and generate &lt;strong&gt;Alerts&lt;/strong&gt; to different endpoints.&lt;/p&gt;
&lt;h2 id="what-is-the-ovh-mks-audit-logs-plugin"&gt;What is the OVH MKS Audit Logs plugin?&lt;/h2&gt;
&lt;p&gt;The OVH audit logs plugin (&lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-ovh"&gt;k8saudit-ovh&lt;/a&gt;) extends Falco's capabilities to OVHcloud Managed Kubernetes Service (MKS) clusters, providing you with the same security insights and threat detection Falco already offers for GKE, EKS and AKS environments.&lt;/p&gt;
&lt;p&gt;With this plugin, you can seamlessly integrate MKS Audit Logs into Falco's event processing pipeline, enabling it to identify anomalies, suspicious activities, and policy violations within your MKS-based workloads.&lt;/p&gt;
&lt;p&gt;Concretely, when a user executes some &lt;strong&gt;kubectl&lt;/strong&gt; commands in an OVHcloud MKS cluster, Audit Logs will be generated. Falco is listening to them, and depending on the configured rules to follow, it will generate some alerts.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/falco-apiserver.png" alt="Falco Kubernetes API Server Audit Logs" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="using-ovh-mks-audit-logs-plugin"&gt;Using OVH MKS Audit Logs plugin&lt;/h2&gt;
&lt;p&gt;In order to use the OVH MKS Audit Logs plugin, you must follow several steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;deploy an OVHcloud LDP (Logs Data Platform)&lt;/li&gt;
&lt;li&gt;create a data stream into this LDP&lt;/li&gt;
&lt;li&gt;connect an OVHcloud MKS cluster to the data stream (to send Audit Logs into it)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To be able to access our Kubernetes clusters' Audit Logs, you need to deploy an &lt;a href="https://www.ovhcloud.com/en/identity-security-operations/logs-data-platform/"&gt;LDP&lt;/a&gt;. LDP is the managed platform for collecting, processing, analyzing, and storing your logs of the OVHcloud products. Deploy an LDP (Bare Metal Cloud universe) with whatever plan you want.&lt;/p&gt;
&lt;p&gt;OVHcloud Kubernetes Audit Logs will be stored in a data stream. The OVHcloud Audit Logs Falco plugin receive the audit logs through Websocket so you need to enable &lt;strong&gt;Websocket broadcasting&lt;/strong&gt; when you create the data stream on LDP.&lt;/p&gt;
&lt;p&gt;Retrieve the Websocket URL, follow &lt;a href="https://help.ovhcloud.com/csm/en-ie-logs-data-platform-ldp-tail?id=kb_article_view&amp;amp;sysparm_article=KB0055757#retrieve-your-websocket-address"&gt;the guide&lt;/a&gt; to do so.
The Websocket address have this kind of format: &lt;strong&gt;wss://gra&lt;xxx&gt;.logs.ovh.com/tail/?tk=&lt;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Finally, you have to &lt;a href="https://help.ovhcloud.com/csm/en-public-cloud-kubernetes-forwarding-audit-logs?id=kb_article_view&amp;amp;sysparm_article=KB0062285#enabling-audit-log-forwarding-using-the-ovhcloud-control-panel"&gt;connect a MKS cluster to the LDP data stream&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="configuring-falco-to-use-ovh-audit-logs-plugin"&gt;Configuring Falco to use OVH Audit Logs plugin&lt;/h2&gt;
&lt;h3 id="running-locally"&gt;Running locally&lt;/h3&gt;
&lt;p&gt;If you have a Falco running locally, using &lt;a href="https://github.com/falcosecurity/falcoctl"&gt;falcoctl&lt;/a&gt;, add the &lt;strong&gt;falcosecurity index&lt;/strong&gt; (if it's not already the case) and install the k8saudit-ovh Falco plugin:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Add falcosecurity index&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo falcoctl index add falcosecurity https://falcosecurity.github.io/falcoctl/index.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Install k8saudit-ovh Falco plugin&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo falcoctl artifact install k8saudit-ovh&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Fill your &lt;strong&gt;falco.yaml&lt;/strong&gt; file in order to add the plugin configuration:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8saudit-ovh&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/usr/share/falco/plugins/libk8saudit-ovh.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;open_params&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&amp;lt;OVH LDP WEBSOCKET URL&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# gra&amp;lt;x&amp;gt;.logs.ovh.com/tail/?tk=&amp;lt;ID&amp;gt;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;json&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;libjson.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;init_config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;load_plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[k8saudit-ovh, json]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;stdout_output&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="running-in-a-kubernetes-cluster"&gt;Running in a Kubernetes cluster&lt;/h3&gt;
&lt;p&gt;If you have a Falco running in a Kubernetes cluster (on OVHcloud MKS or on another cluster), deployed with Helm, create a &lt;strong&gt;values.yaml&lt;/strong&gt; file with the following content:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tty&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kubernetes&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Just a Deployment with 1 replica (instead of a Daemonset) to have only one Pod that pulls the MKS Audit Logs from a OVHcloud LDP&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;controller&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;deployment&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;deployment&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;replicas&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falco&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rule_matching&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;all&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rules_files&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/k8s_audit_rules.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/rules.d&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8saudit-ovh&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;libk8saudit-ovh.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;open_params&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;gra&amp;lt;x&amp;gt;.logs.ovh.com/tail/?tk=&amp;lt;ID&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Replace with your LDP Websocket URL&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;json&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;libjson.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;init_config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Plugins that Falco will load. Note: the same plugins are installed by the falcoctl-artifact-install init container.&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;load_plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[k8saudit-ovh, json]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;driver&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;collectors&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# use falcoctl to install automatically the plugin and the rules&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falcoctl&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;artifact&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;install&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;follow&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;indexes&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falcosecurity&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;https://falcosecurity.github.io/falcoctl/index.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;artifact&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;allowedTypes&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- plugin&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- rulesfile&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;install&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;resolveDeps&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;refs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[k8saudit-rules:0, k8saudit-ovh:0.1, json:0]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;follow&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;refs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[k8saudit-rules:0]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This &lt;strong&gt;values.yaml&lt;/strong&gt; file will install Falco with the &lt;strong&gt;k8saudit-ovh&lt;/strong&gt; and the &lt;strong&gt;json&lt;/strong&gt; plugins.&lt;/p&gt;
&lt;p&gt;Install the latest version of Falco with &lt;strong&gt;helm install&lt;/strong&gt; command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ helm install falco --create-namespace --namespace falco --values&lt;span style="color:#666"&gt;=&lt;/span&gt;values.yaml falcosecurity/falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command will install the latest version of Falco, with the k8saudit-ovh and json plugins, and create a new falco namespace.&lt;/p&gt;
&lt;p&gt;Or if you already have Falco deployed in a Kubernetes cluster, you can use the &lt;strong&gt;helm update&lt;/strong&gt; command instead:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ helm update falco --create-namespace --namespace falco --values&lt;span style="color:#666"&gt;=&lt;/span&gt;values.yaml falcosecurity/falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once the Falco pod is ready, run the following command to see the logs:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl logs -l app.kubernetes.io/name&lt;span style="color:#666"&gt;=&lt;/span&gt;falco -n falco -c falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should see logs like that:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl logs -l app.kubernetes.io/name&lt;span style="color:#666"&gt;=&lt;/span&gt;falco -n falco -c falco
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mon Feb &lt;span style="color:#666"&gt;10&lt;/span&gt; 09:15:35 2025: /etc/falco/k8s_audit_rules.yaml | schema validation: ok
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mon Feb &lt;span style="color:#666"&gt;10&lt;/span&gt; 09:15:35 2025: Hostname value has been overridden via environment variable to: my-pool-1-node-921b61
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mon Feb &lt;span style="color:#666"&gt;10&lt;/span&gt; 09:15:35 2025: The chosen syscall buffer dimension is: &lt;span style="color:#666"&gt;8388608&lt;/span&gt; bytes &lt;span style="color:#666"&gt;(&lt;/span&gt;&lt;span style="color:#666"&gt;8&lt;/span&gt; MBs&lt;span style="color:#666"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mon Feb &lt;span style="color:#666"&gt;10&lt;/span&gt; 09:15:35 2025: Starting health webserver with threadiness 2, listening on 0.0.0.0:8765
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mon Feb &lt;span style="color:#666"&gt;10&lt;/span&gt; 09:15:35 2025: Loaded event sources: syscall, k8s_audit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mon Feb &lt;span style="color:#666"&gt;10&lt;/span&gt; 09:15:35 2025: Enabled event sources: k8s_audit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Mon Feb &lt;span style="color:#666"&gt;10&lt;/span&gt; 09:15:35 2025: Opening &lt;span style="color:#b44"&gt;&amp;#39;k8s_audit&amp;#39;&lt;/span&gt; &lt;span style="color:#a2f"&gt;source&lt;/span&gt; with plugin &lt;span style="color:#b44"&gt;&amp;#39;k8saudit-ovh&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;{&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;hostname&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;my-pool-1-node-921b61&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;output&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;09:15:40.698757000: Warning K8s Operation performed by user not in allowed list of users (user=csi-cinder-controller target=csi-6afb06dce281b86b7bab718b5d966dc261b2b1554941ae449519a128cb2e3fb3/volumeattachments verb=patch uri=/apis/storage.k8s.io/v1/volumeattachments/csi-6afb06dce281b86b7bab718b5d966dc261b2b1554941ae449519a128cb2e3fb3/status resp=200)&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;output_fields&amp;#34;&lt;/span&gt;:&lt;span style="color:#666"&gt;{&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;evt.time&amp;#34;&lt;/span&gt;:1739178940698757000,&lt;span style="color:#b44"&gt;&amp;#34;ka.response.code&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;200&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.name&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;csi-6afb06dce281b86b7bab718b5d966dc261b2b1554941ae449519a128cb2e3fb3&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.resource&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;volumeattachments&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.uri&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;/apis/storage.k8s.io/v1/volumeattachments/csi-6afb06dce281b86b7bab718b5d966dc261b2b1554941ae449519a128cb2e3fb3/status&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.user.name&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;csi-cinder-controller&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.verb&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;patch&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;}&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;priority&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;Warning&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;rule&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;Disallowed K8s User&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;source&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;k8s_audit&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;tags&amp;#34;&lt;/span&gt;:&lt;span style="color:#666"&gt;[&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;k8s&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;]&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;2025-02-10T09:15:40.698757000Z&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;{&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;hostname&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;my-pool-1-node-921b61&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;output&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;09:15:57.508657000: Warning K8s Operation performed by user not in allowed list of users (user=yacht target=my-pool-1.18051c0a88716868/events verb=patch uri=/api/v1/namespaces/default/events/my-pool-1.18051c0a88716868 resp=403)&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;output_fields&amp;#34;&lt;/span&gt;:&lt;span style="color:#666"&gt;{&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;evt.time&amp;#34;&lt;/span&gt;:1739178957508657000,&lt;span style="color:#b44"&gt;&amp;#34;ka.response.code&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;403&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.name&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;my-pool-1.18051c0a88716868&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.resource&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;events&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.uri&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;/api/v1/namespaces/default/events/my-pool-1.18051c0a88716868&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.user.name&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;yacht&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.verb&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;patch&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;}&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;priority&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;Warning&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;rule&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;Disallowed K8s User&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;source&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;k8s_audit&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;tags&amp;#34;&lt;/span&gt;:&lt;span style="color:#666"&gt;[&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;k8s&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;]&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;2025-02-10T09:15:57.508657000Z&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;{&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;hostname&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;my-pool-1-node-921b61&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;output&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;09:15:57.807013000: Warning K8s Operation performed by user not in allowed list of users (user=yacht target=my-pool-1/nodepools verb=update uri=/apis/kube.cloud.ovh.com/v1alpha1/nodepools/my-pool-1/status resp=200)&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;output_fields&amp;#34;&lt;/span&gt;:&lt;span style="color:#666"&gt;{&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;evt.time&amp;#34;&lt;/span&gt;:1739178957807013000,&lt;span style="color:#b44"&gt;&amp;#34;ka.response.code&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;200&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.name&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;my-pool-1&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.resource&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;nodepools&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.uri&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;/apis/kube.cloud.ovh.com/v1alpha1/nodepools/my-pool-1/status&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.user.name&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;yacht&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.verb&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;update&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;}&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;priority&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;Warning&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;rule&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;Disallowed K8s User&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;source&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;k8s_audit&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;tags&amp;#34;&lt;/span&gt;:&lt;span style="color:#666"&gt;[&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;k8s&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;]&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;2025-02-10T09:15:57.807013000Z&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="let-s-test-it"&gt;Let's test it!&lt;/h2&gt;
&lt;p&gt;In order to test Falco we need to know which rules are installed by default. In our case, as we defined it in the &lt;strong&gt;values.yaml&lt;/strong&gt; file, the k8saudit-ovh plugin follow the &lt;a href="https://github.com/falcosecurity/plugins/blob/main/plugins/k8saudit/rules/k8s_audit_rules.yaml"&gt;k8s_audit_rules.yaml&lt;/a&gt; file. You can take a look at them in order to know them.&lt;/p&gt;
&lt;p&gt;In this blog post we will test one of the well-known default k8s audit rules:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Attach/Exec Pod&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;desc&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&amp;gt;&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Detect any attempt to attach/exec to a pod&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;kevt_started and pod_subresource and (kcreate or kget) and ka.target.subresource in (exec,attach) and not user_known_exec_pod_activities&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Attach/Exec to pod (user=%ka.user.name pod=%ka.target.name resource=%ka.target.resource ns=%ka.target.namespace action=%ka.target.subresource command=%ka.uri.param[command])&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;NOTICE&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;source&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8s_audit&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tags&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[k8s]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This rule is interesting because an event will be generated if/when an user execute commands in a pod.&lt;/p&gt;
&lt;p&gt;Let’s test the rule!&lt;/p&gt;
&lt;p&gt;In a tab of your terminal, watch the coming logs:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl logs -l app.kubernetes.io/name&lt;span style="color:#666"&gt;=&lt;/span&gt;falco -n falco -c falco -f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In an another tab of your terminal, create a Nginx pod and execute a command into it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl run nginx --image&lt;span style="color:#666"&gt;=&lt;/span&gt;nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl &lt;span style="color:#a2f"&gt;exec&lt;/span&gt; -it nginx -n hello-app -- cat /etc/shadow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Several seconds laters, in the logs you should see this you will see this Attach/Exec to pod logs:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;{&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;hostname&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;my-pool-1-node-921b61&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;output&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;09:29:46.302906000: Notice Attach/Exec to pod (user=kubernetes-admin pod=nginx-676b6c5bbc-4xc6t resource=pods ns=hello-app action=exec command=cat)&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;output_fields&amp;#34;&lt;/span&gt;:&lt;span style="color:#666"&gt;{&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;evt.time&amp;#34;&lt;/span&gt;:1739179786302906000,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.name&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;nginx-676b6c5bbc-4xc6t&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.namespace&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;hello-app&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.resource&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;pods&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.target.subresource&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;exec&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.uri.param[command]&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;cat&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;ka.user.name&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;kubernetes-admin&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;}&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;priority&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;Notice&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;rule&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;Attach/Exec Pod&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;source&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;k8s_audit&amp;#34;&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;tags&amp;#34;&lt;/span&gt;:&lt;span style="color:#666"&gt;[&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;k8s&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;]&lt;/span&gt;,&lt;span style="color:#b44"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;:&lt;span style="color:#b44"&gt;&amp;#34;2025-02-10T09:29:46.302906000Z&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;💪&lt;/p&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet!&lt;/h2&gt;
&lt;p&gt;If you have planned to go to the KubeCon + CloudNative Con EU 2025 at London, don't hesitate to stop at the Falco booth in the Project Pavillon!&lt;/p&gt;
&lt;p&gt;As always, we meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the #falco channel on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Join the Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy 😎,&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Aurélie&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Falco plugin for collecting AKS audit logs</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-aks-audit-logs-plugin/</link><pubDate>Sun, 09 Mar 2025 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-aks-audit-logs-plugin/</guid><description>
&lt;p&gt;Troubleshooting Kubernetes events is challenging due to the multitude of data sources involved: container logs, Kubernetes events, cloud logs, and more. Among these sources, Kubernetes audit logs are especially valuable for identifying threats, as every action passing through the Kubernetes API server is recorded there.&lt;/p&gt;
&lt;p&gt;We already provide plugins that let you parse and use Falco to detect threats in audit logs from GKE and EKS clusters. With our latest plugin, you'll now have the same powerful threat detection capabilities for your Azure AKS clusters.&lt;/p&gt;
&lt;h2 id="what-is-falco"&gt;What is Falco?&lt;/h2&gt;
&lt;p&gt;Falco is a Cloud Native Computing Foundation project that provides runtime threat detection. Out of the box, Falco examines syscalls to alert you to any suspicious activity. And, since containers share the same kernel as their host, Falco can monitor not only activity on the host but also activity on all of the containers running on that host. Moreover, Falco pulls data from both Kubernetes and the container runtime to add additional context to its alerts.&lt;/p&gt;
&lt;p&gt;With Falco running on your GKE clusters you can be notified of a wide variety of events, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Did someone start a container with high privileges?&lt;/li&gt;
&lt;li&gt;Has someone shelled into a running container?&lt;/li&gt;
&lt;li&gt;Has an executable been added to the container after it was deployed?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are just a few examples. Falco has over 80 rules that can be used to make you aware of not only external threats but also when clusters aren't being operated in accordance with industry best practices.&lt;/p&gt;
&lt;h2 id="what-is-the-aks-audit-logs-plugin"&gt;What is the AKS audit logs plugin?&lt;/h2&gt;
&lt;p&gt;The AKS audit logs plugin extends Falco's capabilities to Microsoft Azure Kubernetes Service (AKS) clusters, providing you with the same security insights and threat detection Falco already offers for GKE and EKS environments. With this plugin, you can seamlessly integrate AKS audit logs into Falco's event processing pipeline, enabling it to identify anomalies, suspicious activities, and policy violations within your AKS-based workloads.&lt;/p&gt;
&lt;h2 id="using-aks-audit-logs-plugin"&gt;Using AKS audit logs plugin&lt;/h2&gt;
&lt;p&gt;In order to use the AKS audit log plugin, you must first configure your AKS cluster to ship the logs where we can fetch them.&lt;/p&gt;
&lt;p&gt;The current supported output source is Event hub, so when following the &lt;a href="https://learn.microsoft.com/en-us/azure/aks/monitor-aks#aks-control-planeresource-logs"&gt;guide&lt;/a&gt; to configure your AKS audit logs, you must have Eventhub enabled. You can also optionally send it to other sources:
&lt;img src="https://v0-43--falcosecurity.netlify.app/blog/falco-aks-audit-logs-plugin/falco-aks-audit-logs-plugin1.png" alt="aks-audit-logs" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Once you have the stream enabled, you must create or reuse a storage account blob container so that the plugin can track the last event that was consumed, which is done trough checkpoints.&lt;/p&gt;
&lt;h2 id="configuring-falco-to-use-aks-audit-logs-plugin"&gt;Configuring Falco to use AKS audit logs plugin&lt;/h2&gt;
&lt;p&gt;First, using &lt;a href="https://github.com/falcosecurity/falcoctl"&gt;falcoctl&lt;/a&gt;, download the plugin:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo falcoctl artifact install k8saudit-aks&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In your falco.yaml file, you must add the plugin configuration and later enable the plugin&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config_files&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/config.d&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;watch_config_files&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# - name: k8saudit&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# library_path: libk8saudit.so&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# init_config: &amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# open_params: &amp;#34;http://:9765/k8s-audit&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# - name: json&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# library_path: libjson.so&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8saudit-aks&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;libk8saudit-aks.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;init_config&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;event_hub_name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;${EVENTHUB_NAME}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;blob_storage_container_name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;${BLOB_STORAGE_CONTAINER_NAME}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;event_hub_namespace_connection_string&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;${EVENTHUB_NAMESPACE_CONNECTION_STRING}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;blob_storage_connection_string&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;${BLOB_STORAGE_CONNECTION_STRING}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;load_plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[k8saudit-aks]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;stdout_output&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once they are exported, run Falco and after some seconds you'll logs informing the k8saudit-aks plugin was loaded:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;falco -c /etc/falco/falco.yaml -r /etc/falco/falco_rules.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-t" data-lang="t"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Tue Dec &lt;span style="color:#666"&gt;17&lt;/span&gt; &lt;span style="color:#666"&gt;18&lt;/span&gt;:&lt;span style="color:#666"&gt;02&lt;/span&gt;:&lt;span style="color:#666"&gt;07&lt;/span&gt; &lt;span style="color:#666"&gt;2024&lt;/span&gt;: Opening &lt;span style="color:#b44"&gt;&amp;#39;k8s_audit&amp;#39;&lt;/span&gt; source with plugin &lt;span style="color:#b44"&gt;&amp;#39;k8saudit-aks&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;2024&lt;/span&gt;&lt;span style="color:#b68"&gt;/12/&lt;/span&gt;&lt;span style="color:#666"&gt;17&lt;/span&gt; &lt;span style="color:#666"&gt;21&lt;/span&gt;:&lt;span style="color:#666"&gt;02&lt;/span&gt;:&lt;span style="color:#666"&gt;07&lt;/span&gt; [k8saudit&lt;span style="color:#666"&gt;-&lt;/span&gt;aks] opened connection to blob storage
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;2024&lt;/span&gt;&lt;span style="color:#b68"&gt;/12/&lt;/span&gt;&lt;span style="color:#666"&gt;17&lt;/span&gt; &lt;span style="color:#666"&gt;21&lt;/span&gt;:&lt;span style="color:#666"&gt;02&lt;/span&gt;:&lt;span style="color:#666"&gt;07&lt;/span&gt; [k8saudit&lt;span style="color:#666"&gt;-&lt;/span&gt;aks] opened blob checkpoint connection
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;2024&lt;/span&gt;&lt;span style="color:#b68"&gt;/12/&lt;/span&gt;&lt;span style="color:#666"&gt;17&lt;/span&gt; &lt;span style="color:#666"&gt;21&lt;/span&gt;:&lt;span style="color:#666"&gt;02&lt;/span&gt;:&lt;span style="color:#666"&gt;07&lt;/span&gt; [k8saudit&lt;span style="color:#666"&gt;-&lt;/span&gt;aks] opened consumer client
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;2024&lt;/span&gt;&lt;span style="color:#b68"&gt;/12/&lt;/span&gt;&lt;span style="color:#666"&gt;17&lt;/span&gt; &lt;span style="color:#666"&gt;21&lt;/span&gt;:&lt;span style="color:#666"&gt;02&lt;/span&gt;:&lt;span style="color:#666"&gt;07&lt;/span&gt; [k8saudit&lt;span style="color:#666"&gt;-&lt;/span&gt;aks] created eventhub processor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="testing-out"&gt;Testing out!&lt;/h2&gt;
&lt;p&gt;Append rule to &lt;strong&gt;falco_rules.yaml&lt;/strong&gt; file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;K8s Audit Event Detected&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;desc&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;A test rule that detects any Kubernetes audit event&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ka.req exists&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;K8s Audit Event Detected: %ka.req&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;DEBUG&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;source&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8s_audit&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tags&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[testing, k8s_audit]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ falco -c /etc/falco/falco.yaml -r /etc/falco/falco_rules.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then, you should see initialization message, followed by some events from your AKS cluster. Since we have debug enabled, you should see some events from the aksService:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Thu Dec 19 11:44:55 2024: Falco version: 0.39.2 (aarch64)
Thu Dec 19 11:44:55 2024: Falco initialized with configuration files:
Thu Dec 19 11:44:55 2024: /etc/falco/config.d/engine-kind-falcoctl.yaml | schema validation: ok
Thu Dec 19 11:44:55 2024: /etc/falco/falco.yaml | schema validation: ok
Thu Dec 19 11:44:55 2024: System info: Linux version 6.8.0-51-generic (buildd@bos03-arm64-031) (aarch64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #52-Ubuntu SMP PREEMPT_DYNAMIC Thu Dec 5 13:32:09 UTC 2024
Thu Dec 19 11:44:55 2024: Loading plugin &amp;#39;k8saudit-aks&amp;#39; from file /usr/share/falco/plugins/libk8saudit-aks.so
Thu Dec 19 11:44:55 2024: Loading plugin &amp;#39;json&amp;#39; from file /usr/share/falco/plugins/libjson.so
Thu Dec 19 11:44:55 2024: Loading rules from:
Thu Dec 19 11:44:55 2024: /etc/falco/falco_rules.yaml | schema validation: ok
Thu Dec 19 11:44:55 2024: /etc/falco/falco_rules.local.yaml | schema validation: none
Thu Dec 19 11:44:55 2024: /etc/falco/falco_aks_audit.yaml | schema validation: ok
Thu Dec 19 11:44:55 2024: The chosen syscall buffer dimension is: 8388608 bytes (8 MBs)
Thu Dec 19 11:44:55 2024: Starting health webserver with threadiness 4, listening on 0.0.0.0:8765
Thu Dec 19 11:44:55 2024: Loaded event sources: syscall, k8s_audit
Thu Dec 19 11:44:55 2024: Enabled event sources: k8s_audit, syscall
Thu Dec 19 11:44:55 2024: Opening &amp;#39;k8s_audit&amp;#39; source with plugin &amp;#39;k8saudit-aks&amp;#39;
2024/12/19 14:44:55 [k8saudit-aks] opened connection to blob storage
2024/12/19 14:44:55 [k8saudit-aks] opened blob checkpoint connection
2024/12/19 14:44:55 [k8saudit-aks] opened consumer client
2024/12/19 14:44:55 [k8saudit-aks] created eventhub processor
Thu Dec 19 11:44:55 2024: Opening &amp;#39;syscall&amp;#39; source with modern BPF probe.
Thu Dec 19 11:44:55 2024: One ring buffer every &amp;#39;2&amp;#39; CPUs.
&lt;/code&gt;&lt;/pre&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;10:52:03.348668000: Debug K8s Audit Event Detected&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;verb=create, user=aksService, groups=(system:masters,system:authenticated), target=&amp;lt;NA&amp;gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="let-s-meet"&gt;Let's meet!&lt;/h2&gt;
&lt;p&gt;As always, we meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the #falco channel on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Join the Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy 😎,&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Igor&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Falco Talon v0.3.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-3-0/</link><pubDate>Tue, 11 Feb 2025 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-3-0/</guid><description>
&lt;p&gt;Today, we announce the release of &lt;strong&gt;Falco Talon 0.3.0&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;p&gt;Three updates in a row, after &lt;a href="https://falco.org/blog/falco-0-40-0/"&gt;Falco&lt;/a&gt; and &lt;a href="https://falco.org/blog/falcosidekick-2-31-0/"&gt;Falcosidekick&lt;/a&gt;, it's time for &lt;a href="#ZgotmplZ"&gt;Falco Talon&lt;/a&gt; to know a new version.&lt;/p&gt;
&lt;h2 id="what-s-new"&gt;What's new?&lt;/h2&gt;
&lt;p&gt;The key feature this release brings is the new actionner &lt;code&gt;kubernetes:sysdig&lt;/code&gt;. For those who are not familiar with &lt;a href="https://github.com/draios/sysdig"&gt;sysdig&lt;/a&gt;, it's a CLI tool that allows to capture and record the syscalls, like &lt;code&gt;tcpdump&lt;/code&gt; does for the network packets. Old brother of Falco, they share the same libs and filters.&lt;/p&gt;
&lt;p&gt;With this new integration, when a suspicious event occurs in a pod, Talon triggers a capture and then exports the created artifact to AWS S3 or Minio. You can configure the &lt;code&gt;duration&lt;/code&gt; and the &lt;code&gt;amount of bytes&lt;/code&gt; captured for each syscall. Check out the &lt;a href="https://docs.falco-talon.org/docs/actionners/list/#kubernetessysdig"&gt;docs&lt;/a&gt; to discover more settings.&lt;/p&gt;
&lt;p&gt;See this example rule:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;action&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Capture the syscalls&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;actionner&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;kubernetes:sysdig&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;parameters&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;buffer_size&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;2048&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;duration&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;20&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;target&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;minio:s3&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;parameters&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;bucket&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falco-talon&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;prefix&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/sysdig/&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After the action has been completed, you'll find the capture in Minio:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-3-0/images/minio.png" alt="minio" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;And you can run the CLI tool &lt;code&gt;sysdig&lt;/code&gt; to explore it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;❯ sysdig -r 2025-01-23T13-26-41Z_default_cncf-597d69dbd4-h9fcb_sysdig.scap.gz evt.type&lt;span style="color:#666"&gt;=&lt;/span&gt;execve and evt.dir&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;18563&lt;/span&gt; 14:26:38.376178286 &lt;span style="color:#666"&gt;0&lt;/span&gt; bash &lt;span style="color:#666"&gt;(&lt;/span&gt;616444.616444&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/bin/apt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;19163&lt;/span&gt; 14:26:38.394972623 &lt;span style="color:#666"&gt;0&lt;/span&gt; apt &lt;span style="color:#666"&gt;(&lt;/span&gt;616445.616445&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/bin/dpkg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;19599&lt;/span&gt; 14:26:38.399546432 &lt;span style="color:#666"&gt;0&lt;/span&gt; apt &lt;span style="color:#666"&gt;(&lt;/span&gt;616446.616446&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/lib/apt/methods/http
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;20319&lt;/span&gt; 14:26:38.408846350 &lt;span style="color:#666"&gt;0&lt;/span&gt; apt &lt;span style="color:#666"&gt;(&lt;/span&gt;616447.616447&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/lib/apt/methods/http
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;21775&lt;/span&gt; 14:26:38.453363037 &lt;span style="color:#666"&gt;0&lt;/span&gt; apt &lt;span style="color:#666"&gt;(&lt;/span&gt;616448.616448&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/lib/apt/methods/gpgv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;22335&lt;/span&gt; 14:26:38.461330752 &lt;span style="color:#666"&gt;0&lt;/span&gt; apt &lt;span style="color:#666"&gt;(&lt;/span&gt;616449.616449&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/lib/apt/methods/gpgv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;29434&lt;/span&gt; 14:26:38.481292691 &lt;span style="color:#666"&gt;0&lt;/span&gt; gpgv &lt;span style="color:#666"&gt;(&lt;/span&gt;616451.616451&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/bin/apt-key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;29604&lt;/span&gt; 14:26:38.486522901 &lt;span style="color:#666"&gt;0&lt;/span&gt; apt-key &lt;span style="color:#666"&gt;(&lt;/span&gt;616453.616453&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/bin/apt-config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;30183&lt;/span&gt; 14:26:38.494442117 &lt;span style="color:#666"&gt;0&lt;/span&gt; apt-config &lt;span style="color:#666"&gt;(&lt;/span&gt;616454.616454&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/bin/dpkg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;30422&lt;/span&gt; 14:26:38.497278722 &lt;span style="color:#666"&gt;0&lt;/span&gt; apt-key &lt;span style="color:#666"&gt;(&lt;/span&gt;616455.616455&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/bin/apt-config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;30996&lt;/span&gt; 14:26:38.504017535 &lt;span style="color:#666"&gt;0&lt;/span&gt; apt-config &lt;span style="color:#666"&gt;(&lt;/span&gt;616456.616456&lt;span style="color:#666"&gt;)&lt;/span&gt; &amp;gt; execve &lt;span style="color:#b8860b"&gt;filename&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/bin/dpkg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can also explore the captures with &lt;a href="https://stratoshark.org/"&gt;Stratoshark&lt;/a&gt;, a GUI based on &lt;code&gt;Wireshark&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it! 🏎️&lt;/h2&gt;
&lt;p&gt;In case you want to try out this &lt;strong&gt;Falco Talon 0.3.0&lt;/strong&gt;, you can install the Helm chart following the instructions on the &lt;a href="https://docs.falco-talon.org/docs/installation_usage/helm/"&gt;&lt;code&gt;documentation&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every two weeks on Wednesday in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest, you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Enjoy 😎&lt;/p&gt;</description></item><item><title>Blog: Falcosidekick 2.31.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falcosidekick-2-31-0/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falcosidekick-2-31-0/</guid><description>
&lt;p&gt;The year 2025 is well started now. We saw a few days ago &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-40-0/"&gt;the first release of Falco for the year&lt;/a&gt;. It's to let fly out a new version of Falcosidekick, the 2.31.0.&lt;/p&gt;
&lt;h2 id="new-output"&gt;New output&lt;/h2&gt;
&lt;p&gt;This release comes with a new output only, the last pillar of the observability with [OpenTelemetry].(&lt;a href="https://opentelemetry.io/"&gt;https://opentelemetry.io/&lt;/a&gt;) that missing in Falcosidekick.&lt;/p&gt;
&lt;h3 id="otlp-metrics"&gt;OTLP Metrics&lt;/h3&gt;
&lt;p&gt;You can now forward the Falco Events to the OpenTelemetery collector or any received understanding the protocol.&lt;/p&gt;
&lt;h2 id="new-features"&gt;New features&lt;/h2&gt;
&lt;p&gt;Here's a non exhaustive list of the great features and enhancements which come with this new release:&lt;/p&gt;
&lt;h3 id="better-logger"&gt;Better logger&lt;/h3&gt;
&lt;p&gt;It was a ToDo for a while (even years), but it's now completed. The log system used by Falcosidekick has been replaced, without any breaking change for the users, but opening the door to more enhancements in the future.&lt;/p&gt;
&lt;h3 id="more-default-labels-for-loki"&gt;More default labels for Loki&lt;/h3&gt;
&lt;p&gt;The log lines forwarded to &lt;code&gt;Loki&lt;/code&gt; contain now by default the source namespace and pod name, if present in the alert. It will allow to filter more easily the events you want to display in your dashboards. Thanks to &lt;a href="https://github.com/afreyermuth98"&gt;@afreyermuth98&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="payload-format-for-loki"&gt;Payload format for Loki&lt;/h3&gt;
&lt;p&gt;Some users asked for the possibility to forward the Falco alerts in their JSON format to &lt;code&gt;Loki&lt;/code&gt;. You can now use the setting &lt;code&gt;loki.format&lt;/code&gt; for.&lt;/p&gt;
&lt;h3 id="nats-stan-subject"&gt;NATS/STAN subject&lt;/h3&gt;
&lt;p&gt;The template for the subject where to push the messages for &lt;code&gt;NATS&lt;/code&gt;/&lt;code&gt;STAN&lt;/code&gt; was hardcoded, it can now be overridden with &lt;code&gt;nats/stan.subjecttemplate&lt;/code&gt;. See the &lt;a href="https://github.com/falcosecurity/falcosidekick/blob/5af88e588a263d3b4ca20f8f13650369111cb249/config_example.yaml#L167"&gt;example config file&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Fix the missing templated fields as labels in &lt;code&gt;Loki&lt;/code&gt; payload (&lt;a href="https://github.com/falcosecurity/falcosidekick/pull/1091"&gt;PR#1091&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix the creation error of a &lt;code&gt;ClusterPolicyReport&lt;/code&gt; (&lt;a href="https://github.com/falcosecurity/falcosidekick/pull/100"&gt;PR#1100&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix the missing custom headers for HTTP requests for &lt;code&gt;Loki&lt;/code&gt; (&lt;a href="https://github.com/falcosecurity/falcosidekick/pull/1107"&gt;PR#1107&lt;/a&gt; thanks to &lt;a href="https://github.com/lsroe"&gt;@lsroe&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix the wrong key format of custom fields for &lt;code&gt;Prometheus&lt;/code&gt; (&lt;a href="https://github.com/falcosecurity/falcosidekick/pull/1110"&gt;PR#1110&lt;/a&gt; thanks to &lt;a href="https://github.com/rubensf"&gt;@rubensf&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;You can find the full changelog &lt;a href="https://github.com/falcosecurity/falcosidekick/releases/tag/2.31.0"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The respective Helm charts are already updated and allow you to test by yourself all these great new features. Just issue the &lt;code&gt;helm repo update; helm upgrade --reuse-values -n falco&lt;/code&gt; command to do so.&lt;/p&gt;
&lt;p&gt;Once again, thanks to all the adopters and contributors who helped and contributed to this project all these years. We would never have reached this success without you.&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;Get started in &lt;a href="http://falco.org/"&gt;Falco.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Check out the &lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;Falcosidekick project on GitHub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check out the &lt;a href="https://docs.falco-talon.org"&gt;Falco Talon project docs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Get involved in the &lt;a href="https://falco.org/community/"&gt;Falco community&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Meet the maintainers on the &lt;a href="https://kubernetes.slack.com/?redir=%2Farchives%2FCMWH3EH32"&gt;Falco Slack&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Follow &lt;a href="https://twitter.com/falco_org"&gt;@falco_org on Twitter&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Blog: Introducing Falco 0.40.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-40-0/</link><pubDate>Tue, 28 Jan 2025 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-40-0/</guid><description>
&lt;p&gt;Dear Falco Community, today we are happy to announce the release of Falco 0.40.0!&lt;/p&gt;
&lt;p&gt;This version brings several new features, performance improvements, and bug fixes that streamline Falco’s detection capabilities.
During this release cycle, we merged more than 52 PRs on Falco and more than 150 PRs for libs and drivers, version 0.20.0 and version 8.0.0 respectively. Thank you to our maintainers and contributors, as this would not happen without your support and dedication!&lt;/p&gt;
&lt;p&gt;To learn all about these changes, read on!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What’s new? TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Key features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-40-0/#streamlined-falco-docker-images"&gt;Streamlined Falco docker images&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Falco static build has been reintroduced for &lt;code&gt;x86_64&lt;/code&gt; binary using &lt;code&gt;musl&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;New &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-40-0/#introducing-new-processs-filters"&gt;process filters&lt;/a&gt; allow to filter events based on process metadata;&lt;/li&gt;
&lt;li&gt;Added support for &lt;code&gt;sendmmsg&lt;/code&gt; and &lt;code&gt;recvmmsg&lt;/code&gt; syscalls parameters;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-40-0/#plugins-suggested-output-fields"&gt;Plugins suggested output fields&lt;/a&gt; are now available in the Falco engine;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="card card-sm pageinfo pageinfo-warning my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;This release also comes with &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-40-0/#breaking-changes-and-deprecations"&gt;breaking changes&lt;/a&gt; that you should be aware of before upgrading.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="major-features-and-improvements"&gt;Major features and improvements&lt;/h2&gt;
&lt;p&gt;The 0.40.0 release contains a number of features and UX improvements. Here is a list of some of the key new capabilities.&lt;/p&gt;
&lt;h3 id="streamlined-falco-docker-images"&gt;Streamlined Falco docker images&lt;/h3&gt;
&lt;p&gt;In the Falco 0.40.0 release, the Falco team has streamlined the Docker images to improve usability and performance. The new images are designed to be more efficient and easier to use, providing a better experience for users deploying Falco in containerized environments.&lt;/p&gt;
&lt;p&gt;Key improvements include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reduced Image Size: The new images are smaller, which reduces the time required to pull and deploy them.&lt;/li&gt;
&lt;li&gt;Optimized Layers: The layers in the Docker images have been optimized to improve build times and caching efficiency.&lt;/li&gt;
&lt;li&gt;Enhanced Security: The images have been hardened to enhance security, reducing potential vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These changes make it easier to deploy and manage Falco in various environments.&lt;/p&gt;
&lt;h3 id="introducing-new-process-filters"&gt;Introducing new process filters&lt;/h3&gt;
&lt;p&gt;A new set of process filters are made available in this release: &lt;code&gt;proc.pgid, proc.pgid.name, proc.pgid.exe, proc.pgid.exepath, proc.is_pgid_leader&lt;/code&gt;.
These filters enable users to filter events based on process metadata, such as the process name, executable path, and arguments. The new filters
introduce the &lt;code&gt;pgid&lt;/code&gt; field, which is directly obtained from the kernel. This ID corresponds to the &lt;code&gt;host pid namespace&lt;/code&gt;, aiding in the creation
of more reliable rules.&lt;/p&gt;
&lt;h3 id="plugins-suggested-output-fields"&gt;Plugins suggested output fields&lt;/h3&gt;
&lt;p&gt;The Falco engine now supports plugins that can suggest output fields. This feature allows plugins to provide additional context and information about an event, enhancing its visibility and understanding.
The suggested output fields are displayed in the Falco output, giving users valuable insights into the event and its context. By leveraging this feature, Falco makes it easier for users to take advantage of the metadata provided by plugins and improve their security monitoring and incident response capabilities. New output fields are added only if the option is enabled and the plugin supports this new feature.&lt;/p&gt;
&lt;p&gt;Keep an eye on the existing plugins to be updated to support the new feature.&lt;/p&gt;
&lt;h2 id="breaking-changes-and-deprecations"&gt;Breaking changes and deprecations ⚠️&lt;/h2&gt;
&lt;p&gt;This version comes with breaking changes, mostly in the configuration interface.&lt;/p&gt;
&lt;h3 id="removed-command-line-options-and-equivalent-configuration-options"&gt;Removed command line options and equivalent configuration options&lt;/h3&gt;
&lt;p&gt;We removed the already deprecated options &lt;code&gt;--cri&lt;/code&gt;, &lt;code&gt;--disable-cri-async&lt;/code&gt;, and is now possible to achieve the same result through the &lt;a href="https://falco.org/docs/rules/controlling-rules/#via-falco-configuration-or-parameters"&gt;Falco configuration&lt;/a&gt;.
A new configuration options has been introduced to enable and configure the supported container engines in Falco:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;container_engines&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;docker&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;cri&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;sockets&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[&lt;span style="color:#b44"&gt;&amp;#34;/run/containerd/containerd.sock&amp;#34;&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;/run/crio/crio.sock&amp;#34;&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;/run/k3s/containerd/containerd.sock&amp;#34;&lt;/span&gt;]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;disable_async&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;podman&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;lxc&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;libvirt_lxc&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;bpm&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Please keep in mind that the new configuration options are tagged as &lt;code&gt;incubating&lt;/code&gt; and may change in the future.&lt;/p&gt;
&lt;p&gt;You can also use the &lt;code&gt;-o&lt;/code&gt; command line option:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--cri &amp;lt;socket_path&amp;gt;&lt;/code&gt;: use &lt;code&gt;-o container_engines.cri.enabled=true, -o container_engines.cri.sockets[]=&amp;lt;socket_path, -o container_engines.cri.disable_async=true&lt;/code&gt; instead to enable the CRI runtime and configure the socket path and disable the async mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find more information on breaking changes in the &lt;a href="https://github.com/falcosecurity/falco/issues/3226"&gt;tracking issue&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="new-docker-images"&gt;New docker images&lt;/h3&gt;
&lt;p&gt;With the growing prominence of the modern eBPF probe, in Falco &lt;code&gt;0.38.0&lt;/code&gt; we made the strategic decision to adopt it as the default driver for Falco. This shift brings key advantages to our distribution system by removing the need to bundle the full driver-building toolchain in the standard Falco distribution. As a result, we’re transitioning the default Falco image to a &lt;code&gt;no-driver/distroless&lt;/code&gt; configuration, simplifying deployments and reducing system complexity. For users seeking alternative setups, a different container image will still be available.&lt;/p&gt;
&lt;p&gt;In light of this change, we’ve re-evaluated all Docker images:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Image Name&lt;/th&gt;
&lt;th&gt;Tag (aliases)&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;falcosecurity/falco&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;x.y.z&lt;/code&gt; (&lt;code&gt;latest&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Distroless image without driver building toolchain support, based on the latest released tar.gz of Falco. No tools or &lt;code&gt;falcoctl&lt;/code&gt; included.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;falcosecurity/falco&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;x.y.z-debian&lt;/code&gt; (&lt;code&gt;latest-debian&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Debian-based image without driver building toolchain support, based on the latest released Deb of Falco. May include some tools (e.g., &lt;code&gt;jq&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt;), but not &lt;code&gt;falcoctl&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;falcosecurity/falco-driver-loader&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;x.y.z&lt;/code&gt; (&lt;code&gt;latest&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Based on &lt;code&gt;falcosecurity/falco:x.y.z-debian&lt;/code&gt;, plus driver building toolchain support and the latest version of &lt;code&gt;falcoctl&lt;/code&gt;. Recommended only when modern eBPF is unsupported.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;falcosecurity/falco-driver-loader&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;x.y.z-buster&lt;/code&gt; (&lt;code&gt;latest&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Similar to &lt;code&gt;falcosecurity/falco-driver-loader&lt;/code&gt;, but based on a legacy Debian image (i.e., &lt;code&gt;buster&lt;/code&gt;). Recommended only for old kernel versions.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The following images have been deprecated and are not anymore available in the Falco 0.40.0 release:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Image Name&lt;/th&gt;
&lt;th&gt;Reason&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;falcosecurity/falco-distroless&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deprecated in favor of &lt;code&gt;falcosecurity/falco:x.y.z&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;falcosecurity/falco-no-driver&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deprecated in favor of &lt;code&gt;falcosecurity/falco:x.y.z-debian&lt;/code&gt; (essentially the same image with a new name).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="deprecations"&gt;Deprecations&lt;/h3&gt;
&lt;p&gt;In Falco 0.40.0, we have deprecated the following options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-S / --snaplen&lt;/code&gt; cli flag has been deprecated in favor of the &lt;code&gt;falco_libs.snaplen&lt;/code&gt; configuration option;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-A&lt;/code&gt; cli flag has been deprecated in favor of the &lt;code&gt;base_syscalls.all&lt;/code&gt; configuration option;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b&lt;/code&gt; cli flag has been deprecated in favor of the &lt;code&gt;buffer_format_base64&lt;/code&gt; configuration option;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="worthy-of-note"&gt;Worthy of note&lt;/h2&gt;
&lt;p&gt;Release artifacts are now built with &lt;a href="https://ziglang.org/"&gt;zig&lt;/a&gt;, using very recent versions of &lt;a href="https://clang.llvm.org/"&gt;clang&lt;/a&gt;. This change alone has resulted in up to 10% speedup in userspace benchmarks.&lt;/p&gt;
&lt;p&gt;The first graph shows the events processed by userspace per second:&lt;/p&gt;
&lt;img style='border:1px solid #000000' src="./images/eventsPerSecond.svg" alt="Events processed by userspace per second"/&gt;
&lt;p&gt;The following one shows the average of multiple runs of &lt;a href="https://github.com/google/benchmark"&gt;Google Benchmark&lt;/a&gt; framework embedded in libsinsp:&lt;/p&gt;
&lt;img style='border:1px solid #000000' src="./images/googleBenchmark.svg" alt="Google Benchmark of libsinsp"/&gt;
&lt;p&gt;Additionally, artifacts now use &lt;a href="https://jemalloc.net/"&gt;jemalloc&lt;/a&gt; as the allocator library. This should help mitigate some &lt;code&gt;memory fragmentation-related&lt;/code&gt; issues.&lt;/p&gt;
&lt;p&gt;Furthermore, Falco debug symbol files are now attached to GitHub releases. Falco is built in &lt;code&gt;RelWithDebInfo&lt;/code&gt; mode, enabling users to download debug symbols and attach them to their debugging sessions.&lt;/p&gt;
&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;Interested in trying out the new features? Use the resources below to get started.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/running/#docker"&gt;Container Images&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;falco&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-driver-loader&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-driver-loader"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-s-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;Falco is more mature with each release. Following its &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-graduation/"&gt;graduation&lt;/a&gt; we have published the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/roadmap/#road-to-falco-1-0-0"&gt;roadmap&lt;/a&gt; for version 1.0.0 which is guiding us in the next steps. For the next release, you can expect more stability, a new container plugin, refinements to our deployment methods with a k8s operator, and as always new detections and fixes.&lt;/p&gt;
&lt;h2 id="stay-connected"&gt;Stay connected&lt;/h2&gt;
&lt;p&gt;Join us on social media and in our weekly community calls! It’s always great to have new members in the community, and we’re looking forward to hearing your feedback and ideas.&lt;/p&gt;
&lt;p&gt;You can find all the most up-to-date information at &lt;a href="https://falco.org/community/"&gt;https://falco.org/community/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog: Falcosidekick 2.30.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falcosidekick-2-30-0/</link><pubDate>Wed, 04 Dec 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falcosidekick-2-30-0/</guid><description>
&lt;p&gt;A few days after a new release of &lt;a href="https://falco.org/blog/falco-talon-v0-2-0/"&gt;Falco Talon&lt;/a&gt;, our response engine, it's time for our favorite proxy forwarder to do the same.&lt;/p&gt;
&lt;h2 id="new-outputs"&gt;New outputs&lt;/h2&gt;
&lt;p&gt;A new release means new integrations. Thanks to our contributors for their helps.&lt;/p&gt;
&lt;h3 id="webex"&gt;Webex&lt;/h3&gt;
&lt;p&gt;Notify your team on Webex with the integration developed by &lt;a href="https://github.com/k0rventen"&gt;@k0rventen&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="otlp-metrics"&gt;OTLP Metrics&lt;/h3&gt;
&lt;p&gt;The adoption of Open Telemetry is bigger and bigger in the Cloud Native ecosystem, &lt;a href="https://github.com/ekoops"&gt;@ekoops&lt;/a&gt; introduced the OTLP Metrics in Falcosidekick.&lt;/p&gt;
&lt;h3 id="datalog-logs"&gt;Datalog Logs&lt;/h3&gt;
&lt;p&gt;The Falco alerts can be forwarded to &lt;code&gt;Datadog&lt;/code&gt; as events for a while in Falcosidekick, you can now use their Logs service thanks to &lt;a href="https://github.com/yohboy"&gt;@yohboy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="new-features"&gt;New features&lt;/h2&gt;
&lt;p&gt;Here's a non exhaustive list of the great features and enhancements which come with this new release:&lt;/p&gt;
&lt;h3 id="x3-throughput"&gt;x3 throughput&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/aleksmaus"&gt;@alekmaus&lt;/a&gt; spotted a bottleneck with the http client used to forward the events to the outputs. His fix increases up to 300% the throughput!!!&lt;/p&gt;
&lt;h3 id="better-integration-with-elasticsearch"&gt;Better integration with Elasticsearch&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/aleksmaus"&gt;@alekmaus&lt;/a&gt; worked hard to improve the integration with &lt;code&gt;Elasticsearch&lt;/code&gt;. In addition improvments for the clients, new settings have been introduced, like the possibility to specify an &lt;code&gt;ingest pipeline&lt;/code&gt; or an &lt;code&gt;api key&lt;/code&gt;, to enable &lt;code&gt;batching&lt;/code&gt; and &lt;code&gt;compression&lt;/code&gt;. See the &lt;a href="https://github.com/falcosecurity/falcosidekick/blob/master/docs/outputs/elasticsearch.md"&gt;docs&lt;/a&gt; to know them all.&lt;/p&gt;
&lt;h3 id="better-consistency-for-the-prometheus-metrics"&gt;Better consistency for the Prometheus metrics&lt;/h3&gt;
&lt;p&gt;Falco recently integrated a direct endpoint to expose metrics in the Prometheus format. After a lot of discussions between the maintainers and the community, a convention has been chosen for the names of the metrics. This release adapts the metrics exposed by Falcosidekick to follow this convention and have a consistency accross the different components of the ecosystem.&lt;/p&gt;
&lt;div class="card card-sm pageinfo pageinfo-warning my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;Breaking changes: The renaming of the metrics might impact the queries for your alerts and dashboards.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="multi-hosts-for-alertmanager"&gt;Multi hosts for AlertManager&lt;/h3&gt;
&lt;p&gt;You can now specify a list of servers for the &lt;code&gt;AlertManager&lt;/code&gt; output, which is a requirement when it's deployed in HA mode.&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;p&gt;The contributors fixed several bugs, here's a non exhaustive list of the more important ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix &lt;code&gt;PolicyReports&lt;/code&gt; created in the same namespace than the previous event (&lt;a href="https://github.com/falcosecurity/falcosidekick/pull/978"&gt;PR#978&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix the missing &lt;code&gt;customFields/extraFields&lt;/code&gt; in the &lt;code&gt;Elasticsearch&lt;/code&gt; payload (&lt;a href="https://github.com/falcosecurity/falcosidekick/pull/1033"&gt;PR#1033&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix the incorrect key name for &lt;code&gt;CloudEvent&lt;/code&gt; spec attribute (&lt;a href="https://github.com/falcosecurity/falcosidekick/pull/1051"&gt;PR#1051&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;You can find the full changelog &lt;a href="https://github.com/falcosecurity/falcosidekick/releases/tag/2.30.0"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The respective Helm charts are already updated and allow you to test by yourself all these great new features. Just issue the &lt;code&gt;helm repo update; helm upgrade --reuse-values -n falco&lt;/code&gt; command to do so.&lt;/p&gt;
&lt;p&gt;Once again, thanks to all the adopters and contributors who helped and contributed to this project all these years. We would never have reached this success without you.&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;Get started in &lt;a href="http://falco.org/"&gt;Falco.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Check out the &lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;Falcosidekick project on GitHub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check out the &lt;a href="https://docs.falco-talon.org"&gt;Falco Talon project docs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Get involved in the &lt;a href="https://falco.org/community/"&gt;Falco community&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Meet the maintainers on the &lt;a href="https://kubernetes.slack.com/?redir=%2Farchives%2FCMWH3EH32"&gt;Falco Slack&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Follow &lt;a href="https://twitter.com/falco_org"&gt;@falco_org on Twitter&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Blog: Falco Talon v0.2.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-2-0/</link><pubDate>Wed, 27 Nov 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-2-0/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco Talon 0.2.0&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;p&gt;Falco Talon 0.2.0 is a minor release that includes new actionners and outputs, add parameters to existing actionners, along one small fix on the check and print commands.&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;gcp:function&lt;/code&gt; actionner:
&lt;ul&gt;
&lt;li&gt;Now users can call GCP function to automate GCP tasks, with authentication and authorization out of the box.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;action&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Invoke GCP function&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;actionner&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;gcp:function&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;additional_contexts&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- aws&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;parameters&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;gcp_function_name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;simple-http-function&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;gcp_function_location&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;us-central1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;gcp:gcs&lt;/code&gt; output
&lt;ul&gt;
&lt;li&gt;Now users can send output directly to GCP Google Cloud Storage, same way as s3 and minio existing outputs.
&lt;img src="https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-2-0/images/falco-talon-v0-2-0-2.png" alt="gcp-gcs" loading="lazy" /&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;ignore_standalone_pods&lt;/code&gt; parameter for &lt;code&gt;kubernetes:terminate&lt;/code&gt; actionner&lt;/li&gt;
&lt;li&gt;Allow to wait until the completion of &lt;code&gt;kubernetes:drain&lt;/code&gt; by configuring &lt;code&gt;max_wait_period&lt;/code&gt; and &lt;code&gt;wait_period_excluded_namespaces&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Use smaller image for the &lt;code&gt;kubernetes:tcpdump&lt;/code&gt; actionner&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;An existing &lt;code&gt;config.yaml&lt;/code&gt; file is not required anymore to check the syntax of your rules files.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="try-it"&gt;Try it! 🏎️&lt;/h2&gt;
&lt;p&gt;In case you just want to try out the &lt;strong&gt;Falco Talon 0.2.0&lt;/strong&gt;, you can install the helm chart following the instructions on the &lt;a href="https://docs.falco-talon.org/docs/installation_usage/helm/"&gt;&lt;code&gt;documentation&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every Wednesday in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest, you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Enjoy 😎,&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Igor&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.39.2</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-2/</link><pubDate>Thu, 21 Nov 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-2/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.39.2&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;p&gt;Falco's 0.39.2 is a small patch release that includes some important bugfixes for modern eBPF driver:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;check &lt;code&gt;cred&lt;/code&gt; field is not NULL before the access; this enables Falco back with modern eBPF driver to work on GKE&lt;/li&gt;
&lt;li&gt;address verifier issues on kernel versions &lt;code&gt;&amp;gt;=6.11.4&lt;/code&gt;: there was a kernel-breaking change in the tail call ebpf API merged into the 6.11.4 to fix a &lt;a href="https://access.redhat.com/security/cve/cve-2024-50063"&gt;CVE&lt;/a&gt;. Adapt our code to work again on these new versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone in the community for helping us spot these annoying bugs and improving Falco every day 🐛! You make Falco successful 🦅!&lt;/p&gt;
&lt;p&gt;Thanks as always to the Falco maintainers for their support and effort during the entire release process.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it! 🏎️&lt;/h2&gt;
&lt;p&gt;As usual, in case you just want to try out the stable &lt;strong&gt;Falco 0.39.2&lt;/strong&gt;, you can install its packages following the process outlined in the docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/setup/packages/#install-with-yum"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/setup/packages/#install-with-apt"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/setup/packages/#install-with-zypper"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/setup/tarball/"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prefer to use a container image? No problem at all! 🐳&lt;/p&gt;
&lt;p&gt;You can read more about running Falco with Docker in the &lt;a href="https://falco.org/docs/setup/container/"&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also find the Falcosecurity container images on the public AWS ECR gallery:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;falco&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;falco-no-driver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;falco-driver-loader&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every Wednesday in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest, you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Enjoy 😎,&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Federico&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: How to Deploy Falco with k8s-metacollector + k8smeta Plugin</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-k8smeta-plugin/</link><pubDate>Mon, 14 Oct 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-k8smeta-plugin/</guid><description>
&lt;p&gt;In today's cloud-native world, securing Kubernetes environments has become increasingly critical as containerized workloads gain complexity. Falco is designed to monitor and detect anomalous activities in Kubernetes clusters and container environments. By continuously observing system calls and enriching event data with metadata, Falco ensures that any suspicious behavior is detected in real-time, protecting against threats like privilege escalations, file tampering, and network anomalies.&lt;/p&gt;
&lt;p&gt;In this tutorial, we will guide you through deploying Falco with two powerful components: &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt; and the &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt;. These tools significantly enhance Falco’s security event detection by adding important Kubernetes context, such as pod names, namespaces, deployment details, to the alerts.
Additionally, we will explore how to leverage the new &lt;a href="https://falco.org/docs/outputs/formatting/#appending-extra-output-and-fields-with-append-output"&gt;append_output&lt;/a&gt; feature introduced in Falco version &lt;a href="https://github.com/falcosecurity/falco/releases/tag/0.39.0"&gt;0.39.0&lt;/a&gt;. This feature allows you to append extra metadata fields to Falco’s output, without the need to modify your &lt;a href="https://github.com/falcosecurity/rules"&gt;rules&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By the end of this guide, you will have a Falco setup capable of detecting security issues in Kubernetes with enriched metadata output, ensuring you get a complete picture of your cluster’s security posture. Whether you're an experienced Kubernetes administrator or just starting to explore container security, this guide will help you make the most of Falco's capabilities in a Kubernetes environment.&lt;/p&gt;
&lt;h3 id="what-you-ll-learn"&gt;What You'll Learn:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The purpose and benefits of using the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt; and
&lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt; to enrich Falco alerts with Kubernetes-specific data.&lt;/li&gt;
&lt;li&gt;How to deploy Falco with the &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt;
on a Kubernetes cluster.&lt;/li&gt;
&lt;li&gt;How to configure and use the &lt;a href="https://falco.org/docs/outputs/formatting/#appending-extra-output-and-fields-with-append-output"&gt;append_output&lt;/a&gt; feature to enhance Falco alerts with additional metadata fields.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="prerequisites"&gt;Prerequisites:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://falco.org/docs/getting-started/learning-environments/"&gt;working Kubernetes cluster&lt;/a&gt; and some familiarity with Kubernetes concepts.&lt;/li&gt;
&lt;li&gt;Basic knowledge of Falco and how it works.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://helm.sh/"&gt;Helm&lt;/a&gt; installed on your system (for easy deployment of Falco).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let’s dive in and set up a Falco deployment that will give you deeper security insights for your Kubernetes workloads.&lt;/p&gt;
&lt;h2 id="step-1-understanding-k8s-metacollector-and-k8smeta-plugin"&gt;Step 1: Understanding k8s-metacollector and k8smeta Plugin&lt;/h2&gt;
&lt;p&gt;As Kubernetes has become the de facto platform for orchestrating containerized applications, it’s important to gain full visibility into what's happening within your cluster, especially when it comes to security monitoring. Falco can detect suspicious activities based on system calls, but to make these alerts more actionable, additional context about your Kubernetes resources (such as pod names, namespaces, and labels) is invaluable.&lt;/p&gt;
&lt;p&gt;That’s where the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt;and &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt; come in.&lt;/p&gt;
&lt;h3 id="what-is-the-k8s-metacollector"&gt;What is the k8s-metacollector?&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt; is responsible for gathering Kubernetes metadata for security events and sending that
information to Falco. It collects key information for different resources from your Kubernetes cluster, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pods;&lt;/li&gt;
&lt;li&gt;Namespaces;&lt;/li&gt;
&lt;li&gt;ReplicaSets;&lt;/li&gt;
&lt;li&gt;Services;&lt;/li&gt;
&lt;li&gt;Deployments;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The collected metadata provides greater clarity about where and why certain events are happening, which is crucial for pinpointing and mitigating security incidents in large-scale Kubernetes environments. Without this context, security alerts may lack the detail needed for quick and effective response.&lt;/p&gt;
&lt;h3 id="what-is-the-k8smeta-plugin"&gt;What is the k8smeta Plugin?&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt; is a source plugin for Falco that works in tandem with the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt;. While Falco
generates alerts based on detected anomalies, the &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt; enriches these alerts with Kubernetes-specific
metadata, which allows you to understand exactly which Kubernetes entities (pods, deployments, namespaces) are
involved in the detected event. This context is vital when you're trying to correlate security incidents with the resources they affect.&lt;/p&gt;
&lt;p&gt;Key benefits of the k8smeta plugin include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enriched Alerts: Falco alerts become more informative with Kubernetes-specific data like pod names, namespaces,
and deployment names.&lt;/li&gt;
&lt;li&gt;Improved Debugging: Knowing exactly which pod or namespace is involved in an alert can significantly reduce the time spent debugging and fixing security issues.&lt;/li&gt;
&lt;li&gt;Event Correlation: The plugin makes it easier to correlate low-level system events with higher-level Kubernetes concepts, providing a clearer view of what's happening in your cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By using the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt; and &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt; together, you transform Falco’s raw system call data into rich, actionable insights that give you full visibility into your Kubernetes environment.&lt;/p&gt;
&lt;h2 id="step-2-installing-falco-k8s-metacollector-and-k8smeta-plugin-with-helm-and-configuring-append-output"&gt;Step 2: Installing Falco, k8s-metacollector, and k8smeta Plugin with Helm and Configuring append_output&lt;/h2&gt;
&lt;p&gt;Deploying Falco along with the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt; and the &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt; using Helm is a seamless process. This step will guide you through adding the Falco Security Helm chart repository, installing Falco, enabling the k8s-metacollector, and configuring the &lt;a href="https://falco.org/docs/outputs/formatting/#appending-extra-output-and-fields-with-append-output"&gt;append_output&lt;/a&gt; feature to append Kubernetes metadata to Falco alerts.&lt;/p&gt;
&lt;h3 id="step-2-1-add-the-falco-helm-chart-repository"&gt;Step 2.1: Add the Falco Helm Chart Repository&lt;/h3&gt;
&lt;p&gt;Before you install Falco, you need to add the official Falco Security Helm chart repository to your Helm setup. Run the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo add falcosecurity https://falcosecurity.github.io/charts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Update your local Helm repositories to ensure you’re using the latest chart version:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-2-2-install-falco-with-k8s-metacollector-and-append-output"&gt;Step 2.2: Install Falco with k8s-metacollector and append_output&lt;/h3&gt;
&lt;p&gt;With the repository added, use the following command which includes the additional settings to enable the collection
of Kubernetes metadata and to append this metadata to Falco alerts:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm install falco falcosecurity/falco &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --version 4.11.1 &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --namespace falco &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --create-namespace &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --set collectors.kubernetes.enabled&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#a2f"&gt;true&lt;/span&gt; &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --set &lt;span style="color:#b8860b"&gt;tty&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#a2f"&gt;true&lt;/span&gt; &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --set-json &lt;span style="color:#b44"&gt;&amp;#39;falco.append_output=[{&amp;#34;match&amp;#34;: {&amp;#34;source&amp;#34;: &amp;#34;syscall&amp;#34;},&amp;#34;extra_output&amp;#34;: &amp;#34;pod_uid=%k8smeta.pod.uid, pod_name=%k8smeta.pod.name, namespace_name=%k8smeta.ns.name&amp;#34;}]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Breaking Down the Command:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;helm install falco falcosercurity/falco&lt;/code&gt;: Installs Falco using the latest chart from the Falco Security repository.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--version 4.11.1&lt;/code&gt;: Uses the &lt;code&gt;4.11.1&lt;/code&gt; version of the chart. At the writing time it's the latest version.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--namespace falco&lt;/code&gt;: Deploys Falco into the falco namespace. This helps keep Falco’s resources organized separately
from other applications.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--create-namespace&lt;/code&gt;: Automatically creates the falco namespace if it doesn’t already exist.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--set collectors.kubernetes.enabled=true&lt;/code&gt;: Enables the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt; and configures the &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--set tty=true&lt;/code&gt;: Ensures that Falco logs are emitted as soon as possible.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--set-json 'falco.append_output=...'&lt;/code&gt;: Configures the &lt;a href="https://falco.org/docs/outputs/formatting/#appending-extra-output-and-fields-with-append-output"&gt;append_output&lt;/a&gt; feature to append specific Kubernetes metadata fields to Falco’s alerts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="why-use-the-append-output-feature"&gt;Why Use the append_output Feature?&lt;/h4&gt;
&lt;p&gt;The &lt;a href="https://falco.org/docs/outputs/formatting/#appending-extra-output-and-fields-with-append-output"&gt;append_output&lt;/a&gt; feature allows you to enrich Falco alerts with additional metadata, providing a clearer view of which Kubernetes resources are involved in each security event. This context helps security teams quickly understand the severity and scope of an incident.&lt;/p&gt;
&lt;p&gt;For example, an alert will now include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pod_uid&lt;/code&gt;: To precisely identify the pod.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pod_name&lt;/code&gt;: To know which pod triggered the alert.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;namespace_name&lt;/code&gt;: Namespace where the pod is running.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="step-2-3-verifying-the-installation"&gt;Step 2.3: Verifying the Installation&lt;/h3&gt;
&lt;p&gt;Once the installation is complete, you can verify that Falco and the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt; are working as expected by
checking the status of the Falco pod in the Falco namespace:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -n falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should see the Falco pods running successfully.&lt;/p&gt;
&lt;h2 id="step-3-testing-the-setup"&gt;Step 3: Testing the Setup&lt;/h2&gt;
&lt;p&gt;Now that everything is in place, it's time to test the setup by deploying a simple Nginx pod and triggering Falco to
generate security alerts enriched with Kubernetes metadata.&lt;/p&gt;
&lt;h3 id="step-3-1-deploy-an-nginx-pod"&gt;Step 3.1: Deploy an Nginx Pod&lt;/h3&gt;
&lt;p&gt;To create some activity that Falco can monitor, start by deploying an Nginx pod in the falco namespace:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl run nginx --image&lt;span style="color:#666"&gt;=&lt;/span&gt;nginx --namespace falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command will launch an Nginx container in the falco namespace.&lt;/p&gt;
&lt;h3 id="step-3-2-wait-for-the-nginx-pod-to-run"&gt;Step 3.2: Wait for the Nginx Pod to Run&lt;/h3&gt;
&lt;p&gt;Confirm that the Nginx pod is up and running by checking its status:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -n falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once the pod is in the Running state, you can proceed to the next step.&lt;/p&gt;
&lt;h3 id="step-3-3-exec-into-the-nginx-pod-to-trigger-alerts"&gt;Step 3.3: Exec Into the Nginx Pod to Trigger Alerts&lt;/h3&gt;
&lt;p&gt;Exec into the running Nginx pod to simulate an interactive terminal session, which is something Falco is configured to detect:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl &lt;span style="color:#a2f"&gt;exec&lt;/span&gt; -it nginx -n falco -- /bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command opens a shell session inside the Nginx container. Inside the container, run some basic commands like ls or echo to generate system calls that Falco can monitor.&lt;/p&gt;
&lt;h3 id="step-3-4-check-falco-logs-for-alerts"&gt;Step 3.4: Check Falco Logs for Alerts&lt;/h3&gt;
&lt;p&gt;After executing inside the Nginx pod, check the Falco logs to see if any alerts were triggered by the kubectl exec action:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl logs -n falco -l app.kubernetes.io/name&lt;span style="color:#666"&gt;=&lt;/span&gt;falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the logs, you should see alerts related to the interactive terminal session such as:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;13:18:57.434030270: Notice A shell was spawned in a container with an attached terminal &lt;span style="color:#666"&gt;(&lt;/span&gt;&lt;span style="color:#b8860b"&gt;evt_type&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;execve &lt;span style="color:#b8860b"&gt;user&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;root &lt;span style="color:#b8860b"&gt;user_uid&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt; &lt;span style="color:#b8860b"&gt;user_loginuid&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;-1 &lt;span style="color:#b8860b"&gt;process&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;bash &lt;span style="color:#b8860b"&gt;proc_exepath&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;/usr/bin/bash &lt;span style="color:#b8860b"&gt;parent&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;containerd-shim &lt;span style="color:#b8860b"&gt;command&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;bash &lt;span style="color:#b8860b"&gt;terminal&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#666"&gt;34816&lt;/span&gt; &lt;span style="color:#b8860b"&gt;exe_flags&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;EXE_WRITABLE|EXE_LOWER_LAYER &lt;span style="color:#b8860b"&gt;container_id&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;7cff9da475c6 &lt;span style="color:#b8860b"&gt;container_image&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;docker.io/library/nginx &lt;span style="color:#b8860b"&gt;container_image_tag&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;latest &lt;span style="color:#b8860b"&gt;container_name&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;nginx &lt;span style="color:#b8860b"&gt;k8s_ns&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;falco &lt;span style="color:#b8860b"&gt;k8s_pod_name&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;nginx&lt;span style="color:#666"&gt;)&lt;/span&gt; &lt;span style="color:#b8860b"&gt;pod_uid&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;2f20370c-6e0b-44b8-8ea1-2aa786d80f13, &lt;span style="color:#b8860b"&gt;pod_name&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;nginx, &lt;span style="color:#b8860b"&gt;namespace_name&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This confirms that Falco is properly configured to detect activity inside the pod and append useful Kubernetes metadata to the alerts.&lt;/p&gt;
&lt;h2 id="key-takeaways"&gt;Key Takeaways:&lt;/h2&gt;
&lt;p&gt;In this tutorial, we explored how to deploy Falco with the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt; and &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt; to enhance security monitoring in a Kubernetes environment. By enabling Falco’s &lt;a href="https://falco.org/docs/outputs/formatting/#appending-extra-output-and-fields-with-append-output"&gt;append_output&lt;/a&gt; feature, we were able to enrich security alerts with vital Kubernetes metadata such as pod UID, pod name, and namespace, making the alerts more actionable and informative.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enhanced Alert Context: By appending Kubernetes metadata, you get more contextualized and meaningful alerts,
enabling better incident investigation and faster resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Seamless Integration: Thanks to Helm, deploying Falco alongside the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt; and &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;k8smeta plugin&lt;/a&gt; is
easy and efficient, requiring just a few simple commands.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Real-Time Threat Detection: Falco continuously monitors system calls and Kubernetes events in real-time, ensuring
that you’re always aware of potentially suspicious or malicious activities within your cluster.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Blog: Introducing Falco 0.39.1</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-1/</link><pubDate>Wed, 09 Oct 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-1/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.39.1&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;p&gt;Falco's 0.39.1 is a small patch release that includes some important bugfixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a crash when using plugin with event parsing capabilities (eg: k8smeta plugin)&lt;/li&gt;
&lt;li&gt;Fixed a bug while parsing &lt;code&gt;-o key={object}&lt;/code&gt; command line arguments, when the object definition contains a comma&lt;/li&gt;
&lt;li&gt;Improved config json schema to allow null init_config for plugin info&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone in the community for helping us with spotting these annoying bugs and improving Falco every day 🐛! You make Falco successful 🦅!&lt;/p&gt;
&lt;p&gt;Thanks as always to the Falco maintainers for their support and effort during the entire release process.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it! 🏎️&lt;/h2&gt;
&lt;p&gt;As usual, in case you just want to try out the stable &lt;strong&gt;Falco 0.39.1&lt;/strong&gt;, you can install its packages following the process outlined in the docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prefer to use a container image? No problem at all! 🐳&lt;/p&gt;
&lt;p&gt;You can read more about running Falco with Docker in the &lt;a href="https://falco.org/docs/getting-started/running/#docker"&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also find the Falcosecurity container images on the public AWS ECR gallery:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;falco&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;falco-no-driver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;falco-driver-loader&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every Wednesday in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Enjoy 😎,&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Federico&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.39.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-0/</link><pubDate>Tue, 01 Oct 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-0/</guid><description>
&lt;p&gt;Dear Falco Community, today we are happy to announce the release of Falco 0.39.0!&lt;/p&gt;
&lt;p&gt;This version brings several new features, performance improvements, and bug fixes that streamline Falco’s detection capabilities.
During this release cycle, we merged more than 50 PRs on Falco and more than 100 PRs for libs and drivers, version 0.
18.0 and version 7.3.0 respectively. Thank you to our maintainers and contributors, as this would not happen without your support and dedication!&lt;/p&gt;
&lt;p&gt;To learn all about these changes, read on!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What’s new? TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Key features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-0/#new-operators"&gt;Basename operator&lt;/a&gt; retrieves the basename of a given path;&lt;/li&gt;
&lt;li&gt;New fields added in &lt;code&gt;proc&lt;/code&gt; and &lt;code&gt;fd&lt;/code&gt; classes &lt;a href="https://github.com/falcosecurity/libs/pull/1916"&gt;#1916&lt;/a&gt; &lt;a href="https://github.com/falcosecurity/libs/pull/1936"&gt;#1936&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-0/#new-operators"&gt;Regular expression operator&lt;/a&gt; can be used to match values in string fields;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-0/#introducing-the-append-output-feature"&gt;Append output&lt;/a&gt; allows to add output text or fields to a subset of loaded
rules;&lt;/li&gt;
&lt;li&gt;Schema validation for config and rules files allows Falco to warn users when unknown keys are used;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-0/#dynamic-driver-selection-in-falco-with-helm-simplifying-multi-node-deployments"&gt;Improved engine selection in Kubernetes environments&lt;/a&gt; driver loader will automatically pick
the most compatible driver for each node in the cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This release also comes with &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-39-0/#breaking-changes-and-deprecations-"&gt;breaking changes&lt;/a&gt; that you should be aware of before upgrading.&lt;/p&gt;
&lt;h2 id="major-features-and-improvements"&gt;Major features and improvements&lt;/h2&gt;
&lt;p&gt;The 0.39.0 release contains a number of feature and UX improvements, here are list of some of the key new capabilities.&lt;/p&gt;
&lt;h3 id="new-operators"&gt;New Operators&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;basename()&lt;/code&gt; transformer operator extracts the base name, i.e. the filename without directory, of the input field.
Note that the behavior of&lt;code&gt;basename()&lt;/code&gt; in Falco is slightly different from the Unix &lt;code&gt;basename&lt;/code&gt; program. For instance, &lt;code&gt;basename (proc.exepath)&lt;/code&gt; will evaluate to &lt;code&gt;&amp;quot;cat&amp;quot;&lt;/code&gt; for &lt;code&gt;/usr/bin/cat&lt;/code&gt; but will evaluate to an empty string (&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;) for &lt;code&gt;/usr/bin/&lt;/code&gt;. This allows, for instance, to write expressions like &lt;code&gt;basename(proc.exepath) = cat&lt;/code&gt; to match against the original executable name even if it has been symlinked without knowing the full path, or any other file name based detection.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;regex&lt;/code&gt; operator checks if a string field matches a regular expression. Please note that the &lt;code&gt;regex&lt;/code&gt; operator is
considerably slower (up to an order of magnitude) than the above operators that work with strings, which are highly recommended for simple comparisons. The supported regex flavor is from the &lt;a href="https://github.com/google/re2/wiki/Syntax"&gt;Google RE2&lt;/a&gt; library. Example: &lt;code&gt;fd.name regex [a-z]*/proc/[0-9]+/cmdline&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="introducing-the-append-output-feature"&gt;Introducing the Append Output Feature&lt;/h3&gt;
&lt;p&gt;In response to long-standing community requests, Falco has introduced a new feature in version 0.39.0 that allows
users to add custom outputs and fields to events generated by Falco. This new functionality, called &lt;code&gt;append_output&lt;/code&gt;,
gives users greater control over the data produced by Falco rules.&lt;/p&gt;
&lt;p&gt;With the &lt;code&gt;append_output&lt;/code&gt; option, you can now easily add extra output to rules based on source, tag, or rule name—or even apply it to all rules without conditions. This option is configurable in the &lt;code&gt;falco.yaml&lt;/code&gt; file and works by specifying a list of append entries, which are applied in the order they appear.&lt;/p&gt;
&lt;p&gt;Here’s an example configuration:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;append_output&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;match&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;source&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;syscall&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;extra_output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;on CPU %evt.cpu&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;extra_fields&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;home_directory&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;${HOME}&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- evt.hostname&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this example, any rule with the syscall source will have the string on &lt;code&gt;CPU %evt.cpu&lt;/code&gt; appended to the end of the default output line. Additionally, extra fields such as &lt;code&gt;home_directory&lt;/code&gt; and &lt;code&gt;evt.hostname&lt;/code&gt; will be visible in the JSON output under the &lt;code&gt;output_fields&lt;/code&gt;key but won’t appear in the regular text output. Notably, environment variables are also supported.&lt;/p&gt;
&lt;p&gt;This option is also available on the command line using the &lt;code&gt;-o flag&lt;/code&gt;. For example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;falco ... -o &lt;span style="color:#b44"&gt;&amp;#39;append_output[]={&amp;#34;match&amp;#34;: {&amp;#34;source&amp;#34;: &amp;#34;syscall&amp;#34;}, &amp;#34;extra_fields&amp;#34;: [&amp;#34;evt.hostname&amp;#34;], &amp;#34;extra_output&amp;#34;: &amp;#34;on CPU %evt.cpu&amp;#34;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The introduction of &lt;code&gt;append_output&lt;/code&gt; offers Falco users a flexible way to enrich event outputs, providing deeper visibility and customization tailored to their monitoring needs.&lt;/p&gt;
&lt;h3 id="dynamic-driver-selection-in-falco-with-helm-simplifying-multi-node-deployments"&gt;Dynamic Driver Selection in Falco with Helm: Simplifying Multi-Node Deployments&lt;/h3&gt;
&lt;p&gt;Deploying across diverse Kubernetes environments just got easier! When using the official Falco Helm chart and setting &lt;code&gt;driver.kind=auto&lt;/code&gt;, the driver loader now intelligently handles the heavy lifting for you.&lt;/p&gt;
&lt;p&gt;Here's how it works: the driver loader will automatically generate a new Falco configuration file and select the correct engine driver based on the specific node Falco is deployed on. This means whether you're using eBPF, kmod, or a modern eBPF driver, Falco will configure itself dynamically depending on the environment.&lt;/p&gt;
&lt;p&gt;In many Kubernetes clusters, nodes can differ in terms of kernel versions, capabilities, and driver compatibility. With this new auto-selection feature, you can seamlessly deploy different Falco drivers across various nodes within the same cluster. Here’s a simple illustration:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+-------------------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| Kubernetes Cluster |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| +-------------------+ +-------------------+ |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| | Node &lt;span style="color:#666"&gt;1&lt;/span&gt; | | Node &lt;span style="color:#666"&gt;2&lt;/span&gt; | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| | | | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| | Falco &lt;span style="color:#666"&gt;(&lt;/span&gt;eBPF probe&lt;span style="color:#666"&gt;)&lt;/span&gt; | | Falco &lt;span style="color:#666"&gt;(&lt;/span&gt;kmod&lt;span style="color:#666"&gt;)&lt;/span&gt; | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| +-------------------+ +-------------------+ |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| +-------------------+ |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| | Node &lt;span style="color:#666"&gt;3&lt;/span&gt; | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| | Falco &lt;span style="color:#666"&gt;(&lt;/span&gt;modern eBPF&lt;span style="color:#666"&gt;)&lt;/span&gt;| |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| +-------------------+ |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+-------------------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Node 1 is configured with the eBPF probe driver.&lt;/li&gt;
&lt;li&gt;Node 2 uses the kmod (kernel module) driver.&lt;/li&gt;
&lt;li&gt;Node 3 leverages the modern eBPF driver for cutting-edge performance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This setup gives you flexibility and ensures that each node in your Kubernetes cluster is running Falco in the most optimized way possible, without manual configuration. Simply set &lt;code&gt;driver.kind=auto&lt;/code&gt; in the Helm chart and let Falco do the rest.&lt;/p&gt;
&lt;h2 id="breaking-changes-and-deprecations"&gt;Breaking changes and deprecations ⚠️&lt;/h2&gt;
&lt;p&gt;This version comes with breaking changes, mostly in the configuration interface&lt;/p&gt;
&lt;h3 id="removed-command-line-options-and-equivalent-configuration-options"&gt;Removed command line options and equivalent configuration options&lt;/h3&gt;
&lt;p&gt;We removed the already deprecated options &lt;code&gt;-D&lt;/code&gt;, &lt;code&gt;-t&lt;/code&gt;, &lt;code&gt;-T&lt;/code&gt; and is now possible to achieve the same result through the &lt;a href="https://falco.org/docs/rules/controlling-rules/#via-falco-configuration-or-parameters"&gt;Falco configuration&lt;/a&gt;
You con still use the &lt;code&gt;-o&lt;/code&gt; command line option:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-T &lt;tag&gt;: use &lt;code&gt;-o rules[].disable.tag=&amp;lt;tag&amp;gt;&lt;/code&gt; instead. Turn off any rules with a &lt;code&gt;tag=&amp;lt;tag&amp;gt;&lt;/code&gt;. This option can be passed multiple times. This option can not be mixed with &lt;code&gt;-t&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;-t &lt;tag&gt;: use &lt;code&gt;-o rules[].disable.rule=* -o rules[].enable.tag=&amp;lt;tag&amp;gt;&lt;/code&gt; instead. Only enable those rules with a &lt;code&gt;tag=&amp;lt;tag&amp;gt;&lt;/code&gt;. This option can be passed multiple times;&lt;/li&gt;
&lt;li&gt;D &lt;substring&gt;: use -&lt;code&gt;o rules[].disable.rule=&amp;lt;wildcard-pattern&amp;gt;&lt;/code&gt; instead. Turn off any rules with names having the substring &lt;substring&gt;. This option can be passed multiple times.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find more information on breaking changes in the &lt;a href="https://github.com/falcosecurity/falco/issues/3045"&gt;tracking issue&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="notable-bug-fixes"&gt;Notable Bug Fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Prometheus Compliant metrics: some metrics have been reworked to follow the prometheus best practices &lt;a href="https://github.com/falcosecurity/falco/pull/3319"&gt;#3319&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Fixed ebpf drivers to use the correct memory barrier primitive for ARM64, preventing to read incomplete data from the ring buffers &lt;a href="https://github.com/falcosecurity/libs/pull/2067"&gt;#2067&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Fixed an issue where &lt;code&gt;stats messages&lt;/code&gt; were written to &lt;code&gt;stdout&lt;/code&gt; and could mix with regular Falco event output
&lt;a href="https://github.com/falcosecurity/falco/pull/3338"&gt;#3338&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fs.path&lt;/code&gt; fields now account for &lt;code&gt;dirfd&lt;/code&gt;, fixing discrepancies with &lt;code&gt;fd.name&lt;/code&gt; &lt;a href="https://github.com/falcosecurity/libs/pull/1993"&gt;#1993&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="deprecations"&gt;Deprecations&lt;/h3&gt;
&lt;p&gt;In Falco &lt;code&gt;0.39.0&lt;/code&gt;, the &lt;code&gt;--cri&lt;/code&gt; and &lt;code&gt;--disable-cri-async&lt;/code&gt; options were deprecated, and they will be completely removed in Falco &lt;code&gt;0.40.0&lt;/code&gt;. Moving forward, configuring container runtimes should be done through the falco.yaml file. Below is an example of the new configuration format:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;container_engines&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;docker&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;cri&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;sockets&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[&lt;span style="color:#b44"&gt;&amp;#34;/run/containerd/containerd.sock&amp;#34;&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;/run/crio/crio.sock&amp;#34;&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;/run/k3s/containerd/containerd.sock&amp;#34;&lt;/span&gt;]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;disable_async&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;podman&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;lxc&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;libvirt_lxc&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;bpm&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;Interested in trying out the new features? Use the resources below to get started.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/running/#docker"&gt;Container Images&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;falco&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-no-driver&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-no-driver"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-driver-loader&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-driver-loader"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-s-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;Falco is more mature with each release. Following its &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-graduation/"&gt;graduation&lt;/a&gt; we have published the
&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/roadmap/#road-to-falco-1-0-0"&gt;roadmap&lt;/a&gt; for version 1.0.0 which is guiding us in the next steps. For the next
release, you can expect more stability, streamlined container images, refinements to our rule syntax, new detections
and plugins.&lt;/p&gt;
&lt;h2 id="stay-connected"&gt;Stay connected&lt;/h2&gt;
&lt;p&gt;Join us on social media and in our weekly community calls! It’s always great to have new members in the community, and we’re looking forward to hearing your feedback and ideas.&lt;/p&gt;
&lt;p&gt;You can find all the most up-to-date information at &lt;a href="https://falco.org/community/"&gt;https://falco.org/community/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco Talon v0.1.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-1-0/</link><pubDate>Mon, 09 Sep 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-1-0/</guid><description>
&lt;p&gt;More than 7 years ago, frustrated by the lack of integrations between Falco and third parties, I created &lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;Falcosidekick&lt;/a&gt;. The tool evolved much more than expected, with the help of dozens of contributors, individuals or for companies, to have now almost 70 different integrations, and more are coming. Its baby brother came few years later, &lt;a href="https://github.com/falcosecurity/falcosidekick-ui"&gt;Falcosidekick UI&lt;/a&gt;, helping people to visualize in real time the alerts leveraged by Falco and fine tuning their rules.&lt;/p&gt;
&lt;p&gt;A frustation remained after all. With Falco, we have an amazing tool to detect suspicious events in our Linux hosts, VM and Kubernetes clusters, with Falcosidekick, we can easily notify our Dev/Secops, index the alerts in some SIEM, etc. But a last piece was missing: how to react to these events?&lt;/p&gt;
&lt;p&gt;With the integrations of well known FaaS in Falcosidekick, we started a &lt;a href="https://falco.org/blog/falcosidekick-response-engine-part-1-kubeless/"&gt;series of blog posts&lt;/a&gt; to show how to create from scratch what we call a &amp;quot;response engine&amp;quot;. All these systems are modular, flexible, robust, but they all require a considerable amount of work from the user, to deal with the Falco payload format, the errors, the retries, the authentication to the API (AWS, Kubernetes Control Plane), the logs, the metrics, etc. Not all users and companies have the skills and/or the budget to maintain such an architecture.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To answer these needs, we designed and created &lt;a href="https://github.com/falco-talon/falco-talon"&gt;&lt;code&gt;Falco Talon&lt;/code&gt;&lt;/a&gt;. The &lt;a href="https://github.com/falco-talon/falco-talon/releases/tag/v0.1.0"&gt;the first version is officially out!&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="what-is-falco-talon"&gt;What is Falco Talon?&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Falco Talon&lt;/code&gt; is a &lt;em&gt;Response Engine&lt;/em&gt; for managing threats in Kubernetes clusters. It enhances the solutions proposed by the Falco community with a &lt;em&gt;no-code tailor-made&lt;/em&gt; solution. With easy rules, you can react to events from Falco in milliseconds.&lt;/p&gt;
&lt;h3 id="why-did-we-created-falco-talon"&gt;Why did we created Falco Talon?&lt;/h3&gt;
&lt;p&gt;Over the years, the Falco community proposed different methods to react to the Falco Events, what we call a &lt;em&gt;response engine&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;All these methods rely on a 3rd party FaaS (&lt;em&gt;Function as a Service&lt;/em&gt;) and come with drawbacks, all actions must be developped by the users to manage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The errors&lt;/li&gt;
&lt;li&gt;The Falco event format&lt;/li&gt;
&lt;li&gt;The authentication&lt;/li&gt;
&lt;li&gt;The K8s SDK complexity&lt;/li&gt;
&lt;li&gt;The security&lt;/li&gt;
&lt;li&gt;The upgrades of the dependencies&lt;/li&gt;
&lt;li&gt;Latency&lt;/li&gt;
&lt;li&gt;Complexity to manage sequential actions&lt;/li&gt;
&lt;li&gt;Intrication between the function and the configuration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;This is why we started to develop a custom solution specifically built for Falco: &lt;code&gt;Falco Talon&lt;/code&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tailor made for the Falco events&lt;/li&gt;
&lt;li&gt;Easy to define rules&lt;/li&gt;
&lt;li&gt;No-code implementation for end-users&lt;/li&gt;
&lt;li&gt;UX close to Falco with the rules (yaml files with append, override mechanisms)&lt;/li&gt;
&lt;li&gt;Allow to set up sequential actions to run&lt;/li&gt;
&lt;li&gt;Structured logs (with a trace id)&lt;/li&gt;
&lt;li&gt;OTEL/Prometheus Metrics and OTEL Traces&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="what-is-it-good-for"&gt;What is it good for?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;React in real-time to the Falco Events&lt;/li&gt;
&lt;li&gt;Allow fine granularity to match the events to react to&lt;/li&gt;
&lt;li&gt;Responding to default rules with specific overrides&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="what-is-it-not-yet-good-for"&gt;What is it not (yet?) good for?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Complex reaction worflows with conditions between the steps&lt;/li&gt;
&lt;li&gt;Run actions at the host/node level through SSH (like Ansible does)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="docs"&gt;Docs&lt;/h2&gt;
&lt;p&gt;A dedicated website has been created to host the documentation: &lt;a href="https://docs.falco-talon.org"&gt;https://docs.falco-talon.org&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="how-falco-talon-works"&gt;How Falco Talon works&lt;/h2&gt;
&lt;p&gt;As the same manner Falcosidekick works, &lt;code&gt;Falco Talon&lt;/code&gt; receives the events from Falco by http. All you have to do to connect Falco and &lt;code&gt;Falco Talon&lt;/code&gt; is to set in your &lt;code&gt;falco.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;jsonOutput&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;jsonIncludeOutputProperty&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;httpOutput&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;http://&amp;lt;falco-talon&amp;gt;:2803/&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you already use Falcosidekick to forward your Falco events to the world, an integration is available since &lt;a href="https://github.com/falcosecurity/falcosidekick/releases/tag/2.29.0"&gt;Falcosidekick 2.29.0&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;talon&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;address&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;http://&amp;lt;falco-talon&amp;gt;:2803/&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;checkcert&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When the events are received by &lt;code&gt;Falco Talon&lt;/code&gt;, an internal queue system based on NATS Jetstream is in charge to deduplicate them, to avoid to trigger the same action for the same cause for nothing.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Falco Talon&lt;/code&gt; will then compare the event with the rules created by the user, if an event matches with a rule, a series of actions are sequentially performed. At the end of each step, a notification with the status is sent, and a log is emmited.&lt;/p&gt;
&lt;h3 id="rules"&gt;Rules&lt;/h3&gt;
&lt;p&gt;The rules are the &amp;quot;core&amp;quot; of &lt;code&gt;Falco Talon&lt;/code&gt; as they describe which actions to trigger for which Falco event.&lt;/p&gt;
&lt;p&gt;All rules are written as yaml file, evaluated in the order they are given to &lt;code&gt;Falco Talon&lt;/code&gt; (as arguments or in the config file), with rules specified later in the file overriding the previous ones.&lt;/p&gt;
&lt;p&gt;The rules are composed of 2 blocks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;code&gt;action&lt;/code&gt; block defines which &lt;strong&gt;actionner&lt;/strong&gt; to use with its parameters, this block can be imported by multiple rules (like the &lt;code&gt;macros&lt;/code&gt; can be used in the Falco rules)&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;rule&lt;/code&gt; block defines the criterias to match to trigger the actions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The criterias to match the event with the actions can use all elements that compose a Falco event JSON payload:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the Falco rule name&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;priority&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;tags&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;output fields&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="examples"&gt;Examples&lt;/h4&gt;
&lt;div class="card card-sm pageinfo pageinfo-info my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;When &lt;code&gt;Falco Talon&lt;/code&gt; receives an event triggered by the Falco rule named &lt;code&gt;Terminal shell in container&lt;/code&gt;, and this event doesn't concern the kubernetes namespaces &lt;code&gt;kube-system&lt;/code&gt; and &lt;code&gt;falco&lt;/code&gt;, then the related pod is labeled &lt;code&gt;suspicious: true&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;action&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Label Pod as Suspicious&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;description&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Add the label suspicious=true&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;actionner&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;kubernetes:label&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;parameters&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;labels&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;suspicious&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Terminal shell in container&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;description&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&amp;gt;&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Label the pod outside kube-system and falco namespaces if a shell is started inside&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;match&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rules&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- Terminal shell in container&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output_fields&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- k8s.ns.name!=kube-system, k8s.ns.name!=falco&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;actions&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;action&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Label Pod as Suspicious&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;action&lt;/code&gt; block are useful but not mandatory, the same result can be done by specifying the action in the &lt;code&gt;rule&lt;/code&gt; block directly:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Terminal shell in container&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;match&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rules&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- Terminal shell in container&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output_fields&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- k8s.ns.name!=kube-system, k8s.ns.name!=falco&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;actions&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;action&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Label Pod as Suspicious&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;actionner&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;kubernetes:label&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;parameters&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;labels&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;suspicious&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="actionners"&gt;Actionners&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;actionners&lt;/code&gt; are &lt;em&gt;on-catalog&lt;/em&gt; actions you can use. You just have to specify which one you want use to use, its parameters, and &lt;code&gt;Falco Talon&lt;/code&gt; will manage for you all the complexity. This is how we created a &lt;em&gt;no code&lt;/em&gt; response engine.&lt;/p&gt;
&lt;p&gt;Within this first version, we tried to integrate as much useful &lt;code&gt;actionners&lt;/code&gt; as possible, which allow you to manage a large variety of situations and reactions in Kubernetes.&lt;/p&gt;
&lt;p&gt;The available &lt;code&gt;actionners&lt;/code&gt; are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kubernetes:terminate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes:label&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes:networkpolicy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes:exec&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes:script&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes:log&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes:delete&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes:drain&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes:download&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes:tcpdump&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;aws:lambda&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;calico:networkpolicy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cilium:networkpolicy&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To know more about what the &lt;code&gt;actionners&lt;/code&gt; do, what parameters they require, you can read on &lt;a href="https://docs.falco-talon.org/docs/actionners/list/"&gt;docs/actionners&lt;/a&gt;.&lt;/p&gt;
&lt;div class="card card-sm pageinfo pageinfo-info my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;You can notice all &lt;code&gt;actionners&lt;/code&gt; names are composed of 2 elements &lt;code&gt;x:y&lt;/code&gt;, the first element is the &lt;code&gt;category&lt;/code&gt; of the actionner. All &lt;code&gt;actionners&lt;/code&gt; in the same category share the same client, it avoid to have multi inits and instances.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="outputs"&gt;Outputs&lt;/h3&gt;
&lt;p&gt;Some &lt;code&gt;actionners&lt;/code&gt; require an &lt;code&gt;output&lt;/code&gt;, an &lt;code&gt;output&lt;/code&gt; is a target for the artifact created by the &lt;code&gt;actionner&lt;/code&gt;, for example for the file retrieved by &lt;code&gt;kubernetes:download&lt;/code&gt; or the &lt;code&gt;.pcap&lt;/code&gt; created by &lt;code&gt;kubernetes:tcpdump&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;3 &lt;code&gt;outputs&lt;/code&gt; are available today:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;local:file&lt;/code&gt; (only useful for local tests)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;aws:s3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;minio:s3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The list of the available &lt;code&gt;outputs&lt;/code&gt; can be found on &lt;a href="https://docs.falco-talon.org/docs/outputs/list/"&gt;docs/outputs&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="example"&gt;Example&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Redirect STDOUT/STDIN to Network Connection in Container&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;match&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rules&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- Redirect STDOUT/STDIN to Network Connection in Container&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;actions&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;action&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Run tcpdump for 5s&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;actionner&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;kubernetes:tcpdump&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;parameters&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;snaplen&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;512&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;duration&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;5&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;target&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;aws:s3&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;parameters&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;bucket&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&amp;lt;my-bucket&amp;gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;prefix&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/tcpdump/&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;region&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;us-east-1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-1-0/images/awss3.png" alt="aws s3 with .pcap" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h3 id="notifiers"&gt;Notifiers&lt;/h3&gt;
&lt;p&gt;Even we're talking about a &amp;quot;response engine&amp;quot;, a framework to automatically react to some events, we still want (we humans), to be noticed of what's happening or keep traces of the performed actions.&lt;/p&gt;
&lt;p&gt;Apart from logs output to &lt;code&gt;stdout&lt;/code&gt;, some &lt;code&gt;notifiers&lt;/code&gt; can be used to forward action results:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;elasticsearch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8sevents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loki&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;slack&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;smtp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;webhook&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The list of the available &lt;code&gt;notifiers&lt;/code&gt; can be found on &lt;a href="https://docs.falco-talon.org/docs/notifiers/list/"&gt;docs/notifiers&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="examples-1"&gt;Examples&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;k8sevents&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;action&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;kubernetes:tcpdumpthought,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;v1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;eventTime&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;2024-09-05T12:52:10.819462Z&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;firstTimestamp&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;null&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;involvedObject&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Pod&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;namespace&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;default&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Event&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;lastTimestamp&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;null&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;message&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Status: success
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Message: action
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Rule: Redirect STDOUT/STDIN to Network Connection in Container
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Action: Run tcpdump for 5s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Actionner: kubernetes:tcpdump
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Event: Redirect STDOUT/STDIN to Network Connection in Container
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Pod: cncf-55696bc998-5xjcb
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Output: a tcpdump &amp;#34;tcpdump.pcap&amp;#34; has been created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; TraceID: c954bd8b3391a08f23079552fdd639f3&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;creationTimestamp&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;2024-09-05T12:52:10Z&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;generateName&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falco-talon-&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falco-talon-zgxfm&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;namespace&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;default&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;resourceVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;115862544&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;uid&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;3b4bd17f-ed1a-4693-bfd7-d10f674a8008&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;reason&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falco-talon:action:kubernetes:tcpdump:success&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;reportingComponent&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falcosecurity.org/falco-talon&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;reportingInstance&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falco-talon&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;source&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;component&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;falco-talon&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Normal&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;slack&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-1-0/images/slack.png" alt="slack" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="a-tool-designed-for-the-production"&gt;A tool designed for the production&lt;/h2&gt;
&lt;p&gt;I spent 10 years of my career as a DevOps/SRE, managing traditional and cloud infrastructures, I know how painful it is to manage systems not well designed for the runtime. This is why we tried from the beginning to create a tool easy to rule all along it lifecycle.&lt;/p&gt;
&lt;h3 id="a-cli-to-validate-the-rules"&gt;A CLI to validate the rules&lt;/h3&gt;
&lt;p&gt;As it is for the Falco rules, the best way to manage the lifecycle of the rules for &lt;code&gt;Falco Talon&lt;/code&gt; is to follow the GitOps principles. This requires to set up a validation of their syntax as step in the CI.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;Falco Talon&lt;/code&gt; binary can also be used as a CLI, allowing to perfom tasks on the rules, like checking their validity or printing their results after the merges/overrides of several files:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ falco-talon rules check --help
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Check Falco Talon Rules file
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Usage:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; falco-talon rules check &lt;span style="color:#666"&gt;[&lt;/span&gt;flags&lt;span style="color:#666"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Flags:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -h, --help &lt;span style="color:#a2f"&gt;help&lt;/span&gt; &lt;span style="color:#a2f;font-weight:bold"&gt;for&lt;/span&gt; check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Global Flags:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -c, --config string Falco Talon Config File &lt;span style="color:#666"&gt;(&lt;/span&gt;default &lt;span style="color:#b44"&gt;&amp;#34;/etc/falco-talon/config.yaml&amp;#34;&lt;/span&gt;&lt;span style="color:#666"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -r, --rules stringArray Falco Talon Rules File &lt;span style="color:#666"&gt;(&lt;/span&gt;default &lt;span style="color:#666"&gt;[&lt;/span&gt;/etc/falco-talon/rules.yaml&lt;span style="color:#666"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="examples-2"&gt;Examples&lt;/h4&gt;
&lt;p&gt;With a valid rules file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ falco-talon rules check -c ./config.yaml -r ./rules.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2024-09-05T16:42:28+02:00 INF rules &lt;span style="color:#b8860b"&gt;result&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;rules file valid&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With an invalid rules file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ falco-talon rules check -c ./config.yaml -r ./rules.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2024-09-05T16:44:01+02:00 ERR rules &lt;span style="color:#b8860b"&gt;error&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;unknown actionner&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;action&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Label Pod as Suspicious&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;actionner&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;foor:bar &lt;span style="color:#b8860b"&gt;rule&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Terminal shell in container&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2024-09-05T16:44:01+02:00 FTL rules &lt;span style="color:#b8860b"&gt;error&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;invalid rules&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a2f"&gt;exit&lt;/span&gt; status &lt;span style="color:#666"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="structured-logs"&gt;Structured Logs&lt;/h3&gt;
&lt;p&gt;The logs, whatever the component emitting them, keep always the same structure and contain a &lt;code&gt;trace_id&lt;/code&gt; field, allowing to follow the workflow performed by &lt;code&gt;Falco Talon&lt;/code&gt;.&lt;/p&gt;
&lt;div class="card card-sm pageinfo pageinfo-info my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;The value of &lt;code&gt;trace_id&lt;/code&gt; is also used to create the &lt;code&gt;TraceId&lt;/code&gt; the OTEL Traces, by using a log backend like Loki, it becomes easy to correlate the traces with the logs in the same UI, like Grafana.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The CLI contains more features, take a look at them on &lt;a href="https://docs.falco-talon.org/docs/installation_usage/usage/"&gt;docs /installation_usage/usage&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="example-1"&gt;Example&lt;/h4&gt;
&lt;p&gt;Each step is clearly identified by the &lt;em&gt;tag&lt;/em&gt; after the log level:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2024-09-05T14:52:03+02:00 INF event &lt;span style="color:#b8860b"&gt;event&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Redirect STDOUT/STDIN to Network Connection in Container&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;output&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&amp;lt;truncated&amp;gt; &lt;span style="color:#b8860b"&gt;priority&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;Critical &lt;span style="color:#b8860b"&gt;source&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;syscall &lt;span style="color:#b8860b"&gt;trace_id&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;c954bd8b3391a08f23079552fdd639f3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2024-09-05T14:52:03+02:00 INF match &lt;span style="color:#b8860b"&gt;event&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Redirect STDOUT/STDIN to Network Connection in Container&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;output&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&amp;lt;truncated&amp;gt; &lt;span style="color:#b8860b"&gt;priority&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;Critical &lt;span style="color:#b8860b"&gt;rule&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Reverse shell detected&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;source&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;syscall &lt;span style="color:#b8860b"&gt;trace_id&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;c954bd8b3391a08f23079552fdd639f3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2024-09-05T14:52:10+02:00 INF action &lt;span style="color:#b8860b"&gt;action&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Run tcpdump for 5s&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;actionner&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;kubernetes:tcpdump &lt;span style="color:#b8860b"&gt;event&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#a2f"&gt;test&lt;/span&gt; &lt;span style="color:#b8860b"&gt;namespace&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;default &lt;span style="color:#b8860b"&gt;output&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;a tcpdump &amp;#39;tcpdump.pcap&amp;#39; has been created&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;pod&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;cncf-55696bc998-5xjcb &lt;span style="color:#b8860b"&gt;rule&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Reverse shell detected&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;status&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;success &lt;span style="color:#b8860b"&gt;trace_id&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;c954bd8b3391a08f23079552fdd639f3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2024-09-05T14:52:10+02:00 INF notification &lt;span style="color:#b8860b"&gt;action&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Run tcpdump for 5s&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;actionner&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;kubernetes:tcpdump &lt;span style="color:#b8860b"&gt;notifier&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;k8sevents &lt;span style="color:#b8860b"&gt;rule&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Reverse shell detected&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;stage&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;action &lt;span style="color:#b8860b"&gt;status&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;success &lt;span style="color:#b8860b"&gt;trace_id&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;c954bd8b3391a08f23079552fdd639f3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2024-09-05T14:52:11+02:00 INF output &lt;span style="color:#b8860b"&gt;action&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Run tcpdump for 5s&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;bucket&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;xxxxx &lt;span style="color:#b8860b"&gt;category&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;aws &lt;span style="color:#b8860b"&gt;file&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;tcpdump.pcap &lt;span style="color:#b8860b"&gt;key&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;2024-09-05T14-52-10Z_default_cncf-55696bc998-5xjcb_tcpdump.pcap &lt;span style="color:#b8860b"&gt;output&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;the file &amp;#39;tcpdump.pcap&amp;#39; has been uploaded as the key &amp;#39;tcpdump/2024-09-05T14-52-10Z_default_cncf-55696bc998-5xjcb_tcpdump.pcap&amp;#39; to the bucket &amp;#39;xxxxx&amp;#39;&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;output_target&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;aws:s3 &lt;span style="color:#b8860b"&gt;prefix&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;tcpdump/ &lt;span style="color:#b8860b"&gt;region&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;us-east-1 &lt;span style="color:#b8860b"&gt;status&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;success &lt;span style="color:#b8860b"&gt;trace_id&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;c954bd8b3391a08f23079552fdd639f3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2024-09-05T14:52:11+02:00 INF notification &lt;span style="color:#b8860b"&gt;action&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Run tcpdump for 5s&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;actionner&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;kubernetes:tcpdump &lt;span style="color:#b8860b"&gt;notifier&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;k8sevents &lt;span style="color:#b8860b"&gt;output_target&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;aws:s3 &lt;span style="color:#b8860b"&gt;rule&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Reverse shell detected&amp;#34;&lt;/span&gt; &lt;span style="color:#b8860b"&gt;stage&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;output &lt;span style="color:#b8860b"&gt;status&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;success &lt;span style="color:#b8860b"&gt;trace_id&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;c954bd8b3391a08f23079552fdd639f3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="metrics"&gt;Metrics&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Falco Talon&lt;/code&gt; exposes the traditional &lt;code&gt;/metrics&lt;/code&gt; endpoint with metrics in the Prometheus format.&lt;/p&gt;
&lt;div class="card card-sm pageinfo pageinfo-info my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;To keep a consistency, all metrics related to &lt;code&gt;Falco Talon&lt;/code&gt; itself are prefixed with &lt;code&gt;falcosecurity_falco_talon_&lt;/code&gt;, it follows the same convention used by Falco for its metrics.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;For people interested by the metrics in the OTEL format, it's also available, see &lt;a href="https://docs.falco-talon.org/docs/installation_usage/metrics/"&gt;docs installation_usage/metrics&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="example-2"&gt;Example&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# HELP action_total number of actions
# TYPE action_total counter
falcosecurity_falco_talon_action_total{action=&amp;#34;Disable outbound connections&amp;#34;,actionner=&amp;#34;kubernetes:networkpolicy&amp;#34;,event=&amp;#34;Test logs&amp;#34;,namespace=&amp;#34;falco&amp;#34;,otel_scope_name=&amp;#34;github.com/Falco-Talon/falco-talon&amp;#34;,otel_scope_version=&amp;#34;devel&amp;#34;,pod=&amp;#34;falco-5b7kc&amp;#34;,rule=&amp;#34;Suspicious outbound connection&amp;#34;,status=&amp;#34;failure&amp;#34;} 6
falcosecurity_falco_talon_action_total{action=&amp;#34;Terminate Pod&amp;#34;,actionner=&amp;#34;kubernetes:terminate&amp;#34;,event=&amp;#34;Test logs&amp;#34;,namespace=&amp;#34;falco&amp;#34;,otel_scope_name=&amp;#34;github.com/Falco-Talon/falco-talon&amp;#34;,otel_scope_version=&amp;#34;devel&amp;#34;,pod=&amp;#34;falco-5b7kc&amp;#34;,rule=&amp;#34;Suspicious outbound connection&amp;#34;,status=&amp;#34;failure&amp;#34;} 6
# HELP event_total number of received events
# TYPE event_total counter
falcosecurity_falco_talon_event_total{event=&amp;#34;Unexpected outbound connection destination&amp;#34;,otel_scope_name=&amp;#34;github.com/Falco-Talon/falco-talon&amp;#34;,otel_scope_version=&amp;#34;devel&amp;#34;,priority=&amp;#34;Critical&amp;#34;,source=&amp;#34;syscalls&amp;#34;} 2
# HELP match_total number of matched events
# TYPE match_total counter
falcosecurity_falco_talon_match_total{event=&amp;#34;Unexpected outbound connection destination&amp;#34;,otel_scope_name=&amp;#34;github.com/Falco-Talon/falco-talon&amp;#34;,otel_scope_version=&amp;#34;devel&amp;#34;,priority=&amp;#34;Critical&amp;#34;,rule=&amp;#34;Suspicious outbound connection&amp;#34;,source=&amp;#34;syscalls&amp;#34;} 2
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="otel-traces"&gt;OTEL Traces&lt;/h3&gt;
&lt;p&gt;We know following logs can be not really convenient, and they may lack of useful informations. You can therefore enable the emits of Traces in the OTEL format. All backends accepting this format can be used to store and visualize them.&lt;/p&gt;
&lt;p&gt;To know how to set up the traces, see &lt;a href="https://docs.falco-talon.org/docs/installation_usage/traces/"&gt;docs installation_usage/traces&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="examples-3"&gt;Examples&lt;/h4&gt;
&lt;p&gt;In Grafana with Tempo:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-1-0/images/grafana-trace-2.png" alt="grafana trace 2" loading="lazy" /&gt;
&lt;img src="https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-1-0/images/grafana-trace-1.png" alt="grafana trace 1" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;In Jaeger:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://v0-43--falcosecurity.netlify.app/blog/falco-talon-v0-1-0/images/jaeger.png" alt="jaeger" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;The easiest way, for now, to deploy &lt;code&gt;Falco Talon&lt;/code&gt; is to use the Helm chart included in the repo.&lt;/p&gt;
&lt;h3 id="with-helm"&gt;with Helm&lt;/h3&gt;
&lt;div class="card card-sm pageinfo pageinfo-info my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;Since version 0.2.0, chart has been moved under the official &lt;a href="https://github.com/falcosecurity/charts"&gt;&lt;code&gt;falcosecurity/charts repository&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The procedure to install the &lt;code&gt;v0.1.0&lt;/code&gt; of &lt;code&gt;Falco Talon&lt;/code&gt; is:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo add falcosecurity https://falcosecurity.github.io/charts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo update falcosecurity
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm upgrade --install falco-talon falcosecurity/falco-talon
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="shoutout"&gt;Shoutout&lt;/h2&gt;
&lt;p&gt;I would like to shoutout some persons without the project would have been possible:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/danpapandrea/"&gt;&lt;strong&gt;Dan Papandrea&lt;/strong&gt;&lt;/a&gt; who thought about the first specs of the project with me and found the name &lt;code&gt;Falco Talon&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/igor-eulalio-morgado-lopes-310687163/"&gt;&lt;strong&gt;Igor Eulalio&lt;/strong&gt;&lt;/a&gt; who develops &lt;code&gt;Falco Talon&lt;/code&gt; with me, introduced amazing features like the traces, and injected so much energy in the project&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/rachidzarouali/"&gt;&lt;strong&gt;Rachid Zarouali&lt;/strong&gt;&lt;/a&gt;, the tester #1, a lot of features came from his ideas and feedbacks, he's also always a pleasure to present a talk about &lt;code&gt;Falco Talon&lt;/code&gt; with him&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/nigel-douglas-sysdig/"&gt;&lt;strong&gt;Nigel Douglas&lt;/strong&gt;&lt;/a&gt; who tests and promotes &lt;code&gt;Falco Talon&lt;/code&gt; with talks and blog posts since the alpha stages&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/cpanato/"&gt;&lt;strong&gt;Carlos Tadeu Panato Júnior&lt;/strong&gt;&lt;/a&gt; the magician of the CI, who still continue to manage the upgrade of the dependencies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-s-next"&gt;What's next?&lt;/h2&gt;
&lt;p&gt;This first release, the &lt;a href="https://github.com/falco-talon/falco-talon/releases/tag/v0.1.0"&gt;v0.1.0&lt;/a&gt;, is just GA and it's the beginning of the journey. All your feebacks and ideas are welcome, this project has for DNA to improve the security of the Kubernetes clusters by answering real needs and usages.&lt;/p&gt;
&lt;p&gt;The next big step to achieve is to join officially the &lt;a href="https://github.com/falcosecurity"&gt;&lt;code&gt;falcosecurity&lt;/code&gt; organization&lt;/a&gt;. &lt;a href="https://github.com/falcosecurity/evolution/issues/403"&gt;An issue has been created in the evolution repo&lt;/a&gt; to do so. Don't hesitate to vote for 🙏!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thomas&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;To go further:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub repo of the &lt;code&gt;Falco Talon&lt;/code&gt; project: &lt;a href="https://github.com/falco-talon/falco-talon"&gt;https://github.com/falco-talon/falco-talon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Official docs of &lt;code&gt;Falco Talon&lt;/code&gt;: &lt;a href="https://docs.falco-talon.org/"&gt;https://docs.falco-talon.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A record of a talk (by Rachid and Thomas) in French to introduce &lt;code&gt;Falco Talon&lt;/code&gt;: &lt;a href="https://www.youtube.com/watch?v=Mx28fhyKX7Q"&gt;https://www.youtube.com/watch?v=Mx28fhyKX7Q&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Blog: Introducing Falco 0.38.2</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-2/</link><pubDate>Mon, 19 Aug 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-2/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.38.2&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;p&gt;Falco's 0.38.2 is a patch release that includes the most important bugfixes addressed this summer ☀️:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a crash when using transformer operators (e.g. &lt;code&gt;tolower()&lt;/code&gt;) with a parameter that evaluates to an empty string&lt;/li&gt;
&lt;li&gt;Fixed a bug and a regression that could result in incorrect comparison between ipv4 addresses and ipv6 subnets and vice versa&lt;/li&gt;
&lt;li&gt;Fixed an &lt;a href="https://github.com/falcosecurity/falco/issues/3286"&gt;issue&lt;/a&gt; that could result in missing exe_upper_layer flag&lt;/li&gt;
&lt;li&gt;Fixed kernel module build for Linux 6.10&lt;/li&gt;
&lt;li&gt;Fixed a &lt;a href="https://github.com/falcosecurity/falco/issues/3276"&gt;bug&lt;/a&gt; that may result in kernel module crashes on recent versions of RHEL 9&lt;/li&gt;
&lt;li&gt;Added additional logging to better troubleshoot hard to reproduce issues like &amp;quot;could not parse param ... for event ... of type ...: expected length X, found Y&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This patch also introduces a small change with the format of the new experimental Prometheus metrics to make them easier to use. Metrics are now distinguished by the &lt;code&gt;file_name&lt;/code&gt; or &lt;code&gt;rule_name&lt;/code&gt; labels, in line with Prometheus best practices and supporting groupBy queries.&lt;/p&gt;
&lt;p&gt;Thanks to everyone in the community for helping us with spotting these annoying bugs and improving Falco every day 🐛! You make Falco successful 🦅!&lt;/p&gt;
&lt;p&gt;Thanks as always to the Falco maintainers for their support and effort during the entire release process.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it! 🏎️&lt;/h2&gt;
&lt;p&gt;As usual, in case you just want to try out the stable &lt;strong&gt;Falco 0.38.2&lt;/strong&gt;, you can install its packages following the process outlined in the docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prefer to use a container image? No problem at all! 🐳&lt;/p&gt;
&lt;p&gt;You can read more about running Falco with Docker in the &lt;a href="https://falco.org/docs/getting-started/running/#docker"&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also find the Falcosecurity container images on the public AWS ECR gallery:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;falco&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;falco-no-driver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;falco-driver-loader&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every Wednesday in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Enjoy 😎,&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Luca&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Halfway Through GSoC 2024: My Progress and Plans with Falco</title><link>https://v0-43--falcosecurity.netlify.app/blog/gsoc-2024-midterm/</link><pubDate>Wed, 24 Jul 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/gsoc-2024-midterm/</guid><description>
&lt;p&gt;Hello Falco community, I'm &lt;a href="https://github.com/GLVSKiriti"&gt;Kiriti&lt;/a&gt;, a current GSoC mentee under Falco Security. I have been working diligently to improve the testing and benchmarking capabilities of Falco’s event-generator project. Now that we've reached the midterm of GSoC, I'm eager to share the journey so far. In this blog, I'll delve into the details of my contributions, particularly focusing on two key PRs that have been merged, and outline my plans for the remainder of the program.&lt;/p&gt;
&lt;h3 id="my-project-enhancing-falco-s-event-generator"&gt;My Project: Enhancing Falco's Event-Generator&lt;/h3&gt;
&lt;p&gt;The event-generator is a vital utility within the Falco ecosystem, designed to test Falco's detection capabilities. My Google Summer of Code project focuses on upgrading the event-generator to enhance its testing and benchmarking capabilities, reliability, and consistency. Additionally, I am developing new Continuous Integration (CI) pipelines based on the upgraded event-generator. The ultimate goal is to evolve the event-generator into the standard tool for systematically assessing the correctness and performance of Falco’s threat detection capabilities during every release and development cycle.&lt;/p&gt;
&lt;h3 id="my-journey-so-far"&gt;My Journey So Far:&lt;/h3&gt;
&lt;p&gt;Before being selected for GSoC, I contributed to the event-generator repository. I am grateful to &lt;a href="https://github.com/leogr"&gt;Leonardo Grasso&lt;/a&gt; and &lt;a href="https://github.com/FedeDP"&gt;Federico Di Pierro&lt;/a&gt;, who played a vital role in getting my PRs merged during the pre-GSoC contribution phase. These contributions helped me understand the event-generator codebase. I am also thankful to my mentors, &lt;a href="https://github.com/jasondellaluce"&gt;Jason Dellaluce&lt;/a&gt; and &lt;a href="https://github.com/alacuku"&gt;Aldo Lacuku&lt;/a&gt;, for selecting me as a GSoC mentee. I will share my complete story of getting selected to GSoC in future.&lt;/p&gt;
&lt;p&gt;After my selection, Jason, Aldo, and I collectively designed a plan to enhance the event-generator. The community bonding period was crucial in designing and understanding the implementation plan. You can view our idea &lt;a href="https://hackmd.io/@aldolck/r1o9yU170"&gt;here&lt;/a&gt;, which we will implement during this GSoC period.&lt;/p&gt;
&lt;p&gt;Once the coding period began, we managed to merge two key PRs before the midterm. These PRs partially added support for testing Falco rules using declarative YAML files in the event-generator. We also added support for a container runner, which spawns a new container and runs the specified steps inside it. This is particularly useful for testing Falco rules that trigger when certain events are executed inside a container.&lt;/p&gt;
&lt;h3 id="detailed-look-at-the-merged-prs"&gt;Detailed Look at the Merged PRs:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4 id="pr1-add-support-for-declarative-yaml-file-testing"&gt;PR1: &lt;a href="https://github.com/falcosecurity/event-generator/pull/211"&gt;Add support for declarative yaml file testing&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;what's new added in this PR?:
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Added a new sub command for run command called declarative:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;event-generator run declarative [yaml-file-path]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implemented a helper function that parses the YAML file and returns the content in a specified format. The function signature is as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;func&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#00a000"&gt;parseYamlFile&lt;/span&gt;(filepath&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;)&lt;span style="color:#bbb"&gt; &lt;/span&gt;(declarative.Tests,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;error&lt;/span&gt;)&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Each yaml file structure should be in the following format&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;SyscallStep&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;struct&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Syscall&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;`yaml:&amp;#34;syscall&amp;#34;`&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Args&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;map&lt;/span&gt;[&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;]&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;`yaml:&amp;#34;args&amp;#34;`&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Test&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;struct&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Rule&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;`yaml:&amp;#34;rule&amp;#34;`&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Runner&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;`yaml:&amp;#34;runner&amp;#34;`&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Before&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;`yaml:&amp;#34;before&amp;#34;`&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Steps&lt;span style="color:#bbb"&gt; &lt;/span&gt;[]SyscallStep&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;`yaml:&amp;#34;steps&amp;#34;`&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;After&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;`yaml:&amp;#34;after&amp;#34;`&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Tests&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;struct&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Tests&lt;span style="color:#bbb"&gt; &lt;/span&gt;[]Test&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;`yaml:&amp;#34;tests&amp;#34;`&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implemented a host runner
A host runner is represented with the following interface&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Runner&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;interface&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#00a000"&gt;Setup&lt;/span&gt;(beforeScript&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;)&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;error&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#00a000"&gt;ExecuteStep&lt;/span&gt;(step&lt;span style="color:#bbb"&gt; &lt;/span&gt;SyscallStep)&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;error&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#00a000"&gt;Cleanup&lt;/span&gt;(afterScript&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;)&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;error&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Setup method runs a shell script (&lt;code&gt;beforeScript&lt;/code&gt;) before executing the specified steps using the &lt;code&gt;ExecuteStep&lt;/code&gt; method. The &lt;code&gt;Cleanup&lt;/code&gt; method runs a shell script (&lt;code&gt;afterScript&lt;/code&gt;) after executing the steps.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;ExecuteStep&lt;/code&gt; method makes some syscalls specified in the YAML file using helper functions. For example, when a write syscall is used in the YAML file steps, it runs the following write syscall helper function:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added helper for making a write syscall:
The function signature is as follows&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;func&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#00a000"&gt;WriteSyscall&lt;/span&gt;(filePath&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;content&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;)&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;error&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4 id="pr2-add-container-runner-support"&gt;PR2: &lt;a href="https://github.com/falcosecurity/event-generator/pull/216"&gt;Add container runner support&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To implement a container runner, we needed the ability to spawn a container and execute the events inside it. We achieved this using the Docker GO SDK.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The container runner interface is similar to the host runner, with two new parameters: &lt;code&gt;ContainerId&lt;/code&gt; and &lt;code&gt;Image&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;Setup&lt;/code&gt; method spawns a container with the given image name, saves the &lt;code&gt;ContainerId&lt;/code&gt;, and also executes the &lt;code&gt;beforeScript&lt;/code&gt;. The &lt;code&gt;Cleanup&lt;/code&gt; method removes the container after executing the steps.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Runner&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;interface&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;ContainerId&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;Image&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#00a000"&gt;Setup&lt;/span&gt;(beforeScript&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;)&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;error&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#00a000"&gt;ExecuteStep&lt;/span&gt;(step&lt;span style="color:#bbb"&gt; &lt;/span&gt;SyscallStep)&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;error&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#00a000"&gt;Cleanup&lt;/span&gt;(afterScript&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;string&lt;/span&gt;)&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;error&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="future-work"&gt;Future Work:&lt;/h3&gt;
&lt;p&gt;The upcoming tasks we are going to handle are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Implement &lt;code&gt;ExecuteStep&lt;/code&gt; method in container runner&lt;/li&gt;
&lt;li&gt;Add support/ helper functions to make various syscalls&lt;/li&gt;
&lt;li&gt;Improve benchmarking capabilities of the event-generator&lt;/li&gt;
&lt;li&gt;Integrate the event-generator in falco ci pipeline&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="conclusion"&gt;Conclusion:&lt;/h3&gt;
&lt;p&gt;Participating in GSoC with Falco Security has been an incredible journey so far. Enhancing the event-generator has provided me with invaluable insights into cloud-native runtime security and the complexities of Falco’s detection capabilities. The support and guidance from my mentors, Jason and Aldo, through our weekly 1:1 calls, have been crucial in overcoming challenges and driving the project forward.&lt;/p&gt;
&lt;p&gt;As I look ahead, I am excited about the upcoming tasks and the potential impact our improvements will have on the Falco ecosystem. I eagerly anticipate continuing this journey and sharing more updates on our progress. Thank you for following along!&lt;/p&gt;</description></item><item><title>Blog: Deploy Falco on a Talos cluster</title><link>https://v0-43--falcosecurity.netlify.app/blog/deploy-falco-talos-cluster/</link><pubDate>Mon, 22 Jul 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/deploy-falco-talos-cluster/</guid><description>
&lt;p&gt;&lt;a href="https://www.talos.dev/"&gt;&lt;code&gt;Talos Linux&lt;/code&gt;&lt;/a&gt; is an OS designed for Kubernetes, with in mind to be secure, immutable and minimal. It offers a solution for having secure nodes for your Kubernetes cluster. Running Falco on them requires some configurations we'll see in this blog post. The good news is everything is available to collect the syscalls with &lt;code&gt;eBPF&lt;/code&gt; and also the audit logs from the &lt;code&gt;Kubernetes&lt;/code&gt; control plane.&lt;/p&gt;
&lt;div class="alert alert-primary" role="alert"&gt;
In this tutorial we'll use a local &lt;code&gt;Talos&lt;/code&gt; cluster created with Docker containers for convenience, adapt the configurations to your own context.
&lt;/div&gt;
&lt;h2 id="requirements"&gt;Requirements&lt;/h2&gt;
&lt;p&gt;For this tutorial, you'll need several tools installed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/engine/install/"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://helm.sh/docs/intro/install/"&gt;Helm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.talos.dev/v1.7/introduction/getting-started/"&gt;talosctl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/#kubectl"&gt;kubectl&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="set-up-the-talos-cluster"&gt;Set up the Talos cluster&lt;/h2&gt;
&lt;p&gt;We'll start with a 2 workers cluster:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talosctl cluster create --workers &lt;span style="color:#666"&gt;2&lt;/span&gt; --wait-timeout 5m
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After a few minutes, your containers and so your cluster should be up and running. You can check the status with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talosctl cluster show --nodes 10.5.0.2,10.5.0.3,10.5.0.4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Output:&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;PROVISIONER docker
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME talos-default
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NETWORK NAME talos-default
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NETWORK CIDR 10.5.0.0/24
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NETWORK GATEWAY
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NETWORK MTU &lt;span style="color:#666"&gt;1500&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NODES:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME TYPE IP CPU RAM DISK
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talos-default-controlplane-1 controlplane 10.5.0.2 - - -
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talos-default-worker-1 worker 10.5.0.3 - - -
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talos-default-worker-2 worker 10.5.0.4 - - -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="get-the-kubeconfig"&gt;Get the kubeconfig&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;talosctl&lt;/code&gt; CLI allows to easily set up your &lt;code&gt;kubeconfig&lt;/code&gt; file for managing the apps in your fresh new cluster:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talosctl kubeconfig -n 10.5.0.2 -f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check you have access to the cluster:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl cluster-info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Output:&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Kubernetes control plane is running at https://10.5.0.2:6443
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CoreDNS is running at https://10.5.0.2:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;To further debug and diagnose cluster problems, use &lt;span style="color:#b44"&gt;&amp;#39;kubectl cluster-info dump&amp;#39;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="patch-the-cluster"&gt;Patch the cluster&lt;/h2&gt;
&lt;p&gt;When you deploy &lt;code&gt;Falco&lt;/code&gt; with &lt;code&gt;Helm&lt;/code&gt; in a &lt;code&gt;Kubernetes&lt;/code&gt; cluster, an &lt;code&gt;initContainer&lt;/code&gt; is bootstrapped to inject the &lt;code&gt;eBPF&lt;/code&gt; probe into the kernel of each node. This behavior requires some privileges but &lt;code&gt;Talos&lt;/code&gt;, designed to be secured, doesn't allow that by default. It's possible anyway by patching the nodes.&lt;/p&gt;
&lt;p&gt;Create this &lt;code&gt;patch.yaml&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; apiServer:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; admissionControl:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - name: PodSecurity
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; configuration:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exemptions:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; namespaces:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="alert alert-primary" role="alert"&gt;
As you can see, we allow the pods in the namespace &lt;code&gt;falco&lt;/code&gt; to use &lt;code&gt;PodSecurity&lt;/code&gt; settings.
&lt;/div&gt;
&lt;p&gt;And now patch the cluster:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talosctl patch machineconfig --patch @patch.yaml --nodes 10.5.0.2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Output:&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;patched MachineConfigs.config.talos.dev/v1alpha1 at the node 10.5.0.2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Applied configuration without a reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="install-falco"&gt;Install Falco&lt;/h2&gt;
&lt;p&gt;We'll use &lt;a href="https://helm.sh"&gt;Helm&lt;/a&gt; to deploy &lt;code&gt;Falco&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install the Helm registry for the &lt;code&gt;Falco&lt;/code&gt; chart:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo add falcosecurity https://falcosecurity.github.io/charts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Create the &lt;code&gt;values.yaml&lt;/code&gt; file:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; values.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;driver&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;modern_ebpf&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tty&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falcosidekick&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;replicaCount&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;webui&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;replicaCount&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;redis&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;storageEnabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;service&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;NodePort&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;port&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;2802&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;targetPort&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;2802&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;nodePort&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;30128&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falcoctl&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;artifact&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;install&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;follow&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;artifact&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;install&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;refs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[falco-rules:latest, falco-incubating-rules:latest, k8saudit-rules:latest]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;follow&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;refs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[falco-rules:latest, falco-incubating-rules:latest, k8saudit-rules:latest]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;services&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8saudit-webhook&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ClusterIP&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;ports&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;port&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;9765&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;targetPort&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;9765&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;protocol&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;TCP&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;http&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falco&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rules_files&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/falco_rules.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/falco-incubating_rules.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/k8s_audit_rules.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/rules.d&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8saudit&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;libk8saudit.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;init_config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;open_params&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;http://:9765/k8s-audit&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;json&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;libjson.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;init_config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;load_plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[k8saudit, json]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Deploy &lt;code&gt;Falco&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm upgrade -i falco falcosecurity/falco -n falco --create-namespace -f values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Follow the deployment:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -w -n falco
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Before moving on, let's take time to explain why some of these values.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;driver&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;modern_ebpf&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tty&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;We use the &lt;code&gt;modern_epbf&lt;/code&gt; probe to collec the syscall events.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tty: true&lt;/code&gt; allows to get the alerts in the stdout immediatly, without any buffering.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falcosidekick&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;replicaCount&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;webui&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;replicaCount&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;redis&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;storageEnabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;service&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;NodePort&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;port&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;2802&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;targetPort&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;2802&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;nodePort&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;30128&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;We install &lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;&lt;code&gt;Falcosidekick&lt;/code&gt;&lt;/a&gt; and its &lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;&lt;code&gt;UI&lt;/code&gt;&lt;/a&gt;. All settings for the forwarding of the events between &lt;code&gt;Falco&lt;/code&gt; and &lt;code&gt;Falcosidekick&lt;/code&gt; are managed by the &lt;code&gt;Helm&lt;/code&gt; chart.&lt;/li&gt;
&lt;li&gt;As it's local cluster, we set the &lt;code&gt;replicaCounts&lt;/code&gt; to 1, it loses the HA but save resources.&lt;/li&gt;
&lt;li&gt;The UI will be exposed directly by the nodes on the port &lt;code&gt;30128&lt;/code&gt;, very convenient for a local cluster, &lt;strong&gt;prefer an ingress or just a port-forward for production&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falcoctl&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;artifact&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;install&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;follow&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;artifact&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;install&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;refs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[falco-rules:latest, falco-incubating-rules:latest, k8saudit-rules:latest]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;follow&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;refs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[falco-rules:latest, falco-incubating-rules:latest, k8saudit-rules:latest]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falcoctl"&gt;&lt;code&gt;falcoctl&lt;/code&gt;&lt;/a&gt; controls which plugins and rules to install and follow.&lt;/li&gt;
&lt;li&gt;We install the stable and incubating rules for &lt;code&gt;Falco&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;We install and follow the rules for the Kubernetes audit logs, the relevant plugins &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit"&gt;&lt;code&gt;k8saudit&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit"&gt;&lt;code&gt;json&lt;/code&gt;&lt;/a&gt; will be automatically installed by &lt;code&gt;falcoctl&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;services&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8saudit-webhook&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;type&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ClusterIP&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;ports&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;port&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;9765&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;targetPort&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;9765&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;protocol&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;TCP&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;http&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;k8saudit&lt;/code&gt; plugin requires to create a &lt;code&gt;Service&lt;/code&gt; listen the incoming events from the control plane.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falco&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rules_files&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/falco_rules.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/falco-incubating_rules.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/k8s_audit_rules.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/rules.d&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8saudit&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;libk8saudit.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;init_config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;open_params&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;http://:9765/k8s-audit&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;json&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;libjson.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;init_config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;load_plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[k8saudit, json]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;We load the rules for the &lt;code&gt;syscalls&lt;/code&gt; and for the &lt;code&gt;audit logs&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;We load the plugins and their config. The &lt;code&gt;k8saudit&lt;/code&gt; plugin will listen on the same port than configured in the &lt;code&gt;services&lt;/code&gt; section.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="forward-the-audit-logs-to-falco"&gt;Forward the audit logs to Falco&lt;/h2&gt;
&lt;p&gt;In a classic context, the control plane is configured to send its audit logs to an endpoint, like the &lt;code&gt;k8saudit&lt;/code&gt; plugin. With &lt;code&gt;Talos&lt;/code&gt;, it's not yet possible to configure this endpoint, but fortunately for us, these audit logs are written as files in the &lt;code&gt;/var/log/audit/kube/&lt;/code&gt; folder of the master nodes.&lt;/p&gt;
&lt;p&gt;We'll use &lt;a href="https://fluentbit.io/"&gt;&lt;code&gt;Fluent Bit&lt;/code&gt;&lt;/a&gt; to parse these files and forward them to the &lt;code&gt;k8saudit&lt;/code&gt; plugin.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install the Helm registry for the &lt;code&gt;Fluent Bit&lt;/code&gt; chart:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo add fluent https://fluent.github.io/helm-charts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Create the &lt;code&gt;values.yaml&lt;/code&gt; file:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#b44"&gt;&amp;lt;&amp;lt; EOF &amp;gt; values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;podAnnotations:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; fluentbit.io/exclude: &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;daemonSetVolumes:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; - name: varlog
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; hostPath:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; path: /var/log
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;daemonSetVolumeMounts:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; - name: varlog
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; mountPath: /var/log
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;tolerations:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; - operator: Exists
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; effect: NoSchedule
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;nodeSelector:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; node-role.kubernetes.io/control-plane: &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;config:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; service: |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; [SERVICE]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Flush 5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Daemon Off
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Log_Level warn
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; HTTP_Server On
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; HTTP_Listen 0.0.0.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; HTTP_Port 2020
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Health_Check On
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Parsers_File /fluent-bit/etc/parsers.conf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Parsers_File /fluent-bit/etc/conf/custom_parsers.conf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; inputs: |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; [INPUT]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Name tail
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Alias audit
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Path /var/log/audit/kube/*.log
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Parser audit
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Tag audit.*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Ignore_older true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; customParsers: |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; [PARSER]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Name audit
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Format json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Time_Key requestReceivedTimestamp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Time_Format %Y-%m-%dT%H:%M:%S.%L%z
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; outputs: |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; [OUTPUT]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Name http
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Alias http
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Match *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Host falco-k8saudit-webhook.falco.svc.cluster.local
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Port 9765
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; URI /k8s-audit
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt; Format json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Deploy &lt;code&gt;Fluent Bit&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm upgrade -i fluent-bit fluent/fluent-bit -n kube-system -f values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="alert alert-warning" role="alert"&gt;
To be allowed to mount the folder with the logs, we install &lt;code&gt;Fluent Bit&lt;/code&gt; in the namespace &lt;code&gt;kube-system&lt;/code&gt;.
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Follow the deployment:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -n kube-system -w -l app.kubernetes.io/name&lt;span style="color:#666"&gt;=&lt;/span&gt;fluent-bit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some explanations of the &lt;code&gt;values.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;daemonSetVolumes&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;varlog&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;hostPath&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/var/log&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;daemonSetVolumeMounts&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;varlog&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;mountPath&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/var/log&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The host folder with the logs is mounted inside the &lt;code&gt;Fluent Bit&lt;/code&gt; pod.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tolerations&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;operator&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Exists&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;effect&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;NoSchedule&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;nodeSelector&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;node-role.kubernetes.io/control-plane&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;These settings are there to deploy &lt;code&gt;Fluent Bit&lt;/code&gt; on the master nodes only.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;inputs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; [INPUT]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Name tail
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Alias audit
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Path /var/log/audit/kube/*.log
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Parser audit
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Tag audit.*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Ignore_older true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Fluent Bit&lt;/code&gt; will parse the files &lt;code&gt;*.logs&lt;/code&gt; from the folder &lt;code&gt;/var/log/audit/kube/&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;outputs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; [OUTPUT]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Name http
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Alias http
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Match *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Host falco-k8saudit-webhook.falco.svc.cluster.local
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Port 9765
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; URI /k8s-audit
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Format json&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The logs are forwarded to the endpoint &lt;code&gt;falco-k8saudit-webhook.falco.svc.cluster.local:9765/k8s-audit&lt;/code&gt;, which is listened by the &lt;code&gt;k8saudit&lt;/code&gt; plugin.&lt;/p&gt;
&lt;h2 id="visalize-the-alerts"&gt;Visalize the alerts&lt;/h2&gt;
&lt;p&gt;Everything should be set up and running from now. You can access to the &lt;code&gt;Falcosidekick-UI&lt;/code&gt; by the URL &lt;a href="http://10.5.0.2:30128"&gt;http://10.5.0.2:30128&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The default credentials are &lt;code&gt;admin&lt;/code&gt;/&lt;code&gt;admin&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/ui.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Talos Linux&lt;/code&gt; is a more and more famous solution for creating resilient and secure &lt;code&gt;Kubernetes&lt;/code&gt; clusters, but the trust doesn't exclude control. Mixing &lt;code&gt;Talos&lt;/code&gt; and &lt;code&gt;Falco&lt;/code&gt; makes you gain a step upper in term of security for your applications.
Thanks to our modern &lt;code&gt;eBPF&lt;/code&gt; probe and our &lt;code&gt;k8saudit&lt;/code&gt; plugin, you can see how easy and quick it is to install &lt;code&gt;Falco&lt;/code&gt; in &lt;code&gt;Talos&lt;/code&gt; and start to observe what's happening.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href="https://twitter.com/TheBidouilleur"&gt;Quentin Joly&lt;/a&gt; for his &lt;a href="https://a-cup-of.coffee/blog/talos/"&gt;blog post about &lt;code&gt;Talos&lt;/code&gt;&lt;/a&gt; which helped me a lot to write this one.&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;Get started in &lt;a href="http://falco.org/"&gt;Falco.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Check out the &lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;Falcosidekick project on GitHub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check out the &lt;a href="https://github.com/falcosecurity/falcosidekick-ui"&gt;Falcosidekick UI project on GitHub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Get involved in the &lt;a href="https://falco.org/community/"&gt;Falco community&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Meet the maintainers on the &lt;a href="https://kubernetes.slack.com/?redir=%2Farchives%2FCMWH3EH32"&gt;Falco Slack&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Follow &lt;a href="https://twitter.com/falco_org"&gt;@falco_org on Twitter&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Blog: Falcosidekick 2.29.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falcosidekick-2-29-0/</link><pubDate>Tue, 02 Jul 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falcosidekick-2-29-0/</guid><description>
&lt;p&gt;Almost 1 year without a release of Falcosidekick, but version 2.29.0 is finally here. Thanks to all contributors for their patience, you made amazing contributions and we're happy to finally have them available for all users.&lt;/p&gt;
&lt;p&gt;Like for every releases, a small recap about its adoption. Falcosidekick continues to be adopted, even if the rate is not as high as before, but we're sure it will explode once again with this new fresh version.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/falcosidekick-docker-pulls.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Once more, Falcosidekick expands Falco's integrability with a lot of new outputs. That and the introduction of many new features has been possible thanks to the hard work of the community. You can find a comprehensive list of these in the &lt;a href="https://github.com/falcosecurity/falcosidekick/releases/tag/2.29.0"&gt;changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="new-outputs"&gt;New outputs&lt;/h2&gt;
&lt;p&gt;More and more systems are integrated as outputs in Falcosidekick, more and more often directly by the companies themselves and not their end users. It shows Falco and Falcosidekick are seen as major components in the security fields, and trusted as de facto standards.&lt;/p&gt;
&lt;h3 id="dynatrace"&gt;Dynatrace&lt;/h3&gt;
&lt;p&gt;Mario Kahlhofer, aka &lt;a href="https://github.com/@blu3r4y"&gt;@blu3r4y&lt;/a&gt;, from Dynatrace, integrated the well known observability and security platform he works for. You can even read his &lt;a href="https://www.dynatrace.com/news/blog/ttp-based-threat-hunting-solves-alert-noise/"&gt;blog post about&lt;/a&gt;, to discover how to correlate the Falco events with their APM agent events.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/dynatrace.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h3 id="sumologic"&gt;Sumologic&lt;/h3&gt;
&lt;p&gt;Carlo Mencarelli, aka &lt;a href="https://github.com/mencarellic"&gt;@mencarellic&lt;/a&gt;, did the exporter of the Falco events to &lt;a href="https://www.sumologic.com/"&gt;Sumologic&lt;/a&gt;, the SaaS platform for your logs.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/sumologic.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h3 id="otlp-traces"&gt;OTLP Traces&lt;/h3&gt;
&lt;p&gt;It started as an internal hackaton at &lt;a href="https://grafana.com/"&gt;Grafana Labs&lt;/a&gt; and became a real integration thanks to JuanJo Ciarlante (&lt;a href="https://github.com/jjo"&gt;@jjo&lt;/a&gt;). You can now export the Falco event as traces, to have an automatic correlation between the detected events.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
It works only for the syscall related events.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="images/otlp-traces.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h3 id="quickwit"&gt;Quickwit&lt;/h3&gt;
&lt;p&gt;After a demo of Falco at a CNCF Meetup, the &lt;a href="https://quickwit.io/"&gt;Quickwit&lt;/a&gt; team wanted to add their product as a new output for Falcosidekick, and they did it. You can now easily index your Falco events in their search engine thanks to the work of Idriss Neumann (&lt;a href="https://github.com/idrissneumann"&gt;@idrissneumann&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src="images/quickwit.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h3 id="falco-talon"&gt;Falco Talon&lt;/h3&gt;
&lt;p&gt;New born in the Falco ecosystem, trying to complete the last missing piece: the reaction. You can now forward the Falco events to &lt;a href="https://docs.falco-talon.org"&gt;Falco Talon&lt;/a&gt;, a tailor made no-code response engine for Falco. The project is still in alpha stage, but moves quickly. Stay tuned.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/falco-talon.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="new-features"&gt;New features&lt;/h2&gt;
&lt;p&gt;Aside from new outputs, we introduced very important and useful new features. Let's do a recap of them.&lt;/p&gt;
&lt;h3 id="revamp-of-the-policy-report-output"&gt;Revamp of the Policy Report output&lt;/h3&gt;
&lt;p&gt;The Policy Report feature in Kubernetes evolved since its integration in Falcosidekick, it was the time to do some clean up. The report now contains more information, and their displays in the &lt;a href="https://github.com/kyverno/policy-reporter/tree/main?tab=readme-ov-file#policy-reporter-ui"&gt;Policy Reporter UI&lt;/a&gt; is better.&lt;/p&gt;
&lt;h3 id="new-outputfieldformat-setting"&gt;New outputFieldFormat setting&lt;/h3&gt;
&lt;p&gt;Some systems perform deduplication of the events, for example the on-call platforms. They use the content of the &lt;code&gt;output&lt;/code&gt; to do so, but the current format starting with a timestamp prevents the process to run as expected. A new setting &lt;code&gt;outputFieldFormat&lt;/code&gt; is now available allows to &amp;quot;format&amp;quot; the &lt;code&gt;output&lt;/code&gt; field of the Falco payload before forwarding it to the outputs.&lt;/p&gt;
&lt;p&gt;The default format received from Falco is : &lt;code&gt;&amp;lt;timestamp&amp;gt;: &amp;lt;priority&amp;gt; &amp;lt;output&amp;gt;&lt;/code&gt; which corresponds to this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;14:37:27.505989596: Warning Detected ptrace PTRACE_ATTACH attempt (proc_pcmdline=%proc.pcmdline evt_type=%evt.type user=%user.name user_uid=%user.uid user_loginuid=%user.loginuid process=%proc.name proc_exepath=%proc.exepath parent=%proc.pname command=%proc.cmdline terminal=%proc.tty exe_flags=%evt.arg.flags %container.info)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;By removing the &lt;code&gt;&amp;lt;timestamp&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;priority&amp;gt;&lt;/code&gt;, you get:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Detected ptrace PTRACE_ATTACH attempt (proc_pcmdline=%proc.pcmdline evt_type=%evt.type user=%user.name user_uid=%user.uid user_loginuid=%user.loginuid process=%proc.name proc_exepath=%proc.exepath parent=%proc.pname command=%proc.cmdline terminal=%proc.tty exe_flags=%evt.arg.flags %container.info)
&lt;/code&gt;&lt;/pre&gt;&lt;div class="card card-sm pageinfo pageinfo-info my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;If you use the settings &lt;code&gt;customFields&lt;/code&gt; and &lt;code&gt;templatedFields&lt;/code&gt; of Falcosidekick to inject new elements in the &lt;code&gt;output_fields&lt;/code&gt;, it's also possible to have them in the &lt;code&gt;output&lt;/code&gt; with the tokens &lt;code&gt;&amp;lt;custom_fields&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;templated_fields&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="alternative-endpoints-for-aws-s3"&gt;Alternative endpoints for AWS S3&lt;/h3&gt;
&lt;p&gt;Some projects like &lt;a href="https://min.io/"&gt;Minio&lt;/a&gt; are S3-compliant, you can now use them as target for the &lt;code&gt;AWS S3&lt;/code&gt; output by changing the endpoint to use. Thanks to &lt;a href="https://github.com/gysel"&gt;@gysel&lt;/a&gt; for this feature.&lt;/p&gt;
&lt;h3 id="split-of-the-docs"&gt;Split of the docs&lt;/h3&gt;
&lt;p&gt;The main README of the project became really huge over the years, with all those available outputs. We did a big refactor and you can now find one file per output, with more details about the configuration, the default values and some tips. The docs are &lt;a href="https://github.com/falcosecurity/falcosidekick/tree/master/docs/outputs"&gt;here&lt;/a&gt;, and any help is welcome to make them even better.&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;p&gt;The contributors fixed several bugs, here's a non exhaustive list of the more important ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix missing root CA for the &lt;code&gt;Kafka&lt;/code&gt; output (thanks to &lt;a href="https://github.com/claviola"&gt;@claviola&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix bug with the extension &lt;code&gt;source&lt;/code&gt; in the &lt;code&gt;CloudEvent&lt;/code&gt; output&lt;/li&gt;
&lt;li&gt;Fix panics in the &lt;code&gt;Prometheus&lt;/code&gt; output when &lt;code&gt;hostname&lt;/code&gt; field is missing&lt;/li&gt;
&lt;li&gt;Fix locks in the &lt;code&gt;Loki&lt;/code&gt; output (thanks to &lt;a href="https://github.com/bsod90"&gt;@bsod90&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix mTLS client verification failures due to missing ClientCAs (thanks to &lt;a href="https://github.com/jgmartinez"&gt;@jgmartinez&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix wrong env vars for pagerduty output&lt;/li&gt;
&lt;li&gt;Remove hard settings for usernames in &lt;code&gt;Mattermost&lt;/code&gt; and &lt;code&gt;Rocketchat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fix multi lines json in the error lines (thanks to &lt;a href="https://github.com/idrissneumann"&gt;@idrissneumann&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix duplicated custom headers in clients&lt;/li&gt;
&lt;li&gt;Fix the labels for the &lt;code&gt;AlertManager&lt;/code&gt; output (thanks to &lt;a href="https://github.com/Umaaz"&gt;@Umaaz&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;You can find the full changelog &lt;a href="https://github.com/falcosecurity/falcosidekick/releases/tag/2.29.0"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The respective Helm charts are already updated and allow you to test by yourself all these great new features. Just issue the &lt;code&gt;helm repo update; helm upgrade --reuse-values -n falco&lt;/code&gt; command to do so.&lt;/p&gt;
&lt;p&gt;Once again, thanks to all the adopters and contributors who helped and contributed to this project all these years. We would never have reached this success without you.&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;Get started in &lt;a href="http://falco.org/"&gt;Falco.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Check out the &lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;Falcosidekick project on GitHub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check out the &lt;a href="https://docs.falco-talon.org"&gt;Falco Talon project docs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Get involved in the &lt;a href="https://falco.org/community/"&gt;Falco community&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Meet the maintainers on the &lt;a href="https://kubernetes.slack.com/?redir=%2Farchives%2FCMWH3EH32"&gt;Falco Slack&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Follow &lt;a href="https://twitter.com/falco_org"&gt;@falco_org on Twitter&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Blog: Introducing Falco 0.38.1</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-1/</link><pubDate>Wed, 19 Jun 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-1/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.38.1&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;p&gt;Falco's 0.38.1 is a patch release aimed at addressing a few important bugs. It includes the following fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A Falco crash while running with plugins and metrics enabled has been solved&lt;/strong&gt; (&lt;a href="https://github.com/falcosecurity/falco/issues/3229"&gt;https://github.com/falcosecurity/falco/issues/3229&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Falco &lt;code&gt;-p&lt;/code&gt; output format option can now be passed to plugin events while &lt;code&gt;-pc&lt;/code&gt; and &lt;code&gt;-pk&lt;/code&gt; can only be used for syscall sources. Fixes an issue that could result in Falco exiting with &lt;code&gt;LOAD_ERR_COMPILE_OUTPUT&lt;/code&gt; on startup with k8s clusters that had &lt;code&gt;-pk&lt;/code&gt; and audit enabled (&lt;a href="https://github.com/falcosecurity/falco/pull/3239"&gt;https://github.com/falcosecurity/falco/pull/3239&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fixed an issue that could prevent the integer compare operators &lt;code&gt;&amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;lt;=&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;gt;=&lt;/code&gt; in rules from working properly (&lt;a href="https://github.com/falcosecurity/falco/issues/3245"&gt;https://github.com/falcosecurity/falco/issues/3245&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ignore NSS user and group entries while loading users and groups (&lt;a href="https://github.com/falcosecurity/libs/pull/1909"&gt;https://github.com/falcosecurity/libs/pull/1909&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Issues related to the new metric-related plugins API (&lt;a href="https://github.com/falcosecurity/libs/pull/1885%29"&gt;https://github.com/falcosecurity/libs/pull/1885)&lt;/a&gt;. Plugin API was also bumped to 3.6.0.&lt;/li&gt;
&lt;li&gt;Plugin metrics are now enabled in Falco (&lt;a href="https://github.com/falcosecurity/falco/pull/3228%29"&gt;https://github.com/falcosecurity/falco/pull/3228)&lt;/a&gt;. Note that plugin must make use of the new metrics-related API to expose metrics.&lt;/li&gt;
&lt;li&gt;Libs were updated to &lt;a href="https://github.com/falcosecurity/libs/releases/tag/0.17.2"&gt;0.17.2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone in the community for helping us in spotting these annoying bugs 🐛! You make Falco successful 🦅!&lt;/p&gt;
&lt;p&gt;Thanks as always to the Falco maintainers for their support and effort during the entire release process.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it! 🏎️&lt;/h2&gt;
&lt;p&gt;As usual, in case you just want to try out the stable &lt;strong&gt;Falco 0.38.1&lt;/strong&gt;, you can install its packages following the process outlined in the docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prefer to use a container image? No problem at all! 🐳&lt;/p&gt;
&lt;p&gt;You can read more about running Falco with Docker in the &lt;a href="https://falco.org/docs/getting-started/running/#docker"&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also find the Falcosecurity container images on the public AWS ECR gallery:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;falco&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;falco-no-driver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;falco-driver-loader&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every Wednesday in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Federico&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.38.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-0/</link><pubDate>Thu, 30 May 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-0/</guid><description>
&lt;p&gt;Dear Falco Community, today we are happy to announce the release of Falco 0.38.0! This is the first Falco release since its &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-graduation/"&gt;graduation&lt;/a&gt; within the CNCF, and, as usual, brings many improvements and features alongside some pretty big changes in its configuration mechanism.&lt;/p&gt;
&lt;p&gt;This release brings an easier to use mechanism to install and configure your drivers, new rule language features, better support for Falco metrics and many more improvements.&lt;/p&gt;
&lt;p&gt;During this release cycle, we merged more than 100 PRs on Falco and more than 180 PRs for libs and drivers, version 0.17.0 and version 7.2.0 respectively. Thank you to our maintainers and contributors, as this would not happen without your support and dedication!&lt;/p&gt;
&lt;p&gt;To learn all about these changes, read on!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What’s new? TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Key features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-0/#driver-loader-magic"&gt;New capabilities&lt;/a&gt; in &lt;code&gt;falcoctl&lt;/code&gt; to automatically select the best driver for your system and make it easier to install&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-0/#organize-your-falco-configuration-files"&gt;Falco configuration file&lt;/a&gt; can now be split into multiple files to make it more manageable&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-0/#choose-which-rules-to-load-at-runtime"&gt;Rule selection&lt;/a&gt; from configuration file or command line&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-0/#choose-which-rules-to-load-at-runtime"&gt;Field transformers and value comparison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-0/#prometheus-metrics-support"&gt;Prometheus metrics support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-0/#plugin-api-improvements"&gt;Plugin API improvements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This release also comes with &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-38-0/#breaking-changes"&gt;breaking changes&lt;/a&gt; that you should be aware of before upgrading.&lt;/p&gt;
&lt;h2 id="major-features-and-improvements"&gt;Major features and improvements&lt;/h2&gt;
&lt;p&gt;The 0.38.0 release contains a number of feature and UX improvements, here are list of some of the key new capabilities.&lt;/p&gt;
&lt;h3 id="driver-loader-magic"&gt;Driver loader magic ✨&lt;/h3&gt;
&lt;p&gt;If we could pick the most common issue that we've heard from adopters and we experienced first hand is the fact that sometimes we all struggle with installing and upgrading Falco drivers. The Falco team has been tirelessly working for years to improve the installation experience and Linux kernel compatibility with massive changes such as the introduction of the new CO-RE eBPF probe and most recently the complete rewrite of our driver loading component, integrated in falcoctl. With this new version of &lt;code&gt;falcoctl&lt;/code&gt;, integrated in Falco 0.38.0, our loading tool will automatically detect your system and pick the most compatible driver without any intervention; on recent kernel versions this is likely the modern eBPF probe. As you probably know, the modern probe does not require any extra driver download or compilation, making it load almost instantly. Of course, the tool also allows to select the preferred driver if the automatic choice is not optimal for your use case. On top of that, our driver loader tool can now automatically download kernel headers for many distributions supported by &lt;a href="https://github.com/falcosecurity/driverkit"&gt;driverkit&lt;/a&gt; so in many cases you will be able to install even the kernel module without having to install kernel headers first. Read more about how to configure this functionality in the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/install-operate/installation/"&gt;installation&lt;/a&gt; documentation page.&lt;/p&gt;
&lt;h3 id="organize-your-falco-configuration-files"&gt;Organize your Falco configuration files 🗃️&lt;/h3&gt;
&lt;p&gt;Our &lt;code&gt;falco.yaml&lt;/code&gt; configuration file gains more options, fine tuning configuration flags and feature selection for every release; in fact, they are so many that some people would like to better organize them in separate configuration files which can also be kept across Falco upgrades. Starting from this release you can add list of files or directory to the &lt;code&gt;config_files&lt;/code&gt; configuration entry, which comes populated with the &lt;code&gt;/etc/falco/config.d/&lt;/code&gt; directory by default. Any additional file is read in order and can override settings in &lt;code&gt;falco.yaml&lt;/code&gt;. Read more in the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/daemon/config-options/"&gt;configuration options&lt;/a&gt; section of the documentation.&lt;/p&gt;
&lt;h3 id="choose-which-rules-to-load-at-runtime"&gt;Choose which rules to load at runtime 📝&lt;/h3&gt;
&lt;p&gt;We distribute several files that contain community contributed rules and you can always write your own. But how do you select which rules Falco will load at runtime? There are several ways, including using &lt;code&gt;override&lt;/code&gt;s or specifying command line options such as &lt;code&gt;-D&lt;/code&gt;, &lt;code&gt;-t&lt;/code&gt; and &lt;code&gt;-T&lt;/code&gt;. However, those do not allow you to express something as simple as &amp;quot;I would like to exclude all rules except for this one&amp;quot; or &amp;quot;I would like to include a specific tag and disable some of its rules&amp;quot;. Furthermore, you couldn't specify this configuration in your &lt;code&gt;falco.yaml&lt;/code&gt; file. To make this possible, we introduced a new configuration option, &lt;code&gt;rules&lt;/code&gt;, that can be specified both in the configuration file or the command line. For instance, you can now write:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rules&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;disable&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;enable&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Netcat Remote Code Execution in Container&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;enable&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Delete or rename shell history&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To finely control your rule loading without modifying the rule files themselves. Read more in &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/rules/controlling-rules/#via-falco-configuration-or-parameters"&gt;controlling rules&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="field-transformers-and-value-comparison-in-conditions"&gt;Field transformers and value comparison in conditions&lt;/h3&gt;
&lt;p&gt;Up until now we couldn't write a condition that catches operations like &amp;quot;a process deleting its own executable&amp;quot; because you couldn't use a field value on the right hand side of the condition. Since this version we have added a syntax to do just that with the &lt;code&gt;val()&lt;/code&gt; operator:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;evt.type = unlink and proc.exepath = val(fs.path.name)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;will trigger only if the process exepath is the same as the unlink argument target, meaning that the process is trying to delete its own executable!&lt;/p&gt;
&lt;p&gt;In addition you can also apply simple transform operators to both sides of the comparison: &lt;code&gt;toupper()&lt;/code&gt; and &lt;code&gt;tolower()&lt;/code&gt; will convert casing as you'd expect and &lt;code&gt;b64()&lt;/code&gt; can decode base64. Stay tuned for additional transformers to cover more use cases! Read more on &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/rules/conditions/#transform-operators"&gt;transform operators&lt;/a&gt; in the documentation.&lt;/p&gt;
&lt;h3 id="prometheus-metrics-support"&gt;Prometheus Metrics support 🔥&lt;/h3&gt;
&lt;p&gt;If you have been following Falco development, you probably know we are constantly improving support for metrics that tell you how the Falco engine is doing. We now have introduced &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/metrics/falco-metrics/#prometheus-support"&gt;Prometheus support&lt;/a&gt; so you can better integrate Falco with your existing performance monitoring infrastructure, and paves the way for the community to create an official Grafana dashboard that can be integrated in our charts.&lt;/p&gt;
&lt;h3 id="plugin-api-improvements"&gt;Plugin API improvements ⚙️&lt;/h3&gt;
&lt;p&gt;Plugins are getting more powerful at each version. We now have a set of experimental APIs to expose metrics and read more into the Falco internal state that our expert plugin authors have been asking about. Stay tuned for more in-depth documentation on those!&lt;/p&gt;
&lt;h2 id="breaking-changes-and-deprecations"&gt;Breaking changes and deprecations ⚠️&lt;/h2&gt;
&lt;p&gt;This version comes with breaking changes, mostly in the configuration interface&lt;/p&gt;
&lt;h3 id="changed-configuration-options"&gt;Changed configuration options&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;syscall_buf_size_preset&lt;/code&gt; Falco configuration option has been replaced by &lt;code&gt;engine.&amp;lt;driver&amp;gt;.buf_size_preset&lt;/code&gt; (e.g. &lt;code&gt;engine.kmod.buf_size_preset&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;syscall_drop_failed_exit&lt;/code&gt; Falco configuration option has been replaced by &lt;code&gt;engine.&amp;lt;driver&amp;gt;.drop_failed_exit&lt;/code&gt; (e.g. &lt;code&gt;engine.kmod.drop_failed_exit&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;modern_bpf.cpus_for_each_syscall_buffer&lt;/code&gt; Falco configuration option has been replaced by &lt;code&gt;engine.modern_ebpf.cpus_for_each_buffer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;syscall_event_drops&lt;/code&gt; Falco configuration option has been replaced by the &lt;code&gt;metrics&lt;/code&gt; config plus some automatic notification on drops.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="removed-command-line-options-and-equivalent-configuration-options"&gt;Removed command line options and equivalent configuration options&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;--modern_ebpf&lt;/code&gt; command line option has been replaced by &lt;code&gt;engine.kind: modern_ebpf&lt;/code&gt; in &lt;code&gt;falco.yaml&lt;/code&gt; (or, on the command line &lt;code&gt;-o engine.kind=modern_ebpf&lt;/code&gt;). Likewise, &lt;code&gt;--nodriver&lt;/code&gt; is now &lt;code&gt;engine.kind: nodriver&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The environment variable &lt;code&gt;FALCO_BPF_PROBE&lt;/code&gt; is replaced by &lt;code&gt;engine.ebpf.probe&lt;/code&gt; configuration option. Example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;engine&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ebpf&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;ebpf&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# path to the elf file to load.&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;probe&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;${HOME}/.falco/falco-bpf.o&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;-e&lt;/code&gt; option to load capture files is no longer available. In order to read a capture file use the configuration option &lt;code&gt;engine.replay.capture_file&lt;/code&gt;. Since options can be specified on both the command line and the configuration file, an equivalent command line as &lt;code&gt;falco -e &amp;lt;file.scap&amp;gt;&lt;/code&gt; is &lt;code&gt;falco -o engine.kind=replay -o engine.replay.capture_file=&amp;lt;file.scap&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The gVisor command line options have been replaced by equivalent configuration options. &lt;code&gt;-g&lt;/code&gt;/&lt;code&gt;--gvisor-config&lt;/code&gt; is now &lt;code&gt;engine.gvisor.config&lt;/code&gt; while &lt;code&gt;--gvisor-root&lt;/code&gt; is now &lt;code&gt;engine.gvisor.root&lt;/code&gt;. Example &lt;code&gt;falco.yaml&lt;/code&gt; configuration file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;engine&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;gvisor&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;gvisor&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# A Falco-compatible configuration file can be generated with&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# &amp;#39;--gvisor-generate-config&amp;#39; and utilized for both runsc and Falco.&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;/etc/docker/runsc_falco_config.json&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Set gVisor root directory for storage of container state when used&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# in conjunction with &amp;#39;gvisor.config&amp;#39;. The &amp;#39;gvisor.root&amp;#39; to be passed&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# is the one usually passed to &amp;#39;runsc --root&amp;#39; flag.&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;root&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;/var/run/docker/runtime-runc/moby&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or, equivalent writing on the command line:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;falco -o engine.kind=gvisor -o engine.gvisor.config=/etc/docker/runsc_falco_config.json -o engine.gvisor.root=/var/run/docker/runtime-runc/moby
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can find more information on breaking changes in the &lt;a href="https://github.com/falcosecurity/falco/issues/2840"&gt;tracking issue&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="deprecations"&gt;Deprecations&lt;/h3&gt;
&lt;p&gt;In Falco 0.39.0 we will remove the &lt;code&gt;-D&lt;/code&gt;, &lt;code&gt;-t&lt;/code&gt;, &lt;code&gt;-T&lt;/code&gt; options, continuing our tradition of removing single-character options that nobody remembers what they do.&lt;/p&gt;
&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;Interested in trying out the new features? Use the resources below to get started.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/running/#docker"&gt;Container Images&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;falco&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-no-driver&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-no-driver"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-driver-loader&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-driver-loader"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-s-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;Falco is more mature with each release. Following its &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-graduation/"&gt;graduation&lt;/a&gt; we have published the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/roadmap/#road-to-falco-1-0-0"&gt;roadmap&lt;/a&gt; for version 1.0.0 which is guiding us in the next steps. As you can see, this version is addressing some of the roadmap points with our changes to configuration and CLI options and adding rule constructs and drivers. For the next release, you can expect more stability, streamlined container images, refinements to our rule syntax, new detections and more.&lt;/p&gt;
&lt;h2 id="stay-connected"&gt;Stay connected&lt;/h2&gt;
&lt;p&gt;Join us on social media and in our weekly community calls! It’s always great to have new members in the community, and we’re looking forward to hearing your feedback and ideas.&lt;/p&gt;
&lt;p&gt;You can find all the most up-to-date information at &lt;a href="https://falco.org/community/"&gt;https://falco.org/community/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog: Track the Bitcoin transactions with Falco</title><link>https://v0-43--falcosecurity.netlify.app/blog/track-the-bitcoin-transactions-with-falco/</link><pubDate>Wed, 13 Mar 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/track-the-bitcoin-transactions-with-falco/</guid><description>
&lt;p&gt;The number of plugins available for Falco continues to grow thanks to our wonderful community. Thank you all for your help!&lt;/p&gt;
&lt;p&gt;You can find the list of available plugins &lt;a href="https://github.com/falcosecurity/plugins?tab=readme-ov-file#registered-plugins"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The vast majority of plugins developed allow Falco to ingest logs from different sources and raise alerts when suspicious elements are identified by its rules. In order to show that any event stream can be a source if you have the right plugin, and to have something fun to show users during my talks, I developed a Falco plugin to track Bitcoin transactions.&lt;/p&gt;
&lt;h2 id="how-does-it-work"&gt;How does it work?&lt;/h2&gt;
&lt;p&gt;I discovered the site &lt;a href="https://www.blockchain.com/"&gt;https://www.blockchain.com/&lt;/a&gt; exposes a public flux, accessible via a &lt;a href="https://www.blockchain.com/fr/explorer/api/api_websocket"&gt;websocket&lt;/a&gt;, by subscribing to it you can retrieve transactions carried out on the blockchain in real time. This is perfect for a Falco plugin as it allows you to test the ingestion of events via a websocket, and serve as a basis for other plugins.&lt;/p&gt;
&lt;p&gt;I am not going to describe the internal workings of the plugin here, nor how it was developed. If you are interested, you can look at the code &lt;a href="https://github.com/Issif/bitcoin-plugin"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alternatively, read our documentation explaining how to create a plugin from A to Z: &lt;a href="https://falco.org/docs/concepts/plugins/developers-guide/how-to-develop/"&gt;https://falco.org/docs/concepts/plugins/developers-guide/how-to-develop/&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="default-rules"&gt;Default rules&lt;/h2&gt;
&lt;p&gt;The plugin comes with its default set of rules, we will use them as a working example.
You are free to play with it for your own needs, such as monitoring suspicious movements of your wallet.&lt;/p&gt;
&lt;p&gt;You can find the Falco rules file provided &lt;a href="https://github.com/Issif/bitcoin-plugin/tree/main/rules"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="installation-of-the-plugin"&gt;Installation of the plugin&lt;/h2&gt;
&lt;p&gt;We will see the 3 classic ways to install the plugin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;via sources&lt;/li&gt;
&lt;li&gt;with falcoctl&lt;/li&gt;
&lt;li&gt;in kubernetes via Helm&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="via-sources"&gt;Via sources&lt;/h3&gt;
&lt;p&gt;The prerequisites are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Golang &amp;gt;= 1.19&lt;/li&gt;
&lt;li&gt;make&lt;/li&gt;
&lt;li&gt;Falco &amp;gt;= 0.36&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We will start by installing download the sources, build and install the plugin:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/Issif/bitcoin-plugin.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a2f"&gt;cd&lt;/span&gt; bitcoin-plugin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We will create a &lt;code&gt;falco.yaml&lt;/code&gt; file containing:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;bitcoin&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/usr/share/falco/plugins/libbitcoin.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;init_config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;open_params&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;load_plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[bitcoin]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;stdout_output&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The plugin comes with a default set of rules which will be sufficient for testing. All that remains is to start Falco with this command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo falco -c falco.yaml -r rules/bitcoin_rules.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;14:44:21.721357000: Notice The wallet bc1qfpeps3wcmzk422hvm5jeq5lelnqlzznjwyfy69 sent 96.78318104 BTC to &lt;span style="color:#666"&gt;(&lt;/span&gt;bc1q4hwcl377ereljtyn2t7ljdrh9umyxz5uuyl3qn,bc1qfpeps3wcmzk422hvm5jeq5lelnqlzznjwyfy69&lt;span style="color:#666"&gt;)&lt;/span&gt; in the transaction aab62fd0b529cd9da163508ba879d488ff64cce4c130caf6c8bd21ab1701ed46
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;14:44:27.020379000: Notice The wallet bc1qwk9hqnckv0ryhsnsdefcsmlpn3zx7uq3agdsw9 sent 68.68462728 BTC to &lt;span style="color:#666"&gt;(&lt;/span&gt;bc1qg0nkd5nckxvwlslf6lznukgat2vukrnrrcwjcv&lt;span style="color:#666"&gt;)&lt;/span&gt; in the transaction 734526413f6e3eefdf4adc4258e01375ccc145b9d02b7e0ab45517be0f57e7d9
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;14:44:29.393013000: Notice The wallet bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h sent 14.94446421 BTC to &lt;span style="color:#666"&gt;(&lt;/span&gt;3F9e4JvPryCxC5A6TS4VHeT2EJSK2ivjBV,bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h,bc1qaeq3z2edsuspt82qw7uflg0k860clxs7qjhrh0,bc1qnvhjvpa6gaglrg9lxg7w68ye8jdjcj2nk08y20,bc1q22hp7n28whk5h94z93vm05hfx2zxs8ca9gglk7,bc1qe9yxu2myqvt3kegknzj45u704dhtapwy7lxhnv,bc1qye5rp8pcqt4ej3nsz70c3lngacmew2fc4tfljd,bc1qcfqke8as8y08mkclcun9r3hlq4xl5za2vz3n2p,bc1qtqkjq4wq234netyucg247sm6nge9qu7m2fd28g,12Q4AHgzFmKWmY1Z2LEohMoxLVhvCAKsNV,3EyJiePQX4BUt8XXaAG3JmfhwB7cQ8ggp6,bc1q36ary7yaf2eeg6006h4m33drsgw4xa3pu6yvnn,13ybpB8kTgk8bCsnRrpyemNZdE2PJSHMEs,135dx8ncZzWSjhre8ecGG1yenmLwvNZPz4,3Nzr6LAJXstT8ET2CAGMH6h5vfgrh7Q94g,bc1qjhrhwpyc0z8zh6v22vhf5arzf6vcr47tgtkj5a,bc1qpxlsyrcmwuf2rk52emvfe0dvugphzzkxlyzvxv,bc1qf23j9ls2axtl6shpry40l4qat5c695x40vpfm8,bc1qsxsdunam68jkeuu7c3mplza4h74nrjhhu9w7dl,32e54ctKqWXfzKpdNKcCBBdsRoFHKoLijH,bc1qw2gafqcg2267xm2t0r4gfzu7ff392e2vl6s3zc,bc1qc0dwh27y56yajhz0k039j5p7xkwfjprhz7rfkq,3D493LGN6PchbRPtnJQo6dSUTLB8u5vN3i,3DhzjabzhAXTBU9vksNdBZFhZzMYzK7vix,18ex2LKyiLpjaSQStY1CLNbLbSToRkJAy6,bc1q3jvuvkvpukp0mnksfmpvnqq in the transaction 40c33db54610869c75b101431690e73b584b8cc77802eea76fa2d41bbb615852
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;14:44:29.395043000: Notice The wallet 3Hi5VHVgmYZYfAPc9aNvQoNXyEv5rYvJQN sent 50.00000000 BTC to &lt;span style="color:#666"&gt;(&lt;/span&gt;bc1q582qfqtlvfv038jf6k6s6xvd30we7x66katshx,bc1q6j3gxn68m5pkzhtytn3h464kgjnvce79x8nmwq,bc1qmxaaz6g07re55ekmtlmtrc5kj0kpj3lngy5y60,1CPjdsfkqiW6LB2ZNTDYczjKCzPpiJZ4Ci,1JtUKazSgYN6hCM7HPkvzL7JLVXwkL4stN,3GzfFtGVte95ZMFfQsrz3FFgFDHU8Zw6gS,bc1qcyl4sxkczex6gxldrfmfdctr2qsun4cgpufz8j,bc1q0realpv9h4zp3yhdwjeg78njqg97f9sm6ex3xrw8mkrz8g6qamsqua6tcw&lt;span style="color:#666"&gt;)&lt;/span&gt; in the transaction 3025c4566dc6cd6452c0c9ae6dc8cff9583df4530326b29e38e0a5e763a6c1c9
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;14:44:32.577196000: Notice The wallet bc1qfpeps3wcmzk422hvm5jeq5lelnqlzznjwyfy69 sent 96.43310490 BTC to &lt;span style="color:#666"&gt;(&lt;/span&gt;bc1qzrzhnlaru0pqmcxwm80vvvsqpdll9g6t39y686,bc1qfpeps3wcmzk422hvm5jeq5lelnqlzznjwyfy69&lt;span style="color:#666"&gt;)&lt;/span&gt; in the transaction 1083e02c554454db4dcff02f7418198aae5b563c4ec286b4c3ae4d30e649e8d5
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;14:44:32.577917000: Notice The wallet bc1qvruk6nhq5rz7whvx9cz6peqrp3nrutae59d63q sent 13.48137244 BTC to &lt;span style="color:#666"&gt;(&lt;/span&gt;1EtV3erwXxeKLhCvXq1BwKit7pMcB5BDvV,bc1qxgepulgdkjju7s8el6932m57svej5uzfvx7207&lt;span style="color:#666"&gt;)&lt;/span&gt; in the transaction 3e000a5745d7d5b6d2791bff75b9045696c2bea497363e845593ac249cc194b5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We can clearly see transactions (sending and receiving) for amounts exceeding 1 BTC appearing in real time.&lt;/p&gt;
&lt;h3 id="with-falcoctl"&gt;With falcoctl&lt;/h3&gt;
&lt;p&gt;The prerequisites are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Falco &amp;gt;= 0.36&lt;/li&gt;
&lt;li&gt;Falcoctl &amp;gt;= 0.6&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Falcoctl is the CLI tool that we developed to facilitate the installation of artifacts around Falco, such as rules and plugins. To find out more, &lt;a href="https://falco.org/blog/falcoctl-install-manage-rules-plugins/"&gt;here&lt;/a&gt; is a blog article about it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo falcoctl index add bitcoin https://raw.githubusercontent.com/Issif/bitcoin-plugin/main/index.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo falcoctl artifact install bitcoin-rules:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Both the plugin and the rules will be downloaded thanks to the dependency:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Reading all configured index files from &lt;span style="color:#b44"&gt;&amp;#34;/root/.config/falcoctl/indexes.yaml&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Resolving dependencies ...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Installing the following artifacts: &lt;span style="color:#666"&gt;[&lt;/span&gt;ghcr.io/issif/bitcoin-plugin/ruleset/bitcoin:latest bitcoin:0.2.0&lt;span style="color:#666"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Preparing to pull &lt;span style="color:#b44"&gt;&amp;#34;ghcr.io/issif/bitcoin-plugin/ruleset/bitcoin:latest&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Pulling 8758e31efdff: &lt;span style="color:#080;font-style:italic"&gt;############################################# 100%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Pulling 326b3ec82baf: &lt;span style="color:#080;font-style:italic"&gt;############################################# 100%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Pulling 8aec149e9934: &lt;span style="color:#080;font-style:italic"&gt;############################################# 100%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Artifact successfully installed in &lt;span style="color:#b44"&gt;&amp;#34;/etc/falco&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Preparing to pull &lt;span style="color:#b44"&gt;&amp;#34;ghcr.io/issif/bitcoin-plugin/plugin/bitcoin:0.2.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Pulling e7f990e1e4e6: &lt;span style="color:#080;font-style:italic"&gt;############################################# 100%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Pulling 0dfca1bb2434: &lt;span style="color:#080;font-style:italic"&gt;############################################# 100%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Pulling f269eb62cbf6: &lt;span style="color:#080;font-style:italic"&gt;############################################# 100%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; INFO Artifact successfully installed in &lt;span style="color:#b44"&gt;&amp;#34;/usr/share/falco/plugins&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As with the installation via sources, the falco.org file should look like:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;bitcoin&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/usr/share/falco/plugins/libbitcoin.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;init_config&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;open_params&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;load_plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[bitcoin]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;stdout_output&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And Falco will be started by the command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo falco -c falco.yaml -r /etc/falco/bitcoin_rules.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="in-kubernetes-via-helm"&gt;In Kubernetes via Helm&lt;/h3&gt;
&lt;p&gt;The prerequisites are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Helm&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The installation will consist of just adapting the values ​​in the values.yaml file. Everything will be automatically managed by the templates:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tty&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kubernetes&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falco&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;rules_files&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /etc/falco/bitcoin_rules.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;bitcoin&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;library_path&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;libbitcoin.so&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;load_plugins&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[bitcoin]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falcosidekick&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;webui&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;driver&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;collectors&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;controller&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;deployment&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;deployment&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;replicas&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;falcoctl&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;config&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;indexes&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;bitcoin&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;https://raw.githubusercontent.com/Issif/bitcoin-plugin/main/index.yaml&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;artifact&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;install&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;refs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[&lt;span style="color:#b44"&gt;&amp;#34;bitcoin:0&amp;#34;&lt;/span&gt;]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;follow&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;refs&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[&lt;span style="color:#b44"&gt;&amp;#34;bitcoin-rules:0&amp;#34;&lt;/span&gt;]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And the classic Helm command for installation:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm install falco-bitcoin -n falco falcosecurity/falco -f values.yaml --create-namespace
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After a few seconds, you should have the pod running:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;❯ kubectl get pods -n falco -l app.kubernetes.io/instance&lt;span style="color:#666"&gt;=&lt;/span&gt;falco-bitcoin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY STATUS RESTARTS AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;falco-bitcoin-7474fbfcb5-srgsg 2/2 Running &lt;span style="color:#666"&gt;110&lt;/span&gt; &lt;span style="color:#666"&gt;(&lt;/span&gt;17m ago&lt;span style="color:#666"&gt;)&lt;/span&gt; 10d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And new events in falcosidekick-ui:&lt;/p&gt;
&lt;p&gt;&lt;img src="images/bitcoin-events-falcosidekick-ui.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This plugin has no great purpose other than to dismantle the almost infinite possibilities that open up to Falco thanks to its plugin system. If you wish to be alerted on Telegram of a strange outgoing movement from your wallet, it is now possible with Falco!&lt;/p&gt;
&lt;p&gt;Falco is no longer limited to securing Cloud environments. SaaS or others can also be used in a unified way. The Falco rules syntax has proven to benefit security practitioners in an ecosystem rich with numerous potential integration points.&lt;/p&gt;</description></item><item><title>Blog: Preventing attacker persistence with Falco on AWS</title><link>https://v0-43--falcosecurity.netlify.app/blog/aws-detection/</link><pubDate>Mon, 11 Mar 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/aws-detection/</guid><description>
&lt;p&gt;I recently read an &lt;a href="https://medium.com/@MorattiSec/the-crow-flies-at-midnight-exploring-red-team-persistence-via-aws-lex-chatbots-b3de1edb7893"&gt;interesting blog&lt;/a&gt; on how hackers could use a Lambda function alongside Lex to establish persistence in an AWS account. For those unfamiliar with the term, persistence is when attackers leverage some technique to retain access to systems without being detected. A &lt;a href="https://www.nbcnews.com/tech/security/chinese-hackers-cisa-cyber-5-years-us-infrastructure-attack-rcna137706"&gt;recent news article&lt;/a&gt; cited a study that reported that some Chinese hackers have lurked in systems for up to FIVE YEARS! Luckily for all of us, Falco can be used to detect the exact scenario detailed in the blog and immediately raise an alert.&lt;/p&gt;
&lt;p&gt;The blog detailed how an attacker who has gained access to an AWS account could modify an existing Lex-based Lambda function to provide a set of AWS credentials. In short, the attacker modified the function of the Lex-based chatbot to respond whenever a secret phrase was entered with the Lambda’s AWS key ID and secret key.&lt;/p&gt;
&lt;p&gt;The author notes there are several ways to establish persistence on AWS, and maybe this wasn’t the most practical, but I still found it a fun exercise. It got me thinking: How could Falco help here? My immediate thought was to use Falco’s &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/cloudtrail/README.md"&gt;AWS Cloudtrail plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The plugin, as the name implies, ingests Cloudtrail events. The events can be evaluated against a &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/cloudtrail/rules/aws_cloudtrail_rules.yaml#L237,L252"&gt;set of rules&lt;/a&gt; to alert engineers of any suspicious activity. There are currently just over 20 different rules that can be assessed. They include scenarios like creating new users, having someone log into the root account without MFA, changing permissions on an S3 bucket, and, most relevant to our discussion here, modifying a Lambda function.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Update Lambda Function Code&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;desc&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Detect updates to a Lambda function code.&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;ct.name=&amp;#34;UpdateFunctionCode20150331v2&amp;#34; and not ct.error exists&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;The code of a Lambda function has been updated.&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;(requesting user=%ct.user,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;requesting IP=%ct.srcip,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;AWS region=%ct.region,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;lambda function=%ct.request.functionname)&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;WARNING&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tags&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- cloud&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- MITRE_TA0003_persistence&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- aws_lambda&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;source&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;aws_cloudtrail&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Alternatively, you could create custom rules based on a whole list of AWS CloudTrail events. In the below Falco rule, we referenced the Cloudtrail event name &lt;a href="https://gist.github.com/pkazi/8b5a1374771f6efa5d55b92d8835718c#file-cloudtraileventnames-list-L2882"&gt;UpdateFunctionCode20150331v2&lt;/a&gt;. Over 3000 event names can be used with Falco for deep incident response and forensics in the cloud.&lt;/p&gt;
&lt;p&gt;So, in the scenario above, whenever the attacker modifies the function, an entry is written to the Cloudtrail logs (note that Cloudtrail is enabled by default, so no extra work is needed to get it running). Those logs would be immediately forwarded to Falco via the Cloudtrail plugin. Falco would evaluate the event against the ruleset and fire off an alert that the rule had been violated.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; The code of a Lambda function has been updated.
(requesting user=mikegcoleman, requesting IP=10.0.01, AWS region=us-west-1,lambda function=AirlinesBusinessLogic)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Upon receiving the alert, an AWS engineer could review whether or not the change had been authorized and act accordingly.&lt;/p&gt;
&lt;p&gt;Now, it’s important to note that there are other ways that Lambda functions can be stored. For instance, the function's code can be zipped up and then stored in an S3 bucket. The rules we used above wouldn't cover this scenario. You could very likely craft a rule to ensure that a bucket’s contents have not been modified. We will save that for another blog.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/falcosecurity/plugins/"&gt;Falco plugins repository&lt;/a&gt; includes the AWS Cloudtrail plugin and plugins for &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/okta"&gt;Okta&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/github"&gt;GitHub&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/gcpaudit"&gt;Google Cloud&lt;/a&gt;, and more. In fact, I recently published a &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/gcpaudit/walkthrough.md"&gt;walkthrough&lt;/a&gt; on how to use the Google Cloud plugin. Be sure to check it if you’d like to learn more about how plugins are installed and configured.&lt;/p&gt;</description></item><item><title>Blog: Falco Weekly 10 - 2024</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-w-10-2024-weekly-recap/</link><pubDate>Fri, 08 Mar 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-w-10-2024-weekly-recap/</guid><description>
&lt;h2 id="what-happened-in-falco-this-week"&gt;What happened in Falco this week?&lt;/h2&gt;
&lt;p&gt;First of all, you probably already heard it, &lt;strong&gt;Falco is now graduated&lt;/strong&gt;!&lt;br&gt;
If you missed this important news, go ahead and give our &lt;a href="https://falco.org/blog/falco-graduation/"&gt;graduation blog post&lt;/a&gt; a read!&lt;/p&gt;
&lt;p&gt;Let's go through the major changes that happened in various repositories under the falcosecurity organization during the last week.&lt;/p&gt;
&lt;h3 id="libs"&gt;&lt;a href="https://github.com/falcosecurity/libs"&gt;Libs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We are approaching the &lt;a href="https://github.com/falcosecurity/libs/milestone/32"&gt;0.15.0&lt;/a&gt; tag, therefore mostly bugfixes were merged, plus a great new feature and some refactors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The so-called &amp;quot;kmod configure system&amp;quot; was finally merged: &lt;a href="https://github.com/falcosecurity/libs/pull/1452"&gt;https://github.com/falcosecurity/libs/pull/1452&lt;/a&gt;. This helps us to ensure that our kernel module builds even when some features get backported from more recent kernels (ie: when checking for kernel release version in the code is not enough). Kudos to Angelo Puglisi for shipping such a feature! Also, keep an eye for the very same thing for bpf too: &lt;a href="https://github.com/falcosecurity/libs/pull/1729"&gt;https://github.com/falcosecurity/libs/pull/1729&lt;/a&gt;!
Thanks to the kmod configure system, our &lt;a href="https://falcosecurity.github.io/libs/matrix_X64/"&gt;kernel-testing matrix&lt;/a&gt; is now fully green for kmod!&lt;/li&gt;
&lt;li&gt;A big CRI API refactor finally landed: &lt;a href="https://github.com/falcosecurity/libs/pull/1600"&gt;https://github.com/falcosecurity/libs/pull/1600&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Proceeding with the journey around compiler sanitizers, we now have proper cmake options to enable &lt;code&gt;ASAN&lt;/code&gt; and &lt;code&gt;UBSAN&lt;/code&gt;: &lt;a href="https://github.com/falcosecurity/libs/pull/1721"&gt;https://github.com/falcosecurity/libs/pull/1721&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed a crash when reading proclist from scap: &lt;a href="https://github.com/falcosecurity/libs/pull/1726"&gt;https://github.com/falcosecurity/libs/pull/1726&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed some &lt;code&gt;socketpair&lt;/code&gt; fds problems: &lt;a href="https://github.com/falcosecurity/libs/pull/1733"&gt;https://github.com/falcosecurity/libs/pull/1733&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed and added some more tests: &lt;a href="https://github.com/falcosecurity/libs/pull/1736"&gt;https://github.com/falcosecurity/libs/pull/1736&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/libs/pull/1727"&gt;https://github.com/falcosecurity/libs/pull/1727&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="falco"&gt;&lt;a href="https://github.com/falcosecurity/falco"&gt;Falco&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Some small changes happened too, in Falco main repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The proposal about features adoption and deprecation was merged: &lt;a href="https://github.com/falcosecurity/falco/pull/2986"&gt;https://github.com/falcosecurity/falco/pull/2986&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;Added a new configuration key &lt;code&gt;falco_libs.thread_table_size&lt;/code&gt; to customize max thread table size in libsinsp: &lt;a href="https://github.com/falcosecurity/falco/pull/3071"&gt;https://github.com/falcosecurity/falco/pull/3071&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Throw an error when an invalid macro/list name is used: &lt;a href="https://github.com/falcosecurity/falco/pull/3116"&gt;https://github.com/falcosecurity/falco/pull/3116&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed up directory iteration options while iterating over rule folder: &lt;a href="https://github.com/falcosecurity/falco/pull/3127"&gt;https://github.com/falcosecurity/falco/pull/3127&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="join-relevant-discussions"&gt;Join relevant discussions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Our new discussion section: &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;https://github.com/falcosecurity/falco/discussions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking changes in Falco 0.38.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2840"&gt;https://github.com/falcosecurity/falco/issues/2840&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking changes in Falco 0.39.0: &lt;a href="https://github.com/falcosecurity/falco/issues/3045"&gt;https://github.com/falcosecurity/falco/issues/3045&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open a discussion in our &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;discussion section&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;Federico&lt;/p&gt;</description></item><item><title>Blog: Falco Graduates within the CNCF!</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-graduation/</link><pubDate>Thu, 29 Feb 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-graduation/</guid><description>
&lt;p&gt;Today, the Falco project hit a big milestone: &lt;a href="https://www.cncf.io/announcements/2024/02/29/cloud-native-computing-foundation-announces-falco-graduation/"&gt;becoming a CNCF Graduated Project&lt;/a&gt;! Falco's graduation indicates the project's maturity and dependability, but most importantly, it is the culmination of a fantastic amount of work.&lt;/p&gt;
&lt;p&gt;The journey for Falco started in 2016 when the first commit was made. Today, Falco has become synonymous with &amp;quot;runtime security&amp;quot; due to its comprehensive approach to securing the highly complex and dynamic environments of the modern cloud era.&lt;/p&gt;
&lt;p&gt;“Falco approaches the security challenges associated with managing cloud native environments holistically,” says Loris Degioanni, the project’s founder. ”Runtime security is more than eBPF-based data collection, it requires enrichment, orchestrator integration, correlation of different data sources, and a rich, well-maintained policy library. All of the things that Falco provides to its users.”&lt;/p&gt;
&lt;p&gt;This holistic, runtime-centric approach to security is what makes Falco unique. It enables any organization to secure their infrastructure — from scrappy startups to Fortune 500s. Since joining the CNCF, some of the largest enterprises in the world, including Amazon, Apple, IBM, and Red Hat, have &lt;a href="https://falco.devstats.cncf.io/d/74/contributions-chart?orgId=1&amp;amp;var-period=m&amp;amp;var-metric=contributions&amp;amp;var-repogroup_name=All&amp;amp;var-country_name=All&amp;amp;var-company_name=All&amp;amp;var-company=all&amp;amp;from=now-10y&amp;amp;to=now-2d"&gt;contributed&lt;/a&gt; to Falco. The project also has a strong, rapidly growing community of &lt;a href="https://github.com/falcosecurity/falco/blob/master/ADOPTERS.md"&gt;adopters&lt;/a&gt; and has been downloaded over 100 million times!&lt;/p&gt;
&lt;p&gt;To the thousands of people who have helped Falco fly over the past years, thank you — sincerely. Thank you to the Falco maintainers. Thank you to our CNCF Technical Oversight Committee sponsors, Emily Fox and Justin Cormack. Thank you to anyone who has ever raised an issue, submitted a pull request on GitHub, or just took part in our community.&lt;/p&gt;
&lt;p&gt;Thank you, also, to the thousands of organizations who have entrusted Falco with the security of your runtime environments.&lt;/p&gt;
&lt;p&gt;For us, Falco’s Graduation represents a calling to continue to improve the project in a way that serves its users. We believe that runtime protection is vital to security, and that Falco is well positioned to power that security as we move deeper into the cloud era.&lt;/p&gt;
&lt;p&gt;In the future, Falco will have even stronger detections, richer signals, lower noise, and better performance. Its breadth of coverage will increase with more data sources, including cloud logs and key developer touchpoints like GitHub. Future versions of Falco will be even easier to deploy and manage in production.&lt;/p&gt;
&lt;p&gt;Our mission is to make Falco a powerful companion that brings you peace of mind, knowing your cloud native apps are well looked after. We hope you will continue to be part of this journey with us.&lt;/p&gt;
&lt;h2 id="words-from-our-community"&gt;Words from our community&lt;/h2&gt;
&lt;p&gt;Graduation means a lot to the members of our community. We asked them to share their thoughts and feelings with us on this occasion. Here is what they had to say:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;Since joining the Falco project in 2020, I've been inspired by our community's growth and commitment to open source values. Falco has unequivocally established itself as the quintessential tool for cloud native runtime security, leveraging key technologies like eBPF – notably, becoming one of the largest open source eBPF codebases. As we reach the CNCF graduation milestone, I'm immensely proud of our collective achievements and want to thank every contributor who has played a role in this journey.&amp;quot;&lt;/em&gt; - &lt;strong&gt;Leonardo Grasso&lt;/strong&gt;, Falco core maintainer&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;Linux kernel security monitoring is undeniably mission-critical, in great demand, yet daunting to master. Working within the kernel can be intimidating due to its potential impact on application performance and the sheer volume of events on modern servers. Since joining in 2022, The Falco Project has adapted to meet new demands while staying true to its mission, and this journey continues to accelerate. Observing Falco's effectiveness and value in real-world production settings is truly beautiful.&amp;quot;&lt;/em&gt; - &lt;strong&gt;Melissa Kilby&lt;/strong&gt;, Falco core maintainer&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;Back when I joined the Falco community, the project was a teenager that needed some love; here we are, it took a little while but it is now an adult! And I loved every little bit of its growth! What do I love more? The fact that we still have a lot of space for improvements, everywhere. This is good for users, the wider community and for us, developers and maintainers of the projects, to keep the fun with it.&amp;quot;&lt;/em&gt; - &lt;strong&gt;Federico Di Pierro&lt;/strong&gt;, Falco core maintainer&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;It has been a long journey since my first try of Falco. It was its very first release, Kubernetes was a small thing and the containers started to become the game changer we know now. I'm very proud having been a modest piece of this achievement, developing tools for Falco made me a better DevOps, a better Go developer, an international speaker and it made me meet amazing users and contributors. It's a good thing to see it’s rising as a standard for the runtime security in the industry. I hope it will help even more SREs to peacefully sleep at night.&amp;quot;&lt;/em&gt; - &lt;strong&gt;Thomas Labarussias&lt;/strong&gt;, Falco core maintainer&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;The project's rapid growth is evident with each new milestone, and I take great pride in being a member of this team, of this family. There's boundless potential for the project's expansion, and I see this milestone as the first step toward an even brighter future.&amp;quot;&lt;/em&gt; - &lt;strong&gt;Andrea Terzolo&lt;/strong&gt;, Falco core maintainer&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;I have been following Falco for many years now and I am impressed by how far the project has come. I am personally proud and happy that I could be a part of the stellar team that drives Falco; thanks to maintainer's and contributor's efforts we were able to achieve incredible goals and it is great to see the project being recognized alongside the most successful in the CNCF. Thanks to everyone who has been with us in this journey and everyone who will join us in the future.&amp;quot;&lt;/em&gt; - &lt;strong&gt;Luca Guerra&lt;/strong&gt;, Falco core maintainer&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;It's hard to believe that more than two years have already passed since I joined the amazing open source community of Falco. I can't express my deep gratitude for all our supporters and for the Falco family. This project gave me the privilege of connecting with incredibly skilled humans, and of witnessing the growth of a beautiful piece of technology that's now a fundamental security asset for countless organizations in the industry. Looking back, I feel immensely proud of all the collective efforts that led the project to this huge milestone, and I can't wait to see what the future holds from this point forward.&amp;quot;&lt;/em&gt; - &lt;strong&gt;Jason Dellaluce&lt;/strong&gt;, Falco core maintainer&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;Today, I am immensely proud as Falco graduates within the CNCF. This achievement is a testament to the dedication of our maintainers and the broader community of adopters and contributors. Together, we’ve propelled Falco to become the industry’s de-facto standard for runtime threat detection in the cloud. I am deeply grateful for the collaborative efforts that have brought us to this moment. The tireless work, expertise, and passion shared by our team and community have elevated Falco’s capabilities, ensuring its effectiveness in safeguarding organizations against evolving security threats. As we enter this new chapter within the CNCF, I am confident in our collective ability to continue innovating and strengthening Falco’s position as a vital tool in the fight for cloud security.&amp;quot;&lt;/em&gt; - &lt;strong&gt;Michele Zuccala&lt;/strong&gt;, Falco core maintainer&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;Since I joined, contributing to the ecosystem with passion and excitement to know more about and to contribute to this project, I've found a welcoming, vibrant, and healthy community as well as a strong maintainership. With time, the community grew and grew, and independence and diversity increased during these years.
Nowadays, runtime security in the cloud native world is becoming more and more fundamental in our architectures, and Falco has become one of the de-facto standards for increasing observability in our Linux kernel-based cloud native systems. The project has evolved a lot during the last couple of years. I remember the design proposal for plugins back then! Thanks to the incredible work of the maintainers and the contributors, and now I can't explain how much this big step and acknowledgment from the CNCF matter! Congratulations to the Falco family!&amp;quot;&lt;/em&gt; - &lt;strong&gt;Massimiliano Giovagnoli&lt;/strong&gt;, Falco core maintainer&lt;/p&gt;</description></item><item><title>Blog: Falco Weekly 7 - 2024</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-w-7-2024-weekly-recap/</link><pubDate>Fri, 16 Feb 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-w-7-2024-weekly-recap/</guid><description>
&lt;h2 id="what-happened-in-falco-this-week"&gt;What happened in Falco this week?&lt;/h2&gt;
&lt;p&gt;Let's go through the major changes that happened in various repositories under the falcosecurity organization.&lt;/p&gt;
&lt;h3 id="libs"&gt;&lt;a href="https://github.com/falcosecurity/libs"&gt;Libs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Multiple fixes and some cleanups happened in the libs repo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;newfstatat&lt;/code&gt; syscall is now configured with &lt;code&gt;UF_ALWAYS_DROP&lt;/code&gt;: &lt;a href="https://github.com/falcosecurity/libs/pull/1683"&gt;https://github.com/falcosecurity/libs/pull/1683&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed null destination address in &lt;code&gt;sendto&lt;/code&gt; and &lt;code&gt;sendmsg&lt;/code&gt; in modern bpf: &lt;a href="https://github.com/falcosecurity/libs/pull/1687"&gt;https://github.com/falcosecurity/libs/pull/1687&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added a &lt;code&gt;CT_UNKNOWN&lt;/code&gt; container type zero value and properly initialize uninitialized value: &lt;a href="https://github.com/falcosecurity/libs/pull/1688"&gt;https://github.com/falcosecurity/libs/pull/1688&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix in chisels: don't fail if a chisel directory does not exist: &lt;a href="https://github.com/falcosecurity/libs/pull/1689"&gt;https://github.com/falcosecurity/libs/pull/1689&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cleaned up more memory reads/writes in filterchecks to avoid UBs: &lt;a href="https://github.com/falcosecurity/libs/pull/1690"&gt;https://github.com/falcosecurity/libs/pull/1690&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Properly initialize &lt;code&gt;m_exe...&lt;/code&gt; fields in threadinfo: &lt;a href="https://github.com/falcosecurity/libs/pull/1691"&gt;https://github.com/falcosecurity/libs/pull/1691&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed a small source of memleak in scap platform: &lt;a href="https://github.com/falcosecurity/libs/pull/1692"&gt;https://github.com/falcosecurity/libs/pull/1692&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Properly enforce the static CRT on Windows by default: &lt;a href="https://github.com/falcosecurity/libs/pull/1695"&gt;https://github.com/falcosecurity/libs/pull/1695&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="falco"&gt;&lt;a href="https://github.com/falcosecurity/falco"&gt;Falco&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Falco has seens quite a bit of C++ improvements, thanks to Samuel Gaist! Keep up the great job!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C++ cleanups: &lt;a href="https://github.com/falcosecurity/falco/pull/3069"&gt;https://github.com/falcosecurity/falco/pull/3069&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/falco/pull/3074"&gt;https://github.com/falcosecurity/falco/pull/3074&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/falco/pull/3083"&gt;https://github.com/falcosecurity/falco/pull/3083&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/falco/pull/3085"&gt;https://github.com/falcosecurity/falco/pull/3085&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Consolidated Faclo engine and rule loader tests: &lt;a href="https://github.com/falcosecurity/falco/pull/3066"&gt;https://github.com/falcosecurity/falco/pull/3066&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added &lt;code&gt;http-headers&lt;/code&gt; option to Falco driver-loader images: &lt;a href="https://github.com/falcosecurity/falco/pull/3075"&gt;https://github.com/falcosecurity/falco/pull/3075&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cleaned up an unused builder Dockerfile: &lt;a href="https://github.com/falcosecurity/falco/pull/3088"&gt;https://github.com/falcosecurity/falco/pull/3088&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed some compiler warnings: &lt;a href="https://github.com/falcosecurity/falco/pull/3089"&gt;https://github.com/falcosecurity/falco/pull/3089&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cleaned up falco_engine deps and include paths: &lt;a href="https://github.com/falcosecurity/falco/pull/3090"&gt;https://github.com/falcosecurity/falco/pull/3090&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="falcoctl"&gt;&lt;a href="https://github.com/falcosecurity/falcoctl"&gt;Falcoctl&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Falcoctl has seen a small yet important fix:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Correctly report artifact type: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/442"&gt;https://github.com/falcosecurity/falcoctl/pull/442&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="kernel-testing"&gt;&lt;a href="https://github.com/falcosecurity/kernel-testing"&gt;Kernel-testing&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Even if the effort was part of last week, and since we skipped last &amp;quot;Weekly Recap&amp;quot;, it is important to mention that the kernel-testing framework recently got a big update:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All images build is now tested in PR CI when they are modified&lt;/li&gt;
&lt;li&gt;Images are now build and published on &lt;code&gt;ghcr.io/falcosecurity/kernel-testing&lt;/code&gt; repo&lt;/li&gt;
&lt;li&gt;They are published under &lt;code&gt;main&lt;/code&gt; tag and under &lt;code&gt;latest|$tag&lt;/code&gt; for releases&lt;/li&gt;
&lt;li&gt;The image name is built as: &lt;code&gt;$distro-{kernel,image}:$kernelrelease-$arch-$imagetag&lt;/code&gt;, eg: &lt;code&gt;amazonlinux2-kernel:5.10-x86_64-v0.3.2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu-6.3 images were bumped to 6.5 kernel&lt;/li&gt;
&lt;li&gt;A new arch-6.7 image was added to the test matrix&lt;/li&gt;
&lt;li&gt;A &lt;a href="https://github.com/falcosecurity/kernel-testing/blob/main/action.yml"&gt;composite&lt;/a&gt; action was added and is now used by libs CI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As always, you can find detailed kernel-testing outputs against our drivers under &lt;a href="https://falcosecurity.github.io/libs/matrix/"&gt;https://falcosecurity.github.io/libs/matrix/&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="charts"&gt;&lt;a href="https://github.com/falcosecurity/charts"&gt;Charts&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thanks to Aldo's continuous effort, we now have much better documentation all around the repo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Updated docs for Falco exporter: &lt;a href="https://github.com/falcosecurity/charts/pull/623"&gt;https://github.com/falcosecurity/charts/pull/623&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;Process all charts for changes in values.yaml: &lt;a href="https://github.com/falcosecurity/charts/pull/624"&gt;https://github.com/falcosecurity/charts/pull/624&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Updated contributing section: &lt;a href="https://github.com/falcosecurity/charts/pull/625"&gt;https://github.com/falcosecurity/charts/pull/625&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed typos, formatting and dead links in Falco chart docs: &lt;a href="https://github.com/falcosecurity/charts/pull/627"&gt;https://github.com/falcosecurity/charts/pull/627&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed dead links for Falco exporter: &lt;a href="https://github.com/falcosecurity/charts/pull/628"&gt;https://github.com/falcosecurity/charts/pull/628&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed link tags in readme: &lt;a href="https://github.com/falcosecurity/charts/pull/629"&gt;https://github.com/falcosecurity/charts/pull/629&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="join-relevant-discussions"&gt;Join relevant discussions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Our new discussion section: &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;https://github.com/falcosecurity/falco/discussions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking changes in Falco 0.38.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2840"&gt;https://github.com/falcosecurity/falco/issues/2840&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking changes in Falco 0.39.0: &lt;a href="https://github.com/falcosecurity/falco/issues/3045"&gt;https://github.com/falcosecurity/falco/issues/3045&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open a discussion in our &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;discussion section&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;Federico&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.37.1</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-1/</link><pubDate>Tue, 13 Feb 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-1/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.37.1&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;p&gt;Falco's 0.37.1 release is a small patch aimed at addressing a few minor bugs. It includes the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added &lt;code&gt;--http-insecure&lt;/code&gt; flag to driver loader images&lt;/li&gt;
&lt;li&gt;Added new env variable &lt;code&gt;FALCOCTL_DRIVER_HTTP_HEADERS&lt;/code&gt; understood by driver loader images to pass a comma separated list of http headers for driver download, eg: &lt;code&gt;FALCOCTL_DRIVER_HTTP_HEADERS='x-emc-namespace: default,Proxy-Authenticate: Basic'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Falcoctl was bumped to v0.7.2, fixing an &lt;a href="https://github.com/falcosecurity/falcoctl/pull/425"&gt;issue building Flatcar drivers&lt;/a&gt; and a bug withing the &lt;a href="https://github.com/falcosecurity/falcoctl/pull/427"&gt;kernel release fixup method&lt;/a&gt; to build drivers download URLs&lt;/li&gt;
&lt;li&gt;Fixed a nasty bug that caused Falco to crash when a &lt;code&gt;priority&lt;/code&gt; higher than &lt;code&gt;debug&lt;/code&gt; was set in the config: &lt;a href="https://github.com/falcosecurity/falco/pull/3060"&gt;https://github.com/falcosecurity/falco/pull/3060&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Libs were updated to 0.14.3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Last, but not least, as recommended by the CNCF, &lt;strong&gt;we now link &lt;code&gt;libelf&lt;/code&gt; dynamically&lt;/strong&gt; instead of statically, so that the library remains separable from Falco at runtime.&lt;br&gt;
This has multiple outcomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Falco static (musl) build is disabled for now; we are experimenting with some solutions and we will hopefully be able to bring it back up soon&lt;/li&gt;
&lt;li&gt;Users of docker images won't notice anything since they already shipped &lt;code&gt;libelf&lt;/code&gt; library&lt;/li&gt;
&lt;li&gt;Users of &lt;code&gt;deb&lt;/code&gt; and &lt;code&gt;rpm&lt;/code&gt; packages won't notice anything since &lt;code&gt;libelf&lt;/code&gt; was already a nested dependency&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Users of the &lt;code&gt;tar.gz&lt;/code&gt; package will need to manually install &lt;code&gt;libelf&lt;/code&gt; where not present&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone in the community for helping us in spotting these annoying bugs 🐛! You make Falco successful 🦅!&lt;/p&gt;
&lt;p&gt;Thanks as always to the Falco maintainers for their support and effort during the entire release process.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it! 🏎️&lt;/h2&gt;
&lt;p&gt;As usual, in case you just want to try out the stable &lt;strong&gt;Falco 0.37.1&lt;/strong&gt;, you can install its packages following the process outlined in the docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prefer to use a container image? No problem at all! 🐳&lt;/p&gt;
&lt;p&gt;You can read more about running Falco with Docker in the &lt;a href="https://falco.org/docs/getting-started/running/#docker"&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also find the Falcosecurity container images on the public AWS ECR gallery:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;falco&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;falco-no-driver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;falco-driver-loader&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every Wednesday in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Federico&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Automate Kubernetes Network Security with Falco Talon</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-network-security/</link><pubDate>Fri, 09 Feb 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-network-security/</guid><description>
&lt;img src="https://v0-43--falcosecurity.netlify.app/blog/falco-network-security/falco-network-featured_hu_4092a71b5ae627b3.png" width="640" height="366"/>&lt;ul&gt;
&lt;li&gt;Falco Talon Repository: &lt;a href="https://github.com/Falco-Talon/falco-talon"&gt;https://github.com/Falco-Talon/falco-talon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Falco Talon Documentation: &lt;a href="https://docs.falco-talon.org/"&gt;https://docs.falco-talon.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="card card-sm pageinfo pageinfo-warning my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;Falco Talon is currently under active development and remains in the alpha stage; therefore, breaking changes may occur at any time, and the documentation may not always be up to date.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Setting up robust network security in Kubernetes is a challenge that demands both precision and adaptability. NetworkPolicy offers the potential for highly specific network configurations, enabling or blocking traffic based on a comprehensive set of criteria. However, the dynamic nature of network topologies and the complexities of managing policy implementations present ongoing challenges. The need for constant policy updates, especially in response to changing threat landscapes, introduces risks such as the potential for misconfiguration and the unintended dropping of packets.&lt;/p&gt;
&lt;h2 id="the-challenge-of-ip-based-network-policies"&gt;The Challenge of IP-Based Network Policies&lt;/h2&gt;
&lt;p&gt;Building network policies around IP addresses is notoriously challenging. For instance, threat feeds, which list known malicious IP addresses, are constantly changing. An IP address associated with a malicious entity one week might be reassigned and deemed safe the next. This fluidity necessitates an agile approach to network policy management, integrating solutions like NetworkSets to dynamically update policies based on the latest intelligence. However, the sheer volume of threat intelligence feeds – from Tor IP lists to cryptomining blocklists – complicates this integration, making it a daunting task to maintain accurate network controls.&lt;/p&gt;
&lt;p&gt;Here, Falco Talon emerges as a transformative solution. By leveraging Falco's detection capabilities, such as identifying &lt;a href="https://thomas.labarussias.fr/falco-rules-explorer/?hash=0d2e8a0dd3369a030f7acfaab682ad92"&gt;Outbound Connections to C2 Servers&lt;/a&gt;, Falco Talon can instantly update Kubernetes network policies to block all egress traffic except allowed CIDR ranges. This is facilitated through the &lt;a href="https://docs.falco-talon.org/docs/actionners/list/#kubernetesnetworkpolicy"&gt;kubernetes:networkpolicy&lt;/a&gt; Talon action, demonstrating a seamless integration of dynamic threat detection with network policy enforcement.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- action: Disable outbound connections
actionner: kubernetes:networkpolicy
parameters:
allow:
- &amp;#34;192.168.1.0/24&amp;#34;
- &amp;#34;172.17.0.0/16&amp;#34;
- &amp;#34;10.0.0.0/32&amp;#34;
- rule: Suspicious outbound connection
match:
rules:
- Outbound Connections to C2 Servers
actions:
- action: Disable outbound connections
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;While this would certainly block the egress network connections, it’s not really convenient for some organizations as it’s a scorched-earth approach to blocking traffic but still relies on an IP-based allowlist on each Talon rule - rather than blocking the actual suspicious IP address specified in the Falco rule. Instead, we will propose the use of labels as a response action in Talon to better isolate network traffic at runtime.&lt;/p&gt;
&lt;h2 id="shifting-from-ips-to-labels-for-network-security"&gt;Shifting from IPs to Labels for Network Security&lt;/h2&gt;
&lt;p&gt;While IP-based blocking is effective in response to specific threats detected by Falco, it's not the most scalable solution for ongoing network policy management in production environments. An alternative approach focuses on using labels to create quarantine-style network policies. This method involves configuring a network policy that applies a default-deny stance on all ingress and egress traffic for pods matching certain labels, effectively isolating potentially compromised workloads. This can easily be achieved with the below one-liner:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl label pod &amp;lt;pod-name&amp;gt; -n &amp;lt;namespace-name&amp;gt; quarantine=true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is certainly a cleaner approach than the previous enforced network policy implementation, but the challenge here is the manual process of labeling those suspected workloads, which can be cumbersome and slow in response to emerging threats. How many minutes will it take our security team to enforce this label action, and what happens if this happens over the weekend?&lt;/p&gt;
&lt;p&gt;Falco Talon addresses this gap with its &lt;a href="https://docs.falco-talon.org/docs/actionners/list/#kuberneteslabelize"&gt;kubernetes:labelize&lt;/a&gt; response action. Upon detecting a threat, such as the &lt;a href="https://thomas.labarussias.fr/falco-rules-explorer/?hash=3f01c102c6d26af968d5eb6b6777085d"&gt;Detect outbound connections to common miner pool ports&lt;/a&gt;, Talon can automatically apply a &lt;code&gt;quarantine:true&lt;/code&gt; label to the affected pod, triggering the enforcement of the quarantine network policy in real-time. This capability not only enhances the speed and efficiency of response actions but also underscores the power of integrating dynamic threat detection with network policy enforcement.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- action: Quarantine Pod in Network Policy
actionner: kubernetes:labelize
parameters:
labels:
quarantine: true
- rule: Suspicious outbound connection
match:
rules:
- Detect outbound connections to common miner pool ports
actions:
- action: Quarantine Pod in Network Policy
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;While Talon can apply the label, you still need a component that will enforce the quarantine. Most CNI's can do this, but for the purpose of this blog I'll add an example with Calico:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: quarantine
spec:
selector: quarantine == &amp;#34;true&amp;#34;
ingress:
- action: Deny
source: {}
destination: {}
egress:
- action: Deny
source: {}
destination: {}
types:
- Ingress
- Egress
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The integration of Falco Talon into Kubernetes network security strategies represents a significant advancement in the field. By automating the enforcement of network policies based on real-time threat detection, Falco Talon simplifies the complexities associated with managing network security in a constantly evolving landscape. Whether responding to immediate threats through IP-based policies or proactively isolating workloads with label-based quarantine policies, Falco Talon provides a flexible, powerful tool for enhancing the security and resilience of Kubernetes environments. As organizations navigate the challenges of cloud-native security, solutions like Falco Talon offer a beacon of adaptability and effectiveness, ensuring that network security keeps pace with the dynamic nature of containerized deployments.&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.37.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-0/</link><pubDate>Tue, 30 Jan 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-0/</guid><description>
&lt;p&gt;Dear Falco Community, today we are happy to announce the release of Falco 0.37.0!&lt;/p&gt;
&lt;p&gt;This release brings an improved installation experience, a new way to modify Falco rules, and some great UX improvements. There are, as to be expected, a handful of breaking changes. But, rest assured, we've done all we can to help you with any changes you might need to make.&lt;/p&gt;
&lt;p&gt;During this release cycle, we merged more than 100 PRs on Falco and more than 160 PRs for libs and drivers, version 0.14.2 and version 7.0.0 respectively. Thank you to our maintainers and contributors, as this would not happen without your support and dedication!&lt;/p&gt;
&lt;p&gt;To learn all about these changes, read on!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What’s new? TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Key features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A new way to &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-0/#a-new-way-to-enrich-syscalls-with-k8s-metadata"&gt;enrich syscalls with Kubernetes metadata&lt;/a&gt;, replacing the old Kubernetes collector.&lt;/li&gt;
&lt;li&gt;New capabilities in &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-0/#new-falcoctl-capabilities"&gt;&lt;code&gt;falcoctl&lt;/code&gt;&lt;/a&gt; to download and build our kernel drivers, replacing the old &lt;code&gt;falco-driver-loader&lt;/code&gt; script.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-0/#32-bit-syscall-emulation"&gt;Support for 32-bit syscall emulation&lt;/a&gt; on x86_64 in all kernel drivers (&lt;code&gt;modern_ebpf&lt;/code&gt;, &lt;code&gt;ebpf&lt;/code&gt;, &lt;code&gt;kernel module&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;A new &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-0/#new-override-key"&gt;override key&lt;/a&gt; to easily modify rules, lists, and macros.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Key UX improvements:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction of a new &lt;code&gt;engine&lt;/code&gt; key in &lt;code&gt;falco.yaml&lt;/code&gt; to replace all other methods for opening engines such as &lt;code&gt;FALCO_BPF_PROBE&lt;/code&gt;, &lt;code&gt;--modern-bpf&lt;/code&gt;, &lt;code&gt;-g&lt;/code&gt;, and &lt;code&gt;-e&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Expansion of environment variables in &lt;code&gt;falco.yaml&lt;/code&gt; even when they are part of a string.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This release also comes with &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-0/#breaking-changes"&gt;breaking changes&lt;/a&gt;, we'd suggest to read them before upgrading. If you use helm, make sure to read the &lt;a href="https://github.com/falcosecurity/charts/blob/master/charts/falco/BREAKING-CHANGES.md#400"&gt;Helm chart breaking changes&lt;/a&gt; page as well.&lt;/p&gt;
&lt;h2 id="major-features-and-improvements"&gt;Major features and improvements&lt;/h2&gt;
&lt;p&gt;The 0.37.0 release contains a number of feature and UX improvements, here are list of some of the key new capabilities.&lt;/p&gt;
&lt;h3 id="a-new-way-to-enrich-syscalls-with-k8s-metadata"&gt;A new way to enrich syscalls with K8s metadata&lt;/h3&gt;
&lt;p&gt;Falco 0.37.0 introduces a new method to enrich syscalls with Kubernetes metadata to help address scalability and other issues with the old collector. Falco always had Kubernetes support, but sometimes we need new approaches to keep up with the bigger and bigger scale that we see in production clusters today. You can find more technical details &lt;a href="https://github.com/falcosecurity/falco/issues/2973"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While the collector was previously integrated into Falco, this feature uses a new architecture which leverages a plugin (&lt;code&gt;k8smeta&lt;/code&gt;) and a remote collector (&lt;code&gt;k8s-metacollector&lt;/code&gt;).&lt;/p&gt;
&lt;img style='border:1px solid #000000' src="./images/collection.png" alt="A diagram of the new k8s metadata collection architecture"/&gt;
&lt;p&gt;The plugin gathers details about Kubernetes resources from the remote collector. It stores this information and provides access to Falco upon request. The plugin specifically acquires data for the node where the associated Falco instance is deployed, resulting in node-level granularity. In contrast, the collector runs at the cluster level.&lt;/p&gt;
&lt;p&gt;Within a given cluster there may be multiple k8smeta plugins (one per node), but only one collector exists per cluster.&lt;/p&gt;
&lt;p&gt;More technical details about the architecture and design choices are &lt;a href="https://github.com/falcosecurity/falco/issues/2973"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It’s important to note that both new components are considered &lt;strong&gt;experimental&lt;/strong&gt;, which means although they are functional and tested, they are currently in active development. They may undergo changes in behavior as necessary without prioritizing backward compatibility.&lt;/p&gt;
&lt;h4 id="fields-supported-by-the-new-k8smeta-plugin"&gt;Fields supported by the new &lt;code&gt;k8smeta&lt;/code&gt; plugin&lt;/h4&gt;
&lt;p&gt;This section provides details on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kubernetes fields that are supported out-of-the-box by Falco through container runtime enrichment.&lt;/li&gt;
&lt;li&gt;Fields the new &lt;code&gt;k8smeta&lt;/code&gt; plugin supports&lt;/li&gt;
&lt;li&gt;Fields have been deprecated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following fields are automatically populated with data from the container runtime, making them compatible with Falco without needing the old k8s collector or the new k8smeta plugin. These fields will continue to &lt;a href="https://falco.org/docs/reference/rules/supported-fields/#field-class-k8s"&gt;function as before&lt;/a&gt;, and no changes have been made:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;k8s.pod.name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8s.pod.id/k8s.pod.uid&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8s.pod.sandbox_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8s.pod.full_sandbox_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8s.pod.label&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8s.pod.labels&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8s.pod.ip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8s.pod.cni.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8s.ns.name&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All other fields with the &lt;code&gt;k8s.*&lt;/code&gt; prefix previously supported by the old collector (e.g., &lt;code&gt;k8s.deployment.name&lt;/code&gt;) are now deprecated and will return &lt;code&gt;&amp;lt;NA&amp;gt;&lt;/code&gt; if used in rules.&lt;/p&gt;
&lt;p&gt;These fields are now provided by the new plugin under the &lt;code&gt;k8smeta.*&lt;/code&gt; prefix. A complete list of these fields can be found &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/k8smeta#supported-fields"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The new fields introduced by the &lt;code&gt;k8smeta&lt;/code&gt; plugin are additive. They do not replace the fields provided by the container runtime. This means you can use both &lt;code&gt;k8s.pod.name&lt;/code&gt; and &lt;code&gt;k8smeta.pod.name&lt;/code&gt; simultaneously. While they may return the same value, the data is collected from different sources (container runtime for &lt;code&gt;k8s&lt;/code&gt; fields, the Kubernetes API server for &lt;code&gt;k8smeta&lt;/code&gt;). As a result, their availability and reliability may differ during the lifecycle of an application. While it may seem redundant, this approach should offer flexibility to users.&lt;/p&gt;
&lt;p&gt;To wrap up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If &lt;code&gt;k8s.pod.*&lt;/code&gt; and &lt;code&gt;k8s.ns.name&lt;/code&gt; fields meet your needs, you can use Falco without plugins. The default container runtime information in Falco should be enough.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;k8s.pod.*&lt;/code&gt; and &lt;code&gt;k8s.ns.name&lt;/code&gt; fields are insufficient, you should evaluate the new &lt;code&gt;k8smeta&lt;/code&gt; plugin.&lt;/li&gt;
&lt;li&gt;The old &lt;code&gt;k8s.*&lt;/code&gt; fields (excluding &lt;code&gt;k8s.pod.*&lt;/code&gt; and &lt;code&gt;k8s.ns.name&lt;/code&gt;) are now deprecated, and if used in Falco rules, they return &lt;code&gt;&amp;lt;NA&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you’d like to read more about this new feature check out the documentation for the &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/k8smeta/README.md"&gt;&lt;code&gt;k8smeta&lt;/code&gt; plugin&lt;/a&gt;and the &lt;a href="https://github.com/falcosecurity/k8s-metacollector/blob/main/README.md"&gt;&lt;code&gt;k8s-metacollector&lt;/code&gt;&lt;/a&gt;, while if you want to deploy this solution with our helm chart check out the &lt;a href="https://github.com/falcosecurity/charts/blob/falco-4.0.0/charts/falco/README.md#enabling-the-k8s-metacollector"&gt;dedicated section&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="new-falcoctl-capabilities"&gt;New Falcoctl capabilities&lt;/h3&gt;
&lt;p&gt;Since &lt;a href="https://github.com/falcosecurity/falcoctl"&gt;&lt;code&gt;falcoctl&lt;/code&gt;&lt;/a&gt; 0.7.0, users have been able to quickly download and compile Falco drivers using the &lt;code&gt;falcoctl driver&lt;/code&gt; command. Starting with Falco 0.37.0 the &lt;code&gt;falcoctl driver&lt;/code&gt; command will be used by the Falco installation process in place of the old &lt;code&gt;falco-driver-loader&lt;/code&gt; script.&lt;/p&gt;
&lt;p&gt;For example, to install the kernel module:.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Specify which driver we want to use&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;falcoctl driver config --type kmod
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Install the driver&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;falcoctl driver install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By default, the &lt;code&gt;falcoctl driver install&lt;/code&gt; command tries to download a prebuilt driver from &lt;a href="https://download.falco.org/?prefix=driver/"&gt;the official Falco download s3 bucket&lt;/a&gt;. If a driver is found, then it is inserted into &lt;code&gt;${HOME}/.falco/&lt;/code&gt;. Otherwise, the script tries to compile the driver locally.&lt;/p&gt;
&lt;p&gt;You can find more details on installing each driver type in &lt;a href="https://github.com/falcosecurity/falco-website/pull/1240"&gt;our docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, while the &lt;code&gt;falcoctl driver&lt;/code&gt; command replaces the old &lt;code&gt;falco-driver-loader&lt;/code&gt; script it’s important to note that, even though there is no change in terms of usage, the Docker images &lt;code&gt;falco-driver-loader&lt;/code&gt; and &lt;code&gt;falco-driver-loader-legacy&lt;/code&gt; no longer utilize the old &lt;code&gt;falco-driver-loader&lt;/code&gt; script; instead, they now use &lt;code&gt;falcoctl&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="32-bit-syscall-emulation"&gt;32-bit syscall emulation&lt;/h3&gt;
&lt;p&gt;The support for 32-bit syscalls has consistently been a highly requested feature for a long time. Until now, this support was only available in the kernel module, but starting from Falco 0.37.0, we have finally extended this support to the &lt;code&gt;ebpf&lt;/code&gt; and &lt;code&gt;modern_ebpf&lt;/code&gt; drivers. This feature is crucial as it addresses a security gap that has existed for some time.&lt;/p&gt;
&lt;p&gt;It’s important to note that this feature is specifically for 32-bits syscalls emulated on the x86_64 architecture. Falco does not support pure 32-bit architectures.&lt;/p&gt;
&lt;p&gt;Follow these steps to try out this new feature:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a C program &lt;code&gt;ia32.c&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080"&gt;#include&lt;/span&gt; &lt;span style="color:#080"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style="color:#080"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080"&gt;#include&lt;/span&gt; &lt;span style="color:#080"&gt;&amp;lt;unistd.h&amp;gt;&lt;/span&gt;&lt;span style="color:#080"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080"&gt;#include&lt;/span&gt; &lt;span style="color:#080"&gt;&amp;lt;sys/syscall.h&amp;gt;&lt;/span&gt;&lt;span style="color:#080"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080"&gt;#include&lt;/span&gt; &lt;span style="color:#080"&gt;&amp;lt;sys/types.h&amp;gt;&lt;/span&gt;&lt;span style="color:#080"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0b0;font-weight:bold"&gt;int&lt;/span&gt; &lt;span style="color:#00a000"&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#00a000"&gt;syscall&lt;/span&gt;(__NR_close, &lt;span style="color:#666"&gt;-&lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a2f;font-weight:bold"&gt;return&lt;/span&gt; &lt;span style="color:#666"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Compile it
&lt;code&gt;gcc ia32.c -o ia32 -m32&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start Falco with the following rule
&lt;code&gt;evt.type = close and proc.name contains ia32&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Execute the binary&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./ia32&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You should see the rule triggered&lt;/p&gt;
&lt;h3 id="new-override-key"&gt;New override key&lt;/h3&gt;
&lt;p&gt;Falco 0.37.0 replaces the &lt;code&gt;append: true&lt;/code&gt; key-value pair with a new override section. The override section allows you to either replace or append keys to a rule, macro, or list value . It’s important to note that you cannot append and replace the same key; you must choose one or the other. Choosing both will result in an error.&lt;/p&gt;
&lt;p&gt;The keys that can be modified vary according to the rules component being overridden. See the &lt;a href="https://falco.org/docs/rules/overriding/"&gt;override documentation&lt;/a&gt; for the full list of keys that can be modified.&lt;/p&gt;
&lt;p&gt;The override section can either be in a custom rules file or can be in the same file as the component being overridden. In either case, the override section needs to be specified after the rule that is being modified. When the override is in the same file, the override section needs to be below the original rule, list, or macro definition. If the override is in another file, that file needs to be loaded after the original rules file.&lt;/p&gt;
&lt;p&gt;A quick example from the documentation illustrates how this new feature works.&lt;/p&gt;
&lt;p&gt;In this example, the original rule is in &lt;code&gt;falco_rules.yaml&lt;/code&gt; and the override is specified in &lt;code&gt;falco_rules.local.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;/etc/falco/falco_rules.yaml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;program_accesses_file&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;desc&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;track whenever a set of programs opens a file&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;proc.name in (cat, ls) and evt.type=open&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;a tracked program opened a file (user=%user.name command=%proc.cmdline file=%fd.name)&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;INFO&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;/etc/falco/falco_rules.local.yaml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;program_accesses_file&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;and not user.name=root&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;A file (user=%user.name command=%proc.cmdline file=%fd.name) was opened by a monitored program&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;override&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;append&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;replace&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The modified &lt;code&gt;program_accesses_file&lt;/code&gt;rule would trigger when &lt;code&gt;ls&lt;/code&gt; or &lt;code&gt;cat&lt;/code&gt; use &lt;code&gt;open&lt;/code&gt; on a file, unless they were run by &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The new output message would be &lt;code&gt;A file (user=%user.name command=%proc.cmdline file=%fd.name) was opened by a monitored program&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A final note, the old &lt;code&gt;append: true&lt;/code&gt; method of modifying values has been deprecated and will be removed in Falco 1.0.0.&lt;/p&gt;
&lt;h3 id="additional-ux-improvements"&gt;Additional UX improvements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Introduce a new unique &lt;code&gt;engine&lt;/code&gt; key in &lt;code&gt;falco.yaml&lt;/code&gt; to replace all the other methods of opening engines (&lt;code&gt;FALCO_BPF_PROBE&lt;/code&gt;, &lt;code&gt;--modern-bpf&lt;/code&gt;, &lt;code&gt;-g&lt;/code&gt;, &lt;code&gt;-e)&lt;/code&gt;. See the &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-37-0/#deprecated-features"&gt;deprecated features&lt;/a&gt; section for more info.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Falco now expands environment variables in &lt;code&gt;falco.yaml&lt;/code&gt; even when they are part of a string. It is now possible to use syntax similar to this:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;ebpf&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;probe&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;${HOME}/.falco/falco-bpf.o&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Our gVisor integration has also been improved by adding support for more events, including &lt;code&gt;write&lt;/code&gt;, &lt;code&gt;socketpair&lt;/code&gt;, &lt;code&gt;timerfd_create&lt;/code&gt; and an updated configuration generator. In addition, we added support for any gVisor container ID format, making Falco more robust and compatible with gVisor sandboxed containers beyond Docker and Kubernetes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="breaking-changes"&gt;Breaking changes&lt;/h2&gt;
&lt;p&gt;This is a list of breaking changes introduced in Falco 0.37.0&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://github.com/falcosecurity/falco/pull/2841"&gt;Rate-limiter mechanism&lt;/a&gt; was removed as it is no longer used.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2839"&gt;&lt;code&gt;--userspace CLI option&lt;/code&gt;&lt;/a&gt; was removed as it’s no longer used.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;falco-driver-loader&lt;/code&gt; script is removed and &lt;a href="https://github.com/falcosecurity/falco/pull/2905"&gt;embedded into falcoctl&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Helm chart 4.0.0 contains several modifications to work with the new k8s metadata collector. Please read its &lt;a href="https://github.com/falcosecurity/charts/blob/master/charts/falco/BREAKING-CHANGES.md#400"&gt;breaking change&lt;/a&gt; file for more information.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The new &lt;code&gt;falcoctl driver&lt;/code&gt; implementation will drop:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/blob/master/scripts/falco-driver-loader#L685"&gt;&lt;code&gt;--source-only&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/blob/master/scripts/falco-driver-loader#L559"&gt;&lt;code&gt;BPF_USE_LOCAL_KERNEL_SOURCES&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/blob/master/scripts/falco-driver-loader#L692"&gt;&lt;code&gt;DRIVER_CURL_OPTIONS&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://github.com/falcosecurity/falco/blob/1b62b5ccd1c64cd972ef0252262075cbf42a130c/scripts/falco-driver-loader#L738C9-L738"&gt;&lt;code&gt;FALCO_BPF_PROBE&lt;/code&gt;&lt;/a&gt; environment variable won't be used by the new &lt;code&gt;falcoctl driver&lt;/code&gt; loader as it is already deprecated and scheduled to be removed in the next major version.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Various environment variables have been replaced as part of the new &lt;code&gt;falcoctl driver&lt;/code&gt; feature:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/blob/1b62b5ccd1c64cd972ef0252262075cbf42a130c/scripts/falco-driver-loader#L690"&gt;&lt;code&gt;DRIVERS_REPO&lt;/code&gt;&lt;/a&gt; has been replaced by &lt;code&gt;FALCOCTL_DRIVER_NAME&lt;/code&gt; or the &lt;code&gt;--name&lt;/code&gt; command line argument.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/blob/1b62b5ccd1c64cd972ef0252262075cbf42a130c/scripts/falco-driver-loader#L689"&gt;&lt;code&gt;DRIVERS_NAME&lt;/code&gt;&lt;/a&gt; has been replaced by &lt;code&gt;FALCOCTL_DRIVER_REPOS&lt;/code&gt; or the &lt;code&gt;--repo&lt;/code&gt; command line argument.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/blob/1b62b5ccd1c64cd972ef0252262075cbf42a130c/scripts/falco-driver-loader#L692"&gt;&lt;code&gt;DRIVER_KERNEL_RELEASE&lt;/code&gt;&lt;/a&gt; has been replaced by &lt;code&gt;--kernelrelease&lt;/code&gt; command line argument.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/blob/1b62b5ccd1c64cd972ef0252262075cbf42a130c/scripts/falco-driver-loader#L693"&gt;&lt;code&gt;DRIVER_KERNEL_VERSION&lt;/code&gt;&lt;/a&gt; has been replaced by &lt;code&gt;--kernelversion&lt;/code&gt; command line argument.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/blob/1b62b5ccd1c64cd972ef0252262075cbf42a130c/scripts/falco-driver-loader#L691"&gt;&lt;code&gt;DRIVER_INSECURE_DOWNLOAD&lt;/code&gt;&lt;/a&gt; has been replaced by &lt;code&gt;--http-insecure&lt;/code&gt; command line argument.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2914"&gt;Remove -K/-k options from Falco in favor of the new k8s plugin&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2997"&gt;Dropped plugins shipped with Falco&lt;/a&gt; since plugins will now be managed by &lt;code&gt;falcoctl&lt;/code&gt;. If you want to use a plugin like &lt;code&gt;k8saudit&lt;/code&gt; be sure to install it at init time with &lt;code&gt;falcoctl&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A new feature in Falco 0.37.0 &lt;a href="https://github.com/falcosecurity/falco/pull/2918"&gt;allows environment variables to be expanded even if they are part of a string&lt;/a&gt;. This new functionality introduces a minor breaking change.&lt;/p&gt;
&lt;p&gt;Previously, environment variables used in YAML that were empty or defined as “” would be expanded to the default value. This was inconsistent with how YAML was handled in other cases, where we only returned the default values if the node was not defined.&lt;/p&gt;
&lt;p&gt;With Falco 0.37.0 we will return the default value for nodes that cannot be parsed to the chosen type. The program_output command will be environment-expanded at init time instead of letting &lt;code&gt;popen&lt;/code&gt;; thus, the shell expands it.&lt;/p&gt;
&lt;p&gt;This is technically a breaking change, even if no behavioral change is expected.&lt;/p&gt;
&lt;p&gt;Note that you can avoid environment var expansion by using ${{FOO}} instead of ${FOO}. It will resolve to ${FOO} and won't be resolved to the environment var value.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find more information on breaking changes in the &lt;a href="https://github.com/falcosecurity/falco/issues/2763"&gt;tracking issue&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="deprecated-features"&gt;Deprecated features&lt;/h2&gt;
&lt;p&gt;This is a list of features that will be removed in Falco 0.38.0&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/tree/master/docker/builder"&gt;Modern probe Docker builder&lt;/a&gt; is no longer used.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2413/files"&gt;&lt;code&gt;syscall_buf_size_preset&lt;/code&gt;&lt;/a&gt; Falco config in favor of &lt;code&gt;engine.kmod/ebpf/modern_ebpf.buf_size_preset&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2413/files"&gt;&lt;code&gt;syscall_drop_failed_exit&lt;/code&gt;&lt;/a&gt; Falco config in favor of &lt;code&gt;engine.kmod/ebpf/modern_ebpf.drop_failed_exit&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2413/files"&gt;&lt;code&gt;modern_bpf.cpus_for_each_syscall_buffer&lt;/code&gt;&lt;/a&gt;Falco config in favor of &lt;code&gt;engine.modern_ebpf.cpus_for_each_buffer&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2413/files"&gt;&lt;code&gt;FALCO_BPF_PROBE&lt;/code&gt;&lt;/a&gt; environment variable in favor of &lt;code&gt;engine.ebpf.probe&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2413/files"&gt;&lt;code&gt;-e&lt;/code&gt;&lt;/a&gt; command line flag in favor of &lt;code&gt;engine.replay.capture_file&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2413/files"&gt;&lt;code&gt;g,gvisor-config&lt;/code&gt;&lt;/a&gt; command line flag in favor of &lt;code&gt;engine.gvisor.config&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2413/files"&gt;&lt;code&gt;gvisor-root&lt;/code&gt;&lt;/a&gt; command line flag in favor of &lt;code&gt;engine.gvisor.root&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2413/files"&gt;&lt;code&gt;modern-bpf&lt;/code&gt;&lt;/a&gt; command line flag in favor of &lt;code&gt;engine.kind=modern_ebpf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/2413/files"&gt;&lt;code&gt;nodriver&lt;/code&gt;&lt;/a&gt; command line flag in favor of &lt;code&gt;engine.kind=nodriver&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/pull/3015"&gt;&lt;code&gt;syscall_event_drops&lt;/code&gt;&lt;/a&gt; falco config will be replaced by the &lt;code&gt;metrics&lt;/code&gt; config plus some automatic notification on drops.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure to check the &lt;a href="https://github.com/falcosecurity/falco/issues/2840"&gt;tracker issue&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;Interested in trying out the new features? Use the resources below to get started.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/running/#docker"&gt;Container Images&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;falco&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-no-driver&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-no-driver"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;falco-driver-loader&lt;/code&gt; (&lt;a href="https://hub.docker.com/r/falcosecurity/falco-driver-loader"&gt;DockerHub&lt;/a&gt;, &lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;AWS ECR Gallery&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-s-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;The community is active on many fronts, and we plan on delivering more great features and stability fixes during the next release cycle!&lt;/p&gt;
&lt;p&gt;Some of the things we are currently working on include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Implement further improvements to our rule framework and rule syntax.&lt;/li&gt;
&lt;li&gt;Add new features and enhancements to falcoctl to make it even more powerful.&lt;/li&gt;
&lt;li&gt;Enhance the quantity, quality, and presentation of metrics in Falco.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And much much more&lt;/p&gt;
&lt;h2 id="stay-connected"&gt;Stay connected&lt;/h2&gt;
&lt;p&gt;Join us on social media and in our weekly community calls! It’s always great to have new members in the community, and we’re looking forward to hearing your feedback and ideas.&lt;/p&gt;
&lt;p&gt;You can find all the most up-to-date information at &lt;a href="https://falco.org/community/"&gt;https://falco.org/community/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog: Falco Weekly 4 - 2024</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-w-4-2024-weekly-recap/</link><pubDate>Fri, 26 Jan 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-w-4-2024-weekly-recap/</guid><description>
&lt;h2 id="what-happened-in-falco-this-week"&gt;What happened in Falco this week?&lt;/h2&gt;
&lt;p&gt;Let's go through the major changes that happened in various repositories under the falcosecurity organization.&lt;/p&gt;
&lt;h3 id="libs"&gt;Libs&lt;/h3&gt;
&lt;p&gt;Libs will need a 0.14.2 tag for the Falco 0.37.0 release, with the revert of &lt;a href="https://github.com/falcosecurity/libs/pull/1533"&gt;https://github.com/falcosecurity/libs/pull/1533&lt;/a&gt; PR.&lt;br&gt;
During our release process, we found out that the new &lt;code&gt;std::filesystem&lt;/code&gt; based implementaton was up to 8x time slower than the old ones; that's because it supports much more cases and does many more checks.&lt;br&gt;
Therefore, in &lt;a href="https://github.com/falcosecurity/libs/pull/1645"&gt;https://github.com/falcosecurity/libs/pull/1645&lt;/a&gt;, we revert to the old sorcery implementation, plus some minor improvements and added tests.&lt;/p&gt;
&lt;p&gt;Moreover, many more changes landed in libs, &lt;strong&gt;that won't be part of the upcoming Falco 0.37.0 release&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modernized C++ struct/enum/union declarations: &lt;a href="https://github.com/falcosecurity/libs/pull/1588"&gt;https://github.com/falcosecurity/libs/pull/1588&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added support for &lt;code&gt;newfstatat&lt;/code&gt; syscall: &lt;a href="https://github.com/falcosecurity/libs/pull/1628"&gt;https://github.com/falcosecurity/libs/pull/1628&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed a potential deadlock for kmod: &lt;a href="https://github.com/falcosecurity/libs/pull/1629"&gt;https://github.com/falcosecurity/libs/pull/1629&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Big effort by our hero, Jason, to cleanup some stale macros: &lt;a href="https://github.com/falcosecurity/libs/pull/1633,https://github.com/falcosecurity/libs/pull/1634,https://github.com/falcosecurity/libs/pull/1635,https://github.com/falcosecurity/libs/pull/1637,https://github.com/falcosecurity/libs/pull/1638"&gt;https://github.com/falcosecurity/libs/pull/1633,https://github.com/falcosecurity/libs/pull/1634,https://github.com/falcosecurity/libs/pull/1635,https://github.com/falcosecurity/libs/pull/1637,https://github.com/falcosecurity/libs/pull/1638&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A small fix for old ebpf driver to support some GKE envs: &lt;a href="https://github.com/falcosecurity/libs/pull/1642"&gt;https://github.com/falcosecurity/libs/pull/1642&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Solved a data race and segfault in logger: &lt;a href="https://github.com/falcosecurity/libs/pull/1643"&gt;https://github.com/falcosecurity/libs/pull/1643&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Allow to selectively disable bpf and kmod engines from cmake: &lt;a href="https://github.com/falcosecurity/libs/pull/1644"&gt;https://github.com/falcosecurity/libs/pull/1644&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="falco"&gt;Falco&lt;/h3&gt;
&lt;p&gt;Falco tag 0.37.0-rc2 is out! &lt;a href="https://github.com/falcosecurity/falco/releases/tag/0.37.0-rc2"&gt;Try it!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Moreover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;syscall_event_drops&lt;/code&gt; was soft-deprecated to get ready for Falco 0.38.0 upcoming cleanups: &lt;a href="https://github.com/falcosecurity/falco/pull/3015"&gt;https://github.com/falcosecurity/falco/pull/3015&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Avoid storing escaped strings in engine: &lt;a href="https://github.com/falcosecurity/falco/pull/3028"&gt;https://github.com/falcosecurity/falco/pull/3028&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bumped falcoctl to v0.7.1 and rules to 3.0.0: &lt;a href="https://github.com/falcosecurity/falco/pull/3030,https://github.com/falcosecurity/falco/pull/3034"&gt;https://github.com/falcosecurity/falco/pull/3030,https://github.com/falcosecurity/falco/pull/3034&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed nlohmann_json library include paths when using system one: &lt;a href="https://github.com/falcosecurity/falco/pull/3032"&gt;https://github.com/falcosecurity/falco/pull/3032&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixes to new libsinsp state metrics handling: &lt;a href="https://github.com/falcosecurity/falco/pull/3033"&gt;https://github.com/falcosecurity/falco/pull/3033&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are in the testing phase so any feedback would be appreciated!
Moreover, we crafted a dedicated helm chart to test the new &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/k8smeta"&gt;&lt;code&gt;k8smeta&lt;/code&gt;&lt;/a&gt; plugin and the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;&lt;code&gt;k8s-metacollector&lt;/code&gt;&lt;/a&gt;, you can read more about it &lt;a href="https://github.com/falcosecurity/falco/issues/2973"&gt;here&lt;/a&gt;. Please note these 2 new components will be officially released with Falco 0.37.0 as &lt;strong&gt;EXPERIMENTAL&lt;/strong&gt; features.&lt;/p&gt;
&lt;p&gt;As a final reminder, please take a look at &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;our polls&lt;/a&gt; if you have some spare seconds.&lt;/p&gt;
&lt;h3 id="falcoctl"&gt;Falcoctl&lt;/h3&gt;
&lt;p&gt;Falcoctl 0.7.1 is out! &lt;a href="https://github.com/falcosecurity/falcoctl/releases/tag/v0.7.1"&gt;Try it!&lt;/a&gt; and contains a small fix for the driver-loader on COS.&lt;/p&gt;
&lt;p&gt;Moreover, we added dependabot configs, that then bumped lots of deps to their latest compatible versions: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/385"&gt;https://github.com/falcosecurity/falcoctl/pull/385&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="join-relevant-discussions"&gt;Join relevant discussions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Our new discussion section: &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;https://github.com/falcosecurity/falco/discussions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking changes in Falco 0.37.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2763"&gt;https://github.com/falcosecurity/falco/issues/2763&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking changes in Falco 0.38.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2840"&gt;https://github.com/falcosecurity/falco/issues/2840&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open a discussion in our &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;discussion section&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;Aldo, Andrea, Federico&lt;/p&gt;</description></item><item><title>Blog: Falco Weekly 3 - 2024</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-w-3-2024-weekly-recap/</link><pubDate>Fri, 19 Jan 2024 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-w-3-2024-weekly-recap/</guid><description>
&lt;h2 id="what-happened-in-falco-this-week"&gt;What happened in Falco this week?&lt;/h2&gt;
&lt;p&gt;Let's go through the major changes that happened in various repositories under the falcosecurity organization.&lt;/p&gt;
&lt;h3 id="libs"&gt;Libs&lt;/h3&gt;
&lt;p&gt;Libs tag 0.14.1 is out! &lt;a href="https://github.com/falcosecurity/libs/releases/tag/0.14.1"&gt;Try it!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It fixes the following things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fix(gvisor): gVisor engine crashes with non-hex container IDs: &lt;a href="https://github.com/falcosecurity/libs/issues/1602"&gt;https://github.com/falcosecurity/libs/issues/1602&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(gvisor): handle arbitrary sandbox IDs: &lt;a href="https://github.com/falcosecurity/libs/pull/1612"&gt;https://github.com/falcosecurity/libs/pull/1612&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(libsinsp): modify switch case: &lt;a href="https://github.com/falcosecurity/libs/pull/1620"&gt;https://github.com/falcosecurity/libs/pull/1620&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(libsinsp): Add new cgroup layout for podman: &lt;a href="https://github.com/falcosecurity/libs/pull/1613"&gt;https://github.com/falcosecurity/libs/pull/1613&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(libsinsp): consistent thread info filtering while dumping: &lt;a href="https://github.com/falcosecurity/libs/pull/1606"&gt;https://github.com/falcosecurity/libs/pull/1606&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(libsinsp): do not suppress zero ptids: &lt;a href="https://github.com/falcosecurity/libs/pull/1598"&gt;https://github.com/falcosecurity/libs/pull/1598&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(libsinsp): fix resolved PT_FSPATH and PT_FSRELPATH evt params: &lt;a href="https://github.com/falcosecurity/libs/pull/1597"&gt;https://github.com/falcosecurity/libs/pull/1597&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find a detailed summary on the &lt;a href="https://github.com/falcosecurity/libs/releases/tag/0.14.1"&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="falco"&gt;Falco&lt;/h3&gt;
&lt;p&gt;Falco tag 0.37.0-rc1 is out! &lt;a href="https://github.com/falcosecurity/falco/releases/tag/0.37.0-rc1"&gt;Try it!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some final cleanup before the final tag:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cleanup(falco.yaml): rename &lt;code&gt;none&lt;/code&gt; in &lt;code&gt;nodriver&lt;/code&gt;: &lt;a href="https://github.com/falcosecurity/falco/pull/3012"&gt;https://github.com/falcosecurity/falco/pull/3012&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;update(config): graduate &lt;code&gt;outputs_queue&lt;/code&gt; to stable: &lt;a href="https://github.com/falcosecurity/falco/pull/3016"&gt;https://github.com/falcosecurity/falco/pull/3016&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are in the testing phase so any feedback would be appreciated!
Moreover, we crafted a dedicated helm chart to test the new &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/k8smeta"&gt;&lt;code&gt;k8smeta&lt;/code&gt;&lt;/a&gt; plugin and the &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;&lt;code&gt;k8s-metacollector&lt;/code&gt;&lt;/a&gt;, you can read more about it &lt;a href="https://github.com/falcosecurity/falco/issues/2973"&gt;here&lt;/a&gt;. Please note these 2 new components will be officially released with Falco 0.37.0 as &lt;strong&gt;EXPERIMENTAL&lt;/strong&gt; features.&lt;/p&gt;
&lt;p&gt;As a final reminder, please take a look at &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;our polls&lt;/a&gt; if you have some spare seconds.&lt;/p&gt;
&lt;h3 id="falcoctl"&gt;Falcoctl&lt;/h3&gt;
&lt;p&gt;Falcoctl 0.7.0 is out! &lt;a href="https://github.com/falcosecurity/falcoctl/releases/tag/v0.7.0"&gt;Try it!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These are some of the most relevant changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;update(output): complete rework of the output system: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/335"&gt;https://github.com/falcosecurity/falcoctl/pull/335&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;update(cmd): remove redundant configuration for error handling: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/337"&gt;https://github.com/falcosecurity/falcoctl/pull/337&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;new(cmd): add artifact config command: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/340"&gt;https://github.com/falcosecurity/falcoctl/pull/340&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;feat(artifact/config): fetch config layer for a specific platform: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/349"&gt;https://github.com/falcosecurity/falcoctl/pull/349&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;new(artifact/manifest): add manifest command: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/351"&gt;https://github.com/falcosecurity/falcoctl/pull/351&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;new: driver command: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/343"&gt;https://github.com/falcosecurity/falcoctl/pull/343&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;new(pkg/driver): fixed some kernel version related issues: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/364"&gt;https://github.com/falcosecurity/falcoctl/pull/364&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;cleanup(cmd,internal,pkg): move driver config options to be common to all driver commands: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/365"&gt;https://github.com/falcosecurity/falcoctl/pull/365&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(pkg/driver): do not call FixupKernel when building drivers: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/373"&gt;https://github.com/falcosecurity/falcoctl/pull/373&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;new: introduce asset artifact type: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/309"&gt;https://github.com/falcosecurity/falcoctl/pull/309&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find a detailed summary on the &lt;a href="https://github.com/falcosecurity/falcoctl/releases/tag/v0.7.0"&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="join-relevant-discussions"&gt;Join relevant discussions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Our new discussion section: &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;https://github.com/falcosecurity/falco/discussions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking changes in Falco 0.37.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2763"&gt;https://github.com/falcosecurity/falco/issues/2763&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking changes in Falco 0.38.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2840"&gt;https://github.com/falcosecurity/falco/issues/2840&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open a discussion in our &lt;a href="https://github.com/falcosecurity/falco/discussions"&gt;discussion section&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;Aldo, Andrea, Federico&lt;/p&gt;</description></item><item><title>Blog: Falco Weekly 50 - 2023</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-w-50-2023-weekly-recap/</link><pubDate>Fri, 15 Dec 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-w-50-2023-weekly-recap/</guid><description>
&lt;h2 id="what-happened-in-falco-this-week"&gt;What happened in Falco this week?&lt;/h2&gt;
&lt;p&gt;Let's go through the major changes that happened in various repositories under the falcosecurity organization.&lt;/p&gt;
&lt;h3 id="libs"&gt;&lt;a href="https://github.com/falcosecurity/libs"&gt;Libs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The anticipated 0.14.0 libs tag (and its driver counterpart) are going to be tagged soon, by the end of next week.&lt;br&gt;
A xmas present for you all! :christmas_tree:&lt;/p&gt;
&lt;p&gt;Mostly fixes were merged during this week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Populate labels field for pod sandbox containers: &lt;a href="https://github.com/falcosecurity/libs/pull/1564"&gt;https://github.com/falcosecurity/libs/pull/1564&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improved libscap modern bpf tests and CI checks: &lt;a href="https://github.com/falcosecurity/libs/pull/1568"&gt;https://github.com/falcosecurity/libs/pull/1568&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Avoid a double free when an exception is thrown during sinsp initialization: &lt;a href="https://github.com/falcosecurity/libs/pull/1569"&gt;https://github.com/falcosecurity/libs/pull/1569&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Made our pkg-config files paths-relative: &lt;a href="https://github.com/falcosecurity/libs/pull/1570"&gt;https://github.com/falcosecurity/libs/pull/1570&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed some paths handling in &lt;code&gt;fs.path&lt;/code&gt;: &lt;a href="https://github.com/falcosecurity/libs/pull/1571"&gt;https://github.com/falcosecurity/libs/pull/1571&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Do not include NULL terminator in enter event strings: &lt;a href="https://github.com/falcosecurity/libs/pull/1574"&gt;https://github.com/falcosecurity/libs/pull/1574&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Started a dedicated container engines test suite: &lt;a href="https://github.com/falcosecurity/libs/pull/1544"&gt;https://github.com/falcosecurity/libs/pull/1544&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rewritten scary &lt;code&gt;concatenate_paths&lt;/code&gt; function leveraging modern c++17 &lt;code&gt;std::filesystem&lt;/code&gt;: &lt;a href="https://github.com/falcosecurity/libs/pull/1533"&gt;https://github.com/falcosecurity/libs/pull/1533&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use a smart pointer for &lt;code&gt;m_resolver&lt;/code&gt; in &lt;code&gt;sinsp_dns_manager&lt;/code&gt; to avoid leaks: &lt;a href="https://github.com/falcosecurity/libs/pull/1558"&gt;https://github.com/falcosecurity/libs/pull/1558&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, thanks to actuated.dev for offering us arm64 github action runners, CI has been fully ported to github actions, except for a single CircleCI job! &lt;a href="https://github.com/falcosecurity/libs/pull/1555"&gt;https://github.com/falcosecurity/libs/pull/1555&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rumors have it coming next:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drivers build fix against linux 6.7-rc4+: &lt;a href="https://github.com/falcosecurity/libs/pull/1566"&gt;https://github.com/falcosecurity/libs/pull/1566&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;k8s.pod.uid&lt;/code&gt;, &lt;code&gt;k8s.pod.sandbox_id&lt;/code&gt; and mark &lt;code&gt;k8s.pod.id&lt;/code&gt; as legacy: &lt;a href="https://github.com/falcosecurity/libs/pull/1575"&gt;https://github.com/falcosecurity/libs/pull/1575&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="falco"&gt;&lt;a href="https://github.com/falcosecurity/falco"&gt;Falco&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Falco has seen some big new features this week!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Env variables expansion was extended to all scalar values in Falco configuration file! &lt;a href="https://github.com/falcosecurity/falco/pull/2918"&gt;https://github.com/falcosecurity/falco/pull/2918&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/falco/pull/2972"&gt;https://github.com/falcosecurity/falco/pull/2972&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Leveraging the above, &lt;code&gt;engine.ebpf.probe&lt;/code&gt; path now defaults to &lt;code&gt;${HOME}/.falco/falco-bpf.o&lt;/code&gt;: &lt;a href="https://github.com/falcosecurity/falco/pull/2971"&gt;https://github.com/falcosecurity/falco/pull/2971&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI has been ported to use actuated.dev github action arm64 runners! &lt;a href="https://github.com/falcosecurity/falco/pull/2945"&gt;https://github.com/falcosecurity/falco/pull/2945&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/falco/pull/2967"&gt;https://github.com/falcosecurity/falco/pull/2967&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Monitor more types of events for Falco hot reload feature: &lt;a href="https://github.com/falcosecurity/falco/pull/2965"&gt;https://github.com/falcosecurity/falco/pull/2965&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;libs and driver were bumped to latest master: &lt;a href="https://github.com/falcosecurity/falco/pull/2970"&gt;https://github.com/falcosecurity/falco/pull/2970&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, the new &lt;code&gt;falcoctl&lt;/code&gt; based driver-loader was finally merged in Falco: &lt;a href="https://github.com/falcosecurity/falco/pull/2905"&gt;https://github.com/falcosecurity/falco/pull/2905&lt;/a&gt;.&lt;br&gt;
If you can, please make sure to give it a spin and let us know any feedback, it is very valuable for us!&lt;br&gt;
To try it out:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker pull falcosecurity/falco-driver-loader:master
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run --rm -i -t &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --privileged &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v /root/.falco:/root/.falco &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v /proc:/host/proc:ro &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v /boot:/host/boot:ro &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v /lib/modules:/host/lib/modules &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v /usr:/host/usr:ro &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v /etc:/host/etc:ro &lt;span style="color:#b62;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; falcosecurity/falco-driver-loader:master
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="falcoctl"&gt;&lt;a href="https://github.com/falcosecurity/falcoctl"&gt;Falcoctl&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Some fixes on top of the new driver-loader happened:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cleanup eBPF probe symlink in &lt;code&gt;Cleanup&lt;/code&gt; method: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/371"&gt;https://github.com/falcosecurity/falcoctl/pull/371&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Do not call &lt;code&gt;FixupKernel&lt;/code&gt; when building drivers: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/373"&gt;https://github.com/falcosecurity/falcoctl/pull/373&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Moreover, we finally merged the new &lt;code&gt;asset&lt;/code&gt; artifact type PR! &lt;a href="https://github.com/falcosecurity/falcoctl/pull/309"&gt;https://github.com/falcosecurity/falcoctl/pull/309&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Falcoctl is quite ready for &lt;a href="https://github.com/falcosecurity/falcoctl/milestone/7"&gt;v0.7.0&lt;/a&gt; release; we only need more driver-loader testing!&lt;/p&gt;
&lt;h3 id="driverkit"&gt;&lt;a href="https://github.com/falcosecurity/driverkit"&gt;Driverkit&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Driverkit has seen a small bug fix release this week: &lt;a href="https://github.com/falcosecurity/driverkit/releases/tag/v0.16.2"&gt;https://github.com/falcosecurity/driverkit/releases/tag/v0.16.2&lt;/a&gt;.&lt;br&gt;
It contains a fix to docker go package multiplexed output support: &lt;a href="https://github.com/falcosecurity/driverkit/pull/310"&gt;https://github.com/falcosecurity/driverkit/pull/310&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Moreover, we merged a PR that opens up the possibility for Driverkit to directly use &lt;code&gt;cmake&lt;/code&gt; to configure and then build our drivers: &lt;a href="https://github.com/falcosecurity/driverkit/pull/309"&gt;https://github.com/falcosecurity/driverkit/pull/309&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What's next?&lt;br&gt;
The &lt;code&gt;cmake&lt;/code&gt; PR is opened and works super good; build times are as good as before, so no penalty! &lt;a href="https://github.com/falcosecurity/driverkit/pull/302"&gt;https://github.com/falcosecurity/driverkit/pull/302&lt;/a&gt;.&lt;br&gt;
Moreover, we are going to make use of actuated.dev arm64 runners in driverkit too, porting its CI to github actions: &lt;a href="https://github.com/falcosecurity/driverkit/pull/311"&gt;https://github.com/falcosecurity/driverkit/pull/311&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="join-relevant-discussions"&gt;Join relevant discussions!&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Breaking changes in Falco 0.37.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2763"&gt;https://github.com/falcosecurity/falco/issues/2763&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking changes in Falco 0.38.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2840"&gt;https://github.com/falcosecurity/falco/issues/2840&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;Aldo, Andrea, Federico&lt;/p&gt;</description></item><item><title>Blog: Install and Test Atomic Red in Kubernetes</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-atomic-red/</link><pubDate>Tue, 12 Dec 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-atomic-red/</guid><description>
&lt;p&gt;In cloud-native environments, where applications scale up and down much faster than traditional monolithic application architectures, the ability to proactively identify and respond to threats in real time is paramount. As more organizations embrace cloud-native architectures for application delivery, more robust security measures need to be introduced. In this blog post, we delve into the dynamic realm of Kubernetes threat detection by exploring how open source Falco can seamlessly detect Atomic Red Team tests in real time within Kubernetes environments.&lt;/p&gt;
&lt;p&gt;Atomic Red Team is a powerful framework designed to simulate real-world attacks, providing organizations with a controlled environment to validate the effectiveness of their security measures. We take this a step further by deploying Atomic Red to Kubernetes with a single command, creating a realistic testing ground for evaluating the responsiveness of Falco.&lt;/p&gt;
&lt;p&gt;Our journey begins with the effortless deployment of Atomic Red to Kubernetes, showcasing the simplicity and efficiency of orchestrating security testing within containerized environments. Once deployed, we invoke specific Atomic Red Team tests, simulating a range of threat scenarios. The true test lies in Falco's ability to detect these threats in line with the MITRE ATT&amp;amp;CK framework, a globally-recognized matrix mapping adversary techniques to defensive tactics.&lt;/p&gt;
&lt;p&gt;This exploration is not just about identifying threats; it's a collaborative effort to enhance Falco's coverage. Should we identify any gaps in detection, we dive deeper, revising the executed techniques and crafting custom rules. This iterative process aims to extend our MITRE ATT&amp;amp;CK coverage, aligning Falco with the industry's best practices for threat detection and mitigation.&lt;/p&gt;
&lt;h2 id="deploying-atomic-red-team"&gt;Deploying Atomic Red Team&lt;/h2&gt;
&lt;p&gt;To avoid any potential service disruption in production environments, we recommend installing Atomic Red in a test lab environment, or at least a staging environment of Kubernetes. We have a step-by-step video for installing Atomic Red on &lt;a href="https://www.youtube.com/watch?v=5QjGnHGnxxo"&gt;Youtube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before we start the deployment, remember to create the atomic-red network namespace.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl create ns atomic-red
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A single pod will be deployed with privileged set to true.
Atomic Red requires admin-level securityContext to perform certain actions that require elevated permissions.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl apply -f - &amp;lt;&amp;lt;EOF&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;apps/v1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Deployment&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;atomicred&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;namespace&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;atomic-red&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;labels&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;app&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;atomicred&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;replicas&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#666"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;selector&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;matchLabels&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;app&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;atomicred&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;template&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;labels&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;app&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;atomicred&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;containers&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;atomicred&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;image&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;issif/atomic-red:latest&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;imagePullPolicy&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;IfNotPresent&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;command&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[&lt;span style="color:#b44"&gt;&amp;#34;sleep&amp;#34;&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;3560d&amp;#34;&lt;/span&gt;]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;securityContext&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;privileged&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;nodeSelector&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kubernetes.io/os&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;linux&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note: This creates a pod called 'atomicred' in the 'atomic-red' network namespace.
You can check on the state of the installation with the below command:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl get pods -n atomic-red
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you ever want to remove the Atomic Red project from your Kubernetes cluster, simply run:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl delete deployment atomicred -n atomic-red
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/atomic-install.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="familiarize-yourself-with-atomic-red-tests"&gt;Familiarize Yourself with Atomic Red Tests&lt;/h2&gt;
&lt;p&gt;Once deployed, you will need to shell into the Atomic Red pod to perform the following test scenarios.
This might seem a little confusing, but Atomic Red was developed with PowerShell in mind, so the below instructions ask the user to shell into a container, and once they are in the running pod, they must run Powershell to import and invoke the various Atomic Test Scenarios.&lt;/p&gt;
&lt;p&gt;Once you are familiar with this logic, you’ll find Atomic Red is a truly simple security simulation tool.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl exec -it -n atomic-red deploy/atomicred -- bash
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As mentioned, you need to run Powershell once you are in the Atomic Red pod:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pwsh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, you can finally load the Atomic Red Team module:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Import-Module &amp;#34;~/AtomicRedTeam/invoke-atomicredteam/Invoke-AtomicRedTeam.psd1&amp;#34; -Force
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/import.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Check the details of the TTPs:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1070.004 -ShowDetails
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/show-details.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Check the prerequisites to ensure the test conditions are right:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1070.004 -GetPreReqs
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can see in the below screenshot, there are no prerequisites required to perform these tests.
As a result, we can invoke the bulk file deletion test scenario.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/prereqs.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Remove the feature flags to execute the test simulation.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1070.004
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This test will attempt to delete individual files or individual directories. When we have Falco installed, this Atomic test should trigger the 'Warning bulk data removed from disk' rule by default. Next, we discuss Falco’s installation.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/file-deletion.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Congrats! Now that we know how Atomic Red works, let’s install Falco and run it side-by-side against Atomic Red to prove it detects these tests in real time. We will need to open two terminal windows to see the real-time response detections.&lt;/p&gt;
&lt;h2 id="installing-testing-falco"&gt;Installing &amp;amp; Testing Falco&lt;/h2&gt;
&lt;p&gt;For this lab guide, we can install Falco via Helm on a fixed version prior to the segregation of rules into different rules feeds, such as 'incubating', 'sandbox' and 'stable'. The reason we are doing this is to ensure all Falco rules are accessible in our lab scenario. To use the latest version of Falco, simply remove the '--version' feature flag from the Helm install script.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;helm install falco falcosecurity/falco --namespace falco \
--create-namespace \
--set tty=true \
--version 3.3.0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/install-falco.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Just like the Atomic Red deployment, we need to monitor the progress of the Falco installation. The pods will change state a few times during the installation, but should eventually all be in a 'RUNNING' status after about a minute or so.&lt;/p&gt;
&lt;p&gt;Please use the below command to check on the status change of Falco pods:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl get pods -n falco -w
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Once Falco is installed, we can track the events as they are generated using the following command in the second terminal window.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -f --tail=0 -n falco -c falco -l app.kubernetes.io/name=falco
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Jump back into the first terminal window and re-run the bulk file deletion Atomic Test - 'T1070.004':&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1070.004
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/falco-detection1.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;You’re going to identify certain noise in the detection rules. For example, all Atomic Tests are run under the 'Root' user, therefore, we will always get a detection for scripts running under root. To ignore this noise, let’s instead just check for the specific Falco rule we are looking to detect:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -f --tail=0 -n falco -c falco -l app.kubernetes.io/name=falco | grep &amp;#39;Bulk data has been removed from disk&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/falco-detection2.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Hurrah! We see the exact detection matching the context of the Atomic Red test scenario.
Let’s move on to the next Atomic Test to invoke. There are a bunch of test scenarios for Linux that you can test out today.&lt;/p&gt;
&lt;p&gt;Check out the list on the official &lt;a href="https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/Indexes/Indexes-Markdown/linux-index.md"&gt;Atomic Red Team Github project&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="t1556-003-modify-authentication-process"&gt;T1556.003 Modify Authentication Process&lt;/h2&gt;
&lt;p&gt;In this scenario, Atomic Red generates three Pluggable Authentication Modules (PAM): two malicious PAM rules for Linux and FreeBSD, as well as a malicious PAM module for Linux. These programs can be used to open and read sensitive file content, and we can agree that they are non-trusted programs. Again, we have an &lt;a href="https://thomas.labarussias.fr/falco-rules-explorer/?source=syscalls&amp;amp;hash=5116b3ca0c5fad246cc41ca67938a315"&gt;out-of-the-box rule&lt;/a&gt; for these activities:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -f --tail=0 -n falco -c falco -l app.kubernetes.io/name=falco | grep &amp;#39;Sensitive file opened for reading by non-trusted program&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, it's time to simulate our threat:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1556.003
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/pam-auth.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="t1036-005-masquerading-match-legitimate-name-or-location"&gt;T1036.005 Masquerading: Match Legitimate Name or Location&lt;/h2&gt;
&lt;p&gt;This test scenario executes a process from a directory masquerading as the current parent directory.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -f --tail=0 -n falco -c falco -l app.kubernetes.io/name=falco | grep &amp;#39;Executing binary not part of base&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, it's time to simulate our threat.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1036.005
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can see that in the left terminal window, there is an echo message in the terminal saying '”Hello from the Atomic Red Team.”' Any string output in the command line can also be detected in Falco’s outputs.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/masquerading.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="t1070-002-indicator-removal-on-host"&gt;T1070.002 Indicator Removal on Host&lt;/h2&gt;
&lt;p&gt;Adversaries may clear system logs to hide evidence of an intrusion. macOS and Linux both keep track of system or user-initiated actions via system logs. The majority of native system logging is stored under the '/var/log/' directory.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -f --tail=0 -n falco -c falco -l app.kubernetes.io/name=falco | grep &amp;#39;Log files were tampered&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, it's time to simulate our threat:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1070.002
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/tampering.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="t1070-003-clear-command-history"&gt;T1070.003 Clear Command History&lt;/h2&gt;
&lt;p&gt;In addition to clearing system logs, an adversary may clear the command history of a compromised account to conceal the actions undertaken during an intrusion. Various command interpreters keep track of the commands users type in their terminals so that users can retrace what they've done.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -f --tail=0 -n falco -c falco -l app.kubernetes.io/name=falco | grep &amp;#39;Shell history had been deleted or renamed&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, it's time to simulate our threat:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1070.003
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can see from the below screenshot that four different operations were performed. Therefore, four unique Falco detections were triggered on those individual attempts to clear the command line history.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/shell-history.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="t1014-loadable-kernel-module-based-rootkit"&gt;T1014 Loadable Kernel Module Based Rootkit&lt;/h2&gt;
&lt;p&gt;Adversaries may use Rootkits to hide the presence of programs, files, network connections, services, drivers, and other system components. Rootkits are programs that hide the existence of malware by intercepting/hooking and modifying operating system API calls that supply system information.&lt;/p&gt;
&lt;p&gt;Rootkits may reside at the user or kernel level in the operating system or lower, to include a hypervisor, Master Boot Record, or System Firmware. As such, it’s critical that Falco detects Rootkits in real time.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -f --tail=0 -n falco -c falco -l app.kubernetes.io/name=falco | grep &amp;#39;Linux Kernel Module injection from container detected&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, it's time to simulate our threat:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1014
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Falco is detecting the Linux kernel module injection attempt, whether it was a successful execution or not.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/rootkit.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="t1037-004-custom-rule-boot-initialization-rc-scripts"&gt;T1037.004 [CUSTOM RULE] Boot Initialization - RC Scripts&lt;/h2&gt;
&lt;p&gt;Adversaries may establish persistence by modifying RC scripts that are executed during a Unix-like system’s startup. These files allow system administrators to map and start custom services at startup for different run levels. RC scripts require root privileges to modify.&lt;/p&gt;
&lt;p&gt;Command to simulate the 'T1037.004' test:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1037.004
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You’ll notice that this is the first test where we don’t get a useful Falco detection related to the threat. As a result, we need to create a 'custom-rules.yaml' file with the custom Falco rule for detecting boot initialization scripts.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat &amp;gt; custom-rules.yaml &amp;lt;&amp;lt;EOF
customRules:
custom_rules.yaml: |-
- rule: Base64-encoded Python Script Execution
desc: &amp;gt;
This rule detects base64-encoded Python scripts on command line arguments.
condition: &amp;gt;
spawned_process and (
((proc.cmdline contains &amp;#34;python -c&amp;#34; or proc.cmdline contains &amp;#34;python3 -c&amp;#34; or proc.cmdline contains &amp;#34;python2 -c&amp;#34;) and (proc.cmdline contains &amp;#34;echo&amp;#34; or proc.cmdline icontains &amp;#34;base64&amp;#34;)) or ((proc.cmdline contains &amp;#34;import&amp;#34; and proc.cmdline contains &amp;#34;base64&amp;#34; and proc.cmdline contains &amp;#34;decode&amp;#34;)))
output: &amp;gt;
Potentially malicious Python script encoded on command line
(proc.cmdline=%proc.cmdline user.name=%user.name proc.name=%proc.name
proc.pname=%proc.pname evt.type=%evt.type gparent=%proc.aname[2]
ggparent=%proc.aname[3] gggparent=%proc.aname[4] evt.res=%evt.res
container.id=%container.id container.name=%container.name file=%fd.name)
priority: warning
tags:
- T1037.004
- MITRE_Defense_Evasion
source: syscall
EOF
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adversaries can establish persistence by adding a malicious binary path or shell commands to 'rc.local', 'rc.common', and other RC scripts specific to the Unix-like distribution. Upon reboot, the system executes the script's contents as root, resulting in persistence.&lt;/p&gt;
&lt;p&gt;Let’s try upgrading Falco to reflect the 'custom-rules.yaml' file:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;helm upgrade falco falcosecurity/falco \
-n falco \
--set tty=true \
--version 3.3.0 \
--reuse-values \
-f custom-rules.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Granted, there’s no obvious formatting issues when creating the 'custom-rules.yaml' manifest, you should be able to successfully upgrade Falco and the pods should be in a 'RUNNING' state. If there was an issue with the custom rules file, the Falco pod state will likely change to 'CrashLoopBackOff'.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/falco-upgrade.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Let’s see if we detect the Atomic test after upgrading Falco with the newly-created custom rule.
Remember to have Falco running in a second terminal window with the following command:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -f --tail=0 -n falco -c falco -l app.kubernetes.io/name=falco | grep &amp;#39;Potentially malicious Python script&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We can simulate the technique ID 'T1037.004' one last time:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1037.004
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/python.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Hurrah! We detected the boot initialization scripts with the above command. To recap, adversaries looking to abuse those RC scripts are especially effective for lightweight Unix-like distributions using the root user as default, such as IoT or embedded systems. If you are wondering why the Falco rule was specifically looking at Base64-encoded Python scripts, well, we need to look back at the details associated with the Atomic test simulation.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invoke-AtomicTest T1037.004 -ShowDetails
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We can see from the command that it is using the 'python3' command to run Python scripts. However, the script itself is executed as a base64-encoded string to evade some traditional detection tools.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In conclusion, this article serves as a comprehensive guide aimed at enhancing knowledge in cloud-native threat simulation and detection. Its primary audience includes security practitioners, DevOps teams, and anyone involved in securing Kubernetes environments. The focal point is the utilization of Atomic Red for deploying test simulations aligned with the MITRE ATT&amp;amp;CK framework and leveraging Falco to detect these threats in real time.&lt;/p&gt;
&lt;p&gt;The article not only illustrates how Atomic Red can be instrumental in improving the rules shipped with Falco, but also emphasizes its role in identifying potential gaps in coverage. By doing so, it offers a valuable resource for customers seeking alternative methods to validate the effectiveness of their Falco rules and, consequently, fortify the security posture of their Kubernetes deployments.&lt;/p&gt;
&lt;p&gt;The notion of creating a realistic testing ground for evaluating the responsiveness of Falco is particularly beneficial for DevOps teams. This facet addresses the need for hands-on experience in threat simulation, adversarial approaches, and understanding the intricacies of the MITRE ATT&amp;amp;CK framework. In providing this practical testing environment, the article empowers DevOps teams to proactively enhance their security measures, ensuring robust coverage and responsiveness in the dynamic landscape of Kubernetes threat detection.&lt;/p&gt;</description></item><item><title>Blog: Falco Weekly 48 - 2023</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-w-48-2023-weekly-recap/</link><pubDate>Fri, 01 Dec 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-w-48-2023-weekly-recap/</guid><description>
&lt;h2 id="what-happened-in-falco-this-week"&gt;What happened in Falco this week?&lt;/h2&gt;
&lt;p&gt;Let's go through the major changes that happened in various repositories under the falcosecurity organization.&lt;/p&gt;
&lt;h3 id="libs"&gt;&lt;a href="https://github.com/falcosecurity/libs"&gt;Libs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The anticipated 0.14.0 libs tag (and its driver counterpart) are still a bit late, unfortunately.&lt;/p&gt;
&lt;p&gt;Anyway, spring cleaning went on once again this week!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cleaned up &lt;code&gt;dup3&lt;/code&gt; flags param: &lt;a href="https://github.com/falcosecurity/libs/pull/1469"&gt;https://github.com/falcosecurity/libs/pull/1469&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;cleaned up other params inconsistencies in the drivers: &lt;a href="https://github.com/falcosecurity/libs/pull/1512"&gt;https://github.com/falcosecurity/libs/pull/1512&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;dropped &lt;code&gt;b64&lt;/code&gt; dep: &lt;a href="https://github.com/falcosecurity/libs/pull/1518"&gt;https://github.com/falcosecurity/libs/pull/1518&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;dropped &lt;code&gt;tinydir&lt;/code&gt; dep: &lt;a href="https://github.com/falcosecurity/libs/pull/1516"&gt;https://github.com/falcosecurity/libs/pull/1516&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;removed some warning suppressions: &lt;a href="https://github.com/falcosecurity/libs/pull/1519"&gt;https://github.com/falcosecurity/libs/pull/1519&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;cleaned up big unused function &lt;code&gt;sinsp_evt::get_param_as_json&lt;/code&gt;: &lt;a href="https://github.com/falcosecurity/libs/pull/1523"&gt;https://github.com/falcosecurity/libs/pull/1523&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The big &lt;a href="https://github.com/falcosecurity/libs/pull/1502"&gt;safer parameter handling PR&lt;/a&gt; was merged, making libs much more robust!
Moreover, &lt;code&gt;ppc64le&lt;/code&gt; support &lt;a href="https://github.com/falcosecurity/libs/pull/1497"&gt;was extended&lt;/a&gt; to kmod and legacy ebpf probe, and we added CI jobs to test the build of drivers on it! Thanks to Afsan Hossain for his big contribution!&lt;/p&gt;
&lt;p&gt;Finally, some more fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;build on &lt;code&gt;s390x&lt;/code&gt; was fixed: &lt;a href="https://github.com/falcosecurity/libs/pull/1522"&gt;https://github.com/falcosecurity/libs/pull/1522&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;some recently introduced regressions were fixed: &lt;a href="https://github.com/falcosecurity/libs/pull/1524"&gt;https://github.com/falcosecurity/libs/pull/1524&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fixed a memleak in &lt;code&gt;sinsp_dns_manager&lt;/code&gt;: &lt;a href="https://github.com/falcosecurity/libs/pull/1526"&gt;https://github.com/falcosecurity/libs/pull/1526&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rumors have it coming next week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More fixes: &lt;a href="https://github.com/falcosecurity/libs/pull/1530"&gt;https://github.com/falcosecurity/libs/pull/1530&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/libs/pull/1528"&gt;https://github.com/falcosecurity/libs/pull/1528&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="falco"&gt;&lt;a href="https://github.com/falcosecurity/falco"&gt;Falco&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We bumped libs and driver to latest master: &lt;a href="https://github.com/falcosecurity/falco/pull/2929"&gt;https://github.com/falcosecurity/falco/pull/2929&lt;/a&gt;.&lt;br&gt;
Moreover, Falco will now print system info during startup: &lt;a href="https://github.com/falcosecurity/falco/pull/2927"&gt;https://github.com/falcosecurity/falco/pull/2927&lt;/a&gt;.&lt;br&gt;
Falco does now expose a new config option to enable libsinsp state metrics: &lt;a href="https://github.com/falcosecurity/falco/pull/2883"&gt;https://github.com/falcosecurity/falco/pull/2883&lt;/a&gt;
Finally, the new &lt;a href="https://github.com/falcosecurity/falco/pull/2413"&gt;&lt;code&gt;driver selection mechanism&lt;/code&gt; PR&lt;/a&gt; was merged!&lt;/p&gt;
&lt;h3 id="falcoctl"&gt;&lt;a href="https://github.com/falcosecurity/falcoctl"&gt;Falcoctl&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Some fixes on top of the new driver-loader happened:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fixed up naming for the new Falco driver selection in config: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/357"&gt;https://github.com/falcosecurity/falcoctl/pull/357&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;small fix for host-root driver-loader configuration: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/358"&gt;https://github.com/falcosecurity/falcoctl/pull/358&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;do not fail when &lt;code&gt;/sys/kernel/debug&lt;/code&gt; fails to be mounted: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/361"&gt;https://github.com/falcosecurity/falcoctl/pull/361&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="join-relevant-discussions"&gt;Join relevant discussions!&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Breaking change in Falco 0.37.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2763"&gt;https://github.com/falcosecurity/falco/issues/2763&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Breaking change in Falco 0.38.0: &lt;a href="https://github.com/falcosecurity/falco/issues/2840"&gt;https://github.com/falcosecurity/falco/issues/2840&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Falco metrics exposed to final users: &lt;a href="https://github.com/falcosecurity/falco/issues/2928"&gt;https://github.com/falcosecurity/falco/issues/2928&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Create a more coherent stats model for libs: &lt;a href="https://github.com/falcosecurity/libs/issues/1463"&gt;https://github.com/falcosecurity/libs/issues/1463&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Allow loading tracepoints other than the ones needed by Falco: &lt;a href="https://github.com/falcosecurity/libs/issues/1376"&gt;https://github.com/falcosecurity/libs/issues/1376&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;Aldo, Federico&lt;/p&gt;</description></item><item><title>Blog: Using Falco to Create Custom Identity Detections</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-okta-identity/</link><pubDate>Tue, 28 Nov 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-okta-identity/</guid><description>
&lt;p&gt;Identity Threat Detection &amp;amp; Response (ITDR) in the cloud is of paramount importance to limit access to sensitive data and maintain the integrity of cloud infrastructure. Leading cloud providers like AWS, Microsoft Azure, and Google Cloud have implemented robust Identity and Access Management (IAM) controls, as well as Multi-Factor Authentication (MFA) options, to ensure that users have the standardized access control limitations.&lt;/p&gt;
&lt;p&gt;However, as the saying goes, &amp;quot;Trust, but verify.&amp;quot; Even with these layers of security, there's a growing concern about what happens when a rogue employee or an external adversary manages to compromise an identity provider. Recent months have witnessed a surge in attacks targeting popular identity providers like Okta, underscoring the critical need for timely and effective detection capabilities. In fact, (&lt;a href="https://cybermagazine.com/articles/crowdstrike-report-reveals-increase-in-identity-attacks"&gt;Crowdstrike’s 2023 Threat Hunting&lt;/a&gt;) report had classified 62% of all interactive cyber intrusions as having involved some form of compromised identities.&lt;/p&gt;
&lt;p&gt;Without proper detection, incidents such as the attacks on organizations like Caesars and MGM might go unnoticed until it's too late. Fortunately, open source Falco offers a &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/okta/README.md"&gt;Dedicated plugin&lt;/a&gt; for the Okta identity platform, empowering security teams to respond swiftly and with the context required to take real action against potential threats.&lt;/p&gt;
&lt;p&gt;In this blog post, we will delve into how Falco fulfills the requirements for ITDR capabilities. We'll illustrate the significance of Falco's adaptable rule logic and provide readers with a real-world example of crafting custom rules derived directly from Okta audit logs.&lt;/p&gt;
&lt;h2 id="understanding-the-rule-logic"&gt;Understanding the rule logic&lt;/h2&gt;
&lt;p&gt;The Falco Okta plugin comes with a set of valuable &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/okta/rules/okta_rules.yaml"&gt;default rules&lt;/a&gt; for Okta logs, which are designed to assist you in enhancing the security of your Okta platform.&lt;/p&gt;
&lt;p&gt;A typical illustration of the importance of these rules lies in the process of initiating a password reset within the Okta platform. In practice, an insider threat might reset a password, opt not to inform the end-user about the reset, and potentially carry out an account takeover in this context. Whenever a specific action is executed through the Okta user interface, there is a straightforward method to access the associated activity logs on the web user interface&lt;/p&gt;
&lt;p&gt;&lt;img src="images/okta1.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Nonetheless, this default perspective is not particularly suitable for our Falco rule since it's focused on a specific user making changes to another specific user account. The system log focus is on algorithmically-generated actor IDs linked to both the user initiating the password reset and the user whose account password has been reset.&lt;/p&gt;
&lt;p&gt;While this event information may serve a purpose if you only wish to trigger detection events between these specific accounts, in practical scenarios, a more comprehensive view encompassing all users is typically required.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/okta2.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;For a more efficient approach, it's advisable to select the &lt;code&gt;User updated password in Okta&lt;/code&gt; event behavior shown at the bottom of the screenshot above. This action will automatically narrow down the search view to display event information exclusively related to password updates in Okta. With this method, we can effectively set up alerts for all password update activities.&lt;/p&gt;
&lt;p&gt;Utilizing Falco, we can extract the precise event type value from the system log and incorporate it into a Falco rule.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/okta3.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Fortunately, this task has already been handled for us in the Okta plugin ruleset. It's worth noting that the value found in the system logs aligns with our specified Falco conditions, ensuring that we attain equivalent visibility within Falco as we do in the Okta UI. However, it's important to be aware that in extensive production environments, this rule can generate a significant amount of noise. If needed, you have the option to filter this activity specifically for password resets targeting the 'Admin' privileged group, as they are frequently the primary targets of cyberattacks.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- rule: User password reset by OKTA admin
desc: Detect a password reset on a user done by OKTA Admin Account
condition: okta.evt.type = &amp;#34;user.account.reset_password&amp;#34;
output: &amp;#34;A user password has been reset by an OKTA Admin account (user=%okta.actor.name, ip=%okta.client.ip, target user=%okta.target.user.name)&amp;#34;
priority: NOTICE
source: okta
tags: [okta]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here is the output displayed in our Falcosidekick UI, presenting the context of the actor's name and the corresponding IP address responsible for the change. It could be advantageous to explore the possibility of incorporating additional &lt;code&gt;Output&lt;/code&gt; fields to enhance incident response capabilities when addressing identity threats.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/okta4.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="building-a-custom-falco-rule"&gt;Building a custom Falco rule&lt;/h2&gt;
&lt;p&gt;The next example extends beyond the scope of the default Falco rules. For instance, if an identity integration or application were to be disassociated from the user &lt;code&gt;Nigel Douglas&lt;/code&gt;, it might be an attempt to compromise security measures within established workflows or systems - a good example of &lt;code&gt;Impair Defenses&lt;/code&gt; technique in the MITRE ATT&amp;amp;CK matrix.&lt;/p&gt;
&lt;p&gt;Consequently, we will replicate this specific action and create a custom Falco rule to identify such behavior. As shown in the screenshot below, the admin user is seen removing the application assignment from the user Nigel.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/okta5.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="images/okta6.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;After the application has been unassigned, we receive the updated event type data in Okta, much like our previous workflow. The Okta query that provides the results of the application removal is as follows:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;eventType eq &amp;#34;application.user_membership.remove&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/okta7.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;With this understanding, we can navigate to the &lt;a href="https://falco.org/docs/rules/default-custom/#the-configuration-file"&gt;falco_rules.local.yaml&lt;/a&gt; file in our Falco installation, which is often used to define a custom ruleset. Based on the construction of the previous Falco rule and the string identified in the screenshot above &lt;code&gt;application.user_membership.remove&lt;/code&gt;, we will update the condition to check for this type. In your case, the Falco rule should be structured as follows:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- rule: Remove app membership
desc: Detect membership removal in OKTA
condition: okta.evt.type = &amp;#34;application.user_membership.remove&amp;#34;
output: &amp;#34;A user has removed the following app in OKTA (user=%okta.actor.name, ip=%okta.client.ip, target user=%okta.target.user.name)&amp;#34;
priority: CRITICAL
source: okta
tags: [custom_rule, mitre_defense_evasion, T1562, impair_defenses]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To ensure the custom rule is applied, you might need to restart Falco (depending on the version). If you have deployed Falco and Falcosidekick via a Docker compose file, this can be achieved by simply executing a &lt;code&gt;stop&lt;/code&gt; command to halt the containers, followed by the &lt;code&gt;up -d&lt;/code&gt; command, which restarts the Docker containers with the same configurations specified in the docker-compose.yaml file.&lt;/p&gt;
&lt;p&gt;While Docker is not the only &lt;a href="https://falco.org/docs/install-operate/deployment/"&gt;deployment option&lt;/a&gt; for Falco, it is undeniably a very convenient option for these types of test environments. The source of the docker-compose.yaml can be &lt;a href="https://github.com/LucaGuerra/falcosidekick-ui-compose/blob/main/docker-compose.yaml"&gt;accessed here&lt;/a&gt; .&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;docker compose -f docker-compose.yaml stop
docker compose -f docker-compose.yaml up -d
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="images/okta8.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;In order to assist with incident response initiatives, you will now notice the custom tags linked to MITRE ATT&amp;amp;CK tactics and techniques in your alert output. This enhanced alert output facilitates incident responders in recognizing the specific issues related to this behavior, enabling them to potentially detect insider threats at the earliest stage. These custom tags are then integrated into the Falco rule for further context.&lt;/p&gt;
&lt;h2 id="why-falco-instead-of-a-traditional-logging-solution"&gt;Why Falco instead of a traditional logging solution?&lt;/h2&gt;
&lt;p&gt;While it's possible to forward all your Okta logs to a centralized Security Incident &amp;amp; Event Management (SIEM) system, certain limitations become apparent. One prominent concern pertains to storage, as a substantial number of events must be retained in a centralized backend database, requiring aggregation and indexing to produce security alerts. This can impose a significant operational burden on organizations since they are effectively storing a multitude of events, a significant portion of which may be extraneous, potentially resulting in substantial costs associated with ingestion charges.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/okta9.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Similarly, once the events are in the system, it becomes crucial to have a solid grasp of crafting effective detection rules. Instead of managing intricate scripts and queries to minimize false positives, Falco streamlines the process by offering a unified rules language applicable across host endpoints, cloud services, CI/CD services, and Okta logs. This approach enables swift rule development and immediate testing within your environment without incurring ingestion charges. Furthermore, Falco addresses the issue of centralized storage bloat through its intelligent streaming engine, which processes event context and makes decisions on whether to trigger alerts based on specific event metadata, rather than indiscriminately ingesting all associated events.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/okta9.png" alt="" loading="lazy" /&gt;
&lt;img src="images/okta10.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Finally, the entire process of manually executing Okta search queries in the web UI, or managing intricate detection scripts, can be time-consuming and often results in coverage gaps. Falco offers a solution by delivering a nearly real-time detection engine that enables the use of macros and lists for complex querying. For instance, consider the task of verifying whether the user &lt;code&gt;Nigel Douglas&lt;/code&gt; is logging in from their usual IP address. Instead of navigating through complex Okta queries, you can simply use the actor ID, cross-referencing it with the typical IP they use for sign-ins, and also taking into account the context of their access, such as interactions with the &lt;code&gt;Admin Dashboard&lt;/code&gt; or other elements within the Okta user interface.&lt;/p&gt;
&lt;p&gt;This is how Okta queries can be structured:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;eventType eq &amp;#34;user.session.access_admin_app&amp;#34; and client.ip_address eq &amp;#34;78.xx.xxx.249&amp;#34; and target.id eq &amp;#34;00u9xcz5aphuQ8ZQq5d7&amp;#34; and outcome.result eq &amp;#34;SUCCESS&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Yet, if our aim is to identify successful login attempts from questionable geographic regions or IP addresses, we must integrate lists and diligently keep them up-to-date.
This is where the following Falco rule proves its worth:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- rule: Suspicious Login for Nigel Douglas
desc: Detect suspicious login attempts from known suspicious IPs
condition: okta.evt.type = &amp;#34;user.session.access_admin_app&amp;#34; and okta.client.ip in (suspicious_ips) and okta.target.user.id= &amp;#34;00u9xcz5aphuQ8ZQq5d7&amp;#34;
output: Suspicious IP Inbound Request
(okta.actor.name=%okta.actor.name, okta.client.ip=%okta.client.ip, okta.target.user.id=%okta.target.user.id, okta.target.user.name=%okta.target.user.name, okta.app=%okta.app, okta.evt.type=%okta.evt.type)
priority: CRITICAL
tags: [custom_rule, mitre_initial_access, T1078, valid_accounts]
source: okta
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next, we create a list that compiles all potentially identified malicious actors who may attempt an account takeover on a legitimate account, which should typically be accessed from a consistent IP address. This list logic can be applied to geolocations, such as countries, instead of specific IPs. In both scenarios, the list is named &lt;code&gt;suspicious_ips&lt;/code&gt; and is referred to in the Falco rule conditions as follows:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- list: suspicious_ips
items: [&amp;#34;103.236.201.88&amp;#34;, &amp;#34;104.244.74.23&amp;#34;, &amp;#34;107.189.13.251&amp;#34;, &amp;#34;118.163.74.160&amp;#34;, &amp;#34;125.212.241.131&amp;#34;, &amp;#34;176.58.100.98&amp;#34;, &amp;#34;176.58.121.177&amp;#34;, &amp;#34;179.43.128.16&amp;#34;, &amp;#34;179.48.251.188&amp;#34;, &amp;#34;180.150.226.99&amp;#34;, &amp;#34;181.214.39.73&amp;#34;, &amp;#34;185.10.16.41&amp;#34;, &amp;#34;185.100.85.132&amp;#34;, &amp;#34;185.100.85.22&amp;#34;, &amp;#34;185.100.85.23&amp;#34;, &amp;#34;185.100.85.25&amp;#34;, &amp;#34;185.191.204.254&amp;#34;, &amp;#34;185.195.71.10&amp;#34;, &amp;#34;185.195.71.12&amp;#34;, &amp;#34;185.195.71.4&amp;#34;, &amp;#34;185.195.71.5&amp;#34;, &amp;#34;185.195.71.6&amp;#34;, &amp;#34;185.195.71.7&amp;#34;, &amp;#34;185.195.71.8&amp;#34;, &amp;#34;185.220.101.3&amp;#34;, &amp;#34;185.82.219.109&amp;#34;, &amp;#34;195.80.151.30&amp;#34;, &amp;#34;198.58.107.53&amp;#34;, &amp;#34;198.98.60.90&amp;#34;, &amp;#34;199.249.230.100&amp;#34;, &amp;#34;199.249.230.107&amp;#34;, &amp;#34;199.249.230.109&amp;#34;, &amp;#34;199.249.230.113&amp;#34;, &amp;#34;199.249.230.117&amp;#34;, &amp;#34;199.249.230.119&amp;#34;, &amp;#34;199.249.230.121&amp;#34;, &amp;#34;199.249.230.140&amp;#34;, &amp;#34;199.249.230.157&amp;#34;, &amp;#34;199.249.230.165&amp;#34;, &amp;#34;199.249.230.180&amp;#34;, &amp;#34;199.249.230.70&amp;#34;, &amp;#34;199.249.230.71&amp;#34;, &amp;#34;199.249.230.78&amp;#34;, &amp;#34;199.249.230.85&amp;#34;, &amp;#34;199.249.230.88&amp;#34;, &amp;#34;199.249.230.89&amp;#34;, &amp;#34;200.122.181.2&amp;#34;, &amp;#34;204.194.29.4&amp;#34;, &amp;#34;205.185.119.35&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Finally, we get the detection that there was a login from a suspicious IP address. We changed the &lt;code&gt;Priority&lt;/code&gt; to &lt;code&gt;CRITICAL&lt;/code&gt; to reflect the severity of a suspicious login from a malicious IP.&lt;/p&gt;
&lt;p&gt;&lt;img src="images/okta11.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;This is just one instance demonstrating the capabilities of Falco. I encourage you, as the reader, to explore various innovative approaches for crafting customized detection rules that align with your unique zero-trust architecture strategy. Should you have recommendations on enhancing default detection rules in Falco for Okta identity logs, please don't hesitate to reach out to us directly. We are always open to discussions: &lt;a href="https://falco.org/community/"&gt;https://falco.org/community/&lt;/a&gt; .&lt;/p&gt;
&lt;h2 id="strengthening-identity-security-with-falco-next-steps"&gt;Strengthening Identity Security with Falco: Next Steps&lt;/h2&gt;
&lt;p&gt;In a landscape where identity threats are on the rise, extending to identity providers themselves, as exemplified by the recent &lt;a href="https://www.theregister.com/2023/11/02/okta_staff_personal_data/"&gt;Okta security breach&lt;/a&gt;, organizations are compelled to enhance their identity management and cybersecurity preparedness. After reading this article, you should hopefully have a deeper appreciation for Falco and its user identity security approach.&lt;/p&gt;
&lt;p&gt;Evaluating your existing runtime security can be a valuable starting point, particularly if you identify gaps in Okta log coverage, making Falco a worthwhile consideration. And this very plugin logic can be extended to AWS and Google Cloud Platform via their own response logging services - &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/cloudtrail"&gt;AWS Cloudtrail&lt;/a&gt; and &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/gcpaudit"&gt;GCP Audit Logs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For those interested in delving deeper into recent identity-related attacks, you can explore the article on DarkReading, where we delve into how ITDR solutions can be employed to &lt;a href="https://www.darkreading.com/cyberattacks-data-breaches/how-the-okta-cross-tenant-impersonation-attacks-succeeded"&gt;detect Okta Cross-Tenant Impersonation Attacks&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;If you're interested in installing Falco on a test machine and integrating the Okta plugin, you can find helpful deployment script at Luca Guerra’s Github repo: &lt;a href="https://github.com/LucaGuerra/falcosidekick-ui-compose/blob/main/falco.yaml"&gt;https://github.com/LucaGuerra/falcosidekick-ui-compose/blob/main/falco.yaml&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;To configure the Okta plugin, you can easily uncomment the section below and input your Okta details as needed. If you're uncertain about how to obtain your Okta API token, you can refer to this resource for guidance:
&lt;a href="https://developer.okta.com/docs/guides/create-an-api-token/main/"&gt;https://developer.okta.com/docs/guides/create-an-api-token/main&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; - name: okta
library_path: libokta.so
init_config:
organization: xxxxx # as in https://xxxxx.okta.com
api_token: yyyyy # your Okta API token
open_params: &amp;#39;&amp;#39;
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Blog: Falco Weekly 47 - 2023</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-w-47-2023-weekly-recap/</link><pubDate>Fri, 24 Nov 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-w-47-2023-weekly-recap/</guid><description>
&lt;p&gt;Another week, another load of improvements everywhere in the falcosecurity!&lt;/p&gt;
&lt;h2 id="what-happened-in-falco-this-week"&gt;What happened in Falco this week?&lt;/h2&gt;
&lt;p&gt;Let's go through the major changes that happened in various repositories under the falcosecurity organization.&lt;/p&gt;
&lt;h3 id="libs"&gt;&lt;a href="https://github.com/falcosecurity/libs"&gt;Libs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The anticipated 0.14.0 libs tag (and its driver counterpart) are a bit late, unfortunately.&lt;/p&gt;
&lt;p&gt;Anyway, spring cleaning went on this week!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;removed &lt;code&gt;stopwatch&lt;/code&gt; implementation, now unused: &lt;a href="https://github.com/falcosecurity/libs/pull/1493"&gt;https://github.com/falcosecurity/libs/pull/1493&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;removed unused &lt;code&gt;sinsp_test.cpp&lt;/code&gt; file: &lt;a href="https://github.com/falcosecurity/libs/pull/1499"&gt;https://github.com/falcosecurity/libs/pull/1499&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;removed &lt;code&gt;jq&lt;/code&gt; dep: &lt;a href="https://github.com/falcosecurity/libs/pull/1500"&gt;https://github.com/falcosecurity/libs/pull/1500&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Moreover, some fixes on the recently introduced async event queue class happened: &lt;a href="https://github.com/falcosecurity/libs/pull/1490"&gt;https://github.com/falcosecurity/libs/pull/1490&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/libs/pull/1504"&gt;https://github.com/falcosecurity/libs/pull/1504&lt;/a&gt;.
Finally, some fixes around the stats code: &lt;a href="https://github.com/falcosecurity/libs/pull/1505"&gt;https://github.com/falcosecurity/libs/pull/1505&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/libs/pull/1506"&gt;https://github.com/falcosecurity/libs/pull/1506&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Rumors have it coming next week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New big cleanup: deprecation of tracers: &lt;a href="https://github.com/falcosecurity/libs/pull/1503"&gt;https://github.com/falcosecurity/libs/pull/1503&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ppc64le&lt;/code&gt; support for bpf and kmod + CI build jobs: &lt;a href="https://github.com/falcosecurity/libs/pull/1497"&gt;https://github.com/falcosecurity/libs/pull/1497&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;remove old metaevents implementation: &lt;a href="https://github.com/falcosecurity/libs/pull/1495"&gt;https://github.com/falcosecurity/libs/pull/1495&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Small fix on top of ia32 work: &lt;a href="https://github.com/falcosecurity/libs/pull/1501"&gt;https://github.com/falcosecurity/libs/pull/1501&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Second part of an effort by Luca Guerra to clean up libsinsp from potential undefined behavior&lt;/strong&gt;: &lt;a href="https://github.com/falcosecurity/libs/pull/1502"&gt;https://github.com/falcosecurity/libs/pull/1502&lt;/a&gt;.&lt;br&gt;
This is so important that deserved to be left alone :)&lt;/p&gt;
&lt;h3 id="falco"&gt;&lt;a href="https://github.com/falcosecurity/falco"&gt;Falco&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We have a new official adopter! Welcome to &lt;code&gt;Thought Machine&lt;/code&gt;: &lt;a href="https://github.com/falcosecurity/falco/pull/2919"&gt;https://github.com/falcosecurity/falco/pull/2919&lt;/a&gt;
Small cleanup to avoid Falco configuratiom to be inited twice: &lt;a href="https://github.com/falcosecurity/falco/pull/2917"&gt;https://github.com/falcosecurity/falco/pull/2917&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="falcoctl"&gt;&lt;a href="https://github.com/falcosecurity/falcoctl"&gt;Falcoctl&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The new &lt;code&gt;driver&lt;/code&gt; command was merged! &lt;a href="https://github.com/falcosecurity/falcoctl/pull/343"&gt;https://github.com/falcosecurity/falcoctl/pull/343&lt;/a&gt;
We are now in the process of &lt;a href="https://github.com/falcosecurity/falcoctl/pull/355"&gt;adding tests&lt;/a&gt; and eventually fixing spotted bugs :)
Also, the new &lt;code&gt;asset&lt;/code&gt; artifact type PR is being reviewed: &lt;a href="https://github.com/falcosecurity/falcoctl/pull/309"&gt;https://github.com/falcosecurity/falcoctl/pull/309&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="others"&gt;Others&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/falcosecurity/driverkit"&gt;Driverkit&lt;/a&gt; &lt;a href="https://github.com/falcosecurity/driverkit/releases/tag/v0.16.0"&gt;v0.16.0&lt;/a&gt; was just released, and contains &lt;a href="https://github.com/falcosecurity/driverkit/pull/305"&gt;some fixes&lt;/a&gt;, a new &lt;a href="https://github.com/falcosecurity/driverkit/pull/306"&gt;&lt;code&gt;local&lt;/code&gt; build processor&lt;/a&gt; and preliminary &lt;a href="https://github.com/falcosecurity/driverkit/pull/304"&gt;SLES support&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;Federico&lt;/p&gt;</description></item><item><title>Blog: Adding runtime threat detection to Google Kubernetes Engine with Falco</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-on-gke/</link><pubDate>Mon, 20 Nov 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-on-gke/</guid><description>
&lt;p&gt;One of the big advantages of running your workloads on a managed Kubernetes service like Google Kubernetes Engine (GKE) is that Google ensures your clusters are being deployed and managed following industry best practices.&lt;/p&gt;
&lt;p&gt;While GKE clusters are incredibly secure and reliable, there is always room for improvement.&lt;/p&gt;
&lt;p&gt;In this blog, we’re going to describe how you can enhance GKE’s already great security by adding runtime threat detection with Falco.&lt;/p&gt;
&lt;h2 id="what-is-falco"&gt;What is Falco?&lt;/h2&gt;
&lt;p&gt;Falco is a Cloud Native Computing Foundation project that provides runtime threat detection. Out of the box, Falco examines syscalls to alert you to any suspicious activity. And, since containers share the same kernel as their host, Falco can monitor not only activity on the host but also activity on all of the containers running on that host. Moreover, Falco pulls data from both Kubernetes and the container runtime to add additional context to its alerts.&lt;/p&gt;
&lt;p&gt;With Falco running on your GKE clusters you can be notified of a wide variety of events, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Did someone start a container with high privileges?&lt;/li&gt;
&lt;li&gt;Has someone shelled into a running container?&lt;/li&gt;
&lt;li&gt;Has an executable been added to the container after it was deployed?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are just a few examples. Falco has over 80 rules that can be used to make you aware of not only external threats but also when clusters aren’t being operated in accordance with industry best practices.&lt;/p&gt;
&lt;h2 id="gke-installation-considerations"&gt;GKE Installation considerations&lt;/h2&gt;
&lt;p&gt;There are two different ways to install Falco on GKE. The first is using the prepackaged click-to-run offering in the Google Cloud Marketplace. The second is using Falco’s helm chart. The click-to-run offering is probably the simplest way to get up and running with Falco on GKE, but the drawback is that the version offered often lags behind the latest release.&lt;/p&gt;
&lt;p&gt;It’s also important to note that as of this writing, you cannot run Falco on GKE clusters running in Autopilot mode. This is primarily because Falco uses an init container running with privileged access to install its driver, and Autopilot does not allow the execution of privileged containers.&lt;/p&gt;
&lt;p&gt;Something else to be aware of is that Falco on GKE needs to use one of Falco’s eBPF drivers. Falco uses a driver to capture syscall events, and this driver is offered as a loadable kernel module or as an eBPF probe. There are actually two eBPF probes with Falco. One is called ‘eBPF’ (or classic eBPF) and the other is referred to as ‘modern eBPF’ - you can learn more about them in the &lt;a href="https://falco.org/docs/event-sources/kernel/"&gt;Falco docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On the Google Cloud side, GKE uses Container-Optimized OS (COS) as the default operating system for its worker node pools. COS is a security-enhanced operating system that limits access to certain parts of the underlying OS. Because of this security constraint, Falco cannot insert its kernel module to process system calls. However, COS does support eBPF, so that’s the option we’ll use (more specifically we’ll use the classic eBPF probe)&lt;/p&gt;
&lt;h2 id="installing-falco-via-the-google-cloud-marketplace"&gt;Installing Falco via the Google Cloud Marketplace&lt;/h2&gt;
&lt;p&gt;Note: If you’d like to follow along, you’ll need to ensure your Google Cloud account has the appropriate permissions.&lt;/p&gt;
&lt;p&gt;Installing Falco via the Google Cloud Marketplace is a pretty straightforward process.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Log into your Google Cloud account, and ensure you have the required permissions to deploy a new GKE cluster or operate an existing one.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Navigate to the Falco offering in the &lt;a href="https://console.cloud.google.com/marketplace/product/google/falco"&gt;Google Cloud Marketplace&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="./images/marketplace.png" alt="&amp;quot;screen shot of Falco on Google Cloud Marketplace&amp;quot;" loading="lazy" /&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click the &lt;strong&gt;configure&lt;/strong&gt; button.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;From the next dialog you can choose the zone where your GKE cluster will run as well as the network and subnet on which it will run. For this walkthrough, the default values are fine.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You then choose whether or not you’d like to deploy Falco onto a new GKE cluster or use an existing one. Be aware that if you click &lt;strong&gt;Create New Cluster,&lt;/strong&gt; Google Cloud will immediately start deploying a new cluster. Also, any Autopilot clusters that you have in your project will be grayed out and cannot be selected.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can then choose which namespace Falco will run in. To keep things consistent with the rest of this blog, change it from default to &lt;code&gt;falco&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Again, to keep things consistent with the rest of the blog, change the app instance name to &lt;code&gt;falco&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Falco rules have different priority levels, you can choose the minimum priority level you’d like to run. The priority levels are ordered by severity, and typically the higher you make the minimum level, the fewer alerts you will receive (which helps to cut down on noise). For this example just leave it as &lt;code&gt;debug&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stackdriver is the old name for Google Cloud’s logging and monitoring suite. If you’d like to examine Falco’s metrics (not the actual alerts, but metrics on how Falco is performing) you can select that option. We won’t be covering that in this blog, so go ahead and leave it unchecked.&lt;/p&gt;
&lt;p&gt;&lt;img src="./images/configuration.png" alt="Screenshot of the configured options" loading="lazy" /&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;code&gt;DEPLOY&lt;/code&gt; to deploy Falco onto the target cluster. (If you choose to deploy a new cluster, you will need to wait until that finishes to click the &lt;code&gt;DEPLOY&lt;/code&gt; button.)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With that, Falco should be running on your GKE cluster. You can skip the next section, and continue with “Testing Falco”.&lt;/p&gt;
&lt;h2 id="installing-falco-with-helm"&gt;Installing Falco with Helm&lt;/h2&gt;
&lt;p&gt;Helm is the defacto way to install Falco on Kubernetes. Falco maintains an official Helm chart, and that chart is maintained as part of the overall Falco project.&lt;/p&gt;
&lt;p&gt;If you’d like to follow along, you will need the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A Google Cloud account with appropriate permissions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A GKE cluster that you can operate&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Helm and &lt;code&gt;kubectl&lt;/code&gt; installed on your local computer or, alternatively, you can use Google Cloud Shell which has both Helm and kubectl already installed.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Ensure that your kubectl context is set to the cluster on which you wish to install Falco.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With the pre-requisites out of the way, let's get started with the actual install.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Add the Falco chart to the Helm repository.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;helm repo add falcosecurity \
https://falcosecurity.github.io/charts &amp;amp;&amp;amp; \
helm repo update
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create the &lt;code&gt;falco&lt;/code&gt; namespace for Falco to run in.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl create namespace falco
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use Helm to deploy Falco. Notice that we use the &lt;code&gt;driver.kind &lt;/code&gt;parameter to set the kernel driver to the eBPF probe.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;helm install falco \
-n falco \
--set tty=true \
--set driver.kind=ebpf \
falcosecurity/falco
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wait for the Falco pods to come online.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl get pods -n falco -w
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eventually you should see something similar to this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;falco-wfglg 2/2 Running 0 76s
falco-mdrlb 2/2 Running 0 91s
falco-7vxz6 2/2 Running 0 91s
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note: You will see one Falco entry for each of the nodes in your cluster. In this case, Falco is running on a 3-node cluster, so there are 3 entries.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify Falco is running correctly by examining the logs.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -n falco -c falco -l app.kubernetes.io/name=falco
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You should see entries similar to this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Fri Nov 3 15:48:07 2023: Falco version: 0.36.2 (x86_64)
Fri Nov 3 15:48:07 2023: Falco initialized with configuration file: /etc/falco/falco.yaml
Fri Nov 3 15:48:07 2023: Loading rules from file /etc/falco/falco_rules.yaml
Fri Nov 3 15:48:07 2023: The chosen syscall buffer dimension is: 8388608 bytes (8 MBs)
Fri Nov 3 15:48:07 2023: Starting health webserver with threadiness 2, listening on port 8765
Fri Nov 3 15:48:07 2023: Loaded event sources: syscall
Fri Nov 3 15:48:07 2023: Enabled event sources: syscall
Fri Nov 3 15:48:07 2023: Opening &amp;#39;syscall&amp;#39; source with BPF probe. BPF probe path: /root/.falco/falco-bpf.o
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Falco is now successfully running on your GKE cluster. The next step is to simulate some suspicious activity and verify that Falco detects it.&lt;/p&gt;
&lt;h2 id="testing-falco"&gt;Testing Falco&lt;/h2&gt;
&lt;p&gt;One of Falco’s default rules fires an alert if someone shells into a running container. Follow the steps below to fire off that rule.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Start an Alpine container and have it sleep so it stays running.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl run alpine –image alpine – sh -c &amp;#34;sleep infinity&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Execute a shell on the Alpine running container.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl exec -it alpine -- sh -c &amp;#34;ls -al&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Now check the Falco logs to see the alert.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -c falco -n falco -l app.kubernetes.io/name=falco |\
grep &amp;#34;Notice&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You should see something like this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;18:52:06.630209324: Notice A shell was spawned in a container with an attached terminal (evt_type=execve user=root user_uid=0 user_loginuid=-1 process=sh proc_exepath=/bin/busybox parent=runc command=sh -c ls -al terminal=34816 exe_flags=EXE_WRITABLE container_id=e71eac85a570 container_image=docker.io/library/alpine container_image_tag=latest container_name=alpine k8s_ns=default k8s_pod_name=alpine)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Notice all the details the alert provides including the container ID, image, and name, as well as the executed command.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;As mentioned at the outset, one of the big advantages of running a managed Kubernetes service is that a lot of the heavy lifting for hardening the cluster has been done for you. However, by using Falco to provide runtime insights into the activity on your cluster you can help ensure that the cluster is being operated responsibly or has not been compromised by any bad actors.&lt;/p&gt;
&lt;p&gt;If you’d like to learn more about Falco, head on over to&lt;a href="https://falco.org/docs"&gt; the docs &lt;/a&gt;or our &lt;a href="https://github.com/falcosecurity"&gt;GitHub repository&lt;/a&gt;. We also have our own channel (#Falco) on the &lt;a href="https://kubernetes.slack.com"&gt;Kubernetes Slack&lt;/a&gt; server.&lt;/p&gt;</description></item><item><title>Blog: Falco Weekly 46 - 2023</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-w-46-2023-weekly-recap/</link><pubDate>Fri, 17 Nov 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-w-46-2023-weekly-recap/</guid><description>
&lt;p&gt;This is the first of a series of weekly blog post whose aim is to give a quick overview about the development of Falco and its related projects.&lt;/p&gt;
&lt;h2 id="what-happened-in-falco-this-week"&gt;What happened in Falco this week?&lt;/h2&gt;
&lt;p&gt;Let's go through the major changes that happened in various repositories under the falcosecurity organization.&lt;/p&gt;
&lt;h3 id="libs"&gt;&lt;a href="https://github.com/falcosecurity/libs"&gt;Libs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Lots of cleanups happened in the libs repo; the most outstanding ones being:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;udig&lt;/code&gt; engine removal (&lt;a href="https://github.com/falcosecurity/libs/pull/1485"&gt;https://github.com/falcosecurity/libs/pull/1485&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;dropped legacy metadata clients for &lt;code&gt;k8s&lt;/code&gt; and &lt;code&gt;mesos&lt;/code&gt; (&lt;a href="https://github.com/falcosecurity/libs/pull/1478"&gt;https://github.com/falcosecurity/libs/pull/1478&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;cleaned up &lt;code&gt;proc&lt;/code&gt; callback handling code (&lt;a href="https://github.com/falcosecurity/libs/pull/1471"&gt;https://github.com/falcosecurity/libs/pull/1471&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please, note that the removal of the legacy &lt;code&gt;k8s&lt;/code&gt; client is part of a bigger effort to entirely rewrite it as a plugin, with a more future proof architecture and language.&lt;br&gt;
See the tracking issue: &lt;a href="https://github.com/falcosecurity/libs/issues/987"&gt;https://github.com/falcosecurity/libs/issues/987&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All of these cleanups account for ~26k loc removed!! :rocket:&lt;/p&gt;
&lt;p&gt;Moreover, some fixes landed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;removed some more Undefined Behavior warnings from integer copies (&lt;a href="https://github.com/falcosecurity/libs/pull/1481"&gt;https://github.com/falcosecurity/libs/pull/1481&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;solved win32 linking issues with zlib (&lt;a href="https://github.com/falcosecurity/libs/pull/1484"&gt;https://github.com/falcosecurity/libs/pull/1484&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;prevent &lt;code&gt;libbpf&lt;/code&gt; stats from being collected with no bpf stats (&lt;a href="https://github.com/falcosecurity/libs/pull/1487"&gt;https://github.com/falcosecurity/libs/pull/1487&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, some new features were merged:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;libraries will now be properly installed under &lt;code&gt;CMAKE_INSTALL_LIBDIR&lt;/code&gt; (&lt;a href="https://github.com/falcosecurity/libs/pull/1101"&gt;https://github.com/falcosecurity/libs/pull/1101&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;added &lt;strong&gt;ppc64le&lt;/strong&gt; &lt;em&gt;experimental&lt;/em&gt; support for modern bpf driver (&lt;a href="https://github.com/falcosecurity/libs/pull/1475"&gt;https://github.com/falcosecurity/libs/pull/1475&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;upgraded openssl to 3.1.4 (&lt;a href="https://github.com/falcosecurity/libs/pull/1488"&gt;https://github.com/falcosecurity/libs/pull/1488&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, we now have a target release date and a tracking issue for libs 0.14 and next driver release: &lt;a href="https://github.com/falcosecurity/libs/issues/1482"&gt;https://github.com/falcosecurity/libs/issues/1482&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="falco"&gt;&lt;a href="https://github.com/falcosecurity/falco"&gt;Falco&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now Falco builds and runs on win32 and osx too! &lt;a href="https://github.com/falcosecurity/falco/pull/2889"&gt;https://github.com/falcosecurity/falco/pull/2889&lt;/a&gt;
While Falco won't ship for these platforms, we will now have proper CI for them.&lt;/p&gt;
&lt;p&gt;Following the huge round of cleanups in libs, k8s and mesos related configs and options were removed: &lt;a href="https://github.com/falcosecurity/falco/pull/2914"&gt;https://github.com/falcosecurity/falco/pull/2914&lt;/a&gt;.
Also, another small cleanup relative to the legacy &lt;code&gt;k8saudit&lt;/code&gt; implementantion (not the plugin one!) was merged: &lt;a href="https://github.com/falcosecurity/falco/pull/2913"&gt;https://github.com/falcosecurity/falco/pull/2913&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="falcoctl"&gt;&lt;a href="https://github.com/falcosecurity/falcoctl"&gt;Falcoctl&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;While the code for the new &lt;code&gt;driver-loader&lt;/code&gt; feature for &lt;code&gt;falcoctl&lt;/code&gt; is being reviewed (part of the effort to drop &lt;code&gt;falco-driver-loader&lt;/code&gt; script (&lt;a href="https://github.com/falcosecurity/falcoctl/issues/327"&gt;https://github.com/falcosecurity/falcoctl/issues/327&lt;/a&gt; and &lt;a href="https://github.com/falcosecurity/falco/issues/2675%29"&gt;https://github.com/falcosecurity/falco/issues/2675)&lt;/a&gt;, some features landed too:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetch config layer for a specific platform (&lt;a href="https://github.com/falcosecurity/falcoctl/pull/349"&gt;https://github.com/falcosecurity/falcoctl/pull/349&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;added a new &lt;code&gt;artifact manifest&lt;/code&gt; command (&lt;a href="https://github.com/falcosecurity/falcoctl/pull/351"&gt;https://github.com/falcosecurity/falcoctl/pull/351&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="others"&gt;Others&lt;/h3&gt;
&lt;p&gt;A new repo, &lt;a href="https://github.com/falcosecurity/k8s-metacollector"&gt;k8s-metacollector&lt;/a&gt;, was donated to the falcosecurity.&lt;br&gt;
It is a self-contained module that fetched metadata from kubernetes API server and dispatches them to Falco instances via gRPC.&lt;br&gt;
A new plugin is being developed to receive those metadata from gRPC, and will be shipped with Falco 0.37.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/falcosecurity/driverkit"&gt;Driverkit&lt;/a&gt; gained support for SUSE Linux Enterprise: &lt;a href="https://github.com/falcosecurity/driverkit/pull/304"&gt;https://github.com/falcosecurity/driverkit/pull/304&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every week in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;Aldo, Andrea, Federico&lt;/p&gt;</description></item><item><title>Blog: Introducing the new Falco training course, by CNCF, Linux Foundation, and Sysdig</title><link>https://v0-43--falcosecurity.netlify.app/blog/new-cncf-lf-training/</link><pubDate>Mon, 06 Nov 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/new-cncf-lf-training/</guid><description>
&lt;p&gt;&lt;a href="https://training.linuxfoundation.org/training/detecting-cloud-runtime-threats-with-falco-lfs254/"&gt;Detecting Cloud Runtime Threats with Falco (LFS254)&lt;/a&gt; is the new Falco training course created by CNCF, Linux Foundation, and Sysdig. We're very excited about this new immersive course designed to enhance your expertise in securing cloud-native applications through hands-on learning.&lt;/p&gt;
&lt;p&gt;Detecting Cloud Runtime Threats with Falco (LFS254) is a 20-hour course focused on runtime security. It covers what is runtime security and how Falco is a powerful tool designed to detect anomalous activity in applications. From Falco's history and design principles to its architecture, to how it addresses cloud security challenges.&lt;/p&gt;
&lt;p&gt;This course is designed for IT professionals, security analysts, DevOps engineers, and anyone interested in cloud security.&lt;/p&gt;
&lt;h3 id="why"&gt;Why?&lt;/h3&gt;
&lt;p&gt;In a rapidly evolving digital landscape with a surge in cloud adoption, the importance of comprehending and deploying robust security solutions, such as Falco, cannot be overstated. Regrettably, cloud-native technologies, particularly cloud-native security, are relatively novel, and there exists a gap in knowledge and expertise for addressing these emerging challenges. Our mission is to bridge this knowledge gap and empower individuals to tackle cloud and container security complexities effectively. Through accessible training, we aspire to contribute to narrowing the talent deficit in these pivotal domains.&lt;/p&gt;
&lt;h3 id="how"&gt;How?&lt;/h3&gt;
&lt;p&gt;In this course, you'll embark on a journey of securing cloud-native environments. The course breaks down complex concepts, making them accessible and actionable. Its self-paced nature provides the flexibility to learn at your own rhythm, accommodating your personal and professional commitments. This structure allows you to digest intricate concepts and apply them bit by bit, ensuring a deeper and more lasting comprehension.&lt;/p&gt;
&lt;h4 id="course-structure"&gt;Course Structure&lt;/h4&gt;
&lt;p&gt;The course begins with an introduction to Falco, encompassing its history, design principles, and its broader role in cloud security. It then delves into the core components of Falco, explaining its architectural design and walking you through the setup and operation of Falco. Moving forward, the course explores the significance of the system call data source in host security, offering insights into the nature of system calls, observation techniques, and best practices for efficient data collection. It further showcases Falco's versatility by examining its utilization of diverse data sources such as Github, Cloudtrail, and Kubernetes Audit logs through its Plugin Framework.&lt;/p&gt;
&lt;p&gt;The course also thoroughly covers conditions and fields, delving into the realm of Falco default rules and their integration with security frameworks. It then provides comprehensive guidance on customizing Falco rules to align with specific requirements. The course also addresses Falco outputs and introduces Falcosidekick as a valuable output management and customization tool.&lt;/p&gt;
&lt;p&gt;Finally, the course guides you through Falco's configuration process and fine-tuning strategies. It concludes by streamlining the process of writing new Falco rules, presenting a development methodology, along with key considerations to bear in mind when crafting rules.&lt;/p&gt;
&lt;h4 id="sneek-peek"&gt;Sneek Peek&lt;/h4&gt;
&lt;p&gt;In one of the course exercises, we explain the Log4j vulnerability and the Log4Shell exploit. We detail each step of the attack, allowing you to simulate it in the lab environment.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/new-cncf-lf-training-log4shell-attack-diagram.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Log4Shell Attack Diagram"
src="images/new-cncf-lf-training-log4shell-attack-diagram.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Then, we walk you through how to write a new rule to detect this type of attack in Falco.&lt;/p&gt;
&lt;h3 id="enroll-now"&gt;Enroll Now&lt;/h3&gt;
&lt;p&gt;Ready to embark on this transformative journey? Visit &lt;a href="https://training.linuxfoundation.org/training/detecting-cloud-runtime-threats-with-falco-lfs254/"&gt;the course page&lt;/a&gt; to enroll and step into the world of cloud-native security mastery with Falco.&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.36.2</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-2/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-2/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.36.2&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;p&gt;Falco's 0.36.2 release is a small patch addressing a few bugs. It includes the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a possible segfault caused by uninitialized variable in libsinsp::next() method call. (&lt;a href="https://github.com/falcosecurity/falco/issues/2878"&gt;https://github.com/falcosecurity/falco/issues/2878&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Improved supported program type detection for modern BPF; this ensures we can actually be sure that our BPF program type is unsupported when returning an error to the user. (&lt;a href="https://github.com/falcosecurity/libs/pull/1404"&gt;https://github.com/falcosecurity/libs/pull/1404&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fixed a subtle bug in &lt;code&gt;rawarg&lt;/code&gt; filtercheck for non-string types. (&lt;a href="https://github.com/falcosecurity/libs/pull/1428"&gt;https://github.com/falcosecurity/libs/pull/1428&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fixed an uninitialized variable in the libscap bpf engine that lead to &lt;code&gt;stdin&lt;/code&gt; getting closed while Falco soft restarted. (&lt;a href="https://github.com/falcosecurity/libs/issues/1448"&gt;https://github.com/falcosecurity/libs/issues/1448&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone in the community for helping us in spotting these annoying bugs 🐛! You make Falco successful 🦅!&lt;/p&gt;
&lt;p&gt;Thanks as always to the Falco maintainers for their support and effort during the entire release process.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it! 🏎️&lt;/h2&gt;
&lt;p&gt;As usual, in case you just want to try out the stable &lt;strong&gt;Falco 0.36.2&lt;/strong&gt;, you can install its packages following the process outlined in the docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prefer to use a container image? No problem at all! 🐳&lt;/p&gt;
&lt;p&gt;You can read more about running Falco with Docker in the &lt;a href="https://falco.org/docs/getting-started/running/#docker"&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also find the Falcosecurity container images on the public AWS ECR gallery:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;falco&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;falco-no-driver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;falco-driver-loader&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-next"&gt;What next? 🔮&lt;/h2&gt;
&lt;p&gt;The community is active on many topics and we hope to deliver great features and many stability fixes once again during the next release cycle!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The old &lt;code&gt;falco-driver-loader&lt;/code&gt; script is showing its age and it's time to work on a more maintainable solution. &lt;code&gt;falcoctl&lt;/code&gt; is a great candidate to host everything driver related, implement new features and make our lives easier when we need to install Falco drivers on a new machine.&lt;/li&gt;
&lt;li&gt;Our rule framework is brand new and we forsee many improvements and active development work on it.&lt;/li&gt;
&lt;li&gt;The latest Falco versions brought many improvements to the plugin framework; we wish to use those to create a more scalable Kubernetes client plugin that will be able to withstand much heavier loads and will be easier to maintain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And many, many, more enhancements!&lt;/p&gt;
&lt;p&gt;To get a weekly reminder of all the great stuff happening in the Falco lands, make sure to join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;!&lt;/p&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every Wednesday in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Federico&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Integrate Runtime Security into Your Environment with Falcosidekick</title><link>https://v0-43--falcosecurity.netlify.app/blog/integrate-runtime-security-with-falcosidekick/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/integrate-runtime-security-with-falcosidekick/</guid><description>
&lt;p&gt;If you’re looking to integrate runtime security into your existing environment, &lt;a href="https://falco.org"&gt;Falco&lt;/a&gt; is an obvious choice. Falco is a Cloud Native Computing Foundation backed open source project that provides real-time threat detection for cloud, container, and Kubernetes workloads. With over 80 million downloads Falco has been adopted by some of the largest companies in the world. &lt;/p&gt;
&lt;p&gt;However, what many Falco users discover early on is that Falco’s default event output is rather limited. Out of the box, Falco can only send output to five different endpoints: syslog, stdout, stderr, and gRPC or HTTPS endpoints. &lt;/p&gt;
&lt;p&gt;While these outputs might be enough to get you started, most practitioners want to integrate Falco with the tooling they already use. This is where &lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;Falcosidekick&lt;/a&gt; comes in. &lt;/p&gt;
&lt;p&gt;&lt;img src="images/sidekick-featured.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Falcosidekick is a companion (i.e. a side-kick ;)) project for Falco that allows Falco events to be forwarded to 60 different services (with more being added all the time) allowing practitioners to monitor and react to Falco events with the tools they are already using. &lt;/p&gt;
&lt;p&gt;For example, if you’d like to receive immediate notifications of suspicious activity you can forward Falco events to chat programs such as Slack or Telegram, alerting platforms like PagerDuty or AlertManager, or, of course, email. In order to minimize noise, you can expressly set the level on which to notify, for example, warning-level events might be delivered via email, while critical or higher-level events are sent via chat or directed to your alerting platform. &lt;/p&gt;
&lt;p&gt;If you want to programmatically address certain events, Falcosidekick integrates with a bunch of different services including functions as a service platforms like AWS Lambda, GCP Cloud Run and Cloud Functions, or Knative. Alerts can also be sent to message queues like Amazon SNS, Apache Kafka, or RabbitMQ. These integrations offer almost endless possibilities for building out response systems for events. &lt;/p&gt;
&lt;p&gt;For instance, let’s say you’re running Falco on your Kubernetes cluster, and Falco discovers that someone ran a program that wasn’t part of a container’s base image. In this case, you might choose to have Falcosidekick send that event over to AWS Lambda. Lambda would receive the alert and execute a function to apply a label to the pod that houses the suspect container resulting in the pod being taken out of service and a new one spawned to replace it.&lt;/p&gt;
&lt;p&gt;Falcosidekick can also send events to traditional monitoring and logging platforms such as Elasticsearch, Prometheus, Grafana, or Datadog (and many many others). These platforms can be used to aggregate and process alerts en masse so you can spot trends or anomalies. &lt;/p&gt;
&lt;p&gt;In addition to looking at the actual Falco events, Falcosidekick also provides metrics on its own performance. There are also service endpoints to check if Falscosidekick is running and its general health. &lt;/p&gt;
&lt;p&gt;Falcosidkick features its own web-based user interface to get a quick view into your Falco environment. This UI offers reporting on Falcosidick’s performance metrics as well as a feed for events reported by the connected Falco instances.&lt;/p&gt;
&lt;p&gt;If you want to archive Falco events, Falcosidekick can send them to Redis or various object storage services like AWS S3 or Google Cloud Storage. &lt;/p&gt;
&lt;p&gt;Falcosidekick runs as a daemon and can be easily installed via multiple mechanisms including as a Docker container, or via Helm. With Helm, you can either install Falcosidekick when you install Falco or add it to your environment later. From an architectural standpoint, Sidekick is deployed to two pods to help ensure high availability and a single Sidekick instance can receive events from multiple Falco environments. &lt;/p&gt;
&lt;p&gt;With so many different options, Falcosidekick opens up a myriad of possibilities for integrating Falco’s runtime security capabilities into your existing tooling. If you’d like to try Falcosidekick yourself, check out &lt;a href="https://falco.org/blog/extend-falco-outputs-with-falcosidekick/"&gt;Thomas’ blog post&lt;/a&gt; which covers how to integrate Falcosidekick with Slack. And, if you’d like to get involved with Falco or Falcosidekick come chat with us over on the #Falco channel in the &lt;a href="https://kubernetes.slack.com"&gt;Kubernetes&lt;/a&gt; Slack or check out the &lt;a href="https://github.com/falcosecurity"&gt;Github repos&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog: How we Sign and Verify Falco Plugins and Rules</title><link>https://v0-43--falcosecurity.netlify.app/blog/sign-verify-plugins-rules/</link><pubDate>Wed, 18 Oct 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/sign-verify-plugins-rules/</guid><description>
&lt;h2 id="falco-v0-36-0-and-the-software-supply-chain-ssc-security"&gt;Falco v0.36.0 and the Software Supply Chain (SSC) security&lt;/h2&gt;
&lt;p&gt;The latest stable Falco release, v0.36.0, alongside falcoctl 0.6.1 and the 0.7.0 Helm chart introduced new features and improvements to the security of Falco's software supply chain artifacts. Falco's two main downloadable artifacts are plugins and rule sets. They're shipped in the OCI specification format and distributed through the official Falcosecurity OCI repositories.&lt;/p&gt;
&lt;p&gt;Software supply chain attacks aim at injecting malicious code into software components, to compromise downstream users. These types of attacks are among the primary threats in today's threat landscape.&lt;/p&gt;
&lt;p&gt;In particular, attackers abuse trust relationships existing between the different open-source stakeholders. The increase in attacks on open-source software throughout the last few years demonstrates that attackers consider them a viable means for spreading malware.&lt;/p&gt;
&lt;h2 id="ssc-safeguards"&gt;SSC safeguards&lt;/h2&gt;
&lt;p&gt;Securing the software supply chain may seem daunting at first glance, but there are a lot of safeguards that can be put in action. And there are ways to categorize them, and ways to prioritize them.&lt;/p&gt;
&lt;p&gt;Safeguards against supply chain attacks can be classified by control type: directive, preventive, detective, corrective, and recovery. But there ain't no such thing as a free lunch. Besides safeguard classifications, the utility-to-cost ratio can also be an important factor in deciding where to start in improving the supply chain security of software, and can be pretty easy to measure it.&lt;/p&gt;
&lt;p&gt;There are cheap preventive safeguards that can be implemented in open source projects especially, where stakeholders platea can be pretty wide considering the contributions. For example, branch protection rules are usually simple per-code repository configurations in providers (e.g. GitHub) and alongside pull request-based flows enforcing code review quorum, are also standard best practices nowadays. The same applies to reproducible builds, dependency pinning, build steps isolation, MFA authentication to repository providers, etc.&lt;/p&gt;
&lt;p&gt;On the other side, safeguards with a high utility value can require a considerable amount of effort to be implemented end-to-end (producer and consumer sides).&lt;/p&gt;
&lt;p&gt;MITRE and OpenSSF increased their efforts to improve SSC security recently in general and in the open source, by providing frameworks and tools that increase the utility-to-cost ratio.
MITRE for example proposes an &lt;a href="https://sot.mitre.org/framework/system_of_trust.html"&gt;end-to-end framework&lt;/a&gt; to preserve the integrity of the software supply chain. OpenSSF develops the &lt;a href="https://slsa.dev/spec/v1.0/about"&gt;SLSA framework&lt;/a&gt; that groups several security best practices for open-source projects.&lt;/p&gt;
&lt;p&gt;Moreover, the in-toto Attestation Framework defines a fixed, lightweight Statement that communicates some information about the execution of the software supply chain, such as if the source was reviewed, or if it went through a SLSA conformant build process.&lt;/p&gt;
&lt;p&gt;Because new attacks are being introduced almost every day, It's important to be constantly evolving your SSC security tools and processes. These safeguards should be placed as early as possible in the SSC (&amp;quot;shift left&amp;quot;). Additionally, they need to be continuously maintained in order to keep pace with attacker's efforts.&lt;/p&gt;
&lt;p&gt;Thanks to important projects like Sigstore's &lt;a href="https://github.com/sigstore/cosign"&gt;cosign&lt;/a&gt;, software artifact signatures are one of the SSC safeguards with a high utility-to-cost ratio. Due to these factors, the Falco Software Supply Chain Working group decided to make implementing these signatures a goal for the Falco project&amp;quot;&lt;/p&gt;
&lt;h2 id="artifacts-distributed-as-oci"&gt;Artifacts distributed as OCI&lt;/h2&gt;
&lt;p&gt;Since January 2023 we started distributing Falco plugins and rules as &lt;a href="https://github.com/opencontainers/image-spec/blob/main/manifest.md#guidelines-for-artifact-usage"&gt;OCI artifacts&lt;/a&gt;. If you are not familiar with the concept, think about OCI artifacts as a content-addressable unit of data that can be tagged, stored and indexed in container registries alongside your container images but can hold any type of file. You can find the source and the data for Falco's artifacts in the &lt;a href="https://github.com/falcosecurity/plugins"&gt;plugins&lt;/a&gt; and &lt;a href="https://github.com/falcosecurity/rules"&gt;rules&lt;/a&gt; repositories respectively. We are using GitHub Container Registry to publish them so you can find them in the &amp;quot;Package&amp;quot; section of each repository.&lt;/p&gt;
&lt;p&gt;Packaging Falco's rules and plugins as container artifacts brings several advantages, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We can create multiple tags, both fixed and floating, for each artifact. Keeping track of the &lt;code&gt;latest&lt;/code&gt; version is easy as well as the latest version for each major and minor release.&lt;/li&gt;
&lt;li&gt;Distribution is handled with a standard protocol implemented by many different container registries, which means that creating &lt;a href="https://falco.org/blog/gitops-your-falco-rules/"&gt;your own rules registry&lt;/a&gt;, either public or private, is easy and you can use your existing container distribution infrastructure (or any ready-to-use registry service as offered by all major cloud providers) without installing and maintaining any custom server.&lt;/li&gt;
&lt;li&gt;There are standard and developing mechanisms and specifications to store artifact metadata, like &lt;a href="https://opencontainers.org/posts/blog/2023-07-07-summary-of-upcoming-changes-in-oci-image-and-distribution-specs-v-1-1/#2-new-manifest-field-for-establishing-relationships"&gt;link between artifacts&lt;/a&gt; for references to signature or Software Bill Of Materials (SBOM), so we do not need to reinvent the wheel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In &lt;a href="https://github.com/falcosecurity/falcoctl"&gt;falcoctl&lt;/a&gt; we have used the CNCF &lt;a href="https://oras.land/"&gt;ORAS&lt;/a&gt; library to manage downloading and uploading artifacts to the container registry.&lt;/p&gt;
&lt;h2 id="cosign-keyless-signing-and-verification"&gt;Cosign keyless signing and verification&lt;/h2&gt;
&lt;p&gt;Another very interesting thing you can do with OCI artifacts is now sign them thanks to &lt;a href="https://github.com/sigstore/cosign"&gt;cosign&lt;/a&gt;! Cosign supports a very interesting mechanism called &lt;a href="https://edu.chainguard.dev/open-source/sigstore/cosign/an-introduction-to-cosign/#keyless-signing"&gt;keyless signing&lt;/a&gt;. This allows us to perform artifact signature and verification without the need for creating, maintaining and securing long-lived and opaque signing keys.&lt;/p&gt;
&lt;p&gt;Moreover, cosign &lt;a href="https://www.chainguard.dev/unchained/building-towards-oci-v1-1-support-in-cosign"&gt;supports OCI v1.1&lt;/a&gt; being able to link security artifacts through OCI references when supported by the registry.&lt;/p&gt;
&lt;h2 id="implementation"&gt;Implementation&lt;/h2&gt;
&lt;h3 id="release-pipelines-for-signed-plugins-and-rules"&gt;Release pipelines for signed plugins and rules&lt;/h3&gt;
&lt;p&gt;&lt;img src="images/falcoctl_signature_pipeline_part.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Plugins and rules that we sign are packaged as OCI artifacts.&lt;/p&gt;
&lt;p&gt;As for the diagram above, there are two distinct distribution pipelines: one is to update the general Falcoctl index and one is to distribute the single artifact, whether plugin or rule set, to the OCI registry.&lt;/p&gt;
&lt;h4 id="container-registry-update"&gt;Container registry update&lt;/h4&gt;
&lt;p&gt;At the same time, in the release pipeline, an OCI artifact &lt;a href="https://github.com/falcosecurity/plugins/blob/81ccd91dfa2565a99f8e392d50b642aed89799e7/.github/workflows/upload-oci-artifacts.yaml#L31"&gt;is built&lt;/a&gt; with a specific &lt;a href="https://github.com/falcosecurity/plugins/blob/81ccd91dfa2565a99f8e392d50b642aed89799e7/build/registry/pkg/oci/oci.go#L398"&gt;build tool&lt;/a&gt; for each artifact updated, and &lt;a href="https://github.com/falcosecurity/plugins/blob/81ccd91dfa2565a99f8e392d50b642aed89799e7/.github/workflows/upload-oci-artifacts.yaml#L72"&gt;a signature is generated&lt;/a&gt; and distributed to the registry for each one. The signature is generated with the help of Cosign using the keyless mode, which leverages OIDC with GitHub as the identity provider.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In-depth: as the pipeline is a non-interactive environment, cosign automatically uses the OIDC &lt;a href="https://docs.sigstore.dev/signing/overview/#identity-tokens"&gt;device flow&lt;/a&gt; to verify the Github action identity token and &lt;a href="https://docs.sigstore.dev/signing/overview/#verifying-identity-and-signing-the-artifact"&gt;generates a certificate&lt;/a&gt; as proof of the identity of the user that is signing the artifact. Cosign generates a transparency log object that contains the hash of the artifact, the previously generated certificate's public key, and the signature. This object &lt;a href="https://docs.sigstore.dev/signing/overview/#verifying-the-signed-artifact"&gt;can be verified&lt;/a&gt; against the signature, certificate, and artifact pulled from the OCI registry.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For example, you can check with the &lt;a href="https://github.com/sigstore/cosign"&gt;&lt;code&gt;cosign&lt;/code&gt;&lt;/a&gt; CLI that a valid signature for the plugin &lt;code&gt;cloudtrail&lt;/code&gt; is available:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-shell=" data-lang="shell="&gt;$ cosign tree ghcr.io/falcosecurity/plugins/plugin/cloudtrail:latest
📦 Supply Chain Security Related artifacts for an image: ghcr.io/falcosecurity/plugins/plugin/cloudtrail:latest
└── 🔐 Signatures for an image tag: ghcr.io/falcosecurity/plugins/plugin/cloudtrail:sha256-ec47c7448d455b6bb84f39d5c400c2fa207ab5fbe8c21327c6c1d06a3f1eecb4.sig
└── 🍒 sha256:f8aae8441b2d41419ae99d4979d6eab1543d81a269e4721fdbff0d837571aa4d
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And you can inspect with the &lt;a href="https://oras.land/docs/category/oras-commands/"&gt;&lt;code&gt;oras&lt;/code&gt;&lt;/a&gt; CLI its manifest, by taking the tag that contains the digest content identifier of the artifact signed (i.e. &lt;code&gt;ghcr.io/falcosecurity/plugins/plugin/cloudtrail:sha256-ec47c7448d455b6bb84f39d5c400c2fa207ab5fbe8c21327c6c1d06a3f1eecb4.sig&lt;/code&gt;):&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-json=" data-lang="json="&gt;$ oras manifest fetch ghcr.io/falcosecurity/plugins/plugin/cloudtrail:sha256-ec47c7448d455b6bb84f39d5c400c2fa207ab5fbe8c21327c6c1d06a3f1eecb4.sig | jq
{
&amp;#34;schemaVersion&amp;#34;: 2,
&amp;#34;mediaType&amp;#34;: &amp;#34;application/vnd.oci.image.manifest.v1+json&amp;#34;,
&amp;#34;config&amp;#34;: {
&amp;#34;mediaType&amp;#34;: &amp;#34;application/vnd.oci.image.config.v1+json&amp;#34;,
&amp;#34;size&amp;#34;: 242,
&amp;#34;digest&amp;#34;: &amp;#34;sha256:ef254edd0dd0ae2b9b6ef0471c915682c0ba31858fe45bc817a951cad715fe8d&amp;#34;
},
&amp;#34;layers&amp;#34;: [
{
&amp;#34;mediaType&amp;#34;: &amp;#34;application/vnd.dev.cosign.simplesigning.v1+json&amp;#34;,
&amp;#34;size&amp;#34;: 263,
&amp;#34;digest&amp;#34;: &amp;#34;sha256:f8aae8441b2d41419ae99d4979d6eab1543d81a269e4721fdbff0d837571aa4d&amp;#34;,
&amp;#34;annotations&amp;#34;: {
&amp;#34;dev.cosignproject.cosign/signature&amp;#34;: &amp;#34;MEUCIGvgIIu9JX5vVCZ5YHsoVe3wpVoIianJvzkCZUIClVlAAiEAyx7GZztNDzCJN5Fjg8vwq0pv7PH3TrseIXN1ou35Jmw=&amp;#34;,
&amp;#34;dev.sigstore.cosign/bundle&amp;#34;: &amp;#34;{\&amp;#34;SignedEntryTimestamp\&amp;#34;:\&amp;#34;MEYCIQDsAPhTbHc7w+LHpipbx0HSEIlmjjbAszF5ChHRO1jyKgIhAJrDmeLtzO72fGD1WHabY8Mwz7Qph9CzDg+EMkC9JR7A\&amp;#34;,\&amp;#34;Payload\&amp;#34;:{\&amp;#34;body\&amp;#34;:REDACTED}}&amp;#34;,
&amp;#34;dev.sigstore.cosign/certificate&amp;#34;: &amp;#34;-----BEGIN CERTIFICATE-----\nREDACTED\n-----END CERTIFICATE-----\n&amp;#34;,
&amp;#34;dev.sigstore.cosign/chain&amp;#34;: &amp;#34;-----BEGIN CERTIFICATE-----\nREDACTED=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nREDACTED\n-----END CERTIFICATE-----&amp;#34;
}
}
]
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can see that it contains a layer of type &lt;code&gt;application/vnd.dev.cosign.simplesigning.v1+json&lt;/code&gt;. Also, its annotation metadata helps cosign to authenticate the signature against the Sigstore's &lt;a href="https://docs.sigstore.dev/logging/overview/"&gt;Rekor transparency log&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="index-update"&gt;Index update&lt;/h4&gt;
&lt;p&gt;Each artifact type has its own &lt;a href="https://github.com/falcosecurity/plugins/blob/master/registry.yaml"&gt;registry metadata file&lt;/a&gt;. The general &lt;a href="https://github.com/falcosecurity/falcoctl/blob/gh-pages/index.yaml"&gt;falcoctl index.yaml&lt;/a&gt;, which refers to all artifact types, &lt;a href="https://github.com/falcosecurity/test-infra/blob/bc4db5255ad6f85ee437368bc37ee752f980182d/config/jobs/build-plugins/build-plugins.yaml#L2"&gt;is updated&lt;/a&gt; when a modification to the specific artifact type metadata occurs. In order to verify a keyless signature we need to know in advance some additional metadata about the type of signature and how to verify its authenticity. We are adding this data to the registry metadata so that it can be published to the index by the pipeline. We will see this content in the next section.&lt;/p&gt;
&lt;h3 id="transparent-signature-verification-in-falcoctl"&gt;Transparent signature verification in &lt;code&gt;falcoctl&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src="images/falcoctl_signature_falco_part.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;We have seen that every artifact now has signature data available. This is nice, but to complete this feature we need to make sure that the signature data is automatically checked when we download an artifact. In the same way, package signatures are verified when you run &lt;code&gt;apt-get install&lt;/code&gt;, falcoctl needs to do the same to the OCI artifacts it downloads.&lt;/p&gt;
&lt;p&gt;When designing this feature we decided not to change the existing usage of &lt;code&gt;falcoctl&lt;/code&gt;. For example, you may already know that when you decide to install a new &lt;code&gt;apt&lt;/code&gt; repository you need to also import its public key. When installing Falco artifacts with &lt;code&gt;falcoctl&lt;/code&gt;, we can avoid this step and make verification transparent, thanks to keyless signing by trusting the Sigstore &lt;a href="https://docs.sigstore.dev/certificate_authority/overview/"&gt;Fulcio&lt;/a&gt; CA. In the section &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/sign-verify-plugins-rules/#Index-update"&gt;above&lt;/a&gt; we introduced the concept of index files. Every time you use falcoctl, there is an index file that tells details about artifacts distributed by the Falco organization. For instance, the &lt;code&gt;cloudtrail&lt;/code&gt; plugin has &lt;a href="https://github.com/falcosecurity/falcoctl/blob/gh-pages/index.yaml#L15"&gt;an entry&lt;/a&gt; with several pieces of metadata, including the OCI artifact coordinates: &lt;code&gt;ghcr.io/falcosecurity/plugins/plugin/cloudtrail&lt;/code&gt;. Of course, anyone can distribute and &lt;a href="https://falco.org/blog/falcoctl-install-manage-rules-plugins/#index"&gt;install their own index file&lt;/a&gt; for their plugins and rules.&lt;/p&gt;
&lt;p&gt;What we have recently added is the &lt;code&gt;signature&lt;/code&gt; part:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;signature&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;cosign&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;certificate-oidc-issuer&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;https://token.actions.githubusercontent.com&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;certificate-identity-regexp&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;https://github.com/falcosecurity/plugins/&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This section indicates how &lt;a href="https://docs.sigstore.dev/signing/overview/#verifying-the-signed-artifact"&gt;to check the signature&lt;/a&gt; for this artifact. This way the index file contains information on how to download and how to verify the artifact.&lt;/p&gt;
&lt;p&gt;Upon request to install the artifact &lt;code&gt;falcoctl&lt;/code&gt; is going to check the index file, resolve the name, identify the digest from the registry, pull the signature, and validate it by using cosign as a library. Only once the signature is verified, falcoctl will allow the installation of the plugin with that specific digest. If the signature data does not match the installation will be halted with an error.&lt;/p&gt;
&lt;p&gt;You can try it yourself to make sure that the signature works!&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo docker run -it --entrypoint sh falcosecurity/falcoctl:0.6.1
# falcoctl artifact install cloudtrail:0.9 --rulesfiles-dir=/tmp --plugins-dir=/tmp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="https://hackmd.io/_uploads/Byldjgnla.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;But there is more! If you have &lt;code&gt;cosign&lt;/code&gt; installed you can independently verify the signature without using falcoctl or any index file:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ cosign verify ghcr.io/falcosecurity/plugins/plugin/cloudtrail:0.9.0 --certificate-oidc-issuer=https://token.actions.githubusercontent.com --certificate-identity-regexp=https://github.com/falcosecurity/plugins/
Verification for ghcr.io/falcosecurity/plugins/plugin/cloudtrail:0.9.0 --
The following checks were performed on each of these signatures:
- The cosign claims were validated
- Existence of the claims in the transparency log was verified offline
- The code-signing certificate was verified using trusted certificate authority certificates
[...]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is one of the main advantages of relying on widely adopted container artifacts signing technologies of the cloud native world. Authentication of the artifacts is decoupled from the producer, and consumers can always choose the method they prefer.&lt;/p&gt;
&lt;h3 id="security-analysis"&gt;Security Analysis&lt;/h3&gt;
&lt;p&gt;With the above scheme, we made steps forward and implemented best practices towards better supply chain security in the Falco ecosystem. We would like to conclude our discussion with the main takeaways for a security practitioner.&lt;/p&gt;
&lt;h4 id="safeguards-against-registry-tampering-secure-by-default"&gt;Safeguards against registry tampering, secure by default&lt;/h4&gt;
&lt;p&gt;Making use of container registries to distribute artifacts is convenient, and allows for easy replication of the data across multiple regions or providers. But even if one of those registries is at &lt;a href="https://www.bleepingcomputer.com/news/security/amazon-ecr-public-gallery-flaw-could-have-wiped-or-poisoned-any-image/"&gt;risk of being compromised&lt;/a&gt; , clients will be protected from potentially malicious applications. If &lt;strong&gt;an artifact is replaced in the registry&lt;/strong&gt; without going through the appropriate approval and open source release pipeline, &lt;strong&gt;clients will identify that the signature does not match and automatically refuse to install&lt;/strong&gt; any compromised package. This is only possible because cosign signature information is distributed in a file that is separate from the artifact itself. With falcoctl 0.6.1 this feature is on by default and requires no extra action from users.&lt;/p&gt;
&lt;h4 id="independent-signature-verification"&gt;Independent signature verification&lt;/h4&gt;
&lt;p&gt;It is now possible for &lt;strong&gt;all Falco rules and plugins users to independently verify the authenticity&lt;/strong&gt; of every artifact they download. We implemented this feature staying true to the open nature of Falco, so by design, you do not need any Falco-specific tool (like &lt;code&gt;falcoctl&lt;/code&gt;) to verify your artifact and you can do it manually with &lt;code&gt;cosign&lt;/code&gt; to implement even tighter controls.&lt;/p&gt;
&lt;h4 id="attack-surface"&gt;Attack surface&lt;/h4&gt;
&lt;p&gt;As security practitioners, we should always analyze the attack surface of the security schemes we design and update our threat model accordingly. In this case, we can identify that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the source repositories are compromised, so will the packages. Of course, the open-source repositories act as the single source of truth for our plugins and rules. If an attacker manages to merge malicious code and release a malicious plugin they will be able to compromise users once they update or install a new version. Release pipelines are the only component that can generate a proper signature for the artifacts.&lt;/li&gt;
&lt;li&gt;If the index file is compromised, so will the packages. The index file maps artifact names (e.g. &lt;code&gt;cloudtrail&lt;/code&gt;) to their location in the container registry (e.g. &lt;code&gt;ghcr.io/falcosecurity/plugins/plugin/cloudtrail&lt;/code&gt;). If that entry is modified to point to an attacker-controlled registry, possibly alongside an attacker-controlled signature, clients will download a potentially malicious artifact instead of the official one.&lt;/li&gt;
&lt;li&gt;At this point in time, the entire infrastructure is hosted by GitHub, making it a potential single point of failure and an entity that the Falco project completely trusts. However, even if parts of the infrastructure (container registry, CDN for index distribution, ...) were not, GitHub release pipelines would still have permissions or access tokens to operate those locations.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="let-s-keep-in-touch"&gt;Let's keep in touch&lt;/h2&gt;
&lt;p&gt;Security is a never ending effort, and supply chain security is no exception. Falco maintainers and community are committed to keep improving all security aspects of the Falco project.&lt;/p&gt;
&lt;p&gt;We'll keep you up to date with the next steps and remember, if you want to be involved you're more than welcome, don't hesitate to reach out to the &lt;a href="https://falco.org/community/"&gt;community&lt;/a&gt; and the Falco Software Supply Chain Security Working Group in the &lt;a href="https://cloud-native.slack.com/archives/C04ET5YR014"&gt;#falco-sscs-wg&lt;/a&gt; Slack channel in the CNCF workspace.&lt;/p&gt;</description></item><item><title>Blog: Introducing Falco 0.36.1</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-1/</link><pubDate>Mon, 16 Oct 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-1/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.36.1&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;p&gt;Falco's 0.36.1 release is a small patch aimed at protecting our uses by addressing a few minor bugs. It includes the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Address a &lt;strong&gt;HIGH&lt;/strong&gt; severity vulnerability in libcurl &lt;strong&gt;&lt;a href="https://curl.se/docs/CVE-2023-38545.html"&gt;CVE-2023-38545&lt;/a&gt;&lt;/strong&gt;, bumping the library to the patched version &lt;code&gt;8.4.0&lt;/code&gt;. You can find more details in the &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-1/#vulnerability-in-libcurl"&gt;section below&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The legacy eBPF probe can now handle systems with CPU hotplug enabled, opening the right number of kernel buffers. (&lt;a href="https://github.com/falcosecurity/falco/issues/2843"&gt;https://github.com/falcosecurity/falco/issues/2843&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove a no longer useful experimental Falco config &lt;code&gt;outputs_queue.recovery&lt;/code&gt;. This was introduced in Falco &lt;code&gt;0.36.0&lt;/code&gt; as an experiment.&lt;/li&gt;
&lt;li&gt;Fix a possible segfault caused by a faulty implementation of &lt;a href="https://bugs.launchpad.net/ubuntu/&amp;#43;source/glibc/&amp;#43;bug/1940296"&gt;&lt;code&gt;timer_delete&lt;/code&gt;&lt;/a&gt;. (&lt;a href="https://github.com/falcosecurity/falco/issues/2850"&gt;https://github.com/falcosecurity/falco/issues/2850&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone in the community for helping us in spotting these annoying bugs 🐛! You make Falco successful 🦅!&lt;/p&gt;
&lt;p&gt;Thanks as always to the Falco maintainers for their support and effort during the entire release process.&lt;/p&gt;
&lt;h3 id="vulnerability-in-libcurl"&gt;Vulnerability in libcurl&lt;/h3&gt;
&lt;p&gt;A &lt;strong&gt;HIGH&lt;/strong&gt; severity vulnerability in libcurl, &lt;strong&gt;&lt;a href="https://curl.se/docs/CVE-2023-38545.html"&gt;CVE-2023-38545&lt;/a&gt;&lt;/strong&gt;, was disclosed alongside a patched version (&lt;code&gt;8.4.0&lt;/code&gt;). We would like to answer the main question you might have about it: &lt;strong&gt;Does it affect Falco?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;According to the excellent &lt;a href="https://daniel.haxx.se/blog/2023/10/11/how-i-made-a-heap-overflow-in-curl/"&gt;in-depth description&lt;/a&gt; of the bug, this can only be triggered if &lt;strong&gt;both conditions below&lt;/strong&gt; are true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;SOCKS5 HTTP(S) proxy has been configured&lt;/strong&gt;. This happens if you have set the standard environment variables that control proxy connections, such as &lt;code&gt;http_proxy&lt;/code&gt;/&lt;code&gt;https_proxy&lt;/code&gt;/&lt;code&gt;no_proxy&lt;/code&gt; or libcurl-specific ones as indicated in the &lt;a href="https://curl.se/docs/CVE-2023-38545.html"&gt;advisory&lt;/a&gt; or the libcurl documentation.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;attacker controls&lt;/strong&gt; the server that Falco is connecting to, namely the &lt;strong&gt;server configured to receive http_output&lt;/strong&gt; or a &lt;strong&gt;custom prebuilt driver repository server&lt;/strong&gt;, and the SOCKS5 proxy is &amp;quot;slow enough&amp;quot; to allow the attack to happen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While it may be rare that users have an exploitable environment, it's still a possibility. For this reason, Falco maintainers decided to ship this patch release 🦅&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it! 🏎️&lt;/h2&gt;
&lt;p&gt;As usual, in case you just want to try out the stable &lt;strong&gt;Falco 0.36.1&lt;/strong&gt;, you can install its packages following the process outlined in the docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#centos-rhel"&gt;CentOS/Amazon Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#debian"&gt;Debian/Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#suse"&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/docs/getting-started/installation/#linux-binary"&gt;Linux binary package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prefer to use a container image? No problem at all! 🐳&lt;/p&gt;
&lt;p&gt;You can read more about running Falco with Docker in the &lt;a href="https://falco.org/docs/getting-started/running/#docker"&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also find the Falcosecurity container images on the public AWS ECR gallery:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;falco&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-no-driver"&gt;falco-no-driver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco-driver-loader"&gt;falco-driver-loader&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-next"&gt;What next? 🔮&lt;/h2&gt;
&lt;p&gt;The community is active on many topics and we hope to deliver great features and many stability fixes once again during the next release cycle!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The old &lt;code&gt;falco-driver-loader&lt;/code&gt; script is showing its age and it's time to work on a more maintainable solution. &lt;code&gt;falcoctl&lt;/code&gt; is a great candidate to host everything driver related, implement new features and make our lives easier when we need to install Falco drivers on a new machine.&lt;/li&gt;
&lt;li&gt;Lately we have expanded the syscall coverage that Falco can provide. We wish to improve these efforts across all drivers with even more 32 bit syscalls.&lt;/li&gt;
&lt;li&gt;Our rule framework is brand new and we forsee many improvements and active development work on it.&lt;/li&gt;
&lt;li&gt;The latest Falco versions brought many improvements to the plugin framework; we wish to use those to create a more scalable Kubernetes client plugin that will be able to withstand much heavier loads and will be easier to maintain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And many, many, more enhancements!&lt;/p&gt;
&lt;h2 id="let-s-meet"&gt;Let's meet 🤝&lt;/h2&gt;
&lt;p&gt;We meet every Wednesday in our &lt;a href="https://github.com/falcosecurity/community"&gt;community calls&lt;/a&gt;,
if you want to know the latest and the greatest you should join us there!&lt;/p&gt;
&lt;p&gt;If you have any questions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the &lt;a href="https://kubernetes.slack.com/messages/falco"&gt;#falco channel&lt;/a&gt; on the &lt;a href="https://slack.k8s.io"&gt;Kubernetes Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://lists.cncf.io/g/cncf-falco-dev"&gt;Falco mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all the amazing contributors!&lt;/p&gt;
&lt;p&gt;Cheers 🎊&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Andrea, Luca&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Linux Introspection - From BPF to Wireshark to Falco</title><link>https://v0-43--falcosecurity.netlify.app/blog/wireshark-to-falco/</link><pubDate>Wed, 11 Oct 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/wireshark-to-falco/</guid><description>
&lt;p&gt;&lt;em&gt;Falco, an open source innovation, was conceived with the vision of crafting a flexible and robust rules engine atop the Sysdig libraries. This initiative aimed to furnish a potent tool for the detection of aberrant behaviors and intrusions within modern applications, akin to the Snort paradigm but tailored to the realm of system calls and finely tuned for cloud environments.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Nevertheless, it's important to recognize that Falco and Wireshark represent distinct facets of this evolutionary process. Falco offers ongoing surveillance akin to Snort, while Wireshark specializes in interactive endpoint network traffic analysis.&lt;/p&gt;
&lt;h3 id="the-need-for-modern-system-introspection"&gt;The Need for Modern System Introspection&lt;/h3&gt;
&lt;p&gt;Part of this journey has been the emergence of cloud native apps. From the early days of BPF (Berkley Packet Filter) and libpcap (a portable C/C++ library for network traffic capture), which laid the foundation for network packet analysis, to the familiar graphical user interface of Wireshark, our understanding of network data has undergone profound changes. This article embarks on a journey through this transformation, shedding light on how tcpdump and libpcap sparked an explosion of packet-based analysis and runtime security tools exemplified by Wireshark and Snort.&lt;/p&gt;
&lt;p&gt;Wireshark, Snort, Nmap, Kismet, ngrep, and a bunch of other tools started at around the same time and are all evolutionary branches of tcpdump and libpcap.&lt;/p&gt;
&lt;p&gt;However, as cloud computing continues to reshape the technological landscape, traditional network packet analysis tools have found themselves grappling with an evolving challenge: the cloud itself. Cloud native applications have ushered in a new era of complexity and dynamism, rendering many existing visibility solutions obsolete. This shift necessitated a fresh perspective on network monitoring, leading to the birth of Falco, a tool poised to be the &lt;a href="https://www.snort.org/"&gt;Snort&lt;/a&gt; of the cloud.&lt;/p&gt;
&lt;h3 id="starting-the-story-with-network-packet-analysis"&gt;Starting the story with Network Packet Analysis&lt;/h3&gt;
&lt;p&gt;During the late 1990s Internet boom, the demand for computer networks skyrocketed, leading to an increased need for monitoring, troubleshooting, and securing these networks. Regrettably, the available network visibility tools of that era were prohibitively expensive for many operators, leaving them grappling with a lack of insights.&lt;/p&gt;
&lt;p&gt;Consequently, teams worldwide embarked on a mission to address this predicament. Their efforts revolved around expanding existing operating systems to incorporate packet capture capabilities, essentially transforming off-the-shelf computer workstations into devices capable of residing on a network and capturing all inbound and outbound data packets from other workstations. One such solution was the Berkeley Packet Filter (BPF), crafted to extend the functionality of the BSD (Berkeley Software Distribution) operating system kernel.&lt;/p&gt;
&lt;p&gt;For Linux users, the term 'eBPF' may ring a bell – a virtual machine renowned for securely executing arbitrary code within the Linux kernel. Remarkably, eBPF has evolved into a powerful and flexible technology over the years. However, its origins trace back to a modest programmable packet capture and filtering module designed for BSD Unix.&lt;/p&gt;
&lt;p&gt;The BPF team introduced a game-changing library known as 'libpcap,' which enabled any program to capture raw network packets. It was developed in order to make tcpdump more useful. For instance, it gave the ability to filter packets. Since then, a bunch of spin-off networking projects would emerge on the scene. In 1998, a GUI-based open source protocol analyzer named 'Ethereal' (later renamed Wireshark) was introduced, eventually becoming the gold standard in packet analysis that persists to this day. \&lt;/p&gt;
&lt;p&gt;What unites 'tcpdump,' Wireshark, and numerous other popular networking tools is their ability to access a data source that is rich, accurate, and reliable, all collected in a nonintrusive manner: raw network packets. This fundamental concept will be central to our discussion moving forward.&lt;/p&gt;
&lt;h3 id="the-evolution-of-packet-based-intrusion-detection-systems"&gt;The evolution of Packet-Based Intrusion Detection Systems&lt;/h3&gt;
&lt;p&gt;Introspection tools, such as tcpdump and Wireshark, naturally emerged as the initial applications harnessing the capabilities of the BPF packet capture stack. However, as time progressed, innovative applications for packet data began to surface. Enter Snort, an open source, packet-based runtime security tool that shares common ground with Falco. Much like Falco, Snort operates as a rule engine, processing packets acquired from network traffic. Like its cloud native counterpart, Snort boasts an extensive library of pre-configured rules designed to identify threats and unwarranted activities by scrutinizing packet content, protocols, and payload data. The success of Snort served as a catalyst for the development of similar tools, including Suricata and Zeek.&lt;/p&gt;
&lt;p&gt;What truly empowers tools like Snort is their proficiency in assessing the security of networks and applications in real time, even as these applications run. This real-time focus proves invaluable by delivering immediate protection with a unique emphasis on runtime behavior, enabling the detection of threats rooted in vulnerabilities that may remain undisclosed.&lt;/p&gt;
&lt;h3 id="the-issue-with-network-packet-capture-in-the-cloud"&gt;The issue with Network Packet Capture in the Cloud&lt;/h3&gt;
&lt;p&gt;The utilization of network packets as a foundational data source has spawned a thriving ecosystem. Nonetheless, several emerging trends have gradually eroded the viability of packets as an unequivocal source of information.&lt;/p&gt;
&lt;p&gt;First, the task of comprehensively collecting packets has grown increasingly complex, especially within environments such as the cloud, where access to routers and network infrastructure is constrained. Second, the proliferation of encryption and network virtualization has posed formidable challenges in extracting valuable insights from network traffic. Lastly, the ascent of containerization and orchestrators like Kubernetes has rendered infrastructures more elastic while concurrently complicating the reliable collection of network data.&lt;/p&gt;
&lt;p&gt;Once again, a dynamic new ecosystem was unfolding, yet the means to effectively troubleshoot and secure it remained elusive.&lt;/p&gt;
&lt;h3 id="system-calls-are-the-new-network-packets"&gt;System Calls are the New Network Packets&lt;/h3&gt;
&lt;p&gt;Before the emergence of Falco, an open source tool known as 'Sysdig Inspect' was crafted with a primary focus on the collection of packet data within cloud native ecosystems. This was achieved through the capture of system calls, often referred to as syscalls, originating from the kernel of the operating system.&lt;/p&gt;
&lt;p&gt;Syscalls, as a data source, offer a richness that surpasses that of mere network packets. They encompass a wide spectrum of activities, extending beyond network data to encompass file I/O operations, command executions, interprocess communication, and more. Syscalls stand out as an ideal data source for cloud native environments as they can be harnessed from the kernel, catering to both containerized environments and cloud instances. Moreover, the process of collecting syscalls is characterized by its simplicity, efficiency, and non-invasiveness.&lt;/p&gt;
&lt;p&gt;The architecture of Sysdig comprised a kernel capture probe, making use of either the default, loadable kernel module or leveraging eBPF. To facilitate the development of capture programs, Sysdig offered a suite of libraries, enabling seamless integration with modern cloud native technologies such as Kubernetes and various orchestrators. This versatility addressed the shortcomings observed in environments where traditional solutions like Snort and Wireshark fell short. Additionally, Sysdig provided a command-line tool replete with decoding and filtering functionalities, tailored to accommodate the prevalent network packet workflows essential in cloud environments, where the ease of filtering and scriptability of trace files is paramount.&lt;/p&gt;
&lt;h3 id="falco-the-evolution-of-wireshark-to-the-cloud"&gt;Falco - the evolution of Wireshark to the Cloud&lt;/h3&gt;
&lt;p&gt;Drawing from our comprehension of how Snort introduced a rule-based engine for scrutinizing network traffic to identify suspicious activity, an evolution that implemented Wireshark's network introspection, and how Sysdig expanded the scope of visibility within cloud native environments by delving into system calls, effectively departing from sole reliance on Wireshark's libpcap framework. It logically followed that an Intrusion Detection System (IDS) solution would emerge, featuring a sophisticated rule-based engine tailored for cloud native workloads while harnessing the capabilities of eBPF and the kernel's system call architecture.&lt;/p&gt;
&lt;p&gt;Falco's rule engine drew inspiration from Snort's design but operated within a far more expansive and versatile dataset, seamlessly integrated with the Sysdig libraries. While its default ruleset may be more concise than Snort's, Falco empowers users to craft intricate rules that trigger in real-time based on arbitrary contextual factors. These factors encompass a wide array of scenarios, including access to sensitive data, mode transitions, unexpected network connections, socket alterations, compliance breaches, and more. Given its capacity to monitor all activities on a server or node through system calls, Falco functions as a real-time intrusion detection tool, mirroring Wireshark's role in providing real-time network analysis for endpoints.&lt;/p&gt;
&lt;h3 id="falco-for-cloud-native-security"&gt;Falco for Cloud Native Security&lt;/h3&gt;
&lt;p&gt;In the journey from the early days of BPF to the widespread adoption of Wireshark, we've witnessed the remarkable evolution of system introspection tools, each one contributing to the ever-expanding landscape of cybersecurity. However, as cloud native computing and microservices architectures become the new norm, a new champion has emerged: Falco. Falco represents the cutting edge of intrusion detection, specifically designed to tackle the intricacies and challenges posed by cloud native hosts and workloads. With its real-time behavioral monitoring, container awareness, and comprehensive rule sets, Falco stands as a testament to the adaptability and innovation in the world of cybersecurity. As the digital landscape continues to evolve, Falco is the tool of choice for those who prioritize the security and integrity of their cloud native environments. It's not just a system introspection tool; it's the future of protecting what matters most in this rapidly changing world of technology.&lt;/p&gt;
&lt;p&gt;If you want to try out Falco, check out our &lt;a href="https://falco.org/docs/getting-started/"&gt;Getting Started&lt;/a&gt; documentation. Join our community at &lt;a href="https://communityinviter.com/apps/kubernetes/community"&gt;#falco channel within Kubernetes Slack&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>