<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Falco – Falco Plugins</title><link>https://v0-43--falcosecurity.netlify.app/docs/concepts/plugins/</link><description>Recent content in Falco Plugins on Falco</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://v0-43--falcosecurity.netlify.app/docs/concepts/plugins/feed.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Plugins Architecture Concepts</title><link>https://v0-43--falcosecurity.netlify.app/docs/concepts/plugins/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/concepts/plugins/architecture/</guid><description>
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Plugins are dynamic shared libraries (.so files in Unix, .dll files in Windows) that export C calling convention functions. Programs like Falco dynamically load these libraries and call the exported functions to extend Falco's support for event sources/fields.&lt;/p&gt;
&lt;p&gt;Plugins are versioned using semantic versioning to minimize regressions and compatibility issues.&lt;/p&gt;
&lt;p&gt;Plugins can be written in any language, as long as they export the required functions. Go, however, is the preferred language to write plugins, followed by C/C++.&lt;/p&gt;
&lt;p&gt;Plugins can implement one or more capabilities. In the scope of plugins, a &lt;em&gt;capability&lt;/em&gt; is an extension of Falco's features in the form of a specific set of C function symbols exported by shared libraries. Currently, there are four plugin capabilities supported by the framework: &lt;em&gt;event sourcing&lt;/em&gt;, &lt;em&gt;field extraction&lt;/em&gt;, &lt;em&gt;event parsing&lt;/em&gt; and &lt;em&gt;async event&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="plugins-are-coresident-with-falco"&gt;Plugins are Coresident with Falco&lt;/h3&gt;
&lt;p&gt;The libraries will do everything possible to validate the data coming from the plugins and protect Falco and the other consumers from corrupted data. However, for performance reasons, plugins are &lt;em&gt;&amp;quot;trusted&amp;quot;&lt;/em&gt;: they run in the same thread and address space as Falco and they could crash the program. We assume that the user will be in control of plugin loading and will make sure only trusted plugins are loaded/packaged with Falco.&lt;/p&gt;
&lt;h3 id="plugin-sdks"&gt;Plugin SDKs&lt;/h3&gt;
&lt;p&gt;To make it easier to write plugins, there are &lt;a href="https://github.com/falcosecurity/plugin-sdk-go"&gt;Go&lt;/a&gt;, &lt;a href="https://github.com/falcosecurity/plugin-sdk-cpp"&gt;C++&lt;/a&gt;, and &lt;a href="https://github.com/falcosecurity/plugin-sdk-rs"&gt;Rust&lt;/a&gt; SDKs that handle the details of memory management and type conversion. These SDKs provide a streamlined way to implement plugins without having to deal with all the details of the lower-level functions that make up the Plugin API.&lt;/p&gt;
&lt;p&gt;These SDKs are optional, but using them is highly recommended.&lt;/p&gt;
&lt;h3 id="event-sourcing-capability"&gt;Event Sourcing Capability&lt;/h3&gt;
&lt;p&gt;Plugins with &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/plugins/plugin-api-reference/#event-sourcing-capability-api"&gt;event sourcing capability&lt;/a&gt; provide a new event source and make it available to libscap and libsinsp. They have the ability to &amp;quot;open&amp;quot; and &amp;quot;close&amp;quot; a stream of events and return those events to the plugin framework. They also provide a plugin ID, which is globally unique and is used in capture files (see below). Event sources provided by plugins with this capability are tied to the events they generate and can be used by plugins with field extraction capabilities and within Falco rules (see below).&lt;/p&gt;
&lt;h3 id="field-extraction-capability"&gt;Field Extraction Capability&lt;/h3&gt;
&lt;p&gt;Plugins with &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/plugins/plugin-api-reference/#field-extraction-capability-api"&gt;field extraction capability&lt;/a&gt; have the ability to extract information from events based on fields. For example, a field (e.g. &lt;code&gt;proc.name&lt;/code&gt;) extracts a value (e.g. process name like &lt;code&gt;nginx&lt;/code&gt;) from a syscall event. The plugin returns a set of supported fields, and there are functions to extract a value given an event and field. The plugin framework can then build filtering expressions (e.g. rule conditions) based on these fields combined with relational and/or logical operators. For example, given the expression &lt;code&gt;ct.name=root and ct.region=us-east-1&lt;/code&gt;, the plugin framework handles parsing the expression, calling the plugin to extract values for fields &lt;code&gt;ct.name&lt;/code&gt;/&lt;code&gt;ct.region&lt;/code&gt; for a given event, and determining the result of the expression. In a Falco output string like &lt;code&gt;An EC2 Node was created (name=%ct.name region=%ct.region)&lt;/code&gt;, the plugin framework handles parsing the output string, calling the plugin to extract values for fields, and building the resolved string, replacing the template field names (e.g. &lt;code&gt;%ct.region&lt;/code&gt;) with values (e.g. &lt;code&gt;us-east-1&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Plugins with this capability only focus on field extraction from events generated by other plugins or by the core libraries. They do &lt;strong&gt;not&lt;/strong&gt; provide an event source but can extract fields from other event sources. The supported field extraction can be generic or be tied to a specific event source. An example is json field extraction, where a plugin might be able to extract fields from generic json payloads.&lt;/p&gt;
&lt;h3 id="event-parsing-capability"&gt;Event Parsing Capability&lt;/h3&gt;
&lt;p&gt;Plugins with &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/plugins/plugin-api-reference/#event-parsing-capability-api"&gt;event parsing capability&lt;/a&gt; can hook into an event stream and receive all of its events sequentially. The parsing phase is the stage in the event processing loop in which the Falcosecurity libraries inspect the content of the events' payload and use it to apply internal state updates or implement additional logic. This phase happens before any field extraction for a given event. Each event in a given stream is guaranteed to be received at most once.&lt;/p&gt;
&lt;h3 id="async-events-capability"&gt;Async Events Capability&lt;/h3&gt;
&lt;p&gt;Plugins with &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/plugins/plugin-api-reference/#async-events-capability-api"&gt;async events capability&lt;/a&gt; can enrich an event stream from a given source (not necessarily implemented by itself) by injecting events asynchronously in the stream. Such a feature can be used for implementing notification systems or recording state transitions in the event-driven model of the Falcosecurity libraries, so that they can be available to other components at runtime or when the event stream is replayed through a capture file.&lt;/p&gt;
&lt;p&gt;For example, the Falcosecurity libraries leverage this feature internally to implement metadata enrichment systems such as the one relative to container runtimes. In that case, the libraries implement asynchronous jobs responsible of retrieving such information externally outside of the main event processing loop so that it's non-blocking. The worker jobs produce a notification event every time a new container is detected and inject it asynchronously in the system event stream to be later processed for state updates and for evaluating Falco rules.&lt;/p&gt;
&lt;h3 id="composability-of-capabilities"&gt;Composability of Capabilities&lt;/h3&gt;
&lt;p&gt;Plugin capabilities are &lt;em&gt;composable&lt;/em&gt;, meaning that a single plugin can implement one or more capabilities. At loading time, the framework is able to recognize which capabilities the plugin correctly implements, and uses it accordingly inside Falco and the libraries. There can be plugins implementing event sourcing only, field extraction only, or both. For example, the AWS CloudTrail plugin implements both capabilities in order to provide the framework with the &lt;code&gt;aws_cloudtrail&lt;/code&gt; event source and to allow extracting fields such as &lt;code&gt;ct.name&lt;/code&gt; from the events it produces.&lt;/p&gt;
&lt;h2 id="plugin-event-ids"&gt;Plugin Event IDs&lt;/h2&gt;
&lt;p&gt;Every plugin with event sourcing capability requires its own, unique plugin event ID to interoperate with Falco and the other plugins. This ID is used in the following ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The ID is saved in in-memory event objects and is used to identify the associated plugin that injected the event.&lt;/li&gt;
&lt;li&gt;The ID is saved in capture files and is used to recreate in-memory event objects when reading capture files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The ID must be unique to ensure that events written by a given plugin will be properly associated with that plugin (and its event sources, see below).&lt;/p&gt;
&lt;p&gt;Plugin authors &lt;em&gt;must&lt;/em&gt; register the plugin with the Falcosecurity organization by creating a PR to modify the &lt;a href="https://github.com/falcosecurity/plugins/blob/master/registry.yaml"&gt;plugin registry&lt;/a&gt; with details on the new plugin. This ensures that a given ID is used by exactly one plugin.&lt;/p&gt;
&lt;h2 id="plugin-event-sources-and-interoperability"&gt;Plugin Event Sources and Interoperability&lt;/h2&gt;
&lt;p&gt;Events returned by plugins with event sourcing capability have an &lt;em&gt;event source&lt;/em&gt; that describes the event's information. This is distinct from the plugin name to allow for multiple plugin implementations to generate the same kind of events. For example, there might be plugins gke-k8saudit, eks-k8saudit, ibmcloud-k8saudit, etc. that all fetch &lt;a href="https://kubernetes.io/docs/tasks/debug-application-cluster/audit/"&gt;K8s Audit&lt;/a&gt; information. The plugins would have different names and IDs but would have the same event source &lt;code&gt;k8s_audit&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A plugin with field extraction capability optionally provides a set of compatible event sources. When the framework receives an event with an event source in the plugin's set of event sources, fields in expressions (i.e., fields included in the rule's output field) will be extracted from events using the plugin. The set of compatible event sources can also &lt;strong&gt;be omitted&lt;/strong&gt;. In this case, &lt;em&gt;all&lt;/em&gt; events will be presented to the plugin, regardless of their source. In this case, the plugin must detect the format of arbitrary payloads and be able to return NULL/&lt;em&gt;no value&lt;/em&gt; when the payload is not supported. As such, given a specific event source such as &lt;code&gt;k8s_audit&lt;/code&gt;, there is an implicit contract to honor regarding how data is formatted in each event of that source, such that compatible plugins with field extraction capability are able to parse events of a certain source even if they are produced by different plugins.&lt;/p&gt;
&lt;p&gt;Plugin authors &lt;em&gt;should&lt;/em&gt; register the plugin with the Falcosecurity organization by creating a PR to modify the &lt;a href="https://github.com/falcosecurity/plugins/blob/master/registry.yaml"&gt;plugin registry&lt;/a&gt; file with details on the new plugin. This allows plugin authors to coordinate about event source data formats.&lt;/p&gt;
&lt;h2 id="handling-duplicate-overlapping-fields-in-plugins-libraries-core"&gt;Handling Duplicate/Overlapping Fields in Plugins/Libraries Core&lt;/h2&gt;
&lt;p&gt;At an initial glance, adding plugins introduces the possibility of tens/hundreds of new filtercheck fields that could potentially overlap/conflict. For example, what happens if a plugin defines a &lt;code&gt;proc.name&lt;/code&gt; field? However, the notion of event source makes these potential conflicts manageable.&lt;/p&gt;
&lt;p&gt;Remember that field extraction is always done in the context of an event, and each event can be mapped back to an event source. So we only need to ensure that filtercheck fields are non-overlapping for a given event source. For example, it's perfectly valid for an AWS CloudTrail plugin to define a &lt;code&gt;proc.name&lt;/code&gt; field, as the events generated by that plugin are wholly separate from syscall events. For syscall events, the AWS CloudTrail plugin is not involved and the core libraries extract the process name for the tid performing a syscall. For AWS CloudTrail events, the core libraries are not involved in field extraction. Extraction is performed by the AWS CloudTrail plugin instead.&lt;/p&gt;
&lt;p&gt;When managing plugins, we only need to ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;That only one plugin is loaded at a time that exports a given event source. For example, the libraries can load either a gke-k8saudit plugin with event source &lt;code&gt;k8s_audit&lt;/code&gt;, or eks-k8saudit with event source &lt;code&gt;k8s_audit&lt;/code&gt;, but not both.&lt;/li&gt;
&lt;li&gt;That for a mix of plugins with event sourcing and field extraction capabilities having the same event source, that the fields are distinct. For example, a plugin event sourcing capability providing the source &lt;code&gt;k8s_audit&lt;/code&gt; can export &lt;code&gt;ka.*&lt;/code&gt; fields, and a plugin with field extractor capabilities with event source &lt;code&gt;k8s_audit&lt;/code&gt; can export a &lt;code&gt;jevt.value[/...]&lt;/code&gt; field, and the appropriate plugin will be used to extract fields from &lt;code&gt;k8s_audit&lt;/code&gt; events as fields are parsed from condition expressions/output format strings.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="plugin-api"&gt;Plugin API&lt;/h2&gt;
&lt;p&gt;Here is an overview of the functions that comprise the plugin API. This list is not extensive: the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/plugins/plugin-api-reference/"&gt;plugin API reference&lt;/a&gt; has full documentation of plugin APIs for all the capabilities supported by the framework.&lt;/p&gt;
&lt;p&gt;In almost all cases, a plugin author can use the SDKs which provide a more streamlined interface. This still provides a good overview of the functionality a plugin provides.&lt;/p&gt;
&lt;h3 id="info-functions"&gt;Info Functions&lt;/h3&gt;
&lt;p&gt;A set of functions provide information about the plugin and its compatibility with the plugin framework:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;plugin_get_required_api_version&lt;/code&gt;: Return the version of the plugin API used by a plugin.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_name&lt;/code&gt;: Return the name of the plugin.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_description&lt;/code&gt;: Return a short description of the plugin.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_contact&lt;/code&gt;: Return a contact url/email/twitter account for the plugin authors.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_version&lt;/code&gt;: Return the version of the plugin itself.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_last_error&lt;/code&gt;: Return the error that was last generated by a plugin.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_id&lt;/code&gt;: Return the unique ID of the plugin (event sourcing capability only).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_event_source&lt;/code&gt;: Return a string describing the events generated by a plugin (event sourcing capability only).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_async_events&lt;/code&gt;: Return a list of async events produced by a plugin (event parsing capability only).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_init_schema&lt;/code&gt;: (Optional) Return a string describing a schema for the configuration passed to &lt;code&gt;plugin_init&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_list_open_params&lt;/code&gt;: (Optional) Return a list of suggested valid parameter values for &lt;code&gt;plugin_open&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_extract_event_sources&lt;/code&gt;: (Optional) Return a list of all compatible event sources (field extraction capability only).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_extract_event_types&lt;/code&gt;: (Optional) Return a list of all compatible event types (field extraction capability only).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_parse_event_sources&lt;/code&gt;: (Optional) Return a list of all compatible event sources (event parsing capability only).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_parse_event_types&lt;/code&gt;: (Optional) Return a list of all compatible event types (event parsing capability only).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_async_event_sources&lt;/code&gt;: (Optional) Return a list of all compatible event sources (async events capability only).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="instance-capture-management-functions"&gt;Instance/Capture Management Functions&lt;/h3&gt;
&lt;p&gt;Plugins have functions to initialize/destroy a plugin, as well as functions to open/close streams of events:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;plugin_init&lt;/code&gt;: Initialize the plugin and, if needed, allocate its state.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_destroy&lt;/code&gt;: Destroy the plugin and, if plugin state was allocated, free it.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_open&lt;/code&gt;: Open the source and start a stream of events (event sourcing capability only).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_close&lt;/code&gt;: Close a stream of events (event sourcing capability only).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="events-fields-related-functions"&gt;Events/Fields Related Functions&lt;/h3&gt;
&lt;p&gt;Plugins with event sourcing capability have functions to provide events to the plugin framework:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;plugin_next_batch&lt;/code&gt;: Return one or more events to the plugin framework.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_get_progress&lt;/code&gt;: (Optional) Provide feedback on how much of the event stream has been read.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_event_to_string&lt;/code&gt;: (Optional) Return a text representation of an event generated by a plugin.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plugins with field extraction capability have functions to define the set of fields that can be used to extract information from events, to actually extract values from events, and to return printable representations of events:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;plugin_get_fields&lt;/code&gt;: Return the list of extractor fields exported by a plugin.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_extract_fields&lt;/code&gt;: Extract one or more filter field values from an event.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other capabilities allow interacting with events for different scopes functionalities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;plugin_parse_event&lt;/code&gt;: Parses an event at most once before the extraction phase, and can perform state updates.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_set_async_event_handler&lt;/code&gt;: Registers a callback that can be used to inject asynchronous events in an open event stream.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Docs: How Falco Uses Plugins</title><link>https://v0-43--falcosecurity.netlify.app/docs/concepts/plugins/usage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/concepts/plugins/usage/</guid><description>
&lt;p&gt;Falco loads plugins based on configuration in &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;&lt;code&gt;falco.yaml&lt;/code&gt;&lt;/a&gt;. Currently, if a plugin with event sourcing capability is loaded then the &lt;em&gt;only&lt;/em&gt; events processed are from that plugin; syscall events are disabled. There are other restrictions on loaded plugins (see below).&lt;/p&gt;
&lt;h2 id="loading-plugins-in-falco"&gt;Loading plugins in Falco&lt;/h2&gt;
&lt;p&gt;The new &lt;code&gt;plugins&lt;/code&gt; property in &lt;code&gt;falco.yaml&lt;/code&gt; will define the set of plugins that Falco can load, and a new &lt;code&gt;load_plugins&lt;/code&gt; property will control which plugins are actually loaded when Falco starts.&lt;/p&gt;
&lt;p&gt;Here's 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;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;cloudtrail&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="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;libcloudtrail.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;&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&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Optional&lt;/span&gt;&lt;span style="color:#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;[cloudtrail, 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;div class="alert alert-primary" role="alert"&gt;
For more information, see &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/daemon/config-options/"&gt;Falco Config Options&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;The mechanics of loading a plugin are implemented in the libraries and leverage the dynamic library functionality of the operating system (dlopen/dlsym in unix, LoadLibrary/GetProcAddress in Windows). The plugin loading code also ensures that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The plugin is valid, i.e. that it exports the set of expected symbols&lt;/li&gt;
&lt;li&gt;The plugin has an API version number that is compatible with the plugin framework.&lt;/li&gt;
&lt;li&gt;That only one plugin with event sourcing capability is loaded at a time for a given event source&lt;/li&gt;
&lt;li&gt;If a mix of plugins for both event sourcing and field extraction are loaded for a given event source, that the exported fields have unique names that don't overlap across plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="event-sources-and-falco-rules"&gt;Event Sources and Falco Rules&lt;/h2&gt;
&lt;p&gt;Falco rules already have the notion of a &lt;em&gt;source&lt;/em&gt;, using the &lt;code&gt;source&lt;/code&gt; property in YAML rules objects. There is primarily one kind of event source: &lt;code&gt;syscall&lt;/code&gt;. The &lt;code&gt;source&lt;/code&gt; property in Falco rules maps a given rule to the event source on which the rule runs.&lt;/p&gt;
&lt;p&gt;For example, given a plugin providing events with source &lt;code&gt;aws_cloudtrail&lt;/code&gt;, and a Falco rule with &lt;code&gt;source&lt;/code&gt; property &lt;code&gt;aws_cloudtrail&lt;/code&gt;, the rule will be evaluated for any events returned by the AWS CloudTrail plugin.&lt;/p&gt;
&lt;p&gt;Similarly, a plugin with field extraction capability that includes &lt;code&gt;aws_cloudtrail&lt;/code&gt; in its set of event sources will have the opportunity to extract information from CloudTrail events. As a result, fields exported by the plugin can be put in a rule's condition, exception, or output properties when the rule has a source &lt;code&gt;aws_cloudtrail&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Falco compiles rules/macros/lists selectively based on the set of loaded plugins (specifically, their event sources), instead of unconditionally as Falco is started. This is especially important for macros, which do not contain a &lt;code&gt;source&lt;/code&gt; property, but might contain fields that are only implemented by a given plugin.&lt;/p&gt;
&lt;h2 id="plugin-versions-and-falco-rules"&gt;Plugin Versions and Falco Rules&lt;/h2&gt;
&lt;p&gt;To allow rules files to document the plugin versions they are compatible with, rules files can have a new top-level field &lt;code&gt;required_plugin_versions&lt;/code&gt;. The field is optional, and if not provided no plugin compatibility checks will be performed. The syntax of &lt;code&gt;required_plugin_versions&lt;/code&gt; is the following:&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;required_plugin_versions&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="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;&amp;lt;plugin_name&amp;gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;version&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;x.y.z&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;...&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Below required_plugin_versions is a list of objects, where each object has &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;version&lt;/code&gt; properties. If a plugin is loaded, and if an entry in &lt;code&gt;required_plugin_versions&lt;/code&gt; has a matching name, then the loaded plugin version must be semver compatible with the version property.&lt;/p&gt;
&lt;p&gt;Falco can load multiple rules files, and each file may contain its own &lt;code&gt;required_plugin_versions&lt;/code&gt; property. In this case, name+version pairs across all files will be merged, and in the case of duplicate names all provided versions must be compatible.&lt;/p&gt;
&lt;h2 id="plugin-developer-s-guide"&gt;Plugin Developer's Guide&lt;/h2&gt;
&lt;p&gt;If you are interested in authoring your own plugin, or modifying an existing plugin to add new functionality, we've written a &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/developer-guide/plugins/"&gt;developer's guide&lt;/a&gt; that documents the full plugin APIs and walks through two existing plugins to show how the API is used.&lt;/p&gt;</description></item><item><title>Docs: Registered Plugins</title><link>https://v0-43--falcosecurity.netlify.app/docs/concepts/plugins/registered-plugins/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/concepts/plugins/registered-plugins/</guid><description>
&lt;p&gt;You can find below the officially registered plugins, more details on &lt;a href="https://github.com/falcosecurity/plugins"&gt;https://github.com/falcosecurity/plugins&lt;/a&gt;.&lt;/p&gt;
&lt;style&gt;
.source {
background-color: #727d8d;
border: none;
color: #fff;
padding: 4px 5px;
border-radius: 5px;
}
&lt;/style&gt;
&lt;div class="table"&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;th scope="col"&gt;ID&lt;/th&gt;
&lt;th scope="col"&gt;Plugin&lt;/th&gt;
&lt;th scope="col"&gt;Type&lt;/th&gt;
&lt;th scope="col"&gt;Source&lt;/th&gt;
&lt;th scope="col"&gt;Description&lt;/th&gt;
&lt;th scope="col"&gt;Authors&lt;/th&gt;
&lt;th scope="col"&gt;URL&lt;/th&gt;
&lt;th scope="col"&gt;Rules URL&lt;/th&gt;
&lt;th scope="col"&gt;Licence&lt;/th&gt;
&lt;/thead&gt;
&lt;tr&gt;
&lt;td&gt;
1
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;k8saudit&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; k8s_audit &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Read Kubernetes Audit Events and monitor Kubernetes Clusters &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
2
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;cloudtrail&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; aws_cloudtrail &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Reads Cloudtrail JSON logs from files/S3 and injects as events &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/cloudtrail"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/cloudtrail/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
-
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;json&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; extraction &lt;/td&gt;
&lt;td&gt; &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Extract values from any JSON payload &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/json"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
3
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;dummy&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; dummy &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Reference plugin used to document interface &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/dummy"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
4
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;dummy_c&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; dummy_c &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Like dummy, but written in C&amp;#43;&amp;#43; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/dummy_c"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
5
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;docker&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; docker &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Docker Events &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/Issif"&gt;Thomas Labarussias&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/Issif/docker-plugin"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/Issif/docker-plugin/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
6
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;seccompagent&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; seccompagent &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Seccomp Agent Events &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/kinvolk/seccompagent"&gt;Alban Crequy&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/kinvolk/seccompagent"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
7
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;okta&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; okta &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Okta Log Events &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/okta"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/okta/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
8
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;github&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; github &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Github Webhook Events &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/github"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/github/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
9
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;k8saudit-eks&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; k8s_audit &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Read Kubernetes Audit Events from AWS EKS Clusters &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-eks"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
10
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;nomad&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; nomad &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Read Hashicorp Nomad Events Stream &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/albertollamaso/nomad-plugin/issues"&gt;Alberto Llamas&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/albertollamaso/nomad-plugin/tree/main"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/albertollamaso/nomad-plugin/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
11
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;dnscollector&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; dnscollector &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; DNS Collector Events &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/SysdigDan/dnscollector-falco-plugin/issues"&gt;Daniel Moloney&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/SysdigDan/dnscollector-falco-plugin"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/SysdigDan/dnscollector-falco-plugin/tree/master/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
12
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;gcpaudit&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; gcp_auditlog &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Read GCP Audit Logs &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/gcpaudit"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/gcpaudit/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
13
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;syslogsrv&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; syslogsrv &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Syslog Server Events &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/nabokihms/syslogsrv-falco-plugin/issues"&gt;Maksim Nabokikh&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/nabokihms/syslogsrv-falco-plugin/tree/main/plugins/syslogsrv"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/nabokihms/syslogsrv-falco-plugin/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
14
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;salesforce&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; salesforce &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Falco plugin providing basic runtime threat detection and auditing logging for Salesforce &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/an1245/falco-plugin-salesforce/issues"&gt;Andy&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/an1245/falco-plugin-salesforce/"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/an1245/falco-plugin-salesforce/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
15
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;box&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; box &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Falco plugin providing basic runtime threat detection and auditing logging for Box &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/an1245/falco-plugin-box/issues"&gt;Andy&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/an1245/falco-plugin-box/"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/an1245/falco-plugin-box/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
-
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;k8smeta&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; extraction &lt;/td&gt;
&lt;td&gt; &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Enriche Falco syscall flow with Kubernetes Metadata &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
16
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;k8saudit-gke&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; k8s_audit &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Read Kubernetes Audit Events from GKE Clusters &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-gke"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-gke/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
17
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;journald&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; journal &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Read Journald events into Falco &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/gnosek/falco-journald-plugin"&gt;Grzegorz Nosek&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/gnosek/falco-journald-plugin"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
18
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;kafka&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; kafka &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Read events from Kafka topics into Falco &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;Hunter Madison&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/kafka"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/kafka/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
19
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;gitlab&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; gitlab &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Falco plugin providing basic runtime threat detection and auditing logging for GitLab &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/an1245/falco-plugin-gitlab/issues"&gt;Andy&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/an1245/falco-plugin-gitlab"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/an1245/falco-plugin-gitlab/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
20
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;keycloak&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; keycloak &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Falco plugin for sourcing and extracting Keycloak user/admin events &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/mattiaforc/falco-keycloak-plugin/issues"&gt;Mattia Forcellese&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/mattiaforc/falco-keycloak-plugin"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/mattiaforc/falco-keycloak-plugin/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
21
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;k8saudit-aks&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; k8s_audit &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Read Kubernetes Audit Events from Azure AKS Clusters &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-aks"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
22
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;k8saudit-ovh&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; k8s_audit &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Read Kubernetes Audit Events from OVHcloud MKS Clusters &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;Aurélie Vache&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-ovh"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
23
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;dummy_rs&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; dummy_rs &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Like dummy, but written in Rust &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/dummy_rs"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
-
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;container&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; extraction &lt;/td&gt;
&lt;td&gt; &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Enriche Falco syscall flow with Container Metadata &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/container"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
-
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;krsi&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; extraction &lt;/td&gt;
&lt;td&gt; &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Security (KRSI) events support for Falco &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/krsi"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
24
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;collector&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; collector &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Generic collector to ingest raw payloads into Falco &lt;/td&gt;
&lt;td&gt; &lt;a href="https://falco.org/community"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/plugins/tree/main/plugins/collector"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
25
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;awselb&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; awselb &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; AWS Elastic Load Balancer access logs events &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/yukinakanaka/falco-plugin-aws-elb/issues"&gt;Yuki Nakamura&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/yukinakanaka/falco-plugin-aws-elb"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/yukinakanaka/falco-plugin-aws-elb/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
26
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;edera&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; edera_zone &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; A Falco plugin for forwarding libscap events out of Edera zones. &lt;/td&gt;
&lt;td&gt; &lt;a href="contact@edera.dev"&gt;Edera&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/edera-dev/falco_plugin/"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://docs.edera.dev/guides/observability/falco-integration/"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
27
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;nginx&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; nginx &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Real-time nginx access log monitoring for security threats.
Detects SQL injection, XSS, path traversal, command injection,
brute force attacks, and OWASP Top 10 vulnerabilities.
&lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/takaosgb3/falco-plugin-nginx/issues"&gt;takaosgb3&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/takaosgb3/falco-plugin-nginx"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/takaosgb3/falco-plugin-nginx/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
28
&lt;/td&gt;
&lt;td&gt; &lt;b&gt;coding_agent&lt;/b&gt; &lt;/td&gt;
&lt;td&gt; sourcing &lt;/td&gt;
&lt;td&gt; &lt;span class="source"&gt; coding_agent &lt;/span&gt; &lt;/td&gt;
&lt;td&gt; Runtime detection for AI coding agents with Falco (part of the Prempti
project). Intercepts tool calls (shell commands, file operations, web
fetches, MCP calls) before they run and produces allow/deny/ask
verdicts via customizable Falco rules, with a full audit trail of
agent activity.
&lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/prempti"&gt;The Falco Authors&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/prempti/tree/main/plugins/coding-agents-plugin"&gt;🔗&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; &lt;a href="https://github.com/falcosecurity/prempti/tree/main/rules"&gt;🔗 &lt;/td&gt;
&lt;td&gt; Apache-2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;</description></item></channel></rss>