Detecting Runtime Threats in Kubernetes with Falco

Written By:
Founder & CTO
June 23, 2025

Kubernetes is the de facto orchestration platform for containerized workloads. It offers scalability, agility, and resource optimization across environments. But with that flexibility comes risk. Kubernetes environments are dynamic, containers spin up and down, services change IPs, and permissions often get over-provisioned. Traditional security tools, like static vulnerability scanners and perimeter-based firewalls, are no longer enough to detect runtime threats.

That’s where Falco steps in. Falco is an open-source cloud-native runtime security tool that’s designed specifically to detect anomalies and suspicious behavior in real time across Kubernetes clusters. Whether it's an unexpected shell spawning in a container, access to a sensitive file, or suspicious outbound network activity, Falco acts as your Kubernetes security watchdog, listening to system calls and flagging threats as they happen.

In this blog post, we’ll explore Falco in depth, its architecture, capabilities, benefits for developers, how to use it, and how it compares to traditional security tools. By the end, you’ll have a clear picture of why Falco is an indispensable tool for runtime security in Kubernetes.

Why Runtime Security in Kubernetes is Essential
The short lifespan of containers

Containers in Kubernetes are ephemeral. They’re often created and destroyed automatically by the scheduler or by deployment triggers. This makes traditional security controls, like intrusion detection systems (IDS) or antivirus programs, ineffective, because they’re not designed for such dynamic environments. Runtime security helps plug this gap by analyzing what containers are doing while they’re running.

CI/CD pipelines don’t catch runtime behavior

Build-time security measures like image scanning, SAST, and configuration validation (e.g., using tools like Trivy or KubeLinter) are essential, but they only catch known issues before deployment. They don’t tell you what your application is doing in production. Falco’s value lies in visibility at runtime, watching system calls and container behavior after deployment.

Sophisticated attacks operate at runtime

Modern attackers don't rely solely on known vulnerabilities. They exploit misconfigurations, use fileless malware, or hijack processes after initial access. Runtime threat detection with Falco can reveal such attacks by monitoring actions rather than code. Think of it as a flight recorder for your cluster, always listening for irregular behavior.

What is Falco and How Does It Work?

Falco, originally developed by Sysdig and now a CNCF-graduated project, is a lightweight yet powerful runtime security tool purpose-built for Kubernetes. It listens to system calls on the host using either a kernel module or eBPF (Extended Berkeley Packet Filter), then compares those calls against a set of customizable security rules.

How Falco collects data

Falco uses Linux kernel instrumentation to observe low-level activity in real-time, including:

  • File access operations (open, read, write)

  • Network connections (connect, accept)

  • Process execution (execve, clone)

  • System-level changes (e.g., mounting file systems, privilege changes)

This data is enriched with Kubernetes metadata (pod name, namespace, container image, etc.) so that alerts are contextualized for your environment.

Rule engine for threat detection

At the heart of Falco is a rich and flexible rule engine. Rules are written in YAML and allow developers to define exactly what constitutes suspicious activity. Falco ships with a comprehensive library of default rules that catch common threats, including:

  • Shells spawned inside containers (bash, sh, etc.)

  • Changes to sensitive directories like /etc or /root

  • Unexpected outbound network connections

  • Privileged container executions

  • Use of tools like netcat or nmap

These rules can be easily modified or extended to fit your application’s behavior, helping reduce false positives and tune the system to your needs.

Plugin support

Falco also supports plugins for ingesting other data sources, including:

  • Kubernetes audit logs

  • Cloud logs (AWS CloudTrail, GCP logs)

  • GitHub activity

  • Custom applications

This makes it possible to detect higher-level anomalies like privilege escalations via Kubernetes RBAC or unauthorized GitHub repo access.

Developer-Centric Advantages of Using Falco
Lightweight and low-overhead by design

One of the biggest concerns for developers when adding any kind of observability or security agent is performance. Tools like endpoint detection and response (EDR) software can consume a large amount of CPU and memory. Falco, however, is built to be lightweight and efficient, even at scale.

  • When deployed via the eBPF probe, Falco uses minimal resources, often less than 5% CPU usage per node.

  • It only monitors relevant syscalls, using optimized filtering pipelines to reduce load.

  • You can configure thresholds and rate limits to avoid alert storms.

For developers and DevOps teams, this means security without performance degradation, even in high-throughput clusters.

Easy to customize and extend

Falco is developer-friendly, with rules written in human-readable YAML. Developers can create custom rules using building blocks like:

  • Macros – reusable fragments of filter logic

  • Lists – define whitelists or blacklists of users, paths, commands, etc.

  • Conditions – write logic like: if container starts AND user is not root AND process is not allowed

This makes Falco an approachable security tool for teams that already manage their infrastructure as code. Custom rules allow you to detect:

  • Business logic violations

  • Access to internal services

  • Unusual execution patterns in microservices

Real-time Kubernetes threat detection

Falco provides instant feedback when something goes wrong. While static scanning tells you about known vulnerabilities, Falco tells you when those vulnerabilities are being exploited in real time.

This is critical for:

  • Incident response – responders need to know what happened and when

  • Threat hunting – security engineers can explore suspicious patterns

  • Compliance – many frameworks require monitoring of user behavior and audit trails

Falco detects not just system anomalies, but Kubernetes-native activity like:

  • Unexpected pod creation

  • Use of kubectl exec

  • Privileged container launches

  • Modifications to ConfigMaps and Secrets

Seamless integrations with developer tools

Falco integrates easily with tools developers already use. By connecting with Falcosidekick, you can forward alerts to:

  • Slack / Microsoft Teams – for real-time notifications

  • Prometheus / Grafana – for visual dashboards and metrics

  • Datadog / Splunk / SIEMs – for centralized log analysis

  • AWS S3 / Redis / Webhooks – for long-term storage or custom triggers

Developers can use these outputs to automate responses, trigger scaling events, or log suspicious behavior without writing new systems from scratch.

Helps maintain compliance and auditing

Many teams need to comply with security standards like:

  • PCI-DSS

  • HIPAA

  • NIST 800-53

  • SOC 2

  • FedRAMP

  • DORA (Digital Operational Resilience Act)

Falco’s audit trail and alerting system supports these frameworks by providing evidence of active monitoring, rule-based detection, and incident reporting. Kubernetes metadata enrichment (like labels, namespaces, and node identity) adds the context necessary for audit-readiness.

Powered by CNCF and a vibrant community

Falco is a CNCF graduated project, which means it’s vetted, maintained, and constantly improving. The open-source community contributes new rules, plugins, integrations, and performance optimizations. You’re not alone in your journey to runtime security.

For developers, this means:

  • Transparent development process

  • Open governance

  • Frequent updates

  • Compatibility with Kubernetes releases

How to Deploy Falco in Kubernetes
Step 1: Install via Helm

Helm is the recommended way to install Falco. Run the following:

helm repo add falcosecurity https://falcosecurity.github.io/charts

helm repo update

helm install falco falcosecurity/falco --namespace falco --create-namespace

This deploys Falco as a DaemonSet, ensuring every node in your cluster is protected.

Step 2: Customize configuration

To maximize value, edit the values.yaml file to:

  • Enable json_output for integrations

  • Set priority levels for rules (info, warning, critical)

  • Tune thresholds and filters to reduce noise

  • Enable metrics for Prometheus

Step 3: Add alert forwarding

Use Falcosidekick to route alerts where you need them. It supports 50+ output targets including:

  • Cloud native observability tools

  • Message queues

  • Webhooks and functions

Step 4: Create custom rules

Start with built-in rules and then add your own. For example:

- rule: Suspicious Bash Shell

  desc: Bash shell spawned inside a container

  condition: container and proc.name = bash

  output: "Bash shell detected in container %container.name (%container.id)"

  priority: WARNING

Step 5: Observe & Iterate
  • Visualize activity in Grafana

  • Create alerts in Slack

  • Refine rules over time to reduce false positives

  • Build response automation based on alert types

Falco vs Traditional Security Approaches
Traditional scanners vs. Falco

Static vulnerability scanners (e.g., Trivy, Clair) identify known vulnerabilities before deployment, but miss behavior after the app is running. Falco complements them by catching:

  • Unexpected binaries running inside containers

  • Suspicious file access

  • Outbound connections from restricted pods

Endpoint security vs. Falco

Endpoint Detection and Response (EDR) tools are powerful, but:

  • Heavier on resource usage

  • Not tailored for containerized environments

  • Lack Kubernetes context

Falco, in contrast, is:

  • Cloud-native

  • Kubernetes-aware

  • Purpose-built for ephemeral workloads

Network monitoring vs. Falco

Network tools only see traffic, not why that traffic was generated. Falco can correlate process and file activity with network behavior, giving a fuller picture of an incident.

Limitations and How to Mitigate Them
False positives

A common concern. Falco rules are customizable, and you can suppress benign alerts by:

  • Whitelisting expected behavior

  • Tuning conditions

  • Using macros and lists

Bypass possibilities

If an attacker avoids syscall-level behaviors, they may evade detection. Mitigate this by combining Falco with:

  • Admission controllers

  • PodSecurity policies

  • Tetragon or Seccomp enforcement

Cluster performance

In large clusters, Falco may need tuning. Consider:

  • Using eBPF for minimal impact

  • Scaling alert sinks

  • Filtering low-priority events

Real-World Adoption: Developer Testimonials

“Falco helped us spot unauthorized shell access in one of our pods within minutes. The learning curve was minimal, and the ability to write YAML rules made it feel like just another config file.”

“We use Falco alongside Kubernetes audit logs to track privilege escalations. The plugin system is amazing.”

From early-stage startups to cloud-scale enterprises, Falco is used across industries, healthcare, fintech, ecommerce, SaaS, to bolster Kubernetes security without friction.

Summary

Falco stands out as a runtime security tool that developers actually want to use. It’s lightweight, customizable, and Kubernetes-native. It doesn’t just detect threats, it empowers developers to define what threats look like in their context.

By deploying Falco, teams gain:

  • Real-time visibility into suspicious container behavior

  • Rule-driven detection logic tied to actual workload behavior

  • A scalable, cloud-native alternative to traditional IDS/EDR

  • An easy path toward compliance and production-grade monitoring

In a world where workloads are ephemeral and attackers are increasingly sophisticated, Falco is your best defense at runtime.