<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Falco – Falco</title><link>https://v0-43--falcosecurity.netlify.app/tags/falco/</link><description>Recent content 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/tags/falco/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: 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: 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: 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 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: 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: 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: 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: 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: 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: 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: 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><item><title>Blog: Tracing System Calls Using eBPF - Part 2</title><link>https://v0-43--falcosecurity.netlify.app/blog/tracing-system-calls-using-ebpf-part-2/</link><pubDate>Fri, 06 Oct 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/tracing-system-calls-using-ebpf-part-2/</guid><description>
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In &lt;a href="https://falco.org/blog/tracing-syscalls-using-ebpf-part-1/"&gt;Tracing System Calls Using eBPF Part 1&lt;/a&gt;, we lay the groundwork, introducing you to the fundamentals of &lt;code&gt;eBPF&lt;/code&gt; and its predecessor, &lt;code&gt;BPF (Berkeley Packet Filter)&lt;/code&gt;. We delve into the evolution of this technology, its safety, performance, and observability advantages over traditional kernel modules, and its pivotal role in securing modern cloud native environments. We guide you through the intricate process of working with eBPF programs, from compilation to execution, highlighting its power in tracing system calls.&lt;/p&gt;
&lt;p&gt;In the second installment, &lt;code&gt;Tracing System Calls Using eBPF Part 2&lt;/code&gt;, we elevate our understanding of eBPF's capabilities. We unravel the world of &lt;code&gt;Uprobes&lt;/code&gt; and &lt;code&gt;Uretprobes&lt;/code&gt;, demonstrating how these features empower developers to instrument and monitor user-space applications seamlessly. We then venture into &lt;code&gt;Kprobes&lt;/code&gt; and &lt;code&gt;Kretprobes&lt;/code&gt;, unlocking the potential to dynamically trace and debug kernel functions, offering insights into system behavior and performance analysis.&lt;/p&gt;
&lt;h2 id="uprobes"&gt;Uprobes&lt;/h2&gt;
&lt;p&gt;Uprobes, short for user probes, are a feature in the Linux kernel that enables developers to instrument and monitor user-space applications without modifying their code directly. They allow for the insertion of breakpoints at specific points of interest within an application, facilitating the collection of data, tracing of function calls, debugging, and performance analysis.&lt;/p&gt;
&lt;h2 id="uretprobes"&gt;Uretprobes&lt;/h2&gt;
&lt;p&gt;Uretprobes, short for User Return Probes, are a feature in the Linux kernel that allows developers to trace and monitor the return paths of functions in user-space applications. While uprobes are used to instrument and intercept the entry points of functions, URETprobes specifically focus on the exit points or return paths. They enable developers to set up probes that are triggered when a specific function returns to its caller.&lt;/p&gt;
&lt;p&gt;Here is an eBPF program that uses user probes to trace the printf function present in &lt;code&gt;glibc (the standard GNU C Library)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf2-01.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="An eBPF program that uses user probes to trace the printf function present in `glibc (the standard GNU C Library)`"
src="images/ebpf2-01.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;In accordance with the instructions outlined in our &lt;a href="https://falco.org/blog/tracing-syscalls-using-ebpf-part-1/"&gt;Tracing System Calls Using eBPF Part 1&lt;/a&gt; blog, we can create a loader to effectively load this eBPF program and read the logs from the file &lt;code&gt;/sys/kernel/tracing/trace_pipe&lt;/code&gt; .&lt;/p&gt;
&lt;h2 id="kprobes"&gt;Kprobes&lt;/h2&gt;
&lt;p&gt;Kprobes, short for Kernel Probes, are a feature in the Linux kernel that allow dynamic tracing and debugging of kernel functions. They are particularly useful for tasks like performance analysis, bug diagnosis, and system monitoring. They provide a non-intrusive way to gather runtime information from the kernel without requiring modifications to the kernel code itself. Additionally, they can be used to trace specific function calls, track parameters and return values, and gather statistical data on function execution&lt;/p&gt;
&lt;h2 id="kretprobes"&gt;Kretprobes&lt;/h2&gt;
&lt;p&gt;Kretprobes, short for Kernel Return Probes, are a feature in the Linux kernel that complements Kprobes by allowing dynamic tracing and debugging of kernel function return points. While Kprobes focus on probing the entry points of kernel functions, kretprobes specifically target the return points of these functions.Similar to Kprobes, kretprobes work by inserting a probe handler function that gets executed when a specific kernel function is about to return. This allows developers and system administrators to gather information, modify return values, or perform additional actions at the point of function return.&lt;/p&gt;
&lt;p&gt;Here is an eBPF program that uses kernel probes to trace a kernel function named &lt;code&gt;prepare_kernel_cred&lt;/code&gt;. This function is used to create a new &lt;code&gt;struct cred object&lt;/code&gt; that represents the credentials or privileges associated with a kernel task. It is commonly used in &lt;code&gt;privilege escalation exploits&lt;/code&gt; for gaining root access. By tracing this function, we can identify all processes that invoke it, providing valuable insight for analyzing potential malicious activity.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf2-02.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="An eBPF program that uses kernel probes to trace a kernel function"
src="images/ebpf2-02.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SEC(“kprobe/prepare_kernel_cred”)&lt;/code&gt; indicates that an eBPF program is associated with the kprobe event for the &lt;code&gt;&amp;quot;prepare_kernel_cred&amp;quot;&lt;/code&gt; kernel function. This event allows dynamic tracing and debugging by intercepting the entry point of the function.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;struct pt_regs&lt;/code&gt; is a data structure that provides access to the register state of the program when it is executed. It contains information about the &lt;code&gt;CPU registers&lt;/code&gt; at the time of the eBPF program invocation. It is defined as :&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf2-03.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Consolidated rule"
src="images/ebpf2-03.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;To facilitate the loading of the aforementioned eBPF program, we’ll use the following program.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf2-04.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Loader for the above program"
src="images/ebpf2-04.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Here is a Makefile for compiling the eBPF program and the loader&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf2-05.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="A Makefile for compiling the eBPF program and the loader"
src="images/ebpf2-05.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In this two-part exploration of &lt;strong&gt;Tracing System Calls Using eBPF&lt;/strong&gt;, we've embarked on a fascinating journey through the inner workings of this powerful technology. &lt;code&gt;Part 1&lt;/code&gt; laid the foundation by introducing us to the fundamentals of eBPF and its predecessor, BPF, shedding light on their evolution and significance in modern cloud native environments. We uncovered how eBPF's safety, performance, and observability advantages empower us to trace system calls with unmatched efficiency.&lt;/p&gt;
&lt;p&gt;In &lt;code&gt;Part 2&lt;/code&gt;, we took our understanding to new heights. We delved into the world of &lt;code&gt;Uprobes&lt;/code&gt; and &lt;code&gt;Uretprobes&lt;/code&gt;, showcasing how they enable seamless instrumentation and monitoring of user-space applications. We then ventured into &lt;code&gt;Kprobes&lt;/code&gt; and &lt;code&gt;Kretprobes&lt;/code&gt;, unlocking the ability to dynamically trace and debug kernel functions. Armed with these advanced techniques, we gained valuable insights into system behavior, performance analysis, and even the detection of potential malicious activity.&lt;/p&gt;
&lt;p&gt;As we conclude this journey into the heart of eBPF, we stand equipped with a powerful set of tools and knowledge. Whether you're a seasoned sysadmin, a curious developer, or a vigilant security enthusiast, the capabilities of eBPF open new doors to real-time monitoring and analysis.&lt;/p&gt;
&lt;p&gt;Stay tuned for further insights and practical guidance in the world of eBPF, where innovation meets security, and the future of system monitoring becomes a reality.&lt;/p&gt;</description></item><item><title>Blog: Falco 0.36.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/</link><pubDate>Tue, 26 Sep 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/</guid><description>
&lt;p&gt;Dear Falco Community, today we are happy to announce the release of Falco 0.36.0!&lt;/p&gt;
&lt;p&gt;This releases comes as usual with many new features and improvements. Thanks to everyone that worked on all the features, bugfixes and improvements! To read a detailed account of the release, see &lt;a href="https://github.com/falcosecurity/falco/blob/master/CHANGELOG.md#v0360"&gt;v0.36.0 in the changelog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During this release cycle, we merged more than 100 PRs on Falco and more than 150 PRs for libs and drivers, version 0.13.1 and version 6.0.1 respectively. Thank you to our maintainers and contributors, as this would not happen without your support and dedication!&lt;/p&gt;
&lt;p&gt;This release comes with many &lt;strong&gt;brand new features&lt;/strong&gt;, some long awaited &lt;strong&gt;UX improvements and configuration&lt;/strong&gt; and also beware of some &lt;strong&gt;breaking changes&lt;/strong&gt;! Don't worry, everything is explained below!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What's new? TL;DR&lt;/h2&gt;
&lt;p&gt;In release v0.36.0, we focused on the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Brand new Falco &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/#new-falco-rules-framework"&gt;rule framework&lt;/a&gt; and ruleset&lt;/li&gt;
&lt;li&gt;More robust executable &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/#process-executable-and-lineage"&gt;file path detection, symlink resolution and ancestors detection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Falco is &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/#multiple-rules-can-be-matched-on-each-event"&gt;no longer limited to one rule&lt;/a&gt; firing per event!&lt;/li&gt;
&lt;li&gt;Signatures are now &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/#falcoctl-cosign"&gt;automatically verified in Falcoctl&lt;/a&gt; for plugins and rules&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/#container-image-changes"&gt;Upgrade&lt;/a&gt; of the default Falco images&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We have also some massive experimental upgrades that the community has spent incredible amounts of effort on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/#falco-wasm"&gt;WASM support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/#falco-kernel-testing-framework"&gt;Kernel driver testing&lt;/a&gt; &lt;em&gt;at scale&lt;/em&gt;!&lt;/li&gt;
&lt;li&gt;Falco now has an experimental &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/#container-image-changes"&gt;distroless container image&lt;/a&gt; based on Wolfi&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="breaking-changes"&gt;Breaking changes ⚠️&lt;/h2&gt;
&lt;p&gt;We have seen many requests from the community in the form of questions and issues. Those are the ones that shape the evolution of Falco, so we can hopefully make the user experience better at every release. Sometimes, in order to do this we need to implement changes that may impact some workflows. In this release we have important breaking changes you should be aware of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The default rules file that is shipped in the Falco image and/or can be downloaded via falcoctl as &lt;code&gt;falco-rules&lt;/code&gt; is now a &lt;em&gt;stable&lt;/em&gt; rule file. This file &lt;strong&gt;contains a much smaller number of rules&lt;/strong&gt; that are less noisy and have been vetted by the community. This serves as a much requested &amp;quot;starter&amp;quot; Falco rule set that covers many common use case. The rest of that file has been expanded and split into &lt;code&gt;falco-incubating-rules&lt;/code&gt; and &lt;code&gt;falco-sandbox-rules&lt;/code&gt;. Read more &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-36-0/#new-falco-rules-framework"&gt;below&lt;/a&gt; to learn about the difference.&lt;/li&gt;
&lt;li&gt;The main &lt;code&gt;falcosecurity/falco&lt;/code&gt; container image and its &lt;code&gt;falco-driver-loader&lt;/code&gt; counterpart have been upgraded. Now they are able to compile the kernel module or classic eBPF probe for relatively newer version of the kernel (5.x and above) while we no longer ship toolchains to compile the kernel module for older versions in the default images. Downloading of prebuilt drivers and the modern eBPF will work exactly like before. The older image, meant for compatibility with older kernels (4.x and below), is currently retained as &lt;code&gt;falcosecurity/falco-driver-loader-legacy&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Falco HTTP output no longer logs to stdout by default for performance reasons. You can set stdout logging preferences and restore the previous behavior with the configuration option &lt;code&gt;http_output.echo&lt;/code&gt; in &lt;code&gt;falco.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;--list-syscall-events&lt;/code&gt; command line option has been replaced by &lt;code&gt;--list-events&lt;/code&gt; which prints all supported system events (syscall, tracepoints, metaevents, internal plugin events) in addition to extra information about flags.&lt;/li&gt;
&lt;li&gt;The semantics of &lt;code&gt;proc.exepath&lt;/code&gt; have changed. Now that field contains the executable path on disk even if the binary was launched from a symbolic link.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;-d&lt;/code&gt; daemonize option has been removed.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;-p&lt;/code&gt; option is now changed:
&lt;ul&gt;
&lt;li&gt;when only &lt;code&gt;-pc&lt;/code&gt; is set Falco will print &lt;code&gt;container_id=%container.id container_image=%container.image.repository container_image_tag=%container.image.tag container_name=%container.name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;when &lt;code&gt;-pk&lt;/code&gt; is set it will print as above, but with &lt;code&gt;k8s_ns=%k8s.ns.name k8s_pod_name=%k8s.pod.name&lt;/code&gt; appended&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Command line options &lt;code&gt;s&lt;/code&gt; and &lt;code&gt;stats-interval&lt;/code&gt; have been removed in favor of &lt;code&gt;metrics&lt;/code&gt; config in &lt;code&gt;falco.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="major-features-and-improvements"&gt;Major features and improvements&lt;/h2&gt;
&lt;h3 id="new-falco-rules-framework"&gt;New Falco rules framework 🛡️&lt;/h3&gt;
&lt;p&gt;This project is the result of a discussions that started a long time ago and required a massive amount of work from the community. Following this &lt;a href="https://github.com/falcosecurity/rules/blob/main/proposals/20230605-rules-adoption-management-maturity-framework.md"&gt;proposal&lt;/a&gt; we have decided to split the rules that the Falco community maintains into three main groups, described in the &lt;a href="https://github.com/falcosecurity/rules/blob/main/CONTRIBUTING.md#maturity-levels"&gt;maturity levels&lt;/a&gt; section of the contributing guide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/rules/blob/main/rules/falco_rules.yaml"&gt;Stable&lt;/a&gt; Falco rules. Those are the only ones that are bundled in the Falco by default. It is very important to have a set of stable rules vetted by the community. To learn more about the criterias that are required for a rule to become stable, see the &lt;a href="https://github.com/falcosecurity/rules/blob/main/CONTRIBUTING.md"&gt;contributing guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/rules/blob/main/rules/falco-incubating_rules.yaml"&gt;Incubating&lt;/a&gt; rules, which provide a certain level of robustness guarantee but have been identified by experts as catering to more specific use cases, which may or may not be relevant for each adopter.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/rules/blob/main/rules/falco-sandbox_rules.yaml"&gt;Sandbox&lt;/a&gt; rules, which are more experimental.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is important to keep in mind that &lt;strong&gt;the stable ruleset is significantly changed since the last release&lt;/strong&gt;! Not only the rules are a much smaller subset but they have been refined and they may have been renamed according to the style guide.&lt;/p&gt;
&lt;p&gt;Thanks to Melissa Kilby for driving this effort 🚀!&lt;/p&gt;
&lt;p&gt;The list of &lt;a href="https://github.com/falcosecurity/rules/releases"&gt;releases&lt;/a&gt; for each type of rule is present in the repository, where you can download each file. They can also be downloaded from the &lt;a href="https://download.falco.org/?prefix=rules/"&gt;download page&lt;/a&gt; and are also available as signed OCI artifacts for download via falcoctl!&lt;/p&gt;
&lt;p&gt;Want to contribute to the rules? You can find more information in the &lt;a href="https://github.com/falcosecurity/rules/blob/main/CONTRIBUTING.md"&gt;contribution guide&lt;/a&gt; and the &lt;a href="https://falco.org/docs/rules/style-guide/"&gt;style guide&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="process-executable-and-lineage"&gt;Process executable and lineage 🪪&lt;/h3&gt;
&lt;p&gt;We have achieved a higher level of accuracy and data quality regarding the existing &lt;code&gt;proc.exepath&lt;/code&gt; field and the process tree reconstruction in general. This step forward reinforces our commitment to refining Falco and providing you with an even better user experience.&lt;/p&gt;
&lt;p&gt;In more detail:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;proc.exepath&lt;/code&gt; process executable path field now contains a resolved version of the executable path, meaning that even if an executable was launched from a symlink, the field will show the original location of the binary. In the past, we resolved the exe argument in userspace by utilizing the process's cwd when the path was not absolute. Conversely, if exe was absolute, the &lt;code&gt;exepath&lt;/code&gt; was equivalent to &lt;code&gt;exe&lt;/code&gt;. The new implementation ensures the extraction of the authentic and accurate disk path of the executable when it resides on the disk.&lt;/li&gt;
&lt;li&gt;As it turns out, it's not that simple to reconstruct the complete process tree in a Linux system. The Linux kernel presents intriguing edge case behaviors, where the direct parent process might genuinely have already exited. In the past, Falco encountered difficulties in continuing to reconstruct the parent process lineage in such situations. To address this, we've enhanced Falco's logging capabilities. Now, even in scenarios where the parent process has exited, Falco can continue reconstructing the process tree.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="container-image-changes"&gt;Container image changes 📦&lt;/h3&gt;
&lt;p&gt;We have two big changes to our default container images:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;falco-driver-loader&lt;/strong&gt; image is now based on Debian Bookworm with a more modern version of compilers, meaning that it will be much easier to build on contemporary systems but you might see compilation issues for older kernels (4.x and below). For that, the &lt;strong&gt;falco-driver-loader-legacy&lt;/strong&gt; image is provided! Also, this means that vulnerability scanners will not report so many false positive vulnerabilities in the new version of the image since it does not contain legacy versions of compilers.&lt;/li&gt;
&lt;li&gt;We have a &lt;strong&gt;falco-distroless&lt;/strong&gt; image based on &lt;a href="https://github.com/wolfi-dev"&gt;Wolfi&lt;/a&gt;, thanks to contributions from &lt;a href="https://github.com/amouat"&gt;Adrian Mouat&lt;/a&gt; and the Falco Supply Chain Security WG! This is for all of you that are fans of minimal images! You can try it out by replacing &lt;code&gt;falco-no-driver&lt;/code&gt; with &lt;code&gt;falco-distroless&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="falcoctl-cosign"&gt;Falcoctl ❤️ cosign&lt;/h3&gt;
&lt;p&gt;Since Falco 0.35.0 we started providing signed official container images signed with cosign in keyless mode. But how about our other OCI artifacts, which are &lt;strong&gt;rules&lt;/strong&gt; and &lt;strong&gt;plugins&lt;/strong&gt;? Starting from Falcoctl 0.6.1, shipped with this release, all of the official rules and plugins are signed and automatically verified at installation time thanks to the magic of &lt;a href="https://github.com/sigstore/cosign"&gt;cosign&lt;/a&gt; in keyless mode!&lt;/p&gt;
&lt;p&gt;Thanks to Massimiliano Giovagnoli for his help along with the Falco Supply Chain Security WG! Stay tuned for an in-depth explanation of the security architecture of this feature.&lt;/p&gt;
&lt;h3 id="multiple-rules-can-be-matched-on-each-event"&gt;Multiple rules can be matched on each event&lt;/h3&gt;
&lt;p&gt;Pro Falco users know that we could only match &lt;em&gt;one&lt;/em&gt; rule for each event. This is not true anymore, and since this version we have a &lt;code&gt;rule_matching&lt;/code&gt; option in the configuration file. &lt;code&gt;rule_matching: all&lt;/code&gt; will remove this limitation and match everything. See &lt;a href="https://github.com/falcosecurity/falco/blob/16a37e5c2e2797c5f3e0fecb3cfa41a0aadb4be8/falco.yaml#L304"&gt;the documentation in falco.yaml&lt;/a&gt; for more information!&lt;/p&gt;
&lt;h2 id="big-experimental-contributions"&gt;Big experimental contributions&lt;/h2&gt;
&lt;p&gt;Last but not least, we have several big projects that we have started with the community and are very proud of.&lt;/p&gt;
&lt;h3 id="falco-kernel-testing-framework"&gt;Falco Kernel Testing Framework&lt;/h3&gt;
&lt;p&gt;Falco supports a large number of Linux kernels. And the truth is, in order to test this kind of functionality you have to start an (ideally) equally large number of live Linux systems and load the driver there. This is absolutely not easy to do and just taking a look at the &lt;a href="https://github.com/falcosecurity/libs/issues/1191"&gt;task list&lt;/a&gt; for such an endeavor gives you an idea of the complexity required. The results are awesome: you can find a matrix of kernels that are continuously tested for &lt;a href="https://falcosecurity.github.io/libs/matrix_X64/"&gt;x86_64&lt;/a&gt; and &lt;a href="https://falcosecurity.github.io/libs/matrix_ARM64/"&gt;ARM&lt;/a&gt; as well! See the &lt;a href="https://falco.org/blog/falco-kernel-testing/"&gt;in-depth blog post&lt;/a&gt; to learn much more about this!&lt;/p&gt;
&lt;h3 id="falco-wasm"&gt;Falco WASM&lt;/h3&gt;
&lt;p&gt;Flaco is excited to introduce its latest addition: the WebAssembly target. This new target has been developed exclusively for the Falco Playground using &lt;a href="https://emscripten.org/docs/tools_reference/emcc.html"&gt;Emscripten&lt;/a&gt;, where it brings essential core functionalities to the forefront. These functionalities include a rule compiler and the ability to reproduce events from capture files.
It’s worth noting that certain features, such as kernel modules and Kubernetes support, have been intentionally omitted from this wasm target. This omission is due to the inherent limitations of running these features within a web browser environment. falco.wasm can be found as a &lt;a href="https://github.com/falcosecurity/falco/actions/workflows/ci.yml"&gt;github artifact&lt;/a&gt; in the latest workflow.&lt;/p&gt;
&lt;h3 id="falco-playground"&gt;Falco Playground&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://falcosecurity.github.io/falco-playground/"&gt;Falco playground&lt;/a&gt; is simple web application where you can create, edit and validate &lt;a href="https://github.com/falcosecurity/rules"&gt;falco rules&lt;/a&gt;. This is a quick solution for users wanting to easily check the accuracy of their custom rules. This application is completely client side and doesn’t make calls to any backend server. It leverages the power of &lt;a href="https://webassembly.org/"&gt;WebAssembly&lt;/a&gt; to test your rules. You can &lt;a href="https://falcosecurity.github.io/falco-playground/"&gt;try it live&lt;/a&gt; and find the code in the &lt;a href="https://github.com/falcosecurity/falco-playground"&gt;falco-playground&lt;/a&gt; repository!&lt;/p&gt;
&lt;h2 id="additional-ux-improvements"&gt;Additional UX improvements&lt;/h2&gt;
&lt;p&gt;With each release, Falco gets more quality-of-life improvements, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Environment variables resolution in configuration files&lt;/li&gt;
&lt;li&gt;A new &lt;a href="https://github.com/falcosecurity/falco/blob/16a37e5c2e2797c5f3e0fecb3cfa41a0aadb4be8/falco.yaml#L325"&gt;outputs_queue&lt;/a&gt; configuration option to better fine tune Falco's output performance&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="deprecated-features"&gt;Deprecated features&lt;/h2&gt;
&lt;p&gt;It's sad to see features go, but sometimes we need to remove something in order to focus on what matters for our adopters. This is what maintainers are proposing for deprecation in this release and removal in the next Falco version 0.37.0:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The optional rate-limiter mechanism, since it seems to be no longer used and it also can discard events including potentially critical alerts&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;--userspace&lt;/code&gt; option, since the corresponding feature and the associated projects in the Falco organization have not been maintained for years&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;falco-driver-loader&lt;/code&gt; bash script. The driver loading functionality is going to be implemented in &lt;code&gt;falcoctl&lt;/code&gt; to improve Falco's driver loading capabilities and make it easier to maintain and contribute to.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;It’s time to try out the new release! Here are some pointers for getting started with Falco:&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-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="stay-tuned"&gt;Stay tuned 🤗&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Join us&lt;/strong&gt; in our communication channels and in our weekly community calls! It’s always great to have new members in the community, and we’re looking forward to having your feedback and hearing your 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;
&lt;p&gt;See you for the next release!&lt;/p&gt;
&lt;p&gt;Enjoy,&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Luca, Andrea, Rohith&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Tracing System Calls Using eBPF - Part 1</title><link>https://v0-43--falcosecurity.netlify.app/blog/tracing-syscalls-using-ebpf-part-1/</link><pubDate>Mon, 11 Sep 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/tracing-syscalls-using-ebpf-part-1/</guid><description>
&lt;h2 id="introduction"&gt;Introduction:&lt;/h2&gt;
&lt;p&gt;In this article, we will delve into the details of eBPF (extended Berkeley Packet Filter) and explore its significance in tracing system calls. This particular blog will be in two parts; in the first blog, we will discuss eBPF, and in the subsequent section, we will delve into probes. eBPF is a powerful technology that allows for the dynamic and efficient tracing of events within the kernel space of an operating system. You have probably heard of the acronyms BPF and eBPF being used interchangeably. That's why we will aim to address both BPF and eBPF before discussing how and why Falco uses this technology.&lt;/p&gt;
&lt;h2 id="bpf-berkeley-packet-filter"&gt;BPF (Berkeley Packet Filter)&lt;/h2&gt;
&lt;p&gt;BPF is a technology used for network packet filtering and analysis. It is a powerful tool for implementing network security features, such as firewalls and intrusion detection systems. It can also be used to examine network traffic in real-time, detect suspicious patterns, and take appropriate actions to protect the network.&lt;/p&gt;
&lt;h2 id="ebpf-extended-berkeley-packet-filter"&gt;eBPF (Extended Berkeley Packet Filter)&lt;/h2&gt;
&lt;p&gt;The Extended Berkeley Filter (eBPF) is an evolution of the original BPF technology. It extends the capabilities of BPF by providing a more powerful and flexible way to perform dynamic tracing, network analysis, and performance monitoring. It allows developers to write and load programs into the kernel which can be attached to various hooks and events in the system. These programs can provide real-time insights and control over system activities.&lt;/p&gt;
&lt;h2 id="working-on-an-ebpf-program"&gt;Working on an eBPF program&lt;/h2&gt;
&lt;p&gt;The process of compiling and running an eBPF program involves several steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The eBPF program is converted into bytecode by using a compiler, ready to be loaded by a loader program.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The eBPF verifier checks the program for safety, correctness and adherence to specific rules and constraints. First of all, it performs a depth-first search on all possible execution paths to ensure that the program always proceeds to completion. Next, it performs a static analysis on the bytecode and ensures that the program doesn't violate memory access rules, and doesn't cause instability.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once the eBPF program passes the verification process, it can be loaded into the kernel. The loader ensures that the program is securely loaded and attached to the desired hooks or targets in the system.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;At runtime, the eBPF bytecode is further optimised through JIT (Just-in-time) compilation. This step converts the eBPF bytecode into machine code that can be executed by the CPU.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="kernel-modules"&gt;Kernel Modules&lt;/h2&gt;
&lt;p&gt;Apart from eBPF, the other approach we previously discussed for process tracing in Linux is the use of kernel modules. Kernel modules allow developers to write custom code that can be loaded into the kernel to extend its functionality.&lt;/p&gt;
&lt;p&gt;By leveraging kernel modules, it is possible to hook into various points of the kernel's process management code and capture detailed information about process execution. This includes events such as process creation, termination, and context switches.&lt;/p&gt;
&lt;p&gt;By accessing the kernel's internal data structures and functions, the module can gather valuable insights such as process IDs, parent-child relationships, execution time, system calls, and more.&lt;/p&gt;
&lt;h2 id="so-why-does-falco-use-ebpf"&gt;So why does Falco use eBPF?&lt;/h2&gt;
&lt;p&gt;The integration of eBPF brings significant advantages to projects like Falco, empowering them to securely and efficiently monitor and analyze system calls in real-time. You might be wondering why eBPF is necessary when Falco already has real-time detection capabilities through its kprobe (kernel probe) that handles syscall events.&lt;/p&gt;
&lt;p&gt;One compelling reason for incorporating eBPF support is to enable Falco to seamlessly operate in modern cloud native environments, where the traditional kernel probe may encounter limitations or face restrictions imposed by the control plane nodes.&lt;/p&gt;
&lt;p&gt;By embracing eBPF, Falco ensures the continuity of its real-time detection capabilities in a secure manner, allowing for the prompt and accurate identification of security incidents, regardless of the underlying environment.&lt;/p&gt;
&lt;p&gt;Later in the article, we will delve into the various considerations surrounding the adoption of an eBPF probe for Falco, providing valuable insights for determining when it becomes advantageous to leverage this functionality.&lt;/p&gt;
&lt;h2 id="ebpf-programs-vs-kernel-modules"&gt;eBPF programs vs kernel modules&lt;/h2&gt;
&lt;h3 id="safety-and-isolation"&gt;Safety and Isolation&lt;/h3&gt;
&lt;p&gt;eBPF programs are subjected to a thorough verification process before they are loaded into the kernel. This step provides an extra layer of protection and helps prevent security vulnerabilities. In contrast, kernel modules have direct access to the kernel code, which can pose a threat to the system if not implemented correctly.&lt;/p&gt;
&lt;h3 id="performance"&gt;Performance&lt;/h3&gt;
&lt;p&gt;eBPF programs are JIT compiled into machine code, which significantly improves the performance. JIT compilation optimizes the program for the specific CPU architecture, enabling efficient execution. Despite all these efforts, an eBPF instrumentation will always cause a greater overhead in the system than a kernel module one, the reason is that in the kernel module instrumentation there are no calls to the BPF subsystem.&lt;/p&gt;
&lt;h3 id="observability-and-debugging"&gt;Observability and Debugging&lt;/h3&gt;
&lt;p&gt;eBPF provides powerful tracing and observability capabilities. eBPF programs can be attached to various events, such as network packets, system calls, or kernel functions, allowing detailed visibility into the system behaviour. This makes eBPF a valuable tool for debugging, performance analysis, and security monitoring. Kernel modules typically require more invasive and complex mechanisms for achieving similar observability.&lt;/p&gt;
&lt;h2 id="attaching-ebpf-programs-to-hooks-and-events"&gt;Attaching eBPF programs to hooks and events&lt;/h2&gt;
&lt;p&gt;There are various instrumentation points defined in the Linux kernel. An instrumentation is a specific point in a computer program where additional code, known as instrumentation code, is inserted to gather information about the program's execution. Instrumentation code can be injected at runtime using JIT compilation. Kernel probes, tracepoints, user-space probes, kretprobes are examples of instrumentation points.&lt;/p&gt;
&lt;p&gt;Here is an eBPF program that runs when the execve system call is made.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-01.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="An eBPF program that runs when the execve system call is made"
src="images/ebpf-01.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In the eBPF programming context, the &lt;code&gt;macro SEC()&lt;/code&gt; from the &lt;code&gt;bpf/bpf_helper.h&lt;/code&gt; header file plays a crucial role. It allows the programmer to specify the section in which a function or variable will be placed within the &lt;code&gt;eBPF object file&lt;/code&gt;. This becomes essential when loading eBPF programs into the kernel using mechanisms like the &lt;code&gt;bpf() system call&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;By organizing functions and variables into named sections, the eBPF loader can efficiently locate and load the required code and data. Specifically, when dealing with tracepoint events, the &lt;code&gt;SEC&lt;/code&gt; format follows the pattern &lt;code&gt;SEC(&amp;quot;tp/&amp;lt;category&amp;gt;/&amp;lt;name&amp;gt;&amp;quot;)&lt;/code&gt;, where &lt;code&gt;&amp;lt;category&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; represent the respective tracepoint category and event name.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tp/syscalls/sys_enter_execve&lt;/code&gt; refers to a tracepoint that records when a process spawns the execve system call.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A list of all the available tracepoints is present in the &lt;code&gt;/sys/kernel/debug/tracing/available_events&lt;/code&gt; file. The format for each line in the file is &lt;code&gt;&amp;lt;category&amp;gt;:&amp;lt;name&amp;gt;&lt;/code&gt;. For example, syscalls:sys_enter_execve.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before compiling the program, we need to do some basic configuration:&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-02.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Basic configurations."
src="images/ebpf-02.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Let's compile the program.
The following command can be used to do this task:&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-03.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Command to compile the program."
src="images/ebpf-03.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Now, we need to write a loader program that loads and attaches this program. This loader program is used to load and attach an eBPF program to the Linux kernel. It opens and loads the eBPF object file, checks for errors during the process, finds a specific eBPF program within the loaded object, and attaches it to the kernel. Once attached, the eBPF program will be executed when certain events occur. The program enters an infinite loop at the end, indicating that it will continue running until it is manually terminated.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-04.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Loader program for eBPF."
src="images/ebpf-04.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Let's compile and run this program&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-05.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Command to compile loader program for eBPF."
src="images/ebpf-05.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;To get the logs generated by the function &lt;code&gt;bpf_printk&lt;/code&gt;, we can read the file:
&lt;code&gt;/sys/kernel/tracing/trace_pipe&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-06.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Reading '/sys/kernel/tracing/trace_pipe' file."
src="images/ebpf-06.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-res-01.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Messages we got after reading the 'trace_pipe' file."
src="images/ebpf-res-01.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Manually reading messages from the tracepipe doesn't seem to be an efficient approach. It would be advantageous to establish a mechanism for the eBPF program to send messages to the loader program. One viable solution is to utilize ring buffers. Let’s review more details about ring buffers.&lt;/p&gt;
&lt;h2 id="ring-buffers"&gt;Ring buffers&lt;/h2&gt;
&lt;p&gt;eBPF ring buffer, also known as &lt;code&gt;bpf_ringbuf&lt;/code&gt;, is a mechanism provided by the Linux kernel for efficient communication between eBPF programs and user-space programs.&lt;/p&gt;
&lt;p&gt;It allows the exchange of data and events between eBPF programs running in the kernel and user-space applications. It is a &lt;code&gt;MPSC (Multi Producer Single Consumer)&lt;/code&gt; queue and can be safely shared across multiple CPUs simultaneously.&lt;/p&gt;
&lt;p&gt;The eBPF ring buffer, being shared across all CPUs, offers a unified and efficient solution for managing memory utilisation, mitigating issues of overuse or under-allocation that commonly occur with perfbuf.&lt;/p&gt;
&lt;p&gt;Let's have a look at a few functions that we'll be using to write an eBPF program that sends data to userspace.&lt;/p&gt;
&lt;h3 id="bpf-ringbuf-reserve"&gt;bpf_ringbuf_reserve&lt;/h3&gt;
&lt;p&gt;This function is used to reserve &lt;code&gt;size&lt;/code&gt; bytes of space in a BPF ring buffer.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-08.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Function which is used to reserve `size` bytes of space in a BPF ring buffer."
src="images/ebpf-08.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3 id="bpf-probe-read-user-str"&gt;bpf_probe_read_user_str&lt;/h3&gt;
&lt;p&gt;This function is used to read a null terminated string from user-space memory into the destination &lt;code&gt;dst&lt;/code&gt;. The dst parameter is a pointer to the destination buffer in the kernel space. &lt;code&gt;unsafe_ptr&lt;/code&gt; is a pointer to the source string in the user-space.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-09.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Function which is used to read a null terminated string from user-space memory into the destination `dst`."
src="images/ebpf-09.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3 id="bpf-ringbuf-submit"&gt;bpf_ringbuf_submit&lt;/h3&gt;
&lt;p&gt;This function is used to submit data that had previously been reserved in a &lt;code&gt;ringbuf&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-10.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Function ehich is used to submit data that had previously been reserved in a ringbuf."
src="images/ebpf-10.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3 id="bpf-object-find-map-fd-by-name"&gt;bpf_object__find_map_fd_by_name&lt;/h3&gt;
&lt;p&gt;This function is used to find the file descriptor of a named map.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-11.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Function which is used to find the file descriptor of a named map."
src="images/ebpf-11.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3 id="bpf-program-attach-tracepoint"&gt;bpf_program__attach_tracepoint&lt;/h3&gt;
&lt;p&gt;This function is used to attach an eBPF program to a kernel tracepoint.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-12.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Function which is used to attach an eBPF program to a kernel tracepoint."
src="images/ebpf-12.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3 id="ring-buffer-new"&gt;ring_buffer__new&lt;/h3&gt;
&lt;p&gt;This function is used for creating and opening a new ringbuf manager.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-13.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Function which is used for creating and opening a new ringbuf manager."
src="images/ebpf-13.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3 id="ring-buf-consume"&gt;ring_buf__consume&lt;/h3&gt;
&lt;p&gt;Used to remove or consume data from a &lt;code&gt;ring buffer&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-14.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Program used to remove or consume data from a ring buffer."
src="images/ebpf-14.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2 id="btf-bpf-type-format"&gt;BTF (BPF Type Format)&lt;/h2&gt;
&lt;p&gt;It provides a way to describe the types of data structures used by eBPF programs, allowing for improved type safety, debugging, and introspection.&lt;/p&gt;
&lt;p&gt;Now, let's write a program that sends data to userspace using ringbuf.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-15.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Program that sends data to userspace using ringbuf"
src="images/ebpf-15.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Having created the program, we can write a loader to load this eBPF program.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-16.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="A loader to load this eBPF program."
src="images/ebpf-16.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;The infinite loop is necessary to ensure that the program continuously checks for new events in the ring buffer. Without the loop, the program would only consume events that were already in the buffer at the time of the initial &lt;code&gt;ring_buffer__consume()&lt;/code&gt; call. By looping and calling &lt;code&gt;ring_buffer__consume()&lt;/code&gt; repeatedly, the program can retrieve events as soon as they become available and process them in real-time. The &lt;code&gt;sleep(1)&lt;/code&gt; call within the loop serves to reduce the CPU usage of the program by introducing a one-second delay between each call to &lt;code&gt;ring_buffer__consume()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-17.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Commands to compile and run the above program."
src="images/ebpf-17.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/ebpf-res-02.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Results after compiling and executing the above program."
src="images/ebpf-res-02.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Great, we were able to recover the process name as well as the PID!&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In conclusion, this article has provided a comprehensive overview of eBPF (extended Berkeley Packet Filter) and its significance in tracing system calls. We have explored the evolution from BPF to eBPF, discussed why Falco uses this technology, and delved into the process of working with eBPF programs and ring buffers for efficient data communication between the kernel and user-space applications.&lt;/p&gt;
&lt;p&gt;As we journeyed through the capabilities of eBPF in this first part, we uncovered its benefits in terms of safety, performance, and observability when compared to traditional kernel modules. eBPF empowers us to securely and efficiently monitor and analyze system calls in real-time, making it a valuable tool in modern cloud native environments.&lt;/p&gt;
&lt;p&gt;In the upcoming second part of this blog series, we will further expand our exploration by delving into the realm of probes and additional advanced topics. We will dive deeper into how eBPF probes can be leveraged for enhanced system tracing, performance analysis, and security monitoring. Stay tuned for more insights and practical guidance on harnessing the power of eBPF.&lt;/p&gt;
&lt;p&gt;Keep an eye out for Part 2, where we'll continue our journey into the world of eBPF and system call tracing.&lt;/p&gt;</description></item><item><title>Blog: Crafting Falco Rules With MITRE ATT&amp;CK</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-mitre-attack/</link><pubDate>Sun, 16 Jul 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-mitre-attack/</guid><description>
&lt;h2 id="introduction"&gt;Introduction:&lt;/h2&gt;
&lt;p&gt;The landscape of cybersecurity attacks has witnessed a notable rise in sophistication and complexity over the last decade, posing significant challenges to organizations in their efforts to identify and counter such threats effectively. It was within this context that the &lt;a href="https://attack.mitre.org/"&gt;MITRE ATT&amp;amp;CK®&lt;/a&gt; Framework emerged as a valuable resource for security practitioners. In this blog, we will explore the benefits of using ATT&amp;amp;CK as a baseline to comprehensively understand threats, and Falco to detect and respond to these threats.&lt;/p&gt;
&lt;p&gt;The ATT&amp;amp;CK Framework serves as an extensive repository of documented tactics, techniques, and procedures (TTPs) commonly employed by cyber adversaries. By gaining a comprehensive understanding of these TTPs, organizations can enhance their defensive capabilities and fortify their cybersecurity posture.&lt;/p&gt;
&lt;p&gt;Falco is a valuable open source tool that provides runtime security for containers, virtual machines, and standalone Linux hosts. Organizations use Falco to monitor, detect, identify, and respond to suspicious activity. Falco detects suspicious activities and alerts security teams in real-time based on static rules provided in the rules file.&lt;/p&gt;
&lt;p&gt;Whether you are a security analyst, a DevOps engineer, or an avid container enthusiast, this blog offers invaluable insights on utilizing MITRE ATT&amp;amp;CK-focused Falco rules to bolster your environment against advanced adversarial attacks.&lt;/p&gt;
&lt;h2 id="step-1-gather-necessary-details"&gt;Step 1: Gather Necessary Details&lt;/h2&gt;
&lt;h3 id="consider-the-attacker-s-perspective"&gt;Consider the attacker’s perspective&lt;/h3&gt;
&lt;p&gt;To create a rule that identifies a specific ATT&amp;amp;CK technique, you need to get inside the mind of the attacker. Imagine watching an attacker and thinking about how they might try to harm or take advantage of a victim’s environment. There are an endless number of things to consider, such as: changes to important files or folders; collection of user and network information; and the creation and upload of malicious scripts. Conducting an in-depth assessment of MITRE’s ATT&amp;amp;CK TTPs will provide you with enough information to understand an attacker’s perspective.&lt;/p&gt;
&lt;h3 id="know-where-to-look"&gt;Know where to look&lt;/h3&gt;
&lt;p&gt;In order to detect malicious activities using static rules, Falco relies heavily on system events (syscalls) generated within the user’s environment. To effectively observe these system behaviors, we must carefully consider the relevant system calls that occur during an attack. If network activity is involved, we must pay attention to the corresponding network traffic and alert on known malicious IP addresses. Additionally, we need to monitor the events that occur for files and directories during an attack. Armed with this knowledge, we can proceed to write rules that detect malicious activities as they unfold, ultimately triggering relevant events for further analysis and response.&lt;/p&gt;
&lt;h3 id="bring-in-falco"&gt;Bring in Falco&lt;/h3&gt;
&lt;p&gt;Falco uses a rule-based system to monitor application and container behavior in real-time. With predefined rules, Falco detects security threats like privilege escalation, file system manipulation, abnormal process execution, and many more. It continuously compares system activities against these rules, and either generates alerts or takes action when a match occurs. Since Falco is open source, its flexibility allows customization of rules to fit an organization’s specific security requirements. By integrating with container orchestration platforms, Falco collects data from various sources and applies the rules in real-time, enabling proactive threat detection and prevention for cloud-native applications.&lt;/p&gt;
&lt;p&gt;It is important to note that Falco will not identify a type of attack or malware. Rather, its strength lies in efficiently detecting common malicious system behaviors. Falco acts as a notifier, bringing your attention to specific system activities that have occurred. Once alerted, it becomes your responsibility to investigate the activity and take the appropriate steps to mitigate and prevent further malicious activities.&lt;/p&gt;
&lt;h2 id="step-2-write-the-falco-rule"&gt;Step 2: Write the Falco Rule&lt;/h2&gt;
&lt;p&gt;Rule writing is an iterative process that typically begins with crafting a basic rule, as best you can, and gradually refining its conditions to be more specific. It entails continually incorporating exceptions into the rule to prevent false positives, ensuring that events are not erroneously flagged as malicious. This process evolves over time as we identify activities related to an attack and incorporate them into the rule. Exceptions are crucial as they allow for the inclusion of benign activities that may be associated with malicious behavior. Avoiding false positives is vital, as it reduces noise by ensuring a rule does not incorrectly flag benign system changes or events as malicious activities.&lt;/p&gt;
&lt;h3 id="identify-the-mitre-technique"&gt;Identify the MITRE technique&lt;/h3&gt;
&lt;p&gt;Building upon our theoretical understanding of rule creation, we will now focus on the specific MITRE ATT&amp;amp;CK technique of Inhibit System Service and develop a Falco rule that can effectively identify this technique.&lt;/p&gt;
&lt;p&gt;This technique is related to the recovery service of a system. Every system provides recovery services which are used in case of system failure. To make the system inaccessible an adversary may damage the system in such a way that the system becomes inaccessible to the user.&lt;/p&gt;
&lt;p&gt;However, operating systems, including Linux, provide built-in mechanisms to assist administrators in recovering from such situations. These mechanisms include features like backup catalogs, volume shadow copies, and automatic repair functionalities. These tools help administrators restore the system to a functional state by reverting to previous configurations or repairing damaged components.&lt;/p&gt;
&lt;p&gt;To impede system recovery efforts, attackers may specifically target and disable these built-in mechanisms. They can employ various native Linux utilities to accomplish this task. For instance, they might use commands like &amp;quot;rm&amp;quot; and &amp;quot;systemctl&amp;quot; to delete important system files, or employ tools like &amp;quot;dd&amp;quot; to overwrite the hard drive with random data. By doing so, they hinder the ability of system administrators to leverage these recovery mechanisms effectively.&lt;/p&gt;
&lt;h3 id="understand-the-technical-details"&gt;Understand the technical details&lt;/h3&gt;
&lt;p&gt;The following points provide an overview of the recovery features present in operating systems and the adversarial strategies employed to compromise them:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Recovery feature for creating archives of data.
These recovery features are given to store data on our system in the compressed form so that it can be used when it's needed by uncompressing it. Following are the tools which help us achieve this activity.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tar:&lt;/code&gt; create a backup of the &lt;code&gt;/home&lt;/code&gt; directory: &lt;code&gt;tar -czvf home_backup.tar.gz /home&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rsync:&lt;/code&gt; synchronize files and directories: &lt;code&gt;rsync -av /src /dest&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dd:&lt;/code&gt; create a disk image backup: &lt;code&gt;dd if=/dev/sda of=/mnt/backup.img&lt;/code&gt;
Adversary actions to make the data inaccessible to users. Now, an adversary may try to completely remove these archives by making all the data inaccessible.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Delete&lt;/code&gt; backup files: &lt;code&gt;rm /path/to/backupfile.tar.gz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Overwrite&lt;/code&gt; backup data: &lt;code&gt;dd if=/dev/zero of=/path/to/backupfile.img&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Recovery feature for creating snapshots of file systems.
Creating snapshots of a filesystem is a common practice in data management and backup strategies. Snapshots are essentially point-in-time copies or representations of a filesystem, capturing its state at a specific moment. Following are some snapshot creation techniques.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Btrfs:&lt;/code&gt; create a snapshot of the &lt;code&gt;/&lt;/code&gt; filesystem: &lt;code&gt;btrfs subvolume snapshot / /snapshot&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ZFS:&lt;/code&gt; create a snapshot of a dataset: &lt;code&gt;zfs snapshot pool/dataset@snapshot&lt;/code&gt;
Adversary actions to make file system broken:
To remove the backup of filesystem an adversary might do following activities. In which it contains deleting the snapshots , modifying the snapshots to make it unusable.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Delete&lt;/code&gt; snapshots: &lt;code&gt;btrfs subvolume delete /path/to/snapshot&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Modify&lt;/code&gt; snapshots: &lt;code&gt;vi /path/to/snapshot&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Boot Loader settings for banning of disabling recovery features
The ability to ban or disable recovery features. The reason such settings exist is to provide system administrators or advanced users with the ability to control and secure the boot process according to their specific requirements.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GRUB:&lt;/code&gt; modify the &lt;code&gt;/etc/default/grub&lt;/code&gt; file to disable recovery mode&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GRUB_DISABLE_RECOVERY=true&lt;/code&gt;
Adversary actions to try disabling all recovery features by modifying GRUB menu. An adversary may try to edit the grub configuration such that it disables the banning of certain recovery features.&lt;/li&gt;
&lt;li&gt;Modify GRUB configuration: &lt;code&gt;vi /etc/default/grub&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Systemd services for system recovery
In a Linux system, systemd is a widely used init system and service manager that plays a crucial role in managing the overall system and its services. It includes various features and components to ensure system recovery and maintain system availability. Here are the few recovery services present in the linux operating system.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enter rescue mode: add &lt;code&gt;systemd.unit=rescue.target&lt;/code&gt; to the end of the linux line in the GRUB configuration file&lt;/li&gt;
&lt;li&gt;Switch to a different root filesystem: use the &lt;code&gt;systemd-nspawn&lt;/code&gt; command
Also, there are other important services like:&lt;/li&gt;
&lt;li&gt;&lt;code&gt;recovery-mode.service&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;emergency.service&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rescue.service&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apport.serviceAA&lt;/code&gt;
Adversaries will try to disable the above system recovery services.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Considering all these technical aspects and system changes that occur in a system when an adversary tries to inhibit system recovery, we can write a falco rule to identify these system events.&lt;/p&gt;
&lt;h3 id="follow-falco-guidelines"&gt;Follow Falco guidelines&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://falco.org/docs/reference/rules/"&gt;official Falco documentation&lt;/a&gt; provides all the rule fields, priorities, event, filenames, directory names, and covered syscalls that can be used in falco.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Decide on a &lt;code&gt;Rule Name&lt;/code&gt;:
We need to first decide name of our rule, since we wrote a rule specific to an ATT&amp;amp;CK technique, let’s keep it similar:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rule&lt;/code&gt;: Disable recovery features.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Write a &lt;code&gt;description&lt;/code&gt;:
Define what is the purpose and intention for the rule that you intend to trigger. In our case, this can point to the definition of the ATT&amp;amp;CK technique we are capturing.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;desc&lt;/code&gt;: Detects disabling system recovery features by deleting or disabling services and commands.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Define a &lt;code&gt;Conditional Set&lt;/code&gt;:
To trigger an event, we need to define conditions that encompass various system activities such as relevant system calls, file or directory modifications, involved commands, spawned process names, and connections to prohibited IP addresses. These technical details should come from the attack analysis done prior to rule writing.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It is essential to adhere to the specified Falco format while crafting these conditions. Additionally, we must include exceptions to prevent false positives. Now, let us proceed to outline some fundamental conditions that will activate the desired event.
- &lt;code&gt;condition: &amp;gt;&lt;/code&gt;
(spawned_process and proc.name = &amp;quot;rm&amp;quot; and proc.args contains &amp;quot;-rf&amp;quot;) or
(spawned_process and proc.name = &amp;quot;chattr&amp;quot; and proc.args contains &amp;quot;+i&amp;quot;) or
(spawned_process and proc.name = &amp;quot;mkfs.ext4&amp;quot; and proc.args contains &amp;quot;-E nodiscard&amp;quot;) or
(spawned_process and proc.name = &amp;quot;mount&amp;quot; and proc.args contains &amp;quot;remount,ro&amp;quot;) or
(spawned_process and proc.name = &amp;quot;systemctl&amp;quot; and proc.args contains &amp;quot;disable systemd-backlight@.service&amp;quot;) or
(spawned_process and proc.name = &amp;quot;systemctl&amp;quot; and proc.args contains &amp;quot;disable apport.service&amp;quot;) or
(spawned_process and proc.name = &amp;quot;systemctl&amp;quot; and proc.args contains &amp;quot;disable rescue.service&amp;quot;) or
(spawned_process and proc.name = &amp;quot;systemctl&amp;quot; and proc.args contains &amp;quot;disable emergency.service&amp;quot;) or
(spawned_process and proc.name = &amp;quot;systemctl&amp;quot; and proc.args contains &amp;quot;disable recovery-mode.service&amp;quot;)&lt;/p&gt;
&lt;p&gt;In order to accommodate system administrators with the appropriate privileges to perform different tasks, such as the root user, we can introduce an exception in our conditions &lt;code&gt;(e.g., user.name != &amp;quot;root&amp;quot;)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Likewise, we can incorporate exceptions for specific processes that engage in these activities for legitimate reasons. These exceptions help fine-tune our conditions and reduce the occurrence of false positives.
4. Create an &lt;code&gt;enabled&lt;/code&gt; field:
This way you can optionally disable the rule as per your requirements.
If this field is not set, the rule is automatically enabled by default.
- &lt;code&gt;enabled&lt;/code&gt;: true/false
5. Write an &lt;code&gt;output&lt;/code&gt; field:
This is the text that Falco sends you when alerting on a suspicious activity. Here we can use all fields that can be used in rule conditions to give output in a more descriptive way like process name, username, container name or id etc.
- &lt;code&gt;output&lt;/code&gt;: &amp;quot;Disabling recovery features so that system becomes non recoverable in case of failure.&amp;quot;
6. Specify a &lt;code&gt;priority&lt;/code&gt;:
The Falco team explains the concept of priorities within rules on their &lt;a href="https://falco.org/docs/rules/basic-elements/#priority"&gt;official documentation&lt;/a&gt;.
It is important to clarify that the event is not triggered based on its assigned priority.&lt;/p&gt;
&lt;p&gt;Rather, the event is triggered by specifying the priority level of a rule, which indicates the urgency in addressing it. Considering the paramount importance of this rule, we will assign it the highest priority level, known as &lt;code&gt;CRITICAL&lt;/code&gt;:
- &lt;code&gt;priority&lt;/code&gt;: CRITICAL
7. Add Appropriate &lt;code&gt;Tagging&lt;/code&gt;:
In the final step, we will include tags for the rule. Tags serve as metadata providing additional information about the rules, although they are not mandatory fields.
- &lt;code&gt;tags&lt;/code&gt;:[mitre_impact, inhibit_system_recovery, T1490]
When we bring all these elements together, our rule takes the following form:
&lt;br&gt;&lt;a target="_blank" href="images/falco-mitre-attack-01.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Consolidated rule"
src="images/falco-mitre-attack-01.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;The team at &lt;a href="https://www.clouddefense.ai/"&gt;CloudDefense.AI&lt;/a&gt; developed a Python Script that simulates an attack scenario by emulating system changes. &lt;a href="https://github.com/CloudDefenseAI/falco_extended_rules/blob/master/scripts/test/inhibit_system_recovery.py"&gt;'Link To The Script'&lt;/a&gt;. To observe the corresponding output in the falco logs, you can try incorporating this rule into your &lt;a href="https://falco.org/docs/rules/default-custom/#local-rules-file"&gt;falco_rules.local.yaml&lt;/a&gt; file and running the script.&lt;/p&gt;
&lt;p&gt;It's important to note that certain system calls are not instantiated by default in alco, so you will need to execute Falco with all syscalls enabled. This can be achieved by running &lt;code&gt;falco -A&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;To wrap up, we have delved into the pivotal role of Falco rules in securing our environments against ATT&amp;amp;CK-aligned attacks. By leveraging the synergies between the MITRE ATT&amp;amp;CK Framework and Falco's capabilities, we can greatly enhance our ability to detect and respond to potential threats.&lt;/p&gt;
&lt;p&gt;Throughout this blog, we have learned how to closely examine a MITRE ATT&amp;amp;CK technique and write a corresponding Falco rule to aid us and other Falco users in identifying suspicious activities. Equipped with this knowledge, we can better recognize and mitigate potential security threats.&lt;/p&gt;
&lt;p&gt;However, it is crucial to reiterate that this is an ongoing process and not a one-time solution. We have emphasized the significance of continuously refining our Falco rules to minimize false alarms and improve accuracy. By remaining vigilant and staying abreast of the latest attack vectors, we can proactively stay ahead of the curve and effectively protect our environments.&lt;/p&gt;
&lt;p&gt;Ultimately, this blog has provided invaluable insights for security professionals and DevOps teams striving to bolster their defenses. By embracing the MITRE ATT&amp;amp;CK Framework and implementing targeted Falco rules, we can actively detect and respond to threats as they emerge, ensuring a robust shield against attackers.&lt;/p&gt;</description></item><item><title>Blog: Adaptive Syscalls Selection in Falco</title><link>https://v0-43--falcosecurity.netlify.app/blog/adaptive-syscalls-selection/</link><pubDate>Tue, 04 Jul 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/adaptive-syscalls-selection/</guid><description>
&lt;p&gt;The release of Falco 0.35.0 is a significant milestone, introducing a groundbreaking feature: the ability to select which syscalls to monitor. This empowers users with granular control, optimizing system performance by reducing CPU load through selective syscall monitoring.&lt;/p&gt;
&lt;p&gt;Why stop at just the one groundbreaking feature, such as selecting which syscalls to monitor? Previously, Falco was limited to monitoring a narrower set of syscalls, which was a drawback since its underlying libraries and kernel drivers were capable of monitoring a wider range of syscalls. We addressed this gap, and Falco now has the enhanced capability to monitor every &lt;a href="https://falcosecurity.github.io/libs/report/"&gt;syscall supported&lt;/a&gt; by its libraries. This milestone, allowing access to a notable range of syscalls, represents another significant advancement in threat detection.&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;Kudos to the remarkable teamwork of Jason Dellaluce, Federico Di Pierro, Andrea Terzolo, and Melissa Kilby for making the adaptive syscalls selection feature a reality. We would also like to express our gratitude to Stanley Chan for providing invaluable feedback to ensure a clear and user-friendly experience.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="key-terms"&gt;Key Terms&lt;/h2&gt;
&lt;p&gt;First, let's define key terms that are crucial for understanding the complexity and high-level nature of the refactoring that has been performed.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;syscall&lt;/code&gt;: In Linux, system calls serve as the interface for requesting permission from the kernel to interact with hardware resources, such as accessing memory or reading files. These system calls are defined in the Linux headers, and each syscall is associated with a specific number, such as &lt;code&gt;__NR_close&lt;/code&gt;. Falco, being designed to support multiple architectures internally, employs a mapping mechanism to track each system call using a custom invented code called &lt;code&gt;PPM_SC_*&lt;/code&gt;. This mapping allows Falco's libraries to uniquely identify and handle each supported syscall in a uniform manner. (e.g. &lt;code&gt;PPM_SC_CLOSE&lt;/code&gt; represents the close syscall).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;event&lt;/code&gt;: Syscalls consist of an enter event and an exit event. This is why Falco introduces an additional mapping from the &lt;code&gt;PPM_SC_*&lt;/code&gt; code to another enumeration called &lt;code&gt;PPME_*&lt;/code&gt;, which is specific to Falco's libraries. This mapping is crucial for organizing the parsing process and ensuring a structured approach, especially because Falco not only handles syscall events but also deals with non-syscall events. For syscalls, specific codes are assigned to events like the enter event of the syscall (e.g. &lt;code&gt;PPME_SYSCALL_CLOSE_E&lt;/code&gt;) and the exit event (e.g. &lt;code&gt;PPME_SYSCALL_CLOSE_X&lt;/code&gt;). However, not every syscall has its own &lt;code&gt;PPME_*&lt;/code&gt; code. Falco introduces the concept of generic syscalls, which brings the advantage of a shared schema and parsing mechanism for multiple syscalls using a generic extractor, optimizing efficiency by avoiding the need for separate parsers in those cases.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/adaptive-syscalls-selection-01.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Examples of Falco internal mapping of Syscalls"
src="images/adaptive-syscalls-selection-01.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;monitoring&lt;/code&gt;/&lt;code&gt;tracing&lt;/code&gt;: Refers to passively observing and analyzing events within the Linux kernel by hooking into tracepoints and subsequently serving information up as structured Falco alerts. Falco's monitoring process does not influence or modify any syscalls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;processing&lt;/code&gt;/&lt;code&gt;parsing&lt;/code&gt;: Extracting meaningful information from the events captured by Falco and converting them into a structured format. We extract data fields in the kernel and perform the necessary parsing in userspace.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;filtering&lt;/code&gt;: Refers to stopping the processing / parsing or ignoring events. No modifications are made to the kernel during this process.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rules matching&lt;/code&gt;: Refers to evaluating an event in userspace against the Abstract Syntax Tree (AST) generated from a Falco rule.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;Before the 0.35.0 release, Falco would monitor a predefined set of commonly used syscalls in its kernel driver for threat detection, regardless of the specific rules being applied. However, this approach had limitations as it would monitor a large number of syscalls. In certain user configurations, Falco would needlessly monitor syscalls not relevant to the loaded rules, consuming system resources without effectively contributing to the intended purpose of threat detection.&lt;/p&gt;
&lt;p&gt;You may ask yourself why Falco has been monitoring a predetermined set of commonly used syscalls until now. Falco relies on a set of syscalls to establish and maintain its state in userspace. For example, when a new process is spawned or a network connection is created, multiple syscalls are involved. Additionally, Falco maintains a process cache table in userspace, which requires tracking certain syscalls to ensure the accuracy and currency of the cache table. The process table is crucial for retrieving real-time process tree lineages and other functions.&lt;/p&gt;
&lt;p&gt;Initially, tracing a predefined set of syscalls provided a solid foundation for Falco's functionality. However, with the growing computational workload on servers and systems, it became necessary to adopt a new and more efficient approach to optimize performance.&lt;/p&gt;
&lt;h2 id="adaptive-syscall-selection"&gt;Adaptive Syscall Selection&lt;/h2&gt;
&lt;p&gt;Adaptive syscall selection is a new feature that adds the ability to select which syscalls to monitor. This empowers users with granular control, optimizing system performance by reducing CPU load through selective syscall monitoring. Adaptive syscall selection was added to Falco on version 0.35, and, by default, it doesn't change Falco behavior from a high-level view. In other words, by default, Falco continues to operate as usual.&lt;/p&gt;
&lt;p&gt;The changes primarily impact the handling of syscall events and the selection of specific syscalls to be monitored and analyzed. The current changes only affect live syscall events. The sycall selection is now done as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Falco determines a base set of syscalls to monitor. This can be either the default minimum set known as the &amp;quot;sinsp state set&amp;quot; (automatically determined by the underlying libsinsp library to maintain state consistency and stability), or a customized set of syscalls defined by the user via the new &lt;code&gt;base_syscalls&lt;/code&gt; configuration (discussed later).&lt;/li&gt;
&lt;li&gt;The final set of syscalls selected by Falco is determined as the union of two components: the base set of syscalls computed in the previous step, and the syscalls specified in the loaded rules.&lt;/li&gt;
&lt;li&gt;If the &lt;code&gt;-A&lt;/code&gt; flag is not enabled, performance-heavy syscalls, such as I/O-intensive syscalls, are excluded from the set of syscalls, and a warning is shown to the user.&lt;/li&gt;
&lt;li&gt;Falco configures the kernel driver with the chosen set of syscalls and only monitors syscalls that match the selected syscalls on the kernel side.&lt;/li&gt;
&lt;/ol&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;Adaptive syscall selection does not apply to capture files and only affects the behavior of live capture.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/adaptive-syscalls-selection-02.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Examples of automatic Syscalls inclusion/exclussion"
src="images/adaptive-syscalls-selection-02.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/adaptive-syscalls-selection-03.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Mapping of observed Syscalls by the Falco Driver"
src="images/adaptive-syscalls-selection-03.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2 id="new-configuration-options"&gt;New Configuration Options&lt;/h2&gt;
&lt;p&gt;As discussed above, Falco 0.35 allows users to define a customized base set of syscalls to monitor. This is done via the &lt;code&gt;base_syscalls&lt;/code&gt; setting, which provides two configuration options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;custom_set&lt;/code&gt; option enables users to define a custom list of syscalls to monitor in Falco in addition to the syscalls from each Falco rule. It supports both positive notation, where a syscall is specified to be activated, and negative notation, indicated by &lt;code&gt;!&lt;/code&gt; followed by the syscall name, to deactivate a syscall even if it is used in the ruleset. This flexibility allows users to have precise control over which syscalls are included or excluded in the &lt;code&gt;sys_enter&lt;/code&gt; and &lt;code&gt;sys_exit&lt;/code&gt; tracepoints, ensuring a tailored configuration that aligns with their specific requirements, use cases and cost budget.&lt;/p&gt;
&lt;p&gt;To maintain a streamlined and efficient configuration, it is recommended to remove unwanted syscalls directly from the Falco rules instead of excluding them in the &lt;code&gt;custom_set&lt;/code&gt; configuration. This approach ensures that the rules accurately reflect the desired behavior and reduces unnecessary complexity in the configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When the &lt;code&gt;repair&lt;/code&gt; option is set to &lt;code&gt;true&lt;/code&gt;, it automatically adjusts the custom syscall set to ensure the accurate creation of its state engine, including necessary syscalls such as &lt;code&gt;close&lt;/code&gt; or &lt;code&gt;procexit&lt;/code&gt;. However, it is designed to be the most system resource-friendly by activating the least number of additional syscalls (outside of those enabled for enabled rules) as alternative to Falco's default libsinsp state engine enforcement. It dynamically selects necessary syscalls based on the active rules, making it truly adaptive and efficient. The &lt;code&gt;repair_state&lt;/code&gt; feature helps mitigate issues that may arise from incorrect usage of &lt;code&gt;custom_set&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are some helpful suggestions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;For &lt;strong&gt;process-related rules&lt;/strong&gt; include syscalls such as &lt;code&gt;clone&lt;/code&gt;, &lt;code&gt;clone3&lt;/code&gt;, &lt;code&gt;fork&lt;/code&gt;, &lt;code&gt;vfork&lt;/code&gt;, &lt;code&gt;execve&lt;/code&gt;, &lt;code&gt;execveat&lt;/code&gt;, and &lt;code&gt;close&lt;/code&gt; in the &lt;code&gt;base_syscalls.custom_set&lt;/code&gt;; these syscalls are essential for retrieving process information and managing file descriptors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For &lt;strong&gt;networking-related rules&lt;/strong&gt; include syscalls like &lt;code&gt;socket&lt;/code&gt;, &lt;code&gt;bind&lt;/code&gt;, and &lt;code&gt;getsockopt&lt;/code&gt; in the &lt;code&gt;base_syscalls.custom_set&lt;/code&gt;; these syscalls ensure that network-related events are properly logged, including IP tuples and relevant information.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For &lt;strong&gt;tracking process information accurately&lt;/strong&gt; consider adding syscalls such as &lt;code&gt;setresuid&lt;/code&gt;, &lt;code&gt;setsid&lt;/code&gt;, &lt;code&gt;setuid&lt;/code&gt;, &lt;code&gt;setgid&lt;/code&gt;, &lt;code&gt;setpgid&lt;/code&gt;, &lt;code&gt;setresgid&lt;/code&gt;, &lt;code&gt;setsid&lt;/code&gt;, &lt;code&gt;capset&lt;/code&gt;, &lt;code&gt;chdir&lt;/code&gt;, &lt;code&gt;chroot&lt;/code&gt;, &lt;code&gt;prctl&lt;/code&gt; and &lt;code&gt;fchdir&lt;/code&gt;; these syscalls help track the correct UID, GID, SID, and PGID etc of a process when it interacts with files or makes network connections.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The provided suggestions serve as a starting point for configuring the &lt;code&gt;base_syscalls.custom_set&lt;/code&gt; according to users' specific monitoring needs. It is crucial to assess these suggestions within the context of individual use cases and make appropriate adjustments.&lt;/p&gt;
&lt;p&gt;By adhering to these recommendations and carefully fine-tuning the syscall selection, users can achieve optimal performance, minimize resource utilization and possible kernel side event drops, and maintain precise monitoring and detection of potential security threats with Falco. Tailoring the syscall selection aligns Falco with the unique requirements of the environment, enhancing its effectiveness in threat detection.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;a target="_blank" href="images/adaptive-syscalls-selection-04.png"&gt;
&lt;img style="border: 2px solid #00b4c8"
alt="Falco's Kernel Event Monitoring Flow"
src="images/adaptive-syscalls-selection-04.png"&gt;
&lt;/img&gt;
&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;For further information, please refer to the Falco configuration file and navigate to the new &lt;code&gt;base_syscalls&lt;/code&gt; option: &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;https://github.com/falcosecurity/falco/blob/master/falco.yaml&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;If all of this sounds confusing or unclear, the best way to gain a deeper understanding of this new feature is through hands-on experimentation. By actively exploring and testing the feature, you can observe firsthand how it can enhance the performance of your deployment.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Also, you can test it live in this interactive environment that we have prepared for you.&lt;/p&gt;
&lt;p&gt;Click on it to start playing with it 🎮&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://play.instruqt.com/embed/sysdig/tracks/falco-adaptive-syscalls?token=em_ng2XK3hUZCl4VnTm&amp;icp_embed_source=blog-falco-adaptive-syscall&amp;icp_owner=oss"&gt;&lt;img src="images/adaptive-syscalls-selection-lab.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you wish to examine the final set of syscalls that will be used by Falco on your own envinronment, you can print them to the STDOUT by including the &lt;code&gt;-o &amp;quot;log_level=debug&amp;quot; -o &amp;quot;log_stderr=true&amp;quot; --dry-run&lt;/code&gt; args during a dry run of Falco. By utilizing this option, you can gain valuable insights into the selected syscalls, aiding in troubleshooting and verifying the configuration.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;❯ falco -o &amp;#34;log_level=debug&amp;#34; -o &amp;#34;log_stderr=true&amp;#34; --dry-run
Tue May 30 14:01:27 2023: Falco version: 0.35.0-alpha5 (x86_64)
Tue May 30 14:01:27 2023: CLI args: falco -o log_level=debug -o log_stderr=true --dry-run
Tue May 30 14:01:27 2023: Falco initialized with configuration file: /etc/falco/falco.yaml
Tue May 30 14:01:27 2023: Configured rules filenames:
Tue May 30 14:01:27 2023: /etc/falco/falco_rules.yaml
Tue May 30 14:01:27 2023: /etc/falco/falco_rules.local.yaml
Tue May 30 14:01:27 2023: /etc/falco/rules.d
Tue May 30 14:01:27 2023: Loading rules from file /etc/falco/falco_rules.yaml
Tue May 30 14:01:27 2023: Loading rules from file /etc/falco/falco_rules.local.yaml
Tue May 30 14:01:27 2023: Skipping daemonizing in dry-run
Tue May 30 14:01:27 2023: Skipping signal handlers creation in dry-run
Tue May 30 14:01:27 2023: Skipping daemonizing in dry-run
Tue May 30 14:01:27 2023: Setting metadata download max size to 100 MB
Tue May 30 14:01:27 2023: Setting metadata download chunk wait time to 1000 μs
Tue May 30 14:01:27 2023: Setting metadata download watch frequency to 1 seconds
Tue May 30 14:01:27 2023: Skipping clients initialization in dry-run
Tue May 30 14:01:27 2023: (32) syscalls in rules: accept, accept4, connect, creat, dup, dup2, dup3, execve, execveat, link, linkat, listen, mkdir, mkdirat, open, openat, openat2, ptrace, recvfrom, rename, renameat, renameat2, rmdir, sendmsg, sendto, setuid, socket, symlink, symlinkat, unlink, unlinkat, userfaultfd
Tue May 30 14:01:27 2023: +(40) syscalls (Falco&amp;#39;s state engine set of syscalls): bind, capset, chdir, chroot, clone, clone3, close, epoll_create, epoll_create1, eventfd, eventfd2, fchdir, fcntl, fork, getsockopt, inotify_init, inotify_init1, io_uring_setup, mount, open_by_handle_at, pipe, pipe2, prctl, prlimit, procexit, recvmsg, setgid, setpgid, setresgid, setresuid, setrlimit, setsid, shutdown, signalfd, signalfd4, socketpair, timerfd_create, umount, umount2, vfork
Tue May 30 14:01:27 2023: (72) syscalls selected in total (final set): accept, accept4, bind, capset, chdir, chroot, clone, clone3, close, connect, creat, dup, dup2, dup3, epoll_create, epoll_create1, eventfd, eventfd2, execve, execveat, fchdir, fcntl, fork, getsockopt, inotify_init, inotify_init1, io_uring_setup, link, linkat, listen, mkdir, mkdirat, mount, open, open_by_handle_at, openat, openat2, pipe, pipe2, prctl, prlimit, procexit, ptrace, recvfrom, recvmsg, rename, renameat, renameat2, rmdir, sendmsg, sendto, setgid, setpgid, setresgid, setresuid, setrlimit, setsid, setuid, shutdown, signalfd, signalfd4, socket, socketpair, symlink, symlinkat, timerfd_create, umount, umount2, unlink, unlinkat, userfaultfd, vfork
Tue May 30 14:01:27 2023: The chosen syscall buffer dimension is: 8388608 bytes (8 MBs)
Tue May 30 14:01:27 2023: Skipping starting webserver in dry-run
Tue May 30 14:01:27 2023: Skipping event processing in dry-run
Tue May 30 14:01:27 2023: Skipping unregistering signal handlers in dry-run
Tue May 30 14:01:27 2023: Skipping stopping webserver in dry-run
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="refactors-involved"&gt;Refactors Involved&lt;/h2&gt;
&lt;p&gt;This section provides an overview of the underlying refactors that have enabled the implementation of the innovative adaptive syscall selection mechanisms in Falco.&lt;/p&gt;
&lt;h3 id="falco-s-ppm-sc-api"&gt;Falco's ppm sc API&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A new event set class has been introduced to support efficient set operations natively in the &lt;code&gt;ppm sc API&lt;/code&gt; in Falco's &lt;code&gt;libs&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Additional refinements in the &lt;code&gt;ppm sc API&lt;/code&gt; have resulted in robust mechanisms to accurately map syscall and other event strings from the loaded Falco rules to the &lt;code&gt;PPM_SC_*&lt;/code&gt; or &lt;code&gt;PPME_*&lt;/code&gt; enumerations.&lt;br&gt;
This enhancement was essential to overcome the challenges inherited from previous mapping processes and improve the efficiency and structure of event parsing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The initial separate enumeration for kernel tracepoints has been merged with the &lt;code&gt;PPM_SC_*&lt;/code&gt; codes (&lt;code&gt;sc&lt;/code&gt; now reflecting &lt;code&gt;scap codes&lt;/code&gt; instead of &lt;code&gt;syscall codes&lt;/code&gt; only), resulting in a single enumeration.&lt;/p&gt;
&lt;p&gt;This consolidation sets the groundwork for integrating future LSM (Linux Security Modules) hooks into Falco. By combining these codes, Falco achieves a seamless integration of tracepoint activations and syscall event handling within a unified framework.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="syscall-event-type-extraction-from-falco-s-rules-expression-language"&gt;Syscall Event Type Extraction from Falco's Rules Expression Language&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In order to extract the corresponding event types, Falco traverses the filter Abstract Syntax Tree (AST) of each rule. The traversal process has been improved for robustness and integrated with the modernized &lt;code&gt;ppm sc API&lt;/code&gt; by moving it to the underlying Falco &lt;code&gt;libs&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Additionally, traversals now include support for mapping the rules event strings to both the &lt;code&gt;PPM_SC_*&lt;/code&gt; and &lt;code&gt;PPME_*&lt;/code&gt; codes. These changes have allowed for the resolution of technical debt concerning the mapping of event strings to their respective syscall codes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Just to emphasize this once more: Falco now has the capability to support any syscall that is supported by its underlying libraries. This expansion of support allows Falco to monitor and analyze a wider range of syscalls for threat detection purposes (see Falco's &lt;a href="https://falcosecurity.github.io/libs/report/"&gt;supported syscalls&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="driver-syscall-push-down-filters"&gt;Driver Syscall Push Down Filters&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;After mapping the event strings from the rules to their corresponding syscall IDs, we utilize a dedicated eBPF map (in the case of &lt;code&gt;*bpf*&lt;/code&gt; drivers) or an internal bitmask using the ioctl API (in the case of kernel module) to inject this information into the &lt;code&gt;sys_enter&lt;/code&gt; and &lt;code&gt;sys_exit&lt;/code&gt; tracepoints within the driver.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Due to the triggering of the &lt;code&gt;sys_enter&lt;/code&gt; and &lt;code&gt;sys_exit&lt;/code&gt; kernel tracepoints for every syscall, our pushdown filter is designed to efficiently ignore unnecessary syscalls before any data field extraction takes place in our kernel drivers. Once again, Falco operates as a passive monitor of syscalls and does not exert any influence or modify the behavior of the syscalls being monitored.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Furthermore, the objective of kernel-side filtering is to minimize the number of events that need to be transferred to userspace via the buffer between kernel and userspace, as well as reduce the number of events that are processed and evaluated against Falco rules in userspace.&lt;br&gt;
This filtering allows us to achieve these efficiencies without sacrificing visibility, as the ignored syscalls are not utilized in Falco rules.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Spoiler alert:&lt;/em&gt; Imagine a monitoring experience where Falco adapts in real-time, intelligently adjusting its capabilities as needed. The &lt;code&gt;ppm sc API&lt;/code&gt; already allows you to dynamically enable or disable syscalls and tracepoints at runtime.&lt;br&gt;
This opens up exciting possibilities for the future of Falco. One day, we envision a truly adaptive monitoring system where Falco can supervise itself and automatically adjust the level of logging verbosity on the fly based on the system's needs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="userspace-libsinsp-state-engine"&gt;Userspace libsinsp State Engine&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;By efficiently extracting syscall codes from Falco rules strings, we no longer need a large hard-coded predetermined set of syscalls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;As mentioned previously, the remaining task involved enabling all the syscalls required for the libsinsp state that were not explicitly included in the Falco rules. This is where the new &lt;code&gt;base_syscalls&lt;/code&gt; configuration comes into play, providing end users with complete control over this process.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;With the &lt;code&gt;base_syscalls&lt;/code&gt; configuration, users can define and activate the necessary syscalls for the libsinsp state, ensuring comprehensive monitoring and threat detection capabilities.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="action-items-and-recommendations-for-adopters"&gt;Action Items and Recommendations for Adopters&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Review the updated &lt;code&gt;falco.yaml&lt;/code&gt; file for performance tuning configurations.&lt;/li&gt;
&lt;li&gt;Assess if performance optimizations are needed based on your threat model and budget. Adjust the &lt;code&gt;base_syscalls&lt;/code&gt; configuration accordingly.&lt;/li&gt;
&lt;li&gt;Gradually tailor the &lt;code&gt;base_syscalls&lt;/code&gt; configuration as needed, aiming to optimize resource utilization without compromising threat detection, if feasible.&lt;/li&gt;
&lt;li&gt;Experiment and measure changes in resource usage by utilizing the native Falco &lt;code&gt;metrics&lt;/code&gt; option.&lt;/li&gt;
&lt;li&gt;Enhance Falco rules with specific syscalls for increased robustness [see note 1].&lt;/li&gt;
&lt;li&gt;Official &lt;a href="https://falcosecurity.github.io/libs/report/"&gt;syscall string names&lt;/a&gt; in rules are now required.&lt;/li&gt;
&lt;li&gt;Explore new threat detection approaches with Falco's expanded syscall support.&lt;/li&gt;
&lt;li&gt;Stay updated on future releases for enhanced kernel monitoring capabilities.&lt;/li&gt;
&lt;/ol&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;One concrete example is the rule named &amp;quot;Linux Kernel Module Injection Detected.&amp;quot; Previously, this rule relied on monitoring spawned processes. However, with the broader syscall coverage, it is now possible to enhance the rule by focusing on specific syscalls such as &lt;code&gt;init_module&lt;/code&gt; and &lt;code&gt;finit_module&lt;/code&gt;, which are directly related to kernel module injection.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Blog: Falco 0.35.1</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-35-1/</link><pubDate>Thu, 29 Jun 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-35-1/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.35.1&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="novelties-and-fixes"&gt;Novelties 🆕 and Fixes&lt;/h2&gt;
&lt;p&gt;Here is a tiny patch release! It addresses some small bugs that will not bother us and our users anymore:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bug fix in the plugin framework, we can now associate a thread ID also to async events so that we can access related juicy information when writing rules! We suggest updating to this version to be able to use all the new capabilities that the new Plugin API has to offer!&lt;/li&gt;
&lt;li&gt;Modern BPF can now be used in least privileged mode without any trouble in COS&lt;/li&gt;
&lt;li&gt;Driver loader now correctly parses the kernel version of Ubuntu’s kernel flavors, and also supports Debian rt and cloud&lt;/li&gt;
&lt;li&gt;Solved a rule ordering problem on our default ruleset that caused some rules to be shadowed&lt;/li&gt;
&lt;li&gt;Updated falcoctl to the latest version, which fixes a corner cases that cause the tool to freeze&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.35.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;Do you rather prefer using the container images? 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-s-next"&gt;What's next 🔮&lt;/h2&gt;
&lt;p&gt;We are in the working to let new big things happen in Falco, stay tuned!&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;&lt;em&gt;Jason and Lorenzo&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Falco 0.35.0</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-35-0/</link><pubDate>Wed, 07 Jun 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-35-0/</guid><description>
&lt;p&gt;Dear Community, today we are delighted to announce the release of Falco 0.35.0!&lt;/p&gt;
&lt;p&gt;A big thank you to all our contributors for helping get the latest release out, we are thrilled to share this release and its goodies with the community. To read a detailed account of the release, see &lt;a href="https://github.com/falcosecurity/falco/blob/master/CHANGELOG.md#v0350"&gt;v0.35.0 in the changelog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During this release cycle, we had 90+ PRs on Falco and a grand total of 170+ PRs for libs 0.11.0 and 60+ for drivers 5.0.1. Thank you to our maintainers and contributors, as this would not happen without your support, dedication, and contribution!&lt;/p&gt;
&lt;h2 id="what-s-new-tl-dr"&gt;What's new? TL;DR 🩳&lt;/h2&gt;
&lt;p&gt;In release v0.35.0, we focused on addressing the following key features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Moving the modern eBPF probe out of experimental status&lt;/li&gt;
&lt;li&gt;Improving Falco performance, allowing tailoring syscall detection to one's needs&lt;/li&gt;
&lt;li&gt;New Falco metrics&lt;/li&gt;
&lt;li&gt;Falco images signing&lt;/li&gt;
&lt;li&gt;Improving plugins SDK&lt;/li&gt;
&lt;li&gt;Test infra revamp&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div style="position: relative; padding-bottom: 45%; height: 0; overflow: hidden;"&gt;
&lt;iframe src="https://www.youtube.com/embed/wGwXiYYUgAs" style="position: absolute; top: 0; left: 0; width: 80%; height: 100%; border:0;" allowfullscreen title="What&amp;#39;s New in Falco 0.35"&gt;&lt;/iframe&gt;
&lt;/div&gt;
For more information check out the 0.35 &lt;a href="https://www.youtube.com/watch?v=wGwXiYYUgAs"&gt;overview video&lt;/a&gt; on YouTube&lt;/p&gt;
&lt;h2 id="modern-ebpf-probe"&gt;Modern eBPF probe 👨‍🚀&lt;/h2&gt;
&lt;p&gt;The new, modern eBPF probe was released as experimental during the 0.34.0 release cycle. Since then we worked hard to implement all the remaining syscalls and behaviors, and now the same eBPF probe has left experimental status.&lt;/p&gt;
&lt;p&gt;The new eBPF probe is a CO-RE probe, which means it is already built into Falco, and you don't need any downloads. Moreover, it sports better performance compared to the old eBPF probe.&lt;/p&gt;
&lt;p&gt;Finally, while delivering the new eBPF probe, Andrea Terzolo also shipped a brand new driver testing framework, now used in libs CI to test consistency between all three drivers. This addition alone was worth the effort: on behalf of the whole community, thank you Andrea!&lt;/p&gt;
&lt;p&gt;The new probe has stricter kernel release requirements: for more info, check out our &lt;a href="https://falco.org/blog/falco-modern-bpf/"&gt;blog post&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="improved-falco-performance"&gt;Improved Falco performance&lt;/h2&gt;
&lt;p&gt;Thanks to the collaborative effort from Melissa Kilby, Jason Dellaluce, Andrea Terzolo and Federico Di Pierro, we were able to completely revamp the way that Falco detects syscalls that needs to be captured. With the new &lt;strong&gt;adaptive syscalls&lt;/strong&gt; feature, Falco will only enable syscalls that are needed to detect the ruleset it is being run with. It will also enable a bunch of syscalls that are needed for &lt;em&gt;libsinsp&lt;/em&gt; internal state parsers, and that's it.&lt;/p&gt;
&lt;p&gt;Consequently, the &lt;code&gt;-A&lt;/code&gt; flag semantics have changed. By default, ie. without &lt;code&gt;-A&lt;/code&gt;, heavy syscalls (like I/O ones) won't be captured, even if the ruleset ships with them, and a warning is shown to the user. Using &lt;code&gt;-A&lt;/code&gt; will now allow Falco to capture even heavy syscalls, without showing a warning. A couple of new config keys are now available to further tailor Falco adaptive syscalls: a related blog post will be published soon, so stay tuned!&lt;/p&gt;
&lt;p&gt;One of the neatest things about this work is that the huge libs refactor it required lays the groundwork for another highly requested feature: LSM and kprobes support.&lt;/p&gt;
&lt;h2 id="falco-metrics"&gt;Falco metrics&lt;/h2&gt;
&lt;p&gt;Thanks to yet another collaborative effort led by Melissa, Falco has a new experimental &lt;code&gt;metrics&lt;/code&gt; feature. This introduces a redesigned stats/metrics system, emitted as monotonic counters at predefined intervals (Prometheus-like).&lt;/p&gt;
&lt;p&gt;There are multiple options available: one can enable the output of these metrics as internal metric snapshot rule, allowing them to be emitted as outputs. Or you can choose to output metrics to a file, that is &lt;strong&gt;not&lt;/strong&gt; rotated by Falco. Moreover, there are options to enable CPU and memory usage metrics, internal kernel event counters and &lt;em&gt;libbpf&lt;/em&gt; stats.&lt;/p&gt;
&lt;p&gt;This is a great first step to improve Falco resource observability!&lt;/p&gt;
&lt;h2 id="falco-images-signing"&gt;Falco images signing&lt;/h2&gt;
&lt;p&gt;Starting from 0.35.0, all Falco images that you can deploy in your cluster are now signed with &lt;a href="https://github.com/sigstore/cosign"&gt;cosign 2.0&lt;/a&gt; in keyless mode.&lt;br&gt;
This means that you can always verify that the Falco image you downloaded is an official Falco image, regardless of which registry you downloaded it from. Moreover, you don't have to install or explicitly trust any public key for it to work. This is the magic of cosign in action!&lt;/p&gt;
&lt;p&gt;So, how do you verify our brand new images? Install cosign 2 and run:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cosign verify docker.io/falcosecurity/falco:0.35.0 \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-identity-regexp=https://github.com/falcosecurity/falco/ \
--certificate-github-workflow-ref=refs/tags/0.35.0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Of course, you can do the same for all the deployable images including &lt;code&gt;falco&lt;/code&gt;, &lt;code&gt;falco-driver-loader&lt;/code&gt;, &lt;code&gt;falco-no-driver&lt;/code&gt; and &lt;code&gt;falcoctl&lt;/code&gt; (see its &lt;a href="https://github.com/falcosecurity/falcoctl"&gt;repo&lt;/a&gt; for more details).&lt;/p&gt;
&lt;p&gt;This wouldn't have been possible without a big effort from Luca Guerra and Federico Di Pierro to migrate our entire release pipeline from CircleCI to GitHub Actions. The work is part of a larger effort from the Falco Supply Chain Working Group to bring all the Falco official artifacts up to date with the latest supply chain security standards. Special thanks to Massimiliano Giovagnoli, Batuhan Apaydın and Carlos Panato for your help and expertise in this area!&lt;/p&gt;
&lt;h2 id="plugins-workstream"&gt;Plugins workstream&lt;/h2&gt;
&lt;p&gt;The Plugin API has seen quite a few big improvements, mainly from Jason.&lt;/p&gt;
&lt;p&gt;The first big change is that the plugin framework is now totally compatible with all the events supported by the Falco libraries, including all system calls and kernel events. The plugin API now shares all the event definitions of &lt;em&gt;libscap&lt;/em&gt; and allows plugins to both produce syscall events and extract fields from them. This feature has been in big demand since the first plugin system release (&lt;a href="https://github.com/falcosecurity/libs/issues/410"&gt;#410&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/libs/issues/992"&gt;#992&lt;/a&gt;), and opens the door to many new opportunities for Falco extensions.&lt;/p&gt;
&lt;p&gt;Second, plugins now have a standard way for managing and maintaining internal state. Up until now, plugins were only able to extract fields from the information available in the payloads of each event, thus being stateless components by definition. Now, plugins have a defined protocol (&lt;a href="https://github.com/falcosecurity/libs/issues/991"&gt;#991&lt;/a&gt;) for hooking into the event stream, reconstructing an internal state, and using it for extracting fields for Falco rules. Also, plugins can inject asynchronous metadata events in open data streams to notify about state transitions and make them reproduceable when replaying capture files, just like has always happened with container-related events in the Falco libraries.&lt;/p&gt;
&lt;p&gt;Lastly, plugins are now able to communicate bidirectionally with the Falco libraries and access their internal state, both in read and write modes. For example, this enables creating plugins that extract metadata fields from syscall event streams, and that have access to all the thread information reconstructed by &lt;em&gt;libsinsp&lt;/em&gt;, with the opportunity of enriching it dynamically at runtime. The API surface also allows cross-plugin state access. We hope the developer community will appreciate the new power this offers plugin authors.&lt;/p&gt;
&lt;p&gt;This big feature package required altering the plugin API in a way that is &lt;strong&gt;incompatible&lt;/strong&gt; with the previous versions (the API major version has been bumped). As such, plugins released after Falco version 0.35 will not be compatible with Falco versions &amp;lt;= 0.34.1, and plugins released before version 0.35 will not be compatible with Falco from version 0.35 onwards. So, the &lt;strong&gt;action required&lt;/strong&gt; for you is to &lt;strong&gt;remember to also update all your plugins to the latest versions when updating Falco to v0.35&lt;/strong&gt;!&lt;/p&gt;
&lt;h2 id="test-infra-revamp"&gt;Test-infra revamp&lt;/h2&gt;
&lt;p&gt;Massimiliamo Giovagnoli and Samuele Cappellin have contributed tremendous work on improving our infra. Prow is now lighter, quicker and less issue-prone. Multiple prow jobs were moved to GitHub Actions to improve cluster efficiency; moreover, driver-building jobs are now much less frequently killed (basically never).&lt;/p&gt;
&lt;p&gt;Also, arm64 drivers are now built on arm64 nodes, without using &lt;em&gt;qemu&lt;/em&gt;, speeding up the build time. At the same time, resources allocated to the cluster were enlarged, with autoscaling limits now set to 20 ARM nodes and 20 x86 nodes. We can now deliver weekly new driver artifacts much quicker than before!&lt;/p&gt;
&lt;p&gt;Finally, the cluster now exposes Grafana dashboards for monitoring purposes: &lt;a href="https://monitoring.prow.falco.org/"&gt;https://monitoring.prow.falco.org/&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="try-it-out"&gt;Try it out&lt;/h2&gt;
&lt;p&gt;It’s time to try out the new release! Here are some pointers for getting started with Falco:&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-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;We will revisit and improve &lt;em&gt;libsinsp&lt;/em&gt; API, for a more coherent developer experience.&lt;/li&gt;
&lt;li&gt;Finally, the long-awaited LSM and kprobes will be implemented.&lt;/li&gt;
&lt;li&gt;As the plugin API has seen huge improvements, we expect new plugins using the new features very soon.&lt;/li&gt;
&lt;li&gt;Fixes, fixes and also fixes everywhere&lt;/li&gt;
&lt;li&gt;Above all, we will work to improve thread tables and process trees inconsistencies; that's a huge topic and we plan to tackle it in multiple ways!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="stay-tuned"&gt;Stay tuned 🤗&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Join us&lt;/strong&gt; in our communication channels and in our weekly community calls! It’s always great to have new members in the community, and we’re looking forward to having your feedback and hearing your 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;
&lt;p&gt;See you for the next release!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Federico, Andrea and Lorenzo&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Falco 0.34.1</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-34-1/</link><pubDate>Mon, 20 Feb 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-34-1/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.34.1&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="novelties-and-fixes"&gt;Novelties 🆕 and Fixes&lt;/h2&gt;
&lt;p&gt;Here's a minor update! This patch release addresses small but persistent issues that have been causing inconvenience for users:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;http_output&lt;/strong&gt; &lt;a href="https://github.com/falcosecurity/falco/issues/2274"&gt;not working&lt;/a&gt; as expected when the remote endpoint was using the HTTPS protocol;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FALCO_ENGINE_VERSION&lt;/strong&gt; was bumped since in &lt;strong&gt;Falco 0.34.0&lt;/strong&gt; new event fields were added for the &lt;strong&gt;process&lt;/strong&gt; events;&lt;/li&gt;
&lt;li&gt;cleanups and fixes related to memory management were introduced in &lt;strong&gt;libs&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;avoid file descriptor leakage when checking for online CPUs in &lt;strong&gt;libpman&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.34.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;Do you rather prefer using the container images? 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-s-next"&gt;What's next 🔮&lt;/h2&gt;
&lt;p&gt;It's an exciting time for Falco as we see so many great improvements and features. What's more exciting is the fact that many great ideas and awesome work are going on to make the next big things happen.&lt;/p&gt;
&lt;p&gt;The upcoming release will include complete syscall support in the modern BPF probe (feature parity with kernel module and current BPF probe) and introduce &lt;strong&gt;adaptive&lt;/strong&gt; syscall selection for the Falco ruleset.&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&lt;/p&gt;</description></item><item><title>Blog: Falco 0.34.0 a.k.a. "The Honeybee 🍯"</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-34-0/</link><pubDate>Tue, 07 Feb 2023 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-34-0/</guid><description>
&lt;p&gt;Dear community, today we are delighted to announce the release of Falco 0.34.0 🎉!&lt;/p&gt;
&lt;p&gt;A big thank you to the community for helping get the latest release out. The Falco community is thrilled about this release and cannot wait to share the latest goodies. Check out the newest features from this most recent launch to learn more ⬇️. To read a more detailed account of the release, see &lt;a href="https://github.com/falcosecurity/falco/blob/master/CHANGELOG.md#v0340"&gt;v0.34.0 in the changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="what-s-new"&gt;What’s new? 🆕&lt;/h2&gt;
&lt;p&gt;In this release we saw more than 190 pull requests across the repos of Falco and its libraries. Thank you to our maintainers and contributors, as this would not happen without your support, dedication, and contribution.&lt;/p&gt;
&lt;h2 id="updates-tl-dr"&gt;Updates - TL;DR 🩳&lt;/h2&gt;
&lt;p&gt;In release v0.34.0 the community focused on addressing the following key features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Downloading and dynamically updating Falco rules at runtime&lt;/li&gt;
&lt;li&gt;Shipping the brand new experimental modern eBPF probe&lt;/li&gt;
&lt;li&gt;Designing more ways to catch suspicious executions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="automatic-rules-update"&gt;Automatic rules update 🔄&lt;/h2&gt;
&lt;p&gt;A few questions that often come up when using Falco is how can we update rules once Falco is installed in the cluster and, how do we get updated rules from the Falco organization without having to wait for the next release? This is the first release to include &lt;a href="https://github.com/falcosecurity/falcoctl"&gt;falcoctl&lt;/a&gt; with an out of the box solution to do exactly that!&lt;/p&gt;
&lt;p&gt;When using the new Falco Helm Chart 3.0.0 rules will automatically be updated from the official repository. To learn more about this feature and how to configure it read &lt;a href="https://github.com/falcosecurity/charts/blob/master/falco/README.md#about-falco-artifacts"&gt;the Helm chart documentation&lt;/a&gt;. Likewise, when using a SystemD based install you can &lt;a href="https://falco.org/docs/getting-started/installation/#falco-packages"&gt;configure Falco&lt;/a&gt; to automatically update rules.&lt;/p&gt;
&lt;p&gt;Want to upgrade to the new Helm chart? Read &lt;a href="https://github.com/falcosecurity/charts/blob/master/falco/BREAKING-CHANGES.md#300"&gt;all you need to know&lt;/a&gt; before you do so!&lt;/p&gt;
&lt;h2 id="modern-ebpf-probe"&gt;Modern eBPF probe 👨‍🚀&lt;/h2&gt;
&lt;p&gt;Last quarter, Andrea published the blog, “&lt;a href="https://falco.org/blog/falco-modern-bpf/"&gt;Getting started with modern BPF probe in Falco&lt;/a&gt;,” and announced that the new experimental eBPF probe had landed among us bringing with it a few key features: &lt;a href="https://falco.org/blog/falco-modern-bpf/#co-re-paradigm"&gt;CO-RE paradigm&lt;/a&gt;, &lt;a href="https://falco.org/blog/falco-modern-bpf/#bpf-ring-buffer-map"&gt;BPF Ring Buffer map&lt;/a&gt;, &lt;a href="https://falco.org/blog/falco-modern-bpf/#btf-enabled-program"&gt;BTF-enabled program&lt;/a&gt;, &lt;a href="https://falco.org/blog/falco-modern-bpf/#bpf-global-variables"&gt;BPF global variables&lt;/a&gt;, &lt;a href="https://falco.org/blog/falco-modern-bpf/#btf-enabled-program"&gt;BPF skeleton&lt;/a&gt;, and finally &lt;a href="https://falco.org/blog/falco-modern-bpf/#multi-arch-support"&gt;Multi-arch support&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="why-a-new-probe"&gt;Why a new probe? 👽&lt;/h3&gt;
&lt;p&gt;The old probe supported old kernels (&amp;gt;=4.14) that can not take advantage of the new shiny eBPF features. While it would be great to have only one probe that works for every kernel version, recent features change (and simplify!) the way we write, maintain and deploy the code so deeply that a new fresh probe is the most reasonable solution. In order to leverage these recent eBPF improvements and use the new probe you will need a kernel version &amp;gt;= 5.8.&lt;/p&gt;
&lt;h3 id="modern-ebpf-in-action"&gt;Modern eBPF in action 🎬&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://falco.org/docs/event-sources/drivers/#modern-ebpf-probe-experimental"&gt;Try it now&lt;/a&gt;!&lt;/p&gt;
&lt;h3 id="shiny-new-ebpf-features"&gt;Shiny new eBPF features ✨&lt;/h3&gt;
&lt;p&gt;Why are Falco maintainers and community members excited about the modern eBPF probe? There are quite a few features that you might be interested in! Some of our favorites are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://falco.org/blog/falco-modern-bpf/#co-re-paradigm"&gt;CO-RE paradigm&lt;/a&gt; - stands for &amp;quot;Compile-once-run-everywhere&amp;quot;, so as you may imagine, this paradigm allows compiling the eBPF probe just once for all kernels! You understood well: NO MORE MISSING DRIVERS, and no more painful local builds requiring the much-loved &lt;strong&gt;KERNEL HEADERS&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://falco.org/blog/falco-modern-bpf/#multi-arch-support"&gt;Multi-arch support&lt;/a&gt; - the modern BPF probe also supports multiple architectures by design. The actual targets for Falco are x86_64 and arm64 but new ones can be added at any time. If you have a project that needs BPF instrumentation for one of these architectures you could simply link the Falco libraries (libsinsp, libscap) to obtain a working solution out of the box.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Performance Improvements&lt;/strong&gt; - the modern eBPF probe leverages features recently introduced in the Linux kernel such as BPF global variables and ring buffers to be faster and more efficient than the traditional eBPF probe!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="even-more-ways-of-catching-suspicious-executions"&gt;Even more ways of catching suspicious executions 🕵️‍♀️&lt;/h2&gt;
&lt;p&gt;&lt;img src="images/detection_new_executable_container.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Detecting when a suspicious new executable is spawned is often considered a crucial baseline detection. Generally speaking, detecting this kind of behavior and understanding when it is malicious is not an easy task. For this reason Falco has not one, but several features that can help defenders craft appropriate rules for their workflows.&lt;/p&gt;
&lt;p&gt;Thanks to great contributions from Lorenzo Susini and Melissa Kilby (thanks for both the code contributions and the image above!) we have two more ways to check for suspicious executions in our Falco rules as we have the following new fields tied to process spawn (execve) events:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;proc.is_exe_upper_layer&lt;/strong&gt;: which is true if the process’ executable is in the upper layer of the overlayfs. In practice, that means that the executable that is being launched has been introduced or modified in the container after it was started. While some applications might do this legitimately, in many cases it is a thing to watch out for because it might be signaling an attack in progress! Note that you can use this only on kernel versions greater or equal than 3.18.0, since overlayfs did not exist before then, and of course with container runtimes that make use of it as a union mount filesystem 😉. This flag complements proc.is_exe_writable, which is similar but only checks if the executable file is also writable by the same user that spawned it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don’t think this is enough? Do you think you need more flags to get more accurate detections? Here’s the second group of fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;proc.exe_ino.ctime&lt;/strong&gt; and &lt;strong&gt;proc.exe_ino.mtime&lt;/strong&gt;: they show the last change time and modification time of the process’ executable file, respectively.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;proc.exe_ino.ctime_duration_proc_start&lt;/strong&gt; and &lt;strong&gt;proc.exe_ino.ctime_duration_pidns_start&lt;/strong&gt;: demonstrates the time difference, in nanoseconds, between the process ctime and when the process was actually spawned or when the PID namespace was created, respectively. I’m sure you can see why you could be interested in that. Launching executables that were just created could be something that you want to know about 😁.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While the above signals won't replace the need to monitor file operation events, they can help reduce the search space for tracking spawned processes where for example chmod +x was run against the executable file on disk prior to execution (this causes ctime of inode to change, but we don't know if it was chmod related or a different status change operation). In addition, users could use these fields for selected rules to augment information available for incident response.&lt;/p&gt;
&lt;h2 id="artifact-distribution"&gt;Artifact distribution 📜&lt;/h2&gt;
&lt;p&gt;Automatic rules updates and other upcoming features would not be possible without a proposal aimed to create a unified management of the distribution of artifacts. The overall goals for this are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allow users to consume artifacts in a consistent way&lt;/li&gt;
&lt;li&gt;Define official artifacts&lt;/li&gt;
&lt;li&gt;Unify distribution mechanism, infrastructure, and tooling&lt;/li&gt;
&lt;li&gt;Provide generic guidelines applicable to any artifact that is distributed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The officially supported artifacts are a set of artifacts published by Falcosecurity and now are part of Falco and its ecosystem. Prior to release 0.34.0 the Falcosecurity organization distributed several kinds of artifacts in the form of files or container images, which included:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installation packages&lt;/li&gt;
&lt;li&gt;Helm charts&lt;/li&gt;
&lt;li&gt;Drivers (eg, kmod, eBPF)&lt;/li&gt;
&lt;li&gt;Rule files&lt;/li&gt;
&lt;li&gt;Plugins&lt;/li&gt;
&lt;li&gt;Other kinds may be added in the future.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, the new distribution channels include HTTP Distribution and &lt;strong&gt;OCI Distribution&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="what-we-accomplished"&gt;What we accomplished ✅&lt;/h3&gt;
&lt;h4 id="falco-rules-have-their-own-repo-now"&gt;Falco rules have their own repo now 🏠&lt;/h4&gt;
&lt;p&gt;The benefits of having rules living in their repository are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dedicated versioning&lt;/li&gt;
&lt;li&gt;Rules release will not be tied anymore to a Falco release (e.g., no need to wait for the scheduled Falco release to publish a new rule aiming to detect the latest published CVE)&lt;/li&gt;
&lt;li&gt;Consistent installation and update mechanism for other rulesets (plugins rules are already published in their repository and can be consumed by falcoctl)&lt;/li&gt;
&lt;li&gt;Rules are published as plain files as well as OCI artifacts at each release&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check it out: &lt;a href="https://github.com/falcosecurity/rules"&gt;https://github.com/falcosecurity/rules&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="falcoctl-is-official"&gt;Falcoctl is official 😎&lt;/h4&gt;
&lt;p&gt;The falcoctl project was promoted to &amp;quot;Official&amp;quot; status, and its repository is now part of the &lt;a href="https://github.com/falcosecurity/evolution/blob/main/GOVERNANCE.md#core-repositories"&gt;core&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="what-s-next"&gt;What's Next? 🔮&lt;/h2&gt;
&lt;p&gt;It’s time to try out the new release! Here are some pointers for getting started with Falco:&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;p&gt;The community is active on many things and there is no shortage of great ideas for next releases!&lt;/p&gt;
&lt;p&gt;Thanks to all the people who wrote and tried plugins, we have great feedback for the next version. If you are a plugin developer or user, stay tuned for more APIs and functionality!&lt;/p&gt;
&lt;p&gt;The modern eBPF probe is awesome and we want to keep improving it to get it out of the experimental stage 🚀&lt;/p&gt;
&lt;p&gt;Falco maintainers also care a lot about the project’s own security. We’re exploring security-related considerations in the Falco Supply Chain Security Working Group. &lt;a href="https://hackmd.io/FwSPVkdHT0i8T4Q8JdfOaw"&gt;Join us&lt;/a&gt; if you can't wait to know more about this.&lt;/p&gt;
&lt;h2 id="stay-tuned"&gt;Stay Tuned 🤗&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Join us&lt;/strong&gt; in our communication channels and in our weekly community calls! It’s always great to have new members in the community and we’re looking forward to having your feedback and hearing your 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;
&lt;p&gt;Till the next release! 👋&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Luca, Andrea, Teryl and Jacque&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Falco on AWS Cloud</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-on-aws/</link><pubDate>Wed, 30 Nov 2022 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-on-aws/</guid><description>
&lt;p&gt;It's Amazon Web Services' largest user conference this week, &lt;a href="https://reinvent.awsevents.com/"&gt;re:Invent&lt;/a&gt;, which is a good time to highlight the ways you can use Falco in the AWS Cloud for runtime security. In this article we'll review what's new, and take a look at installation, plugins, and integrations for AWS.&lt;/p&gt;
&lt;h2 id="support-for-amazon-security-lake"&gt;Support for Amazon Security Lake&lt;/h2&gt;
&lt;p&gt;We're pleased to announce that Falcosidekick will shortly be available with preview integration for &lt;a href="https://aws.amazon.com/security-lake/"&gt;Amazon Security Lake&lt;/a&gt;, a new service that optimizes and centralizes security data from cloud, on-premises, and custom sources into a purpose-built data lake.&lt;/p&gt;
&lt;p&gt;Falcosidekick is designed to forward Falco events into other services: the new integration exports security events using the &lt;a href="https://schema.ocsf.io"&gt;Open Cybersecurity Schema Framework&lt;/a&gt; (OCSF) format, an open industry standard, and sends them directly to Amazon Security Lake. This makes it easier to normalize and combine Falco events with other security data sources. You can check out the integration in the next version of Falcosidekick, 2.27.0.&lt;/p&gt;
&lt;h2 id="installation-and-drivers"&gt;Installation and drivers&lt;/h2&gt;
&lt;p&gt;You can find Falco and Falcosidekick as container images through the Amazon ECR Registry:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falco"&gt;Falco&lt;/a&gt; image.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gallery.ecr.aws/falcosecurity/falcosidekick"&gt;Falcosidekick&lt;/a&gt; image.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, the Falco project publishes pre-built driver modules for AWS kernels, whether you are using the kernel module driver or the eBPF probe. These can be fetched using &lt;code&gt;falco-driver-loader&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Review the available drivers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://download.falco.org/driver/site/index.html?lib=3.0.1%2Bdriver&amp;amp;target=all&amp;amp;arch=all&amp;amp;kind=ebpf&amp;amp;search=amazon"&gt;eBPF probes for AWS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://download.falco.org/driver/site/index.html?lib=3.0.1%2Bdriver&amp;amp;target=all&amp;amp;arch=all&amp;amp;kind=kmod&amp;amp;search=amazon"&gt;Kernel modules for AWS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The prebuilt modules are available for both &lt;em&gt;x86_64&lt;/em&gt; and &lt;em&gt;aarch64&lt;/em&gt; architectures.&lt;/p&gt;
&lt;h2 id="plugins"&gt;Plugins&lt;/h2&gt;
&lt;p&gt;Falco plugins let you use event sources other than kernel syscalls. Falco has two plugins specific to AWS.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;a href="https://falco.org/docs/event-sources/cloudtrail/"&gt;CloudTrail plugin&lt;/a&gt; can read AWS CloudTrail logs and emit events for each CloudTrail log entry. It includes out-of-the-box rules that can be used to identify potential threats in CloudTrail logs, including:
&lt;ul&gt;
&lt;li&gt;Console logins that do not use multi-factor authentication.&lt;/li&gt;
&lt;li&gt;Disabling multi-factor authentication for users.&lt;/li&gt;
&lt;li&gt;Disabling encryption for S3 buckets.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Falco has extended its capability to read Kubernetes audit logs through a &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/k8saudit-eks"&gt;plugin for CloudWatch&lt;/a&gt;, where it can read the EKS audit logs. &lt;a href="https://falco.org/blog/k8saudit-eks-plugin/"&gt;Read more about configuration and usage&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="falcosidekick-integrations"&gt;Falcosidekick integrations&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;Falcosidekick&lt;/a&gt; lets you forward events from Falco into a variety of different services, including many on AWS.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cloudwatch Logs: emit events into a CloudWatch log stream.&lt;/li&gt;
&lt;li&gt;S3: add events in JSON format to an S3 bucket.&lt;/li&gt;
&lt;li&gt;Lambda: invoke a Lambda function in response to a Falco event.&lt;/li&gt;
&lt;li&gt;SQS: send a message into an SQS queue.&lt;/li&gt;
&lt;li&gt;SNS: create a push notification to apps or people.&lt;/li&gt;
&lt;li&gt;Kinesis: send Falco events as streaming data.&lt;/li&gt;
&lt;li&gt;Amazon Security Lake: add Falco events to a security data lake.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Falco offers a wide variety of support for runtime security on the AWS cloud. As we are an open source project, we welcome contributions and feedback! Read more about running Falco on AWS from this AWS Security blog post, &lt;a href="https://aws.amazon.com/blogs/security/continuous-runtime-security-monitoring-with-aws-security-hub-and-falco/"&gt;Continuous runtime security monitoring with AWS Security Hub and Falco&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can find us in the &lt;a href="https://github.com/falcosecurity/community"&gt;Falco community&lt;/a&gt;. Please feel free to reach out to us for any questions, suggestions, or even for a friendly chat!&lt;/p&gt;
&lt;p&gt;If you would like to find out more about Falco:&lt;/p&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/falco"&gt;Falco project in 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: Falco 0.33.1</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-33-1/</link><pubDate>Thu, 24 Nov 2022 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-33-1/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.33.1&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="novelties-and-fixes"&gt;Novelties 🆕 and Fixes 🐛&lt;/h2&gt;
&lt;p&gt;Here's a tiny patch release! It only fixes two bugs reported by the community:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CrashLoopBackOff in some cases when the gVisor integration is enabled on Kubernetes (reported on Minikube and some versions of GKE)&lt;/li&gt;
&lt;li&gt;Crash when the eBPF probe is used and one or more CPUs are switched off. Thanks &lt;a href="https://github.com/FedeDP"&gt;FedeDP&lt;/a&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone who reported and worked on issues!&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.33.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;Do you rather prefer using the container images? 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-s-next"&gt;What's next 🔮&lt;/h2&gt;
&lt;p&gt;So many great things are happening in the Falco community right now. After meeting our friends at KubeCon NA, we're back at work with new features for the upcoming 0.34.0 release coming early 2023 with an unbelievable amount of work being done in the new eBPF probe, enhancements to &lt;a href="https://github.com/falcosecurity/falcoctl"&gt;falcoctl&lt;/a&gt; to make management of rules and plugins easier and much more!&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;Enjoy 🎉&lt;/p&gt;
&lt;p&gt;Luca&lt;/p&gt;</description></item><item><title>Blog: Falco 0.33.0 a.k.a. "the pumpkin release 🎃"</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-33-0/</link><pubDate>Wed, 19 Oct 2022 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-33-0/</guid><description>
&lt;p&gt;Dear community, today we are happy to announce the release of Falco 0.33.0 🎉!&lt;/p&gt;
&lt;p&gt;A big thank you to the community for helping get the latest release over the finish line. The Falco community rallied behind this release and we wanted to share some of the latest novelties you’ll find in this most recent launch. To read a more detailed account of the release, check out &lt;a href="https://github.com/falcosecurity/falco/releases/tag/0.33.0"&gt;v0.33.0 in the changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="what-s-new"&gt;What’s New? 🗞️&lt;/h2&gt;
&lt;p&gt;In this release we saw &lt;strong&gt;more than 160 pull requests&lt;/strong&gt; across the repos of Falco and the libraries. We had a total of &lt;strong&gt;20+ individual contributors&lt;/strong&gt;. We’d like to give a special shout-out to &lt;a href="https://github.com/Andreagit97"&gt;Andrea Terzolo&lt;/a&gt; and &lt;a href="https://github.com/incertum"&gt;Melissa Kilby&lt;/a&gt; for standing out as two of the most high-impact contributors for this release.&lt;/p&gt;
&lt;p&gt;The project really seems to be more alive than ever! Thank you to our maintainers and contributors, as this would not happen without your support.&lt;/p&gt;
&lt;h2 id="updates-tldr"&gt;Updates - TLDR; 🚀&lt;/h2&gt;
&lt;p&gt;In release &lt;em&gt;v0.33.0&lt;/em&gt; the community focused on addressing the following updates &amp;amp; changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Libs now allow individual selection of which syscalls to collect during live captures, which helps Falco improve performance and reduce dropped events&lt;/li&gt;
&lt;li&gt;Introduced the &lt;a href="https://github.com/falcosecurity/kernel-crawler"&gt;Kernel Crawler&lt;/a&gt;, a new tool that automatically identifies the most up to date kernel versions supported by popular distros&lt;/li&gt;
&lt;li&gt;Syscall kernel ring-buffer size is now customizable for your environment needs&lt;/li&gt;
&lt;li&gt;Mitigations for libsinsp’s Kubernetes metadata client to address recent issues that caused Falco to crash&lt;/li&gt;
&lt;li&gt;Support for multiple simultaneous event sources, which means that you can now run multiple event sources in the same Falco instance&lt;/li&gt;
&lt;li&gt;Added minikube as a supported platform in the driver loader and included it in our driver build matrix&lt;/li&gt;
&lt;li&gt;Rule alert rate limiter is now optional and disabled at default&lt;/li&gt;
&lt;li&gt;Support for two new syscalls and many improvements to the default Falco security ruleset&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="selecting-interesting-syscalls"&gt;Selecting Interesting Syscalls ⚙️&lt;/h3&gt;
&lt;p&gt;A historical challenge when using Falco with a large system was to keep up with large amounts of kernel events. In the past, this was mitigated by what used to be called “&lt;em&gt;simple consumer mode&lt;/em&gt;”, through which Falco discarded kernel events that were not useful for runtime security purposes. However, we lacked support for individually selecting which syscalls had to be collected and which to discard. This feature has been requested by the community for a while, as it is a great bonus point for both Falco and all other projects based on top of the Falco libraries. In this release, we refactored the whole system and introduced new &lt;em&gt;libsinsp&lt;/em&gt; APIs that allow to individually &lt;strong&gt;select which syscalls and tracepoint events&lt;/strong&gt; need to be instrumented for collection in the kernel. Now, Falco has higher control over collected security events, and is able to improve performance and reduce the amount of dropped events. At the same time, other projects can easily &lt;strong&gt;consume only the events they need&lt;/strong&gt; without any additional instrumentation overhead.&lt;/p&gt;
&lt;h3 id="kernel-crawler"&gt;Kernel Crawler 🔍&lt;/h3&gt;
&lt;p&gt;When deploying Falco, one of the biggest challenges has been to compile its drivers (kernel module or eBPF probe) for the specific kernel versions and customization you wish to instrument. To help our community, the Falco project has created prebuilt kernel modules and eBPF probes for widely-adopted distros and kernel versions. We have also provided a &amp;quot;&lt;em&gt;driver loader&lt;/em&gt;&amp;quot; script that takes care of downloading and installing them before attempting local compilation. The build matrix has so far been constructed manually depending on the community demand and contributions, which makes it very hard to keep up with the most recent kernel versions.&lt;/p&gt;
&lt;p&gt;Recently, the &lt;a href="https://github.com/falcosecurity/kernel-crawler"&gt;Kernel Crawler&lt;/a&gt; joined the Falco ecosystem as a tool that automatically searches for the &lt;strong&gt;most up to date kernels&lt;/strong&gt; supported by multiple Linux distros (huge thanks to &lt;a href="https://github.com/FedeDP"&gt;Federico Di Pierro&lt;/a&gt; for leading the effort). This helped us to dramatically expand our driver build matrix, and keeps it up to date with the latest kernel versions supported by the most popular distros without the need of manual intervention. This is a major step forward for Falco’s adoption, which we now expect to grow even further. Moreover, the Kernel Crawler populates &lt;a href="https://falcosecurity.github.io/kernel-crawler"&gt;&lt;strong&gt;an open database&lt;/strong&gt;&lt;/a&gt; with all the information it collects. This is both a &lt;strong&gt;reference of the kernel versions&lt;/strong&gt; and the distros supported by Falco, and a useful source of information for communities working in the space of kernel instrumentation like we couldn’t find on the internet so far.&lt;/p&gt;
&lt;h3 id="customizing-the-syscall-kernel-ring-buffer-size"&gt;Customizing the Syscall Kernel Ring-Buffer Size 💍&lt;/h3&gt;
&lt;p&gt;The ring-buffer is the shared piece of memory between Falco and the drivers in which all kernel events are pushed upon collection for Falco to consume them. When Falco is not able to keep up with the high throughput of events pushed, the buffer becomes full and some events are inevitably dropped.&lt;/p&gt;
&lt;p&gt;Thanks to the great effort driven by Andrea Terzolo and Melissa Kilby, the syscall kernel ring-buffer &lt;strong&gt;size is now variable and configurable&lt;/strong&gt;. In some cases, tuning this size may lead to &lt;strong&gt;better performance&lt;/strong&gt; and &lt;strong&gt;less event drops&lt;/strong&gt; on certain machines and environments. If you’re interested, check out the discussion at &lt;a href="https://github.com/falcosecurity/libs/pull/584"&gt;falcosecurity/libs#584&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="mitigations-for-kubernetes-metadata-client"&gt;Mitigations for Kubernetes Metadata Client ☸️&lt;/h3&gt;
&lt;p&gt;Starting from June’s Falco release, we included minor fixes for the Kubernetes client bundled inside &lt;em&gt;libsinsp&lt;/em&gt;. This is the piece of code responsible for downloading metadata from your API server and populating fields in your security rules such as &lt;code&gt;k8s.deployment.name&lt;/code&gt;, &lt;code&gt;k8s.rc.name&lt;/code&gt;, etc. However, this causes Falco to receive too much data in certain situations, and to eventually crash. You can find more details in the following issue: &lt;a href="https://github.com/falcosecurity/falco/issues/1909"&gt;falcosecurity/falco#1909&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finding a stable and permanent solution is still being researched, as the problem of data overload has some intrinsic complexity. In this release, we introduced some short term solutions that prevent Falco from crashing in those scenarios by discarding useless information and handling errors gracefully. However, the big problem identified is that the Kubernetes cluster provides too much data, and we will keep looking for optimal solutions to this challenge in the future.&lt;/p&gt;
&lt;h3 id="running-multiple-simultaneous-event-sources"&gt;Running Multiple Simultaneous Event Sources 🚴&lt;/h3&gt;
&lt;p&gt;Wouldn’t it be nice if Falco could multi-task? Well, now it sorta can! We are delighted to announce that in this release Falco can now &lt;strong&gt;run multiple event sources in parallel&lt;/strong&gt;. What does this mean? Well, it means that you can run plugins &lt;em&gt;and&lt;/em&gt; syscall collections on the same Falco instance.&lt;/p&gt;
&lt;p&gt;Historically, Falco supported consuming events from one source only. The only exception was the legacy support of the Kubernetes Audit Events, which allowed receiving those events and kernel events simultaneously. However, it was non-standard and has been substituted in favor of a plugin-based solution starting from Falco 0.32.0. Up until now, this meant that to consume events from more than one event source, users needed to deploy many instances of Falco, each configured with a different source.&lt;/p&gt;
&lt;p&gt;This is a huge improvement and also &lt;strong&gt;brings back support for running syscall and k8s audit logs&lt;/strong&gt; in the same Falco instance, for all the folks who were interested in doing so. For insights about the principles and rationale behind this release, follow the discussion at &lt;a href="https://github.com/falcosecurity/falco/issues/2074"&gt;falcosecurity/falco#2074&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Please note that this feature introduces &lt;strong&gt;few user-facing changes&lt;/strong&gt; to be aware of when updating. The primary one is that the syscall event sources will always be enabled by default if not explicitly disabled. So, please make sure you pass &lt;code&gt;--disable-source=syscall&lt;/code&gt; to the Falco CLI if you’re interested in a plugin-only deployment! You can find more details in &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/event-sources/#configuring-event-sources"&gt;the documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="supporting-minikube-in-the-driver-loader"&gt;Supporting minikube in the Driver Loader 📥&lt;/h3&gt;
&lt;p&gt;We now offer new prebuilt drivers for the three most recent major version releases of minikube, which is a &lt;strong&gt;newly-supported platform&lt;/strong&gt; for the Falco driver loader.&lt;/p&gt;
&lt;p&gt;In general, it’s not possible to compile the Falco drivers locally when deploying on minikube, so in the past we needed to wait for a new minikube release to bundle the most recent Falco drivers. Thanks to the new Kernel Crawler, and great work carried out by &lt;a href="https://github.com/alacuku"&gt;Aldo Lacuku&lt;/a&gt;, our driver build grid now supports and auto-discovers the driver configurations for minikube and provides users with pre-built drivers to download with the driver loader. This &lt;strong&gt;reduces release delays&lt;/strong&gt; to the bare minimum, and running Falco on minikube has never been easier!&lt;/p&gt;
&lt;h3 id="disabling-alert-rate-limiter-at-default"&gt;Disabling Alert Rate Limiter at Default ❗&lt;/h3&gt;
&lt;p&gt;Falco provides a throttling mechanism for reducing the number of rule alerts, with the purpose of reducing noise in some environments. However, some users found concerns in this approach, as in the discussion at &lt;a href="https://github.com/falcosecurity/falco/issues/1333"&gt;falcosecurity/falco#1333&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Falco v0.33.0 makes the &lt;strong&gt;rate limiter optional&lt;/strong&gt;, and disables it in the default configuration, so that there is never a risk of discarding important alerts. At the same time, the feature is still present and configurable for everyone who needs to reduce Falco’s noise in their environment.&lt;/p&gt;
&lt;h3 id="updates-on-syscall-coverage-and-security-rules"&gt;Updates on Syscall Coverage and Security Rules 🛡️&lt;/h3&gt;
&lt;p&gt;Call and you shall receive! Okay, that’s not exactly how that saying goes, but we acknowledged the importance of instrumentation coverage and critical updates to syscalls. After all, the power of Falco’s runtime security lies in the visibility it has over the system it gets deployed into. With this new release, Falco supports the collection of two new syscalls to ensure we keep those pesky hackers away: &lt;code&gt;fsconfig&lt;/code&gt; and &lt;code&gt;mlock2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On top of that, there have been &lt;strong&gt;major updates&lt;/strong&gt; to the default set of security rules bundled in Falco.&lt;/p&gt;
&lt;p&gt;Since the last release, three new security rules have been added. Special thanks go to &lt;a href="https://github.com/hi120ki"&gt;hi120ki&lt;/a&gt; for having been very active in maintaining the security rules over the past few months, and much of his work will be part of the next Falco releases as well. For v0.33.0, the new rules are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Directory traversal monitored file read&lt;/strong&gt;: detects attacks based on directory traversal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modify Container Entrypoint&lt;/strong&gt;: detects attacks based on &lt;a href="https://github.com/advisories/GHSA-gxmr-w5mj-v8hh"&gt;CVE-2019-5736&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read environment variable from /proc files&lt;/strong&gt;: detects attempts to read process environment variables&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, existing rules have been updated to become &lt;strong&gt;less noisy&lt;/strong&gt; and &lt;strong&gt;more optimized&lt;/strong&gt;. Huge thanks to Melissa Kilby for taking the initiative to clean up the ruleset by disabling by default all the rules that were proved to never be triggered by Falco. This is a great step forward helping Falco be more performant by having fewer rules to evaluate at runtime.&lt;/p&gt;
&lt;h2 id="what-s-next"&gt;What's Next? 🔮&lt;/h2&gt;
&lt;p&gt;It’s time to try out the new release! Here are some pointers for getting started with Falco:&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;p&gt;But the party is far from being over! The community is preparing &lt;strong&gt;lots of exciting updates&lt;/strong&gt; for the near future. Special mention goes to &lt;a href="https://github.com/falcosecurity/libs/blob/master/proposals/20220329-modern-bpf-probe.md"&gt;the modern eBPF probe work&lt;/a&gt; led by Andrea Terzolo, which is under active development and should be rolled out by the next Falco release! Moreover, there has been plenty of work on &lt;a href="https://github.com/falcosecurity/falcoctl"&gt;falcoctl&lt;/a&gt;, and we can expect a new release of the tool to come soon and bring plenty of exciting novelties in the ecosystem!&lt;/p&gt;
&lt;h2 id="stay-tuned"&gt;Stay Tuned 🤗&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Join us&lt;/strong&gt; in our communication channels and in our weekly community calls! It’s always great to have new members in the community and we’re looking forward to having your feedback and hearing your 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;
&lt;p&gt;See ya! 👋&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Jason and Jacque&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Blog: Falco 0.32.2</title><link>https://v0-43--falcosecurity.netlify.app/blog/falco-0-32-2/</link><pubDate>Tue, 09 Aug 2022 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/falco-0-32-2/</guid><description>
&lt;p&gt;Today we announce the release of &lt;strong&gt;Falco 0.32.2&lt;/strong&gt; 🦅!&lt;/p&gt;
&lt;h2 id="novelties"&gt;Novelties 🆕&lt;/h2&gt;
&lt;p&gt;This release is really small, like a little 🐦, it only fixes the URL to download the falco BPF probe from &lt;a href="https://download.falco.org/"&gt;Falco download page&lt;/a&gt;. A big thank you goes to &lt;a href="https://github.com/eric-engberg"&gt;eric-engberg&lt;/a&gt;, who proposed the &lt;a href="https://github.com/falcosecurity/falco/pull/2142"&gt;fix&lt;/a&gt;, and as usual 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="fixes"&gt;Fixes 🐛&lt;/h3&gt;
&lt;p&gt;This release fixes just one bothersome bug:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The url from which Falco tryes to download the BPF probe was wrong, &lt;a href="https://github.com/eric-engberg"&gt;eric-engberg&lt;/a&gt; proposed the solution in this &lt;a href="https://github.com/falcosecurity/falco/pull/2142"&gt;PR&lt;/a&gt;. Thank you again! 🙏&lt;/li&gt;
&lt;/ul&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.32.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;Do you rather prefer using the container images? 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-s-next"&gt;What's next 🔮&lt;/h2&gt;
&lt;p&gt;It's an exciting time for Falco as we see so many great improvements and features. What's more exciting is the fact that there are many great ideas and awesome work going on to make the next big things happen.&lt;/p&gt;
&lt;p&gt;Recently, there has been a lot of interest on &lt;a href="https://github.com/falcosecurity/libs/pull/268"&gt;the shiny new eBPF probe&lt;/a&gt;, making use of modern eBPF features like CO-RE, ringbuffer API and new tracing program.&lt;/p&gt;
&lt;p&gt;In addition, many people in the community are interested in using Falco to read syscall events and plugin events simultaneously. If you are, I would suggest to take a look at the &lt;a href="https://github.com/falcosecurity/falco/issues/2074"&gt;in-depth design&lt;/a&gt; for this new feature!&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;Andrea&lt;/p&gt;</description></item><item><title>Blog: Manage Falco easier with Giant Swarm App Platform</title><link>https://v0-43--falcosecurity.netlify.app/blog/giantswarm-app-platform-falco/</link><pubDate>Tue, 09 Aug 2022 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/blog/giantswarm-app-platform-falco/</guid><description>
&lt;p&gt;In this article, you will learn how Giant Swarm simplifies the maintenance of the software stack within Kubernetes clusters by using its App Platform technology. Additionally, we will show how customers can leverage this to easily deploy Falco, either individually or as part of Giant Swarm's Security Pack, to secure their managed Kubernetes service.&lt;/p&gt;
&lt;h3 id="giant-swarm"&gt;Giant Swarm&lt;/h3&gt;
&lt;p&gt;Having CoreOS, Fleet, and Docker as base technologies, &lt;a href="https://www.giantswarm.io/about"&gt;Giant Swarm&lt;/a&gt; was founded in 2014. In 2016, it chose Kubernetes to reinvent itself. And just a year later, in 2017, it became part of the founding members of the &lt;a href="https://linuxfoundation.org/press-release/cloud-native-computing-foundation-announces-first-kubernetes-certified-service-providers/"&gt;Kubernetes Certified Service Providers&lt;/a&gt;. Customers like &lt;a href="https://www.giantswarm.io/customers/adidas"&gt;Adidas&lt;/a&gt; or &lt;a href="https://www.giantswarm.io/customers/vodafone"&gt;Vodafone&lt;/a&gt; backup a company that, supported by a &lt;a href="https://www.giantswarm.io/blog/surviving-and-thriving-how-to-really-work-emotely"&gt;fully remote team&lt;/a&gt;, has been able to foresee the trends of technology and working lifestyle.&lt;/p&gt;
&lt;p&gt;As a managed Kubernetes company, its services and infrastructure enable enterprises to run resilient distributed systems at scale while removing the burden of Day 2 operations. Giant Swarm takes pride in delivering a fully open source platform that's carefully curated and opinionated.&lt;/p&gt;
&lt;h4 id="security-and-simplicity"&gt;Security and simplicity&lt;/h4&gt;
&lt;p&gt;Giant Swarm takes security as seriously as ease of management. Hence, when using a managed Kubernetes platform, everything that happens on the &lt;a href="https://docs.giantswarm.io/general/management-clusters/"&gt;management cluster&lt;/a&gt; is as important as the performance of the workload cluster itself.&lt;/p&gt;
&lt;p&gt;That's why, leveraging the concept of operators to control all resources that clusters need as 'Custom Resources', Giant Swarm can deploy and update its management clusters in the quickest possible way. Needless to say, this is exactly what Giant Swarm offers to its customers to manage their applications.&lt;/p&gt;
&lt;h3 id="falco-the-runtime-security-project"&gt;Falco, the Runtime Security Project&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://falco.org"&gt;Falco&lt;/a&gt; is the de facto Kubernetes threat detection engine, and also extends its reach to cloud and Linux hosts. It monitors the behavior of every process in the node and can alert us when something fishy happens.&lt;/p&gt;
&lt;p&gt;How does Falco do that? Based on a set of &lt;a href="http://falco.org/docs/rules"&gt;rules&lt;/a&gt; that Falco interprets at startup time, it waits for events and &lt;a href="https://falco.org/docs/rules/supported-events/"&gt;syscalls&lt;/a&gt; that would trigger one of those rules. When a rule is triggered, Falco raises an alert and, thanks to applications like &lt;a href="https://github.com/falcosecurity/falcosidekick"&gt;Falco Sidekick&lt;/a&gt;, allows teams to react accordingly.&lt;/p&gt;
&lt;p&gt;But with great power comes great responsibility. What happens when we start getting false positives our Falco rules haven't been updated for some months, or our Falco daemon is a few versions behind? The answer is as simple as updating. Well, maybe not that simple if we are responsible for tens of clusters with hundreds of nodes.&lt;/p&gt;
&lt;h3 id="giant-swarm-app-platform"&gt;Giant Swarm App Platform&lt;/h3&gt;
&lt;p&gt;Giant Swarm describes &lt;a href="https://docs.giantswarm.io/app-platform/overview/"&gt;App Platform&lt;/a&gt; as a set of features that allow you to browse, install, and manage the configurations of &lt;a href="https://docs.giantswarm.io/app-platform/apps/"&gt;managed apps&lt;/a&gt; from a single place: The management cluster.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://v0-43--falcosecurity.netlify.app/img/falco-on-giantswarm/falco-on-giantswarm-01.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;The technology behind it is simple: Apps are packaged as &lt;a href="https://helm.sh/docs/intro/using_helm/"&gt;Helm charts&lt;/a&gt;, can be configured with values, overridden with a different app configuration, etc. - whatever meets your needs. To deploy, a CRD (&lt;a href="https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions"&gt;Custom Resource Definition&lt;/a&gt;) resource is created, interpreted by the &lt;a href="http://github.com/giantswarm/app-operator"&gt;App Operator&lt;/a&gt; (running on the managed cluster), assigned to the &lt;a href="https://github.com/giantswarm/chart-operator"&gt;Chart Operator&lt;/a&gt; (running on the workload cluster), and in a few seconds, our application will be deployed on as many clusters as desired.&lt;/p&gt;
&lt;p&gt;The App Platform offers its repertoire of applications from the App Catalog. Giant Swarm offers two App Catalogs out of the box: The Giant Swarm Catalog and the Giant Swarm Playground. But what we love the most from the App Platform is that we can have our additional catalogs, storing our applications and configurations.&lt;/p&gt;
&lt;h3 id="what-does-it-look-like-on-the-cli"&gt;What does it look like on the CLI?&lt;/h3&gt;
&lt;p&gt;It's now time to look at App Platform running. Let's walk through its deployment on a &lt;strong&gt;minikube&lt;/strong&gt; cluster. Following these instructions, it shouldn't take too long until we are ready to deploy our first managed app, &lt;strong&gt;Falco&lt;/strong&gt;, using a single CRD.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To keep this as standard as possible, we'll even go through some steps to compile some interesting Giant Swarm tools, like the plugin kubectl-gs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="do-you-already-have-a-kubernetes-cluster-nearby"&gt;Do you already have a Kubernetes cluster nearby?&lt;/h4&gt;
&lt;p&gt;If not, we can spin up a &lt;a href="https://minikube.sigs.k8s.io/docs/"&gt;&lt;strong&gt;minikube&lt;/strong&gt;&lt;/a&gt; instance pretty quickly.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ minikube start --driver virtualbox
😄 minikube v1.25.1 on Darwin 11.6.6
✨ Using the virtualbox driver based on user configuration
👍 Starting control plane node minikube in cluster minikube
🔥 Creating virtualbox VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
🐳 Preparing Kubernetes v1.23.1 on Docker 20.10.12 ...
▪ kubelet.housekeeping-interval=5m
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🔎 Verifying Kubernetes components...
🌟 Enabled addons: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use &amp;#34;minikube&amp;#34; cluster and &amp;#34;default&amp;#34; namespace by default
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you don't have &lt;a href="https://kubernetes.io/docs/tasks/tools/#kubectl"&gt;kubectl&lt;/a&gt; installed or your system, the easiest way to access it would be through an &lt;a href="https://minikube.sigs.k8s.io/docs/handbook/kubectl/"&gt;alias&lt;/a&gt; to &lt;code&gt;minikube kubectl&lt;/code&gt;, like this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;alias kubectl=&amp;#34;minikube kubectl --&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Don't forget the &lt;code&gt;--&lt;/code&gt; at the end. That tells the command prompt not to pass any added parameters to &lt;code&gt;minikube&lt;/code&gt;, since we need them to be understood by kubectl.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One disadvantage of this method, in comparison to having a local &lt;code&gt;kubectl&lt;/code&gt; binary, is that the &lt;code&gt;kubectl-gs&lt;/code&gt; plugin might not work when called as &lt;code&gt;kubectl gs&lt;/code&gt; (explained later during this tutorial) so you might need to call it directly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To ensure our cluster is up and running, execute the following command and verify that all nodes, pods, and containers are up and ready:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl get nodes,ns,pods -A
NAME STATUS ROLES AGE VERSION
node/minikube Ready control-plane,master 4m16s v1.23.1
NAME STATUS AGE
namespace/default Active 4m14s
namespace/kube-node-lease Active 4m15s
namespace/kube-public Active 4m15s
namespace/kube-system Active 4m16s
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/coredns-64897985d-qbf4n 1/1 Running 0 4m
kube-system pod/etcd-minikube 1/1 Running 0 4m12s
kube-system pod/kube-apiserver-minikube 1/1 Running 0 4m12s
kube-system pod/kube-controller-manager-minikube 1/1 Running 0 4m12s
kube-system pod/kube-proxy-6ds89 1/1 Running 0 4m
kube-system pod/kube-scheduler-minikube 1/1 Running 0 4m14s
kube-system pod/storage-provisioner 1/1 Running 1 (3m29s ago) 4m10s
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="prerequisites-compiling-apptestctl-and-kubectl-gs"&gt;Prerequisites: Compiling &lt;code&gt;apptestctl&lt;/code&gt; and &lt;code&gt;kubectl-gs&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;As mentioned above, we'll compile a couple of tools. The first one will be &lt;code&gt;apptestctl&lt;/code&gt;. This tool will help us bootstrap &lt;strong&gt;App Platform&lt;/strong&gt; on a cluster not managed by Giant Swarm.&lt;/p&gt;
&lt;p&gt;To do this, we'll use the &lt;code&gt;docker.io/golang:1.17&lt;/code&gt; image.&lt;/p&gt;
&lt;p&gt;The following command will prepare an available instance of a Golang compiler for us to compile both of these tools:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl run golang --image docker.io/golang:1.17 -- sleep infinity
pod/golang created
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="compiling-apptestctl"&gt;Compiling &lt;code&gt;apptestctl&lt;/code&gt;&lt;/h5&gt;
&lt;p&gt;These steps are quite simple: clone the &lt;a href="https://github.com/giantswarm/apptestctl"&gt;&lt;code&gt;apptestctl&lt;/code&gt;&lt;/a&gt; repository and compile it as indicated.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We'll do this inside the container we created in the previous step so we don't pollute our system.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl exec -it golang -- git clone https://github.com/giantswarm/apptestctl src/apptestctl
Cloning into &amp;#39;apptestctl&amp;#39;...
... output omitted ...
Resolving deltas: 100% (791/791), done.
$ kubectl exec -it golang -- make -C src/apptestctl
make: Entering directory &amp;#39;/go/src/apptestctl&amp;#39;
... output omitted ...
====&amp;gt; apptestctl-v-linux-amd64
... output omitted ...
cp -a apptestctl-v-linux-amd64 apptestctl
====&amp;gt; build
make: Leaving directory &amp;#39;/go/src/apptestctl&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Alternatively, you can build a Darwin client.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl exec -it golang -- make build-darwin -C src/apptestctl
make: Entering directory &amp;#39;/go/src/apptestctl&amp;#39;
... output omitted ...
====&amp;gt; apptestctl-v-darwin-amd64
... output omitted ...
cp -a apptestctl-v-darwin-amd64 apptestctl-darwin
====&amp;gt; build-darwin
make: Leaving directory &amp;#39;/go/src/apptestctl&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Either way, you can copy the &lt;code&gt;apptestctl&lt;/code&gt; binary to your system and use it from wherever you prefer.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl cp golang:/go/src/apptestctl/apptestctl-darwin ./apptestctl
$ kubectl chmod u+x ./apptestctl
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="compiling-kubectl-gs"&gt;Compiling &lt;code&gt;kubectl-gs&lt;/code&gt;&lt;/h5&gt;
&lt;p&gt;Use the same steps to compile the &lt;a href="https://github.com/giantswarm/kubectl-gs"&gt;&lt;code&gt;kubectl-gs&lt;/code&gt;&lt;/a&gt; plugin this time, which will allow us to interact with App Platform. Pay attention to the fact that we'll compile it just for Darwin in this instance.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl exec -it golang -- git clone https://github.com/giantswarm/kubectl-gs src/kubectl-gs
Cloning into &amp;#39;kubectl-gs&amp;#39;...
... output omitted ...
Resolving deltas: 100% (4427/4427), done.
$ kubectl exec -it golang -- make build-darwin -C src/kubectl-gs
make: Entering directory &amp;#39;/go/src/kubectl-gs&amp;#39;
... output omitted ...
====&amp;gt; kubectl-gs-v-darwin-amd64
... output omitted ...
cp -a kubectl-gs-v-darwin-amd64 kubectl-gs-darwin
====&amp;gt; build-darwin
make: Leaving directory &amp;#39;/go/src/kubectl-gs&amp;#39;
$ kubectl cp golang:/go/src/kubectl-gs/kubectl-gs-darwin ./kubectl-gs
$ kubectl chmod u+x ./kubectl-gs
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="deploying-app-platform-via-apptestctl"&gt;Deploying App Platform via &lt;code&gt;apptestctl&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Once we have both tools, &lt;code&gt;apptestctl&lt;/code&gt; and &lt;code&gt;kubectl-gs&lt;/code&gt;, it's time to bootstrap App Platform. To do that, we'll use the &lt;code&gt;apptestctl bootstrap&lt;/code&gt; command.&lt;/p&gt;
&lt;p&gt;The command &lt;code&gt;apptestctl bootstrap&lt;/code&gt; needs the KUBECONFIG information to access our &lt;em&gt;minikube&lt;/em&gt; cluster, so in this case, we will use the command &lt;code&gt;kubectl config view --flatten --minify -o json&lt;/code&gt; to obtain it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Alternatively, we would need to look for the .kube/config file and pass it with the &lt;code&gt;--kubeconfig-path&lt;/code&gt; option.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ ./apptestctl bootstrap --kubeconfig &amp;#34;$(kubectl config view --flatten --minify -o json)&amp;#34;
bootstrapping app platform components
... output omitted ...
app platform components are ready
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Once deployed, we can run a few commands to observe the resources created in our cluster.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl get deployments -n giantswarm
NAME READY UP-TO-DATE AVAILABLE AGE
app-operator 1/1 1 1 1m20s
chart-operator 1/1 1 1 1m20s
chartmuseum-chartmuseum 1/1 1 1 1m20s
# kubectl get catalog -A
NAMESPACE NAME CATALOG URL AGE
default chartmuseum http://chartmuseum-chartmuseum:8080/charts/ 1m25s
default helm-stable https://charts.helm.sh/stable/packages/ 1m25s
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Wait a moment... Where does this &lt;code&gt;Catalog&lt;/code&gt; resource come from? The bootstrap process of App Platform creates some CRDs that will support the operators to manage our applications.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl get crd
NAME CREATED AT
appcatalogentries.application.giantswarm.io 2022-06-10T15:30:12Z
appcatalogs.application.giantswarm.io 2022-06-10T15:30:12Z
apps.application.giantswarm.io 2022-06-10T15:30:12Z
catalogs.application.giantswarm.io 2022-06-10T15:30:12Z
charts.application.giantswarm.io 2022-06-10T15:30:12Z
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In short, once we register a &lt;code&gt;Catalog&lt;/code&gt;, several &lt;code&gt;AppCatalogEntries&lt;/code&gt; resources will be created. There will be at least one per application and version.&lt;/p&gt;
&lt;h4 id="registering-a-catalog"&gt;Registering a &lt;code&gt;Catalog&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Now, it looks like a great time to see what the &lt;code&gt;kubectl-gs&lt;/code&gt; plugin can do for us.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl-gs get catalogs
NAME NAMESPACE CATALOG URL AGE
chartmuseum default http://chartmuseum-chartmuseum:8080/charts/ 25m
helm-stable default https://charts.helm.sh/stable/packages/ 25m
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;All right, that was maybe not so impressive, but it'll become much more useful when we register our first catalog. Why is that? Because &lt;code&gt;kubectl gs&lt;/code&gt; will help us generate the definition of a &lt;code&gt;Catalog&lt;/code&gt; resource through its &lt;code&gt;template&lt;/code&gt; subcommand.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl-gs template catalog --name giantswarm --namespace default \
--description &amp;#34;Giant Swarm Catalog&amp;#34; --logo http://logo-url \
--url https://giantswarm.github.io/giantswarm-catalog
---
apiVersion: application.giantswarm.io/v1alpha1
kind: Catalog
metadata:
name: giantswarm
labels:
application.giantswarm.io/catalog-visibility: public
namespace: default
spec:
title: giantswarm
description: Giant Swarm Catalog
logoURL: http://logo-url
storage:
URL: https://giantswarm.github.io/giantswarm-catalog
type: helm
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et voilà, our &lt;code&gt;Catalog&lt;/code&gt; CRD pointing to a Giant Swarm collection of applications is ready to be deployed into our cluster.&lt;/p&gt;
&lt;p&gt;You might have figured out already what each parameter represents. &lt;code&gt;kubectl gs&lt;/code&gt; will complain if any of those parameters are missing. Also, pay attention that we didn't use a real logo URL, but if you were using &lt;a href="https://github.com/giantswarm/happa"&gt;&lt;code&gt;happa&lt;/code&gt;&lt;/a&gt;, the Giant Swarm Web-UI, would't you like to see a logo identifying your application?&lt;/p&gt;
&lt;p&gt;Finally, the URL is the location of the Helm repository from which App Platform will download the applications.&lt;/p&gt;
&lt;p&gt;Once we understand what the &lt;code&gt;kubectl gs template&lt;/code&gt; command has generated, it's time to create it inside the cluster and let the App Operator do its magic. Let's go for it.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl-gs template catalog --name giantswarm --namespace default \
--description &amp;#34;Giant Swarm Catalog&amp;#34; --logo http://logo-url \
--url https://giantswarm.github.io/giantswarm-catalog | kubectl apply -f -
catalog.application.giantswarm.io/giantswarm created
$ kubectl-gs get catalogs
NAME NAMESPACE CATALOG URL AGE
chartmuseum default http://chartmuseum-chartmuseum:8080/charts/ 35m
helm-stable default https://charts.helm.sh/stable/packages/ 35m
giantswarm default https://giantswarm.github.io/giantswarm-catalog 53s
$ kubectl gs get catalog giantswarm
CATALOG APP NAME VERSION UPSTREAM VERSION AGE DESCRIPTION
... output omitted ...
giantswarm falco-app 0.3.2 0.0.1 5m26s A Helm chart for falco
... output omitted ...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Do you remember the aforementioned AppCatalogEntries that the App Operator had to create once we defined the Catalog? Here are the Falco ones.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl get AppCatalogEntries | grep falco-app
giantswarm-falco-app-0.1.2 giantswarm falco-app 0.1.2 0.0.1 240d
giantswarm-falco-app-0.2.0 giantswarm falco-app 0.2.0 0.0.1 176d
giantswarm-falco-app-0.3.0 giantswarm falco-app 0.3.0 0.0.1 103d
giantswarm-falco-app-0.3.1 giantswarm falco-app 0.3.1 0.0.1 94d
giantswarm-falco-app-0.3.2 giantswarm falco-app 0.3.2 0.0.1 79d
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="installing-an-app-from-the-app-catalog"&gt;Installing an App from the App Catalog&lt;/h3&gt;
&lt;p&gt;What we've done so far was deploy App Platform, which is required only once. Giant Swarm would have configured that for us already if we were using their services.&lt;/p&gt;
&lt;p&gt;Now, it's finally time to create the CRD that will trigger the App Operator to assist in the deployment of Falco. How do we do that? &lt;code&gt;kubectl gs&lt;/code&gt; comes to the rescue again!&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl gs template app --catalog giantswarm --name falco-app --namespace falco-ns
--version 0.3.2 --app-name my-falco --in-cluster
---
apiVersion: application.giantswarm.io/v1alpha1
kind: App
metadata:
name: my-falco
labels:
app-operator.giantswarm.io/version: 0.0.0
namespace: falco-ns
spec:
name: falco-app
version: 0.3.2
namespace: falco-ns
kubeConfig:
inCluster: true
catalog: giantswarm
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It is worth mentioning that we are testing on a &lt;em&gt;minikube&lt;/em&gt; cluster, where we install applications inside the cluster itself. To achieve that, we use the &lt;code&gt;--in-cluster&lt;/code&gt; parameter passed to the previous commands.&lt;/p&gt;
&lt;p&gt;Otherwise, if we wanted to install or update the application in one of our managed workload clusters, we would use the &lt;code&gt;--cluster&lt;/code&gt; parameter to indicate where the application should be deployed:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl gs template app --catalog giantswarm --name falco-app --namespace falco-ns \
--version 0.3.2 --cluster cluster-123 --app-name my-falco
---
apiVersion: application.giantswarm.io/v1alpha1
kind: App
metadata:
name: my-falco
namespace: cluster-123
spec:
name: falco-app
version: 0.3.2
namespace: falco-ns
kubeConfig:
inCluster: false
catalog: giantswarm
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the previous output, you can see how the namespace field inside the metadata section receives the name of the cluster instead of the actual namespace where the application should reside.&lt;/p&gt;
&lt;p&gt;The reason is that, although the application will be installed on one of the workload clusters, this CRD will be created in a namespace inside the management cluster. This topic alone would be enough for a whole new post.&lt;/p&gt;
&lt;p&gt;Here is a graphical representation of the CRDs supporting App Platform, in the management cluster:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://v0-43--falcosecurity.netlify.app/img/falco-on-giantswarm/falco-on-giantswarm-02.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Finally, the last step is creating the CRD for the App in the cluster. Don't forget to ensure that the namespace where the CRD will belong exists, or the &lt;code&gt;kubectl apply&lt;/code&gt; command will fail.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl create ns falco-ns
namespace/falco-ns created
$ kubectl gs template app --catalog giantswarm --name falco-app --namespace falco-ns \
--version 0.3.2 --in-cluster --app-name my-falco | kubectl apply -f-
app.application.giantswarm.io/my-falco created
$ kubectl gs get app -n falco-ns
NAME VERSION LAST DEPLOYED STATUS NOTES
my-falco 0.3.2 113s deployed
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here are the resulting Kubernetes resources when using regular kubectl commands.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl get app,deployment,daemonset -n falco-ns
NAME INSTALLED VERSION CREATED AT LAST DEPLOYED STATUS
app.application.giantswarm.io/my-falco 0.3.2 4m25s 4m24s deployed
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/my-falco-falcosidekick 2/2 2 2 4m24s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/my-falco 1 1 1 1 1 &amp;lt;none&amp;gt; 4m24s
daemonset.apps/my-falco-falco-exporter 1 1 1 1 1 &amp;lt;none&amp;gt; 4m24s
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The previous output might differ depending on the type of cluster you would be using, among other variables.&lt;/p&gt;
&lt;p&gt;As you can see, once App Platform is up and running, we only need to create the namespace that should contain the Falco application (which should already exist if we are deploying from a managed workload cluster), and the CRD based on the template from the &lt;code&gt;kubectl gs&lt;/code&gt; plugin. In a matter of seconds, Falco will be up and running, watching for threats and alerting when suspicious behaviors arise.&lt;/p&gt;
&lt;h3 id="managed-security"&gt;Managed Security&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://twitter.com/StoneZach/"&gt;Zach Stone&lt;/a&gt;, Platform Engineer at Giant Swarm, walked us through some of the biggest challenges that the company's customers face and how his team is using Falco to develop thoughtful solutions.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“The biggest problem that most of our customers face isn't what happens in the cluster, it's what happens with the information once they get it out of the cluster,”&lt;/em&gt; asserted Stone. &lt;em&gt;“People also focus too much on the capability that a tool offers and don't take a bigger look at the security processes it supports.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“If a customer has a vulnerability management program, we can track all of the vulnerabilities in their components, but if fixing those vulnerabilities isn’t a priority, then the program doesn’t work,”&lt;/em&gt; remarked Stone. &lt;em&gt;&amp;quot;The larger discussion is usually about where the alerts should go, who bears responsibility for remediation, and how to fit that work into the team's limited capacity. We spend a lot of time trying to ensure security isn't just something that sits alongside the business, but rather is a meaningful part of the daily routine.&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Part of that effort is in tuning detection rules and alerting. &lt;em&gt;&amp;quot;Any time we surface an alert, it should be actionable and have a clear owner who is invested in never seeing that alert again.&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“I think Falco's superpower is in the flexibility of the policies. I'm also really excited about the changes that are slated to make it easier to update them. Most rules aren't one-size-fits-all -- for a given policy, there is usually some refinement needed to ensure the policy makes sense within our platform, and then customers modify it even further to meet their security requirements. All that customization can make it incredibly difficult to reconcile,”&lt;/em&gt; said Stone. &lt;em&gt;“The fact that we can already do it with Falco speaks volumes about the versatility of the solution.”&lt;/em&gt;&lt;/p&gt;
&lt;h4 id="security-pack"&gt;Security Pack&lt;/h4&gt;
&lt;p&gt;Giant Swarm's &lt;a href="https://docs.giantswarm.io/app-platform/apps/security/"&gt;Security Pack&lt;/a&gt; is a collection of open source security tools offered by Giant Swarm, which not only contains Falco but also a plethora of other open source projects, including &lt;em&gt;Kyverno&lt;/em&gt; for policy enforcement, &lt;em&gt;Trivy&lt;/em&gt; for image scanning, and &lt;em&gt;Cosign&lt;/em&gt; for image signature verification.&lt;/p&gt;
&lt;p&gt;Security does not apply to a single level and, therefore, Security Pack consists of multiple applications, each one independently installable and configurable, available via their App Platform. &lt;em&gt;“Falco will be the cornerstone of our node-level security capabilities,”&lt;/em&gt; affirmed Stone, &lt;em&gt;“the biggest opportunity for API plug-ins I see is to get feedback from the node level back into the Security Pack so that we can further contextualize events in the ecosystem.”&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Adding simplicity to our cluster management is considered a requirement nowadays, especially in those cases where the lack of resources in an organization can keep it from achieving an acceptable level of security.&lt;/p&gt;
&lt;p&gt;Features like Giant Swarm's App Platform and Security Pack will help organizations to finally focus on what actually matters to them: Running their business. In the future, Giant Swarm plans to launch its security pack across all its customers' clusters, enabled by default and built on Falco.&lt;/p&gt;</description></item></channel></rss>