Compare commits

...

1281 Commits

Author SHA1 Message Date
Angelo Puglisi 421197c142 chore(plugins/container): inline container_health_probe
Signed-off-by: Angelo Puglisi <angelopuglisi86@gmail.com>
2025-08-05 15:47:58 +02:00
Angelo Puglisi 755ec40b44 update(plugins/container): bump to 0.3.6
Signed-off-by: Angelo Puglisi <angelopuglisi86@gmail.com>
2025-08-05 09:39:56 +02:00
Angelo Puglisi ffdf1e221c fix(plugins/container): container_info to_json
Fix flat container info json.

Signed-off-by: Angelo Puglisi <angelopuglisi86@gmail.com>
2025-08-05 09:39:56 +02:00
dependabot[bot] 13b5a52f14 build(deps): bump the actions group with 2 updates
Bumps the actions group with 2 updates: [github/codeql-action](https://github.com/github/codeql-action) and [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer).


Updates `github/codeql-action` from 3.29.2 to 3.29.4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](181d5eefc2...4e828ff8d4)

Updates `sigstore/cosign-installer` from 3.9.1 to 3.9.2
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](398d4b0eee...d58896d6a1)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: sigstore/cosign-installer
  dependency-version: 3.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-04 12:41:48 +02:00
Federico Di Pierro 411f0f7387 fix(plugins/container): do not use async methods in scap replay mode (ie: when async ctx is null).
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-08-04 12:39:48 +02:00
Federico Di Pierro beabb1f661 cleanup(plugins/container): always use `procexit` logic to cleanup containers cache.
Container plugin stops relying upon `removed` notification for container engine SDKs too,
and always use the `procexit` logic.

The go-worker still has the ability to attach `removed` listeners,
but it's only used by worker test executable and go-worker tests now.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-08-04 12:39:48 +02:00
Federico Di Pierro 78247e761a new(plugins/container): properly send `container_removed` events for bpm,lxc,libvirt_lxc too.
Let the async event cleanup the cache for us.
This way, other plugins can get notified even when we are
removing a bpm/lxc container.

Also, bump plugin version to 0.3.5.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-08-04 12:39:48 +02:00
Federico Di Pierro e31be591a1 update(plugins): updated CHANGELOGS.
Also, added new dummy_rs changelog.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-08-01 09:54:27 +02:00
Federico Di Pierro 885c18ef5f update(plugins/container): bump to 0.3.4.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-31 12:23:25 +02:00
Federico Di Pierro b029bc3910 chore(plugins/k8smeta): drop experimental status.
Also, bump to 0.3.1.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-31 12:23:25 +02:00
Federico Di Pierro 11c7d16688 chore(plugins/container): move error log to debug level.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-31 12:23:25 +02:00
Federico Di Pierro 0275c81b60 chore(plugins/container): added some tests around workerLoop().
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-30 11:50:17 +02:00
Federico Di Pierro 4bcabb2efa chore(plugins/container): improve exit strategy for goroutine workers when stream of events is closed.
Exit the goroutine and stop polling its outChannel from workerLoop.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-30 11:50:17 +02:00
Federico Di Pierro dd90663b10 chore(plugins/container): fixed a log.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-30 11:50:17 +02:00
Federico Di Pierro 4684790780 fix(plugins/container): fixed build under recent gcc by including `algorithm`.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-30 11:50:17 +02:00
Federico Di Pierro 2487f7c71b chore(plugins/container): move `containerEventsErrorTimeout` to cri.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-30 11:50:17 +02:00
Federico Di Pierro 2fc5772dcc cleanup(plugins/container): podman `system.Events` now returns error synchronously.
Also, it spawns its own goroutine to fetch stream of events.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-30 11:50:17 +02:00
Federico Di Pierro f9da9fa465 chore(plugins/container): port docker engine away from deprecated APIs.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-30 11:50:17 +02:00
dependabot[bot] a76335d70f build(deps): bump the cargo group across 2 directories with 4 updates
Bumps the cargo group with 3 updates in the /plugins/dummy_rs directory: [rand](https://github.com/rust-random/rand), [serde_json](https://github.com/serde-rs/json) and [cc](https://github.com/rust-lang/cc-rs).
Bumps the cargo group with 3 updates in the /plugins/krsi directory: [serde_json](https://github.com/serde-rs/json), [tokio](https://github.com/tokio-rs/tokio) and [cc](https://github.com/rust-lang/cc-rs).


Updates `rand` from 0.9.1 to 0.9.2
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/rand_core-0.9.1...rand_core-0.9.2)

Updates `serde_json` from 1.0.140 to 1.0.141
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.140...v1.0.141)

Updates `cc` from 1.2.29 to 1.2.30
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.29...cc-v1.2.30)

Updates `serde_json` from 1.0.140 to 1.0.141
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.140...v1.0.141)

Updates `tokio` from 1.46.1 to 1.47.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.46.1...tokio-1.47.0)

Updates `cc` from 1.2.29 to 1.2.30
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.29...cc-v1.2.30)

---
updated-dependencies:
- dependency-name: rand
  dependency-version: 0.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: serde_json
  dependency-version: 1.0.141
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.30
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: serde_json
  dependency-version: 1.0.141
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: tokio
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-29 09:40:07 +02:00
Klaus Wagner 7bb3847f0a Podman init will expose nil on the error channel if init was successful
Signed-off-by: Klaus Wagner <Klaus.Wagner@erstegroup.com>
2025-07-29 09:34:07 +02:00
Klaus Wagner 59ae99b4a9 Optimize pull request - avoid unnecessary go routines and move constant definition
Signed-off-by: Klaus Wagner <Klaus.Wagner@erstegroup.com>
2025-07-29 09:34:07 +02:00
Klaus Wagner 4a03991a30 Update plugins/container/src/plugin.cpp
Co-authored-by: Federico Di Pierro <nierro92@gmail.com>
Signed-off-by: Klaus Wagner <nenioscio@gmail.com>
2025-07-29 09:34:07 +02:00
Klaus Wagner b58dd18c4a Apply suggestions from code review
Co-authored-by: Federico Di Pierro <nierro92@gmail.com>
Signed-off-by: Klaus Wagner <nenioscio@gmail.com>
2025-07-29 09:34:07 +02:00
Klaus Wagner d37f218356 Container plugin workaround fixing issues #3610 and #3630 for cri-o and podman engines
Signed-off-by: Klaus Wagner <Klaus.Wagner@erstegroup.com>
2025-07-29 09:34:07 +02:00
Klaus Wagner f4d1772d1f Container plugin workaround fixing cri-o issues #3610 and #3630
Signed-off-by: Klaus Wagner <Klaus.Wagner@erstegroup.com>
2025-07-29 09:34:07 +02:00
Willian Wang 33523cb75f fix `lastEventTime` not being updated
Signed-off-by: Willian Wang <git@willian.wang>
2025-07-28 17:30:07 +02:00
Willian Wang f1e0615a45 fix variable context
Signed-off-by: Willian Wang <git@willian.wang>
2025-07-28 09:20:03 +02:00
Willian Wang 474d8c9b25 typo
Signed-off-by: Willian Wang <git@willian.wang>
2025-07-28 09:20:03 +02:00
Willian Wang ffc6ea4e12 Improve handling of events with the same timestamp
Signed-off-by: Willian Wang <git@willian.wang>
2025-07-28 09:20:03 +02:00
Leonardo Grasso 5ca391e79e update(plugins/container): bump to v0.3.3
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-07-24 14:46:40 +02:00
Angelo Puglisi f28adb7d19 fix(plugins/container): parse_exit_process_event
Apply the same logic of libs ~user_group_updater

Signed-off-by: Angelo Puglisi <angelopuglisi86@gmail.com>
2025-07-24 14:29:40 +02:00
Angelo Puglisi a97e226962 chore(container/make): add CMAKE_EXPORT_COMPILE_COMMANDS
Generate the compile commands by default, to improve the development
experience (e.g. with clangd)

Signed-off-by: Angelo Puglisi <angelopuglisi86@gmail.com>
2025-07-24 14:22:40 +02:00
poiana e36b06de3f docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2025-07-24 11:26:39 +02:00
Federico Di Pierro 29644ec0c8 update(docs): update plugins changelogs.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-24 11:07:39 +02:00
Yuki Nakamura 19896b7931 feat: Add plugin for AWS ELB Access Log
Signed-off-by: Yuki Nakamura <yuki.nakamura@mapbox.com>
2025-07-24 11:06:40 +02:00
Federico Di Pierro 92ec4dcb6e chore(plugins/container): add a trace log when removing container from procexit.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-24 09:54:39 +02:00
Federico Di Pierro 6a7598280d update(plugins/container): bump version to 0.3.2.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-24 09:54:39 +02:00
Federico Di Pierro 1f8a375a12 fix(plugins/container): properly cleanup stale container cache entries for exiting containers.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-24 09:54:39 +02:00
Federico Di Pierro 2f4b632705 chore(plugins/container): properly cleanup fetchCh in test.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-23 11:56:33 +02:00
Federico Di Pierro 42fe4e2f36 update(docs): updated container plugin readme.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-23 11:56:33 +02:00
Leonardo Di Giovanna b71146b6bb docs: add `ekoops` as maintainer
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-07-23 11:12:34 +02:00
dependabot[bot] d086d34cf8 build(deps): bump golang.org/x/oauth2 in /build/registry
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.26.0 to 0.27.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.26.0...v0.27.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-version: 0.27.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-22 15:02:29 +02:00
Federico Di Pierro 1c135e36d3 chore(plugins/container): let async_ctx own the fetcher channel.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-07-21 12:59:27 +02:00
dependabot[bot] f212d50c02 build(deps): bump golang.org/x/oauth2 in /build/changelog
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.11.0 to 0.27.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.11.0...v0.27.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-version: 0.27.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 10:43:32 +02:00
dependabot[bot] d3305f8555 build(deps): bump github.com/containers/podman/v5
Bumps [github.com/containers/podman/v5](https://github.com/containers/podman) from 5.4.1 to 5.5.2.
- [Release notes](https://github.com/containers/podman/releases)
- [Changelog](https://github.com/containers/podman/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/containers/podman/compare/v5.4.1...v5.5.2)

---
updated-dependencies:
- dependency-name: github.com/containers/podman/v5
  dependency-version: 5.5.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 10:41:32 +02:00
Angelo Puglisi 6e02f917aa chore(plugins/container): drop fulfilled TODOs
m_container_ip and m_container_user are already exposed in table.cpp

Signed-off-by: Angelo Puglisi <angelopuglisi86@gmail.com>
2025-07-17 15:59:03 +02:00
Angelo Puglisi e8745cf12c chore(plugins/container): introduce and use container_info::ptr_t
Signed-off-by: Angelo Puglisi <angelopuglisi86@gmail.com>
2025-07-17 15:59:03 +02:00
Angelo Puglisi db2b9c9c51 chore(plugins/container): headers cleanup
Signed-off-by: Angelo Puglisi <angelopuglisi86@gmail.com>
2025-07-17 15:59:03 +02:00
Angelo Puglisi 283cb87012 chore(ci): clang-format in pre-commit
Signed-off-by: Angelo Puglisi <angelopuglisi86@gmail.com>
2025-07-17 15:35:04 +02:00
dependabot[bot] de2204270f build(deps): bump cargo_metadata
Bumps the cargo group with 1 update in the /plugins/krsi directory: [cargo_metadata](https://github.com/oli-obk/cargo_metadata).


Updates `cargo_metadata` from 0.20.0 to 0.21.0
- [Release notes](https://github.com/oli-obk/cargo_metadata/releases)
- [Changelog](https://github.com/oli-obk/cargo_metadata/blob/main/CHANGELOG.md)
- [Commits](https://github.com/oli-obk/cargo_metadata/compare/0.20.0...0.21.0)

---
updated-dependencies:
- dependency-name: cargo_metadata
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-15 09:42:45 +02:00
Angelo Puglisi a7da58ce0b chore(plugins/container): avoid building unneeded RE-flex targets
Building the container plugin without specifying the `container` target
makes it build `reflex` too, which is not needed, and fails too:
```
❯ cmake -B build -S .
...
❯ cmake --build build --parallel
...
[ 98%] Linking CXX executable reflex
/usr/bin/ld: libreflex_static_lib.a(unicode.cpp.o): in function `reflex::Unicode::toupper(int)':
unicode.cpp:(.text+0x6d5): undefined reference to `reflex::Unicode::Tables::toupper(int)'
/usr/bin/ld: libreflex_static_lib.a(unicode.cpp.o): in function `reflex::Unicode::tolower(int)':
unicode.cpp:(.text+0x6e5): undefined reference to `reflex::Unicode::Tables::tolower(int)'
collect2: error: ld returned 1 exit status
gmake[2]: *** [_deps/reflex-build/CMakeFiles/Reflex.dir/build.make:98: _deps/reflex-build/reflex] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:271: _deps/reflex-build/CMakeFiles/Reflex.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
[100%] Linking CXX shared library libreflex_shared_lib.so
[100%] Built target ReflexLib
gmake: *** [Makefile:136: all] Error 2
```

Signed-off-by: Angelo Puglisi <Angelo Puglisi angelopuglisi86@gmail.com>
2025-07-10 09:24:15 +02:00
dependabot[bot] 847bcafbba build(deps): bump the cargo group across 2 directories with 2 updates
Bumps the cargo group with 1 update in the /plugins/dummy_rs directory: [cc](https://github.com/rust-lang/cc-rs).
Bumps the cargo group with 2 updates in the /plugins/krsi directory: [tokio](https://github.com/tokio-rs/tokio) and [cc](https://github.com/rust-lang/cc-rs).


Updates `cc` from 1.2.27 to 1.2.29
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.27...cc-v1.2.29)

Updates `tokio` from 1.45.1 to 1.46.1
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.45.1...tokio-1.46.1)

Updates `cc` from 1.2.27 to 1.2.29
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.27...cc-v1.2.29)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.29
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: tokio
  dependency-version: 1.46.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.29
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 10:23:08 +02:00
Iacopo Rozzo e281227c36 fix(container): detect libpod container ids with cgroups mode split
Fix detection of the container ID for libpod containers using the split
cgroups mode.

Signed-off-by: Iacopo Rozzo <iacopo@sysdig.com>
2025-07-04 16:47:42 +02:00
dependabot[bot] 22aa85a720 build(deps): bump the actions group across 1 directory with 3 updates
Bumps the actions group with 3 updates in the / directory: [github/codeql-action](https://github.com/github/codeql-action), [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) and [Swatinem/rust-cache](https://github.com/swatinem/rust-cache).


Updates `github/codeql-action` from 3.29.0 to 3.29.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](ce28f5bb42...181d5eefc2)

Updates `sigstore/cosign-installer` from 3.8.2 to 3.9.1
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](3454372f43...398d4b0eee)

Updates `Swatinem/rust-cache` from 2.7.8 to 2.8.0
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](9d47c6ad4b...98c8021b55)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: sigstore/cosign-installer
  dependency-version: 3.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: Swatinem/rust-cache
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 15:41:22 +02:00
dependabot[bot] f39b7194d5 build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.236.0 to 0.238.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.236.0...v0.238.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.238.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 14:41:17 +02:00
dependabot[bot] c8f34c51c2 build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.235.0 to 0.238.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.235.0...v0.238.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.238.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 14:40:17 +02:00
dependabot[bot] 89bfe52e89 build(deps): bump the cargo group across 2 directories with 3 updates
Bumps the cargo group with 2 updates in the /plugins/dummy_rs directory: [zerocopy](https://github.com/google/zerocopy) and [libc](https://github.com/rust-lang/libc).
Bumps the cargo group with 2 updates in the /plugins/krsi directory: [zerocopy](https://github.com/google/zerocopy) and [libc](https://github.com/rust-lang/libc).


Updates `zerocopy` from 0.8.25 to 0.8.26
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.8.25...v0.8.26)

Updates `zerocopy-derive` from 0.8.25 to 0.8.26
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.8.25...v0.8.26)

Updates `libc` from 0.2.173 to 0.2.174
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.174/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.173...0.2.174)

Updates `zerocopy` from 0.8.25 to 0.8.26
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.8.25...v0.8.26)

Updates `zerocopy-derive` from 0.8.25 to 0.8.26
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.8.25...v0.8.26)

Updates `libc` from 0.2.173 to 0.2.174
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.174/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.173...0.2.174)

---
updated-dependencies:
- dependency-name: zerocopy
  dependency-version: 0.8.26
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: zerocopy-derive
  dependency-version: 0.8.26
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: libc
  dependency-version: 0.2.174
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: zerocopy
  dependency-version: 0.8.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: zerocopy-derive
  dependency-version: 0.8.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: libc
  dependency-version: 0.2.174
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 14:39:17 +02:00
Federico Di Pierro 398db32970 new(plugins/container): add test around null healthcheck in container json.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-06-25 09:17:48 +02:00
Federico Di Pierro ab266f5072 fix(plugins/container): fix healthcheck probe args retrieval since they can be null.
Also, bump container plugin to 0.3.1.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-06-25 09:17:48 +02:00
Leonardo Grasso 2f09a401de update(plugins/k8saudit-ovh): bump to v0.3.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-06-17 21:25:46 +02:00
Leonardo Grasso 8cb2bc8472 update(plugins/k8saudit-gke): bump to v0.6.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-06-17 21:25:46 +02:00
Leonardo Grasso ecadcf828d update(plugins/k8saudit-eks): bump to v0.9.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-06-17 21:25:46 +02:00
Leonardo Grasso 785bf34808 update(plugins/k8saudit-aks): bump to v0.3.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-06-17 21:25:46 +02:00
Leonardo Grasso 341801e663 build(plugins/k8saudit-*): bulk update for k8saudit v0.15.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-06-17 21:25:46 +02:00
Leonardo Grasso ba51c07d5f docs(plugins/k8saudit): changelog for v0.15.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-06-17 21:24:47 +02:00
Leonardo Grasso ebf9702547 docs(plugins/k8saudit): improve README.md
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-06-17 21:24:47 +02:00
dependabot[bot] 5d23e77c8b build(deps): bump the gomod group across 1 directory with 5 updates
Bumps the gomod group with 4 updates in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/aws/aws-sdk-go-v2` from 1.36.3 to 1.36.4
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.36.3...v1.36.4)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.29.14 to 1.29.16
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.14...config/v1.29.16)

Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.77 to 1.17.79
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.77...feature/s3/manager/v1.17.79)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.80.0 to 1.80.2
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.80.0...service/s3/v1.80.2)

Updates `github.com/aws/aws-sdk-go-v2/service/sqs` from 1.38.5 to 1.38.7
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.38.5...service/ecr/v1.38.7)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2
  dependency-version: 1.36.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.29.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-version: 1.17.79
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-version: 1.80.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/sqs
  dependency-version: 1.38.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 16:09:45 +02:00
dependabot[bot] 5ff53a686b build(deps): bump the cargo group across 2 directories with 4 updates
Bumps the cargo group with 3 updates in the /plugins/dummy_rs directory: [libc](https://github.com/rust-lang/libc), [cc](https://github.com/rust-lang/cc-rs) and [cfg-if](https://github.com/rust-lang/cfg-if).
Bumps the cargo group with 4 updates in the /plugins/krsi directory: [libc](https://github.com/rust-lang/libc), [bindgen](https://github.com/rust-lang/rust-bindgen), [cc](https://github.com/rust-lang/cc-rs) and [cfg-if](https://github.com/rust-lang/cfg-if).


Updates `libc` from 0.2.172 to 0.2.173
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.173/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.172...0.2.173)

Updates `cc` from 1.2.25 to 1.2.27
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.25...cc-v1.2.27)

Updates `cfg-if` from 1.0.0 to 1.0.1
- [Release notes](https://github.com/rust-lang/cfg-if/releases)
- [Changelog](https://github.com/rust-lang/cfg-if/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cfg-if/compare/1.0.0...v1.0.1)

Updates `libc` from 0.2.172 to 0.2.173
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.173/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.172...0.2.173)

Updates `bindgen` from 0.71.1 to 0.72.0
- [Release notes](https://github.com/rust-lang/rust-bindgen/releases)
- [Changelog](https://github.com/rust-lang/rust-bindgen/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/rust-bindgen/compare/v0.71.1...v0.72.0)

Updates `cc` from 1.2.25 to 1.2.27
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.25...cc-v1.2.27)

Updates `cfg-if` from 1.0.0 to 1.0.1
- [Release notes](https://github.com/rust-lang/cfg-if/releases)
- [Changelog](https://github.com/rust-lang/cfg-if/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cfg-if/compare/1.0.0...v1.0.1)

---
updated-dependencies:
- dependency-name: libc
  dependency-version: 0.2.173
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.27
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: cfg-if
  dependency-version: 1.0.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: libc
  dependency-version: 0.2.173
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: bindgen
  dependency-version: 0.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.27
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: cfg-if
  dependency-version: 1.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 16:08:45 +02:00
dependabot[bot] c133d6700a build(deps): bump golang.org/x/time in /shared/go/azure/eventhub
Bumps [golang.org/x/time](https://github.com/golang/time) from 0.11.0 to 0.12.0.
- [Commits](https://github.com/golang/time/compare/v0.11.0...v0.12.0)

---
updated-dependencies:
- dependency-name: golang.org/x/time
  dependency-version: 0.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 16:07:45 +02:00
dependabot[bot] 09c0f73f11 build(deps): bump github.com/falcosecurity/plugins/plugins/k8saudit
Bumps [github.com/falcosecurity/plugins/plugins/k8saudit](https://github.com/falcosecurity/plugins) from 0.13.0 to 0.14.0.
- [Release notes](https://github.com/falcosecurity/plugins/releases)
- [Changelog](https://github.com/falcosecurity/plugins/blob/main/release.md)
- [Commits](https://github.com/falcosecurity/plugins/compare/plugins/k8saudit/v0.13.0...plugins/k8saudit/v0.14.0)

---
updated-dependencies:
- dependency-name: github.com/falcosecurity/plugins/plugins/k8saudit
  dependency-version: 0.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 16:06:45 +02:00
dependabot[bot] e29787d19e build(deps): bump github.com/falcosecurity/plugins/plugins/k8saudit
Bumps [github.com/falcosecurity/plugins/plugins/k8saudit](https://github.com/falcosecurity/plugins) from 0.13.0 to 0.14.0.
- [Release notes](https://github.com/falcosecurity/plugins/releases)
- [Changelog](https://github.com/falcosecurity/plugins/blob/main/release.md)
- [Commits](https://github.com/falcosecurity/plugins/compare/plugins/k8saudit/v0.13.0...plugins/k8saudit/v0.14.0)

---
updated-dependencies:
- dependency-name: github.com/falcosecurity/plugins/plugins/k8saudit
  dependency-version: 0.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 16:05:45 +02:00
Zaulao 65cb0781a4 fix(extract.go): renaming variables to match context
Signed-off-by: Zaulao <sauloguilhermino@gmail.com>
2025-06-17 15:07:45 +02:00
Zaulao 3fcea87969 new(k8saudit): add extraction of container command and args from pods
Signed-off-by: Zaulao <saulo.guilhermino@incognia.com>
2025-06-17 15:07:45 +02:00
dependabot[bot] 299d65b4fb build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.235.0 to 0.236.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.235.0...v0.236.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.236.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 15:06:45 +02:00
dependabot[bot] 00ea9d3924 build(deps): bump golang.org/x/time in /plugins/k8saudit-aks
Bumps [golang.org/x/time](https://github.com/golang/time) from 0.11.0 to 0.12.0.
- [Commits](https://github.com/golang/time/compare/v0.11.0...v0.12.0)

---
updated-dependencies:
- dependency-name: golang.org/x/time
  dependency-version: 0.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 15:05:45 +02:00
dependabot[bot] 4749762c8b build(deps): bump github/codeql-action in the actions group
Bumps the actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.28.18 to 3.28.19
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](ff0a06e83c...fca7ace96b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 15:04:44 +02:00
dependabot[bot] 7e2c91b7dd build(deps): bump dtolnay/rust-toolchain
Bumps [dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from 888c2e1ea69ab0d4330cbf0af1ecc7b68f368cc1 to b3b07ba8b418998c39fb20f53e8b695cdcc8de1b.
- [Release notes](https://github.com/dtolnay/rust-toolchain/releases)
- [Commits](888c2e1ea6...b3b07ba8b4)

---
updated-dependencies:
- dependency-name: dtolnay/rust-toolchain
  dependency-version: b3b07ba8b418998c39fb20f53e8b695cdcc8de1b
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 15:03:44 +02:00
Leonardo Di Giovanna 51f25cc840 docs(plugins): update container plugin changelog
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-06-16 14:44:36 +02:00
Federico Di Pierro 2b5f8a8feb update(plugins/container): bump plugin version to 0.3.0
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-06-13 12:37:16 +02:00
Federico Di Pierro 5cfa3780e6 chore(plugins/container): set an unexisted tid on generated asyncevents.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-06-13 12:37:16 +02:00
Leonardo Di Giovanna 8f7f35638b docs(plugins): update plugins changelogs
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-06-11 11:38:05 +02:00
Jason Dellaluce db8f4121a8 chore(k8saudit): update readme with new field
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2025-06-09 10:35:53 +02:00
Jason Dellaluce 03b1df33d9 update(k8saudit): bump version to 0.14.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2025-06-09 10:35:53 +02:00
Jason Dellaluce 59af3f9abf new(k8saudit): add field for extracting container names from pods
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2025-06-09 10:35:53 +02:00
Federico Di Pierro f01e70d6a4 update(plugins/container): bump container plugin to 0.2.6.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-06-05 14:16:30 +02:00
Federico Di Pierro 5fcee14c54 fix(plugins/container): avoid possible nil ptr dereference in cri and containerd engines.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-06-05 13:55:30 +02:00
Federico Di Pierro 2bb872eed8 fx(plugins/container): do not override containers_image_openpgp tag in `exe` target.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-06-03 14:10:13 +02:00
Federico Di Pierro 1fe9569c93 chore(ci,plugins/container): use `-tags containers_image_openpgp ` for test make target too.
This allows us to drop libgpgme-dev dep from test ci.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-06-03 14:10:13 +02:00
dependabot[bot] 0e0737ef3b build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.234.0 to 0.235.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.234.0...v0.235.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.235.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 14:08:13 +02:00
dependabot[bot] a214622241 build(deps): bump github.com/aws/aws-lambda-go in /plugins/cloudtrail
Bumps [github.com/aws/aws-lambda-go](https://github.com/aws/aws-lambda-go) from 1.48.0 to 1.49.0.
- [Release notes](https://github.com/aws/aws-lambda-go/releases)
- [Commits](https://github.com/aws/aws-lambda-go/compare/v1.48.0...v1.49.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-lambda-go
  dependency-version: 1.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 14:07:13 +02:00
Leonardo Di Giovanna 576b1c9ffc fix(plugins/container): redefine port binding port and IP as integers
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-06-03 14:06:13 +02:00
dependabot[bot] 77e6472f5a build(deps): bump the cargo group across 2 directories with 2 updates
Bumps the cargo group with 1 update in the /plugins/dummy_rs directory: [cc](https://github.com/rust-lang/cc-rs).
Bumps the cargo group with 2 updates in the /plugins/krsi directory: [num_cpus](https://github.com/seanmonstar/num_cpus) and [cc](https://github.com/rust-lang/cc-rs).


Updates `cc` from 1.2.24 to 1.2.25
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.24...cc-v1.2.25)

Updates `num_cpus` from 1.16.0 to 1.17.0
- [Release notes](https://github.com/seanmonstar/num_cpus/releases)
- [Changelog](https://github.com/seanmonstar/num_cpus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/num_cpus/compare/v1.16.0...v1.17.0)

Updates `cc` from 1.2.24 to 1.2.25
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.24...cc-v1.2.25)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.25
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: num_cpus
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.25
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 14:00:13 +02:00
dependabot[bot] af68b7e66d build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.234.0 to 0.235.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.234.0...v0.235.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.235.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 10:03:10 +02:00
Leonardo Di Giovanna 8d44358d01 build(plugins/krsi): bump `cargo_metadata` from 0.19.0 to 0.20.0
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-06-03 10:01:10 +02:00
dependabot[bot] a48093f0c2 build(deps): bump the gomod group across 1 directory with 2 updates
Bumps the gomod group with 1 update in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.76 to 1.17.77
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.76...feature/s3/manager/v1.17.77)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.79.4 to 1.80.0
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.79.4...service/s3/v1.80.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-version: 1.17.77
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-version: 1.80.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 10:00:10 +02:00
matteopasa e1a0753f92 bump version
Signed-off-by: matteopasa <matteo.pasina@sysdig.com>
2025-05-29 16:11:27 +02:00
matteopasa f7dca71dbb add time field extract
Signed-off-by: matteopasa <matteo.pasina@sysdig.com>
2025-05-29 16:11:27 +02:00
dependabot[bot] 0cdc099774 build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.233.0 to 0.234.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.233.0...v0.234.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.234.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-27 12:18:11 +02:00
dependabot[bot] 8c3cbb2a2d build(deps): bump the cargo group across 2 directories with 2 updates
Bumps the cargo group with 1 update in the /plugins/dummy_rs directory: [cc](https://github.com/rust-lang/cc-rs).
Bumps the cargo group with 2 updates in the /plugins/krsi directory: [tokio](https://github.com/tokio-rs/tokio) and [cc](https://github.com/rust-lang/cc-rs).


Updates `cc` from 1.2.23 to 1.2.24
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.23...cc-v1.2.24)

Updates `tokio` from 1.45.0 to 1.45.1
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.45.0...tokio-1.45.1)

Updates `cc` from 1.2.23 to 1.2.24
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.23...cc-v1.2.24)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.24
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: tokio
  dependency-version: 1.45.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-27 12:11:11 +02:00
dependabot[bot] 3c32e67f77 build(deps): bump the gomod group across 1 directory with 2 updates
Bumps the gomod group with 1 update in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.75 to 1.17.76
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.75...feature/s3/manager/v1.17.76)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.79.3 to 1.79.4
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.79.3...service/s3/v1.79.4)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-version: 1.17.76
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-version: 1.79.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-27 12:10:11 +02:00
dependabot[bot] 898b3cb9d5 build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.233.0 to 0.234.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.233.0...v0.234.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.234.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-27 12:02:11 +02:00
Leonardo Di Giovanna d4e8eb2ff6 feat(plugins/krsi): add initial `renameat` parsing/extraction support
Add initial `renameat` parsing and extraction support. The support
must be completed by updating the sinsp status leveraging the parsing
support.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-27 12:01:11 +02:00
Leonardo Di Giovanna 9fd1d28b47 refactor(plugins/krsi): remove redundant parts and rephrase README.md
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-26 16:27:06 +02:00
Leonardo Di Giovanna 56ec9a81be refactor(plugins/krsi): rename example file as `example_rules.yaml`
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-26 16:27:06 +02:00
Leonardo Di Giovanna c358225d6e refactor(plugins/krsi/krsi): split event parsing into dedicated funcs
Reorganize code handling event parsing and field extraction
capabilities into separate functions.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-26 16:26:06 +02:00
Luca Guerra b1a5800b17 chore(plugins/container): bump version to 0.2.4
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-05-22 16:35:40 +02:00
dependabot[bot] 4792bca6a6 build(deps): bump github.com/containerd/containerd/v2
Bumps [github.com/containerd/containerd/v2](https://github.com/containerd/containerd) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](https://github.com/containerd/containerd/compare/v2.0.4...v2.0.5)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd/v2
  dependency-version: 2.0.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-22 11:13:39 +02:00
Leonardo Di Giovanna b56ce0aabd refactor(plugins/krsi/krsi): fix extracted field desc formatting
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-21 10:09:34 +02:00
Leonardo Di Giovanna f697f53526 refactor(plugins/krsi/krsi-ebpf): use slices in `auxbuf` code
Replace usage of offsets with slices. This enables better compile-time
checks thanks to the native support for slice types.

In order to restore a previous auxbuf writer state, the user must
first cache its state using the `Writer::save()` and
`AuxiliaryBuffer::save_writer_state()` APIs; then it can restore it
using the `AuxiliaryBuffer::resume_writer()` API.

Moreover, make constants governing the auxbuf limits more precise,
and add documentation related to some auxbuf APIs.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-20 18:43:53 +02:00
Leonardo Di Giovanna afb97f6ff7 refactor(plugins/krsi/krsi-ebpf): avoid `auxbuf` repetition in paths
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-20 18:43:53 +02:00
Goutam Tadi 319bdd4e94 able to get pod security policy violations from audit events
Signed-off-by: Goutam Tadi <gtadi@astronomer.io>
2025-05-20 18:43:30 +02:00
dependabot[bot] 576b4394ee build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.232.0 to 0.233.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.232.0...v0.233.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.233.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 18:42:29 +02:00
dependabot[bot] e4e1edf481 build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.232.0 to 0.233.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.232.0...v0.233.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.233.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 14:25:28 +02:00
dependabot[bot] 6ef6f85c3f build(deps): bump github.com/segmentio/kafka-go
Bumps the gomod group with 1 update in the /plugins/kafka directory: [github.com/segmentio/kafka-go](https://github.com/segmentio/kafka-go).


Updates `github.com/segmentio/kafka-go` from 0.4.47 to 0.4.48
- [Release notes](https://github.com/segmentio/kafka-go/releases)
- [Commits](https://github.com/segmentio/kafka-go/compare/v0.4.47...v0.4.48)

---
updated-dependencies:
- dependency-name: github.com/segmentio/kafka-go
  dependency-version: 0.4.48
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 14:24:28 +02:00
dependabot[bot] 896d6bd3d0 build(deps): bump the actions group with 3 updates
Bumps the actions group with 3 updates: [actions/setup-go](https://github.com/actions/setup-go), [github/codeql-action](https://github.com/github/codeql-action) and [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials).


Updates `actions/setup-go` from 5.4.0 to 5.5.0
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](0aaccfd150...d35c59abb0)

Updates `github/codeql-action` from 3.28.17 to 3.28.18
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](60168efe1c...ff0a06e83c)

Updates `aws-actions/configure-aws-credentials` from 4.1.0 to 4.2.1
- [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases)
- [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
- [Commits](ececac1a45...b475783126)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: 5.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: github/codeql-action
  dependency-version: 3.28.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: aws-actions/configure-aws-credentials
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 14:22:28 +02:00
dependabot[bot] dd775b54bc build(deps): bump the cargo group across 2 directories with 4 updates
Bumps the cargo group with 3 updates in the /plugins/dummy_rs directory: [zerocopy](https://github.com/google/zerocopy), [bitflags](https://github.com/bitflags/bitflags) and [cc](https://github.com/rust-lang/cc-rs).
Bumps the cargo group with 2 updates in the /plugins/krsi directory: [bitflags](https://github.com/bitflags/bitflags) and [cc](https://github.com/rust-lang/cc-rs).


Updates `zerocopy` from 0.8.23 to 0.8.25
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.8.23...v0.8.25)

Updates `zerocopy-derive` from 0.8.23 to 0.8.25
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.8.23...v0.8.25)

Updates `bitflags` from 2.9.0 to 2.9.1
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.9.0...2.9.1)

Updates `cc` from 1.2.22 to 1.2.23
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.22...cc-v1.2.23)

Updates `bitflags` from 2.9.0 to 2.9.1
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.9.0...2.9.1)

Updates `cc` from 1.2.22 to 1.2.23
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.22...cc-v1.2.23)

---
updated-dependencies:
- dependency-name: zerocopy
  dependency-version: 0.8.25
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: zerocopy-derive
  dependency-version: 0.8.25
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: bitflags
  dependency-version: 2.9.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.23
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: bitflags
  dependency-version: 2.9.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 10:56:27 +02:00
Leonardo Di Giovanna 400cdcbbcd fix(plugins/krsi): properly handle `auxbuf` writing errors
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-19 12:07:01 +02:00
Leonardo Di Giovanna 53ba10dd75 refactor(plugins/krsi): remove `auxbuf` unsafe code using `zerocopy`
Remove unsafe code from `auxbuf` by using `zerocopy` crate to perform
conversions between bytes and structs as well as unaligned read and
write operations.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-19 11:17:01 +02:00
Federico Di Pierro c64a5c8427 chore(docs): updated plugin container readme.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-05-19 10:10:00 +02:00
Federico Di Pierro 74b643add4 chore(src): fix formatting.
Also bump plugin version to 0.2.3.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-05-19 10:10:00 +02:00
Leonardo Grasso bc645a814f docs(plugins/container): deprecation message for old `k8s` fields
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-16 16:08:46 +02:00
dependabot[bot] 5dd873d6b1 build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.231.0 to 0.232.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.231.0...v0.232.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.232.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 10:51:46 +02:00
dependabot[bot] 5842a338fb build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.231.0 to 0.232.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.231.0...v0.232.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.232.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 18:18:41 +02:00
dependabot[bot] fe732fc242 build(deps): bump github.com/invopop/jsonschema in /plugins/k8saudit-eks
Bumps [github.com/invopop/jsonschema](https://github.com/invopop/jsonschema) from 0.8.0 to 0.13.0.
- [Commits](https://github.com/invopop/jsonschema/compare/v0.8.0...v0.13.0)

---
updated-dependencies:
- dependency-name: github.com/invopop/jsonschema
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 17:23:40 +02:00
dependabot[bot] 8a00cd0c3a build(deps): bump oras.land/oras-go/v2 in /build/registry
Bumps [oras.land/oras-go/v2](https://github.com/oras-project/oras-go) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/oras-project/oras-go/releases)
- [Commits](https://github.com/oras-project/oras-go/compare/v2.5.0...v2.6.0)

---
updated-dependencies:
- dependency-name: oras.land/oras-go/v2
  dependency-version: 2.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 17:20:41 +02:00
dependabot[bot] 994245aacf build(deps): bump the cargo group across 2 directories with 2 updates
Bumps the cargo group with 1 update in the /plugins/dummy_rs directory: [cc](https://github.com/rust-lang/cc-rs).
Bumps the cargo group with 2 updates in the /plugins/krsi directory: [tokio](https://github.com/tokio-rs/tokio) and [cc](https://github.com/rust-lang/cc-rs).


Updates `cc` from 1.2.21 to 1.2.22
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.21...cc-v1.2.22)

Updates `tokio` from 1.44.2 to 1.45.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.44.2...tokio-1.45.0)

Updates `cc` from 1.2.21 to 1.2.22
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.21...cc-v1.2.22)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.22
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: tokio
  dependency-version: 1.45.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 17:18:41 +02:00
Leonardo Di Giovanna bacfc08fa0 refactor(plugins/krsi/krsi-ebpf): move extraction logic out of auxbuf
Move data extraction logic out of auxbuf by providing a generic way
of storing fixed-length parameters and a generic way of storing
variable-length parameters. The two main helpers are
`auxbuf::Writer::store_fixed_len_param()` and
`auxbuf::Writer::store_var_len_param()`. Both these helpers
accept some sort of length parameters, allowing to reserve memory on
the buffer, and a `write_fn`, allowing to build the parameter content.
`write_fn` receives an `auxbuf::ParamWriter` as parameter: this
object allows to build the parameter content by providing a way to
write chunks of data.

The data extraction logic now resides in a separate
`operations::writer_helpers` module.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-15 17:02:41 +02:00
Federico Di Pierro 298b671a66 chore(plugins/container): avoid useless req.set_value of empty string.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-05-13 14:29:29 +02:00
Federico Di Pierro 6e458f9fdd update(plugins/k8smeta): bump k8smeta to 0.3.0 final.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-05-13 14:28:29 +02:00
Leonardo Grasso 8f55be8aec revert: update(plugins/k8saudit-gke): bump to v0.6.0
Since v0.5.0 has not been released yet.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-13 10:10:28 +02:00
Leonardo Grasso 089e4bb36a docs(plugins/k8saudit-*): bulk update READMEs
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso ef1682ccf8 docs(plugins/k8saudit-ovh): add files header
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso 53db6b4a6d update(plugins/k8saudit-ovh): bump to v0.2.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso a116c381f6 update(plugins/k8saudit-gke): bump to v0.6.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso a2af2f414a update(plugins/k8saudit-eks): bump to v0.8.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso 2a07283f0b update(plugins/k8saudit-aks): bump to v0.2.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso de3f2e5a51 update(plugins/k8saudit-gke): upgrade to k8saudit v0.13
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso 3933adc6d4 update(plugins/k8saudit-eks): upgrade to k8saudit v0.13 and other deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso f195192f04 update(plugins/k8saudit-aks): upgrade to k8saudit v0.13
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso e3e4d0ca95 docs(plugins/k8saudit): update README
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Grasso 1b1c65ff10 docs(plugins/k8saudit): update changelog
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 16:46:23 +02:00
Leonardo Di Giovanna 3f35135b52 refactor(plugins/krsi/krsi-ebpf): reorder `auxbuf` module code
Use a consistent order in `auxbuf` module code by listing the
private methods right after their usage.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-12 14:31:23 +02:00
Leonardo Di Giovanna 379f998ee1 refactor(plugins/krsi/krsi-ebpf): remove auxbuf dep on shared_state
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-12 14:31:23 +02:00
Leonardo Grasso 9dcac81d76 docs(plugins/k8saudit): update changelog
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 13:30:22 +02:00
Leonardo Grasso f046209944 update(plugins/k8saudit): bump to v0.13.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-12 13:30:22 +02:00
Leonardo Di Giovanna 40ffcae272 refactor(plugins/krsi/krsi-ebpf): introduce auxbuf writer abstraction
Introduce auxbuf writer abstraction to split data container from
business logic writing into them.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-12 12:53:23 +02:00
Leonardo Di Giovanna 730e3fcbdb refactor(plugins/krsi/krsi-ebpf): remove auxbuf dep on ringbuf
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-10 12:41:09 +02:00
Leonardo Di Giovanna c5f52708c7 refactor(plugins/krsi/krsi-ebpf): change auxbuf internal naming conv
Change the internal auxbuf methods' naming convention from using
`push*` to `write*`

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-09 17:28:04 +02:00
Leonardo Di Giovanna 3a4c46adb8 refactor(plugins/krsi/krsi-ebpf): rename `auxmap` to `auxbuf`
Replace "auxiliary map" with "auxiliary buffer", as the name fits
more its purpose.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-09 16:52:03 +02:00
Leonardo Di Giovanna 54c828718e fix(plugins/krsi): use safe ring buffer events parsing logic
Replace unsafe ring buffer events parsing logic with safe one.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
Co-authored-by: Grzegorz Nosek <grzegorz.nosek@sysdig.com>
2025-05-09 15:28:03 +02:00
Leonardo Di Giovanna 2e7dff5a1d refactor(plugins/krsi/krsi): use macros for field extraction
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-09 15:28:03 +02:00
Leonardo Di Giovanna 3b144477c2 fix(plugins/krsi/krsi-ebpf): send only interesting payload
Instead of sending the entire auxiliary map buffer, send only data
the populated sub-part.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-08 11:51:55 +02:00
dependabot[bot] 4b9a35e6a8 build(deps): bump golang.org/x/net in /build/registry
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.37.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.37.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 11:45:55 +02:00
poiana 729baed0ba docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2025-05-07 17:27:50 +02:00
Goutam Tadi 4b6e9f313f able to get validation failure message from a Validating admission policy
Signed-off-by: Goutam Tadi <gtadi@astronomer.io>
2025-05-07 17:25:50 +02:00
dependabot[bot] be90a9810b build(deps): bump github.com/aws/aws-sdk-go-v2/feature/s3/manager
Bumps the gomod group with 1 update in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.74 to 1.17.75
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.74...feature/s3/manager/v1.17.75)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-version: 1.17.75
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 17:24:50 +02:00
Leonardo Grasso 6d6d44c092 docs(plugins/collector): add example rule
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-07 16:13:50 +02:00
Leonardo Grasso 95ced3e185 update(registry.yaml): add collector plugin
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-07 16:13:50 +02:00
Leonardo Grasso f2dcd4d7b5 docs(plugins/collector): intial README and CHANGELOG
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-07 16:13:50 +02:00
Leonardo Grasso c9cbb98077 new(plugins): add collector plugin
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-05-07 16:13:50 +02:00
Federico Di Pierro 9c1c488086 fix(plugins/container): use `C.GoString()` in `AskForContainerInfo`.
Since the c string comes from a stack variable `.c_str()`,
and the go string will be used async, `ptr.GoString()` does not
guarantee that the string is kept alive for all its duration,
leading to bogus reads.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-05-06 17:03:45 +02:00
Federico Di Pierro c1e1c8f4b6 cleanup(ci): use provided reusable workflow by libs for container plugin e2e tests.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-05-06 17:03:45 +02:00
Federico Di Pierro b9092985a4 update(plugins/container): bumped plugin container to 0.2.2.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-05-06 17:03:45 +02:00
Federico Di Pierro a5840d1629 fix(plugins/container): use an unique ctx for fetcher.
Podman relies upon context to store its connection infos.
Using same ctx already used by the real Podman engine means that
we are going to tamper with its connection info stored in the main ctx.

Instead, fetcher should use its own context.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-05-06 11:46:44 +02:00
dependabot[bot] 6ac5f7589f build(deps): bump golang.org/x/oauth2 in /plugins/github
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.29.0 to 0.30.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.29.0...v0.30.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-version: 0.30.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 10:09:43 +02:00
dependabot[bot] 75e6c2d9d0 build(deps): bump the cargo group across 2 directories with 7 updates
Bumps the cargo group with 5 updates in the /plugins/dummy_rs directory:

| Package | From | To |
| --- | --- | --- |
| [rand](https://github.com/rust-random/rand) | `0.8.5` | `0.9.1` |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.97` | `1.0.98` |
| [libc](https://github.com/rust-lang/libc) | `0.2.171` | `0.2.172` |
| [log](https://github.com/rust-lang/log) | `0.4.26` | `0.4.27` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.2.16` | `1.2.21` |

Bumps the cargo group with 6 updates in the /plugins/krsi directory:

| Package | From | To |
| --- | --- | --- |
| [falco_plugin](https://github.com/falcosecurity/plugin-sdk-rs) | `0.4.2` | `0.4.3` |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.97` | `1.0.98` |
| [env_logger](https://github.com/rust-cli/env_logger) | `0.11.7` | `0.11.8` |
| [libc](https://github.com/rust-lang/libc) | `0.2.171` | `0.2.172` |
| [log](https://github.com/rust-lang/log) | `0.4.26` | `0.4.27` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.2.16` | `1.2.21` |



Updates `rand` from 0.8.5 to 0.9.1
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.5...rand_core-0.9.1)

Updates `anyhow` from 1.0.97 to 1.0.98
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.97...1.0.98)

Updates `libc` from 0.2.171 to 0.2.172
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.172/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.171...0.2.172)

Updates `log` from 0.4.26 to 0.4.27
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.26...0.4.27)

Updates `cc` from 1.2.16 to 1.2.21
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.16...cc-v1.2.21)

Updates `falco_plugin` from 0.4.2 to 0.4.3
- [Release notes](https://github.com/falcosecurity/plugin-sdk-rs/releases)
- [Commits](https://github.com/falcosecurity/plugin-sdk-rs/compare/v0.4.2...v0.4.3)

Updates `anyhow` from 1.0.97 to 1.0.98
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.97...1.0.98)

Updates `env_logger` from 0.11.7 to 0.11.8
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.11.7...v0.11.8)

Updates `libc` from 0.2.171 to 0.2.172
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.172/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.171...0.2.172)

Updates `log` from 0.4.26 to 0.4.27
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.26...0.4.27)

Updates `cc` from 1.2.16 to 1.2.21
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.16...cc-v1.2.21)

---
updated-dependencies:
- dependency-name: rand
  dependency-version: 0.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: anyhow
  dependency-version: 1.0.98
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: libc
  dependency-version: 0.2.172
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: log
  dependency-version: 0.4.27
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.21
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: falco_plugin
  dependency-version: 0.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: anyhow
  dependency-version: 1.0.98
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: env_logger
  dependency-version: 0.11.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: libc
  dependency-version: 0.2.172
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: log
  dependency-version: 0.4.27
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 10:08:43 +02:00
dependabot[bot] b698fa73a9 build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.230.0 to 0.231.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.230.0...v0.231.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.231.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 10:05:43 +02:00
Leonardo Di Giovanna e53b45e96c docs(plugins/krsi): add `ekoops` as maintainer
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-06 09:49:44 +02:00
dependabot[bot] a8b91211cb build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.230.0 to 0.231.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.230.0...v0.231.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.231.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 09:33:43 +02:00
dependabot[bot] 5f82db4d59 build(deps): bump the actions group with 3 updates
Bumps the actions group with 3 updates: [github/codeql-action](https://github.com/github/codeql-action), [actions/download-artifact](https://github.com/actions/download-artifact) and [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer).


Updates `github/codeql-action` from 3.28.15 to 3.28.16
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](45775bd823...28deaeda66)

Updates `actions/download-artifact` from 4.2.1 to 4.3.0
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](95815c38cf...d3f86a106a)

Updates `sigstore/cosign-installer` from 3.8.1 to 3.8.2
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](d7d6bc7722...3454372f43)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/download-artifact
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: sigstore/cosign-installer
  dependency-version: 3.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 09:32:43 +02:00
Leonardo Di Giovanna f91ed60792 feat(plugins/krsi): add `protocol` field extraction support
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-05 12:46:37 +02:00
Leonardo Di Giovanna 3225dab268 ci: add config for dependabot to handle `cargo` dependencies
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-05 12:36:37 +02:00
dependabot[bot] 48d71023bb build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.229.0 to 0.230.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.229.0...v0.230.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.230.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 12:35:37 +02:00
dependabot[bot] 81b7e1df62 build(deps): bump github.com/testcontainers/testcontainers-go/modules/kafka
Bumps [github.com/testcontainers/testcontainers-go/modules/kafka](https://github.com/testcontainers/testcontainers-go) from 0.36.0 to 0.37.0.
- [Release notes](https://github.com/testcontainers/testcontainers-go/releases)
- [Commits](https://github.com/testcontainers/testcontainers-go/compare/v0.36.0...v0.37.0)

---
updated-dependencies:
- dependency-name: github.com/testcontainers/testcontainers-go/modules/kafka
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 12:34:37 +02:00
Leonardo Di Giovanna 199b754965 perf(plugins/krsi/krsi-ebpf): improve memory mgt by sharing state map
Use a single map to save the state that operations share among
multiple programs. Using a single map has a lower impact on the system
memory wrt the approach leveraging a single map per operation.

A single program can save, for the current thread, some information
that wants to share with other programs aiming to collect data for a
given operation. Since a single thread, in a given moment, can only
execute a single operation, the shared information can be encoded
using enum and their variants, a single variant representing the info
of a single operation. Notice that variants are single-element tuple
struct: this decision was made to keep the data access more ergonomic.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-05 09:35:36 +02:00
Leonardo Di Giovanna f85ec1bbb7 refactor(krsi-ebpf): rename `shared_maps` to `shared_state`
Rename `shared_maps` to `shared_state` and align getters to naming
convention.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-05 09:35:36 +02:00
Leonardo Di Giovanna fe408536dd chore: enforce coding style in `dummy_rs` plugin
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-02 14:26:21 +02:00
Leonardo Di Giovanna 212bb3bc48 chore: add `pre-commit` hooks for enforcing coding style and policies
Enforce global coding style and policies by leveraging the
`pre-commit` framework. Move the `krsi` plugin's specific `pre-commit`
configuration in the root of the project, tweaking the `rustfmt.toml`
file to enforce the `rustfmt` tool's edition on a plugin-basis instead
of enforcing it globally in the `pre-commit` hook. Update the `krsi`
plugin's `README.md` to point to the new project's `README.md`
section.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-05-02 14:26:21 +02:00
dependabot[bot] 7db1914cb2 build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.229.0 to 0.230.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.229.0...v0.230.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.230.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 16:28:10 +02:00
dependabot[bot] 6d9cd7543c build(deps): bump the gomod group across 4 directories with 4 updates
Bumps the gomod group with 1 update in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2).
Bumps the gomod group with 1 update in the /plugins/k8saudit-aks directory: [github.com/Azure/azure-sdk-for-go/sdk/storage/azblob](https://github.com/Azure/azure-sdk-for-go).
Bumps the gomod group with 1 update in the /shared/go/aws/cloudwatchlogs directory: [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go).
Bumps the gomod group with 1 update in the /shared/go/aws/session directory: [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go).


Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.72 to 1.17.74
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.72...feature/s3/manager/v1.17.74)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.79.2 to 1.79.3
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.79.2...service/s3/v1.79.3)

Updates `github.com/Azure/azure-sdk-for-go/sdk/storage/azblob` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.6.0...sdk/azcore/v1.6.1)

Updates `github.com/aws/aws-sdk-go` from 1.55.6 to 1.55.7
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG_PENDING.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.55.6...v1.55.7)

Updates `github.com/aws/aws-sdk-go` from 1.55.6 to 1.55.7
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG_PENDING.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.55.6...v1.55.7)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-version: 1.17.74
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-version: 1.79.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
  dependency-version: 1.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go
  dependency-version: 1.55.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go
  dependency-version: 1.55.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 16:26:10 +02:00
dependabot[bot] ae39190fc9 build(deps): bump tokio from 1.44.0 to 1.44.2 in /plugins/krsi
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.44.0 to 1.44.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.44.0...tokio-1.44.2)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.44.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 16:25:10 +02:00
dependabot[bot] d65c37986e build(deps): bump github.com/testcontainers/testcontainers-go
Bumps [github.com/testcontainers/testcontainers-go](https://github.com/testcontainers/testcontainers-go) from 0.36.0 to 0.37.0.
- [Release notes](https://github.com/testcontainers/testcontainers-go/releases)
- [Commits](https://github.com/testcontainers/testcontainers-go/compare/v0.36.0...v0.37.0)

---
updated-dependencies:
- dependency-name: github.com/testcontainers/testcontainers-go
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 16:22:10 +02:00
Leonardo Di Giovanna eb349205da doc: add support for `krsi` plugin field extraction doc auto-gen
Add support for automatic generation of `krsi` plugin's field
extraction. Moreover, add support for handling multi-line field
extraction descriptions.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-30 15:53:10 +02:00
Leonardo Grasso abe12da694 docs(plugins): bulk changelogs update
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-04-30 10:35:09 +02:00
Leonardo Grasso af547e21ee docs(plugins/github): update readme
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-04-30 10:35:09 +02:00
Leonardo Grasso 17dfd80d7a docs(plugins/dummy_rs): update readme
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-04-30 10:35:09 +02:00
Leonardo Di Giovanna 6cce9247e0 fix(plugins/dummy_rs): sync `Cargo.lock`
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-30 10:22:09 +02:00
Leonardo Di Giovanna a7705eb261 ci: trigger CI
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 17:52:06 +02:00
poiana 9264813c27 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2025-04-29 17:51:05 +02:00
Leonardo Di Giovanna 28618ac28e fix(plugins/krsi): fix plugin version
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 17:00:05 +02:00
Leonardo Grasso d09985d5d5 fix(plugins/krsi): correct multi-arch char type handling
Co-authored-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-04-29 16:01:06 +02:00
Leonardo Grasso b9c6b0a47a fix(.github): pin deps to build rust ebpf
Co-authored-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-04-29 16:01:06 +02:00
Leonardo Grasso 40f892bf3f fix(plugins/krsi): correct makefile
Co-authored-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>

Co-authored-by: Leonardo Di Giovanna <41296180+ekoops@users.noreply.github.com>
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-04-29 16:01:06 +02:00
Luca Guerra 70562d8500 new(krsi): add registry entry
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-04-29 16:01:06 +02:00
Luca Guerra 6da6129061 cleanup(krsi): add license text, remove leftover
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 3c8710effc chore: add `Makefile`
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 303fd1eb9c doc: populate `README.md`
Signed-off-by: Luca Guerra <luca@guerra.sh>
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
Co-authored-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 9b6951aab9 feat: add example rule file
Signed-off-by: Luca Guerra <luca@guerra.sh>

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 52a089c55c feat(ebpf): add `unlink` and `unlinkat` syscall support
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 178a7a3d1d fix(ebpf): prevent `symlinkat` syscall evt gen if support is disabled
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna ce3c427139 fix(ebpf): prevent `renameat` syscall event gen if support is disabled
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 6070c05ca0 fix(ebpf): prevent `mkdirat` syscall event gen if support is disabled
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 99f0e94b26 fix(ebpf): prevent `linkat` syscall event gen if support is disabled
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Luca Guerra 53542abc38 feat: add plugin options support
Signed-off-by: Luca Guerra <luca@guerra.sh>

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Luca Guerra 2b5e4c5d54 feat(krsi): add connect operation and thread fields support
Signed-off-by: Luca Guerra <luca@guerra.sh>

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna e9a9999d4a test(ebpf): add `load_and_attach_programs` test
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 4022aa5d31 refactor(ebpf): remove unneded vmlinux module
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 93bfe63036 feat(ebpf): use CO-RE approach to evaluate inode upper dentry
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna e53017b841 refactor(ebpf): remove some vmlinux references
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna f5b6730482 feat(ebpf): replace non-CO-RE access to `f_path` with CO-RE one
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 280f318d09 feat(ebpf): add iou_ret field to open event
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna ec628cf542 feat(ebpf): add partial bind operations support
Provide support for `bind` syscall, as well as `IORING_OP_BIND`
io_uring operation. Even if provided, the support for the io_uring
operation is not enabled.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 0bf13c4a0a feat(test): add Dockerfile
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Luca Guerra 5e5486055d feat: integrate plugin with eBPF and add userspace fields handling
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 010a67eca6 refactor: cleanup code
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 4e4bb8c798 feat(ebpf): replace io_uring structs accesses with CO-RE equivalents
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 270cae323e feat(ebpf): replace `file->private_data` access with CO-RE equivalent
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna a6c5e954d3 refactor(ebpf): remove unused `file_name` non-CO-RE extractor
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 21eebf5ca0 feat(ebpf): replace `filename_name` non-CO-RE extractor
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 1a584742cf feat(ebpf): use CO-RE accessors for some sockets accesses
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna adafbd2285 feat(ebpf): use CO-RE accessors for some files accesses
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 751ae3bcaa feat(ebpf): add C binding infrastructure enabling CO-RE
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 1e88c07ca5 refactor(ebpf): move extraction in `extractors` and `getters` crates
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 8a7be7f6f5 refactor(ebpf): add sockets::extract crate
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna abca308d48 feat(ebpf): add renameat operations support
Provide support for `renamat2`, `renameat` and `rename` syscalls, as
well as `IORING_OP_RENAMEAT` io_uring operation.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 8ac597feff feat(ebpf): add mkdirat operations support
Provide support for `mkdirat` and `mkdir` syscalls, as well as
`IORING_OP_MKDIRAT` io_uring operation.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 036828b964 refactor(ebpf): use declarative approach to load and attach programs
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Grzegorz Nosek da57e8df35 fix: safe parse_ringbuf_event
Signed-off-by: Grzegorz Nosek <grzegorz.nosek@sysdig.com>

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna a301d3e70d style: apply code-formatting
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 0354b3d568 chore: add `pre-commit` hooks for enforcing coding style and policies
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 4903b391ee feat(ebpf): add unlinkat io_uring operation support
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna b4feb0b199 feat(ebpf): add linkat operations support
Provide support for `linkat` and `link` syscalls, as well as
`IORING_OP_LINKAT` io_uring operation.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 24629d8867 refactor(ebpf): move file-related extraction logics to separate crate
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna b9a0d7f200 refactor(ebpf): align symlinkat operation map name
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 2dec5194fd refactor(ebpf): align connect operation handling code naming
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 53dc445907 refactor(ebpf): cleanup open operation handling code
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna db523d8831 refactor(ebpf): rename open operation's pids map
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 0afb3c6bdb feat: move ebpf support in different crate and introduce feature flags
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 4bbea658b6 fix: adjust open's `name` param output positioning
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna b991bac366 feat: add testing program
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 32629e6780 feat(ebpf): add symlinkat operations support
Provide support for `symlinkat` and `symlink` syscalls, as well as
`IORING_OP_SYMLINKAT` io_uring operation.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna b9b04078a1 feat(ebpf): export `iou_ret` in connect operation
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna a8e7d5f309 feat(ebpf): add socket operations support
Provide support for `socket` and `socketcall` syscalls, as well as
`IORING_OP_SOCKET` io_uring operation.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna d4985b5277 feat(ebpf): introduce `iouring` module from data extraction
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 803bca3af3 feat(ebpf): avoid sending fd/file_index if not present
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna ba8d9aefd8 feat(ebpf): remove need for socket permanent file descriptors tracking
Use a different path for tracking socket connection, removing the
need for monitoring sockets creation and for storing
`(sock_ptr, tgid) -> fd` associations.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna ce568f4135 refactor(ebpf): split eBPF programs by operation
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 129e5c1c9e feat(ebpf): drop some `unsafe` method qualifiers in auxmap
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 9b06ae20b7 feat(ebpf): add support for io_uring connect operation
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 22f21ad72b feat(ebpf): add io_uring's `IORING_OPENAT{2}` `file_index` support
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 68aa11b9f9 feat(ebpf): add non-blocking connect operations support
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 96d7746eb6 style(ebpf): remove non idiomatic `_ptr` suffixes
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna cc549664b7 feat(ebpf): add connect support
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 99c7f3ddb8 refactor(ebpf): replace `tid` with `pid`
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 4c444157bf feat(ebpf): add socket creation monitoring support
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 0cea86b2ba fix(ebpf): reintroduce support for io_uring openat* operations
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Luca Guerra d245d66c25 refactor(krsi): cleanup
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 0913bfa768 doc(ebpf): fix `open` module documentation
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna f0a399d789 fix(ebpf): fix auxiliary map index calculation
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 11e69492af fix(ebpf): fix timestamp calculation by including boot time
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna c8596ce0f8 refactor(ebpf): move file opening extraction in separate module
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 2d9f21ce49 fix(ebpf): handle `fd_install` invocations only in open context
Ensure that `fd_install` invocations are handled only if the current
thread is trying to open a file: this means hooking at
`do_sys_openat2`'s entry and exit point to mark the file opening
procedure as started and finished.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Luca Guerra 75cc932fd8 feat(krsi): populate fd table
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-04-29 16:01:06 +02:00
Luca Guerra a690118a1f feat: handle io_uring thread
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna 9661fe7d94 feat(ebpf): export tgid together with pid in event header
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna e348237e93 fix(ebpf): remove early return behaviour
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Luca Guerra 8ff297c8c0 feat(krsi): add extractor fields
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna b084b02f21 feat(ebpf): enable full path resolution
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna c70b746ed0 feat(ebpf): align the auxiliary maps number to the number of CPUs
Set the number of `AUXILIARY_MAPS` entries to the number of
available CPUs. Moreover, reduce the size of each auxiliary map.

Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Luca Guerra 91e307c1b4 feat: add integration between eBPF and plugin
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-04-29 16:01:06 +02:00
Leonardo Di Giovanna cb6f03c05d feat: add eBPF source
Signed-off-by: Leonardo Di Giovanna <leonardodigiovanna1@gmail.com>
2025-04-29 16:01:06 +02:00
Luca Guerra ddf3f6cfda feat: initial scaffolding and plugin setup
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-04-29 16:01:06 +02:00
Federico Di Pierro 7fef864e20 new(plugins/container): suggest more output fields.
Specifically:
* `%container.image.repository`
* `%container.image.tag`
* `%k8s.ns.name`
* `%k8s.pod.name`

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-29 12:25:05 +02:00
Federico Di Pierro b8140c8aa1 chore(plugins/container): bump version to 0.2.1.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-28 17:03:01 +02:00
Federico Di Pierro c122ed409d chore(plugins/container): make ASYNC cap resilient to multiple calls.
Static-storage variables are correctly checked.
This can happend in 2 scenarios:
* sinsp erratingly calls multiple times start async API (should be a bug but better safe than sorry)
* Falco hot reload dry-run checks

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-28 17:03:01 +02:00
Federico Di Pierro e25a1f8a19 cleanup(plugins/container): drop `async_ctx` static variable.
Make it a class member.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-28 17:03:01 +02:00
Aldo Lacuku 3f714b93b3 chore(k8smeta): bump k8smeta version to 0.3.0-rc1
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2025-04-23 10:28:23 +02:00
dependabot[bot] ea1149164f build(deps): bump golang.org/x/net in /plugins/container/go-worker
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.36.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.36.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-23 10:03:24 +02:00
dependabot[bot] 8b4767feec build(deps): bump golang.org/x/net in /build/changelog
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.33.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.33.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 17:37:49 +02:00
Federico Di Pierro 0d595a2275 new(plugins/container): added fetcher tests.
Also, fixed a small bug in cri engine `get()` method.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-17 17:36:49 +02:00
Leonardo Grasso ecff28f894 update(cloudtrail): bump to v0.13.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-04-17 11:34:50 +02:00
Federico Di Pierro 89712a554e fix(plugin/container): avoid overwriting host container info when loading pre-existing containers.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-17 10:42:49 +02:00
Federico Di Pierro ab18fe1517 fix(plugins/k8smeta): fixed newlines at end of files.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-17 10:41:49 +02:00
Federico Di Pierro c3b79f5508 fix(plugins/k8smeta): fixed `CLONE_FORK_TEST` tests.
Clone exit for the parent must already have correct cgroup for the child,
since we are not going to overwrite it in libs parsers.
Also, it makes sense.

Finally, added a test to check that listening CAP is correctly writing pod_uid.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-17 10:41:49 +02:00
Federico Di Pierro 033304290e fix(plugins/k8smeta): write pod_uid using correct thread_entry.
Also, always use cgroups read from thread table instead of relying upon
the syscalls param.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-17 10:41:49 +02:00
Leonardo Grasso d69e7013ed update(github): bump to v0.9.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-04-17 10:13:50 +02:00
Leonardo Grasso 97df3bbc42 new(gitub): add fileds for `added` and `removed` files
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-04-17 10:13:50 +02:00
Federico Di Pierro ff332cb3c1 fix(plugins/container): fixed CRI listing filter.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-16 15:17:46 +02:00
dependabot[bot] 3dbc627f4a build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.228.0 to 0.229.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.228.0...v0.229.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.229.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 12:38:46 +02:00
dependabot[bot] 794c76fd17 build(deps): bump the gomod group across 3 directories with 5 updates
Bumps the gomod group with 3 updates in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2).
Bumps the gomod group with 1 update in the /plugins/k8saudit-aks directory: [github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs](https://github.com/Azure/azure-sdk-for-go).
Bumps the gomod group with 1 update in the /shared/go/azure/eventhub directory: [github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs](https://github.com/Azure/azure-sdk-for-go).


Updates `github.com/aws/aws-sdk-go-v2/config` from 1.29.13 to 1.29.14
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.13...config/v1.29.14)

Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.71 to 1.17.72
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.71...feature/s3/manager/v1.17.72)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.79.1 to 1.79.2
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.79.1...service/s3/v1.79.2)

Updates `github.com/aws/aws-sdk-go-v2/service/sqs` from 1.38.4 to 1.38.5
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.38.4...service/s3/v1.38.5)

Updates `github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs` from 1.3.1 to 1.3.2
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.3.1...sdk/storage/azblob/v1.3.2)

Updates `github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs` from 1.3.1 to 1.3.2
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.3.1...sdk/storage/azblob/v1.3.2)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.29.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-version: 1.17.72
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-version: 1.79.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/sqs
  dependency-version: 1.38.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs
  dependency-version: 1.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs
  dependency-version: 1.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 12:37:45 +02:00
dependabot[bot] 37dc1a6ae9 build(deps): bump cloud.google.com/go/pubsub in /plugins/k8saudit-gke
Bumps [cloud.google.com/go/pubsub](https://github.com/googleapis/google-cloud-go) from 1.48.1 to 1.49.0.
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/pubsub/v1.48.1...pubsub/v1.49.0)

---
updated-dependencies:
- dependency-name: cloud.google.com/go/pubsub
  dependency-version: 1.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 12:36:45 +02:00
Federico Di Pierro ec5d8553f3 chore(plugins/k8smeta): broaden exception mgmt.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-16 12:10:45 +02:00
Federico Di Pierro 5b374f75bf new(plugins/container): immediately enrich plugin cache with pre-existing containers.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-16 12:09:45 +02:00
Federico Di Pierro ca2c56066f new(plugins/container): print a debug log with all connected engine sockets.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-16 12:09:45 +02:00
Federico Di Pierro 37fdf54e61 cleanup(plugins/container/go-worker): dropped inotifier support.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-16 12:09:45 +02:00
dependabot[bot] 27f663b2ab build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.228.0 to 0.229.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.228.0...v0.229.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.229.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 10:23:38 +02:00
dependabot[bot] ce4e3fcf04 build(deps): bump github.com/aws/aws-lambda-go in /plugins/cloudtrail
Bumps [github.com/aws/aws-lambda-go](https://github.com/aws/aws-lambda-go) from 1.47.0 to 1.48.0.
- [Release notes](https://github.com/aws/aws-lambda-go/releases)
- [Commits](https://github.com/aws/aws-lambda-go/compare/v1.47.0...v1.48.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-lambda-go
  dependency-version: 1.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 10:19:38 +02:00
dependabot[bot] 6837ad9cf7 build(deps): bump cloud.google.com/go/pubsub in /plugins/gcpaudit
Bumps [cloud.google.com/go/pubsub](https://github.com/googleapis/google-cloud-go) from 1.48.1 to 1.49.0.
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/pubsub/v1.48.1...pubsub/v1.49.0)

---
updated-dependencies:
- dependency-name: cloud.google.com/go/pubsub
  dependency-version: 1.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 10:15:38 +02:00
dependabot[bot] a78b09641f build(deps): bump github/codeql-action in the actions group
Bumps the actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.28.14 to 3.28.15
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](fc7e4a0fa0...45775bd823)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 10:14:38 +02:00
Federico Di Pierro d6e6c6ee4e chore(plugins/container): broaden exceptions management.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-14 16:37:33 +02:00
poiana 86e4d26ba2 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2025-04-11 12:37:12 +02:00
RRadziejewski e33a030f10 docs: fix incorrect cloud provider reference (AWS → Azure) for AKS
Signed-off-by: RRadziejewski <32438378+RRadziejewski@users.noreply.github.com>
2025-04-11 11:58:11 +02:00
Willian Wang 65c9973a06 chore(cloudtrail): allow SQSOwnerAccount parameter
Signed-off-by: Willian Wang <git@willian.wang>
Signed-off-by: Willian Wang <willian.wang@incognia.com>
2025-04-11 10:38:11 +02:00
Federico Di Pierro e318e18254 chore(plugins/container): bump container plugin to 0.2.0.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-11 10:37:11 +02:00
dependabot[bot] 09c8a93eea build(deps): bump github/codeql-action in the actions group
Bumps the actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.28.13 to 3.28.14
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](1b549b9259...fc7e4a0fa0)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 10:14:48 +02:00
dependabot[bot] d4e288aa55 build(deps): bump github.com/onsi/gomega in /build/registry
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.36.3 to 1.37.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.36.3...v1.37.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 10:11:48 +02:00
dependabot[bot] 4bcb38b510 build(deps): bump golang.org/x/oauth2 in /plugins/github
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.28.0 to 0.29.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.28.0...v0.29.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-version: 0.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 10:10:48 +02:00
dependabot[bot] 3d2e23dc98 build(deps): bump the gomod group across 4 directories with 6 updates
Bumps the gomod group with 1 update in the /build/registry directory: [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo).
Bumps the gomod group with 3 updates in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2).
Bumps the gomod group with 1 update in the /plugins/gcpaudit directory: [cloud.google.com/go/pubsub](https://github.com/googleapis/google-cloud-go).
Bumps the gomod group with 1 update in the /plugins/k8saudit-gke directory: [cloud.google.com/go/pubsub](https://github.com/googleapis/google-cloud-go).


Updates `github.com/onsi/ginkgo/v2` from 2.23.3 to 2.23.4
- [Release notes](https://github.com/onsi/ginkgo/releases)
- [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/ginkgo/compare/v2.23.3...v2.23.4)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.29.12 to 1.29.13
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.12...config/v1.29.13)

Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.70 to 1.17.71
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.70...feature/s3/manager/v1.17.71)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.79.0 to 1.79.1
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.79.0...service/s3/v1.79.1)

Updates `github.com/aws/aws-sdk-go-v2/service/sqs` from 1.38.3 to 1.38.4
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.38.3...service/s3/v1.38.4)

Updates `cloud.google.com/go/pubsub` from 1.48.0 to 1.48.1
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/pubsub/v1.48.0...pubsub/v1.48.1)

Updates `cloud.google.com/go/pubsub` from 1.48.0 to 1.48.1
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/pubsub/v1.48.0...pubsub/v1.48.1)

---
updated-dependencies:
- dependency-name: github.com/onsi/ginkgo/v2
  dependency-version: 2.23.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.29.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-version: 1.17.71
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-version: 1.79.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/sqs
  dependency-version: 1.38.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: cloud.google.com/go/pubsub
  dependency-version: 1.48.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: cloud.google.com/go/pubsub
  dependency-version: 1.48.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 09:20:47 +02:00
Federico Di Pierro d81c8c504e fix(plugins/container): fixed config tests.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 15:15:43 +02:00
Federico Di Pierro 911e33d85a chore(plugins/container): updated readme.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 15:15:43 +02:00
Federico Di Pierro adec84aaa1 new(plugins/container): allow to specify which hook to be attached between {"create", "start"}
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 15:15:43 +02:00
dependabot[bot] 9a50a76571 build(deps): bump the gomod group across 1 directory with 2 updates
Bumps the gomod group with 1 update in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.69 to 1.17.70
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.69...feature/s3/manager/v1.17.70)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.78.2 to 1.79.0
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.78.2...service/s3/v1.79.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-version: 1.17.70
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-version: 1.79.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 15:14:43 +02:00
dependabot[bot] 937aba6da5 build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.227.0 to 0.228.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.227.0...v0.228.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.228.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 15:13:43 +02:00
dependabot[bot] 5875b85fd0 build(deps): bump github.com/testcontainers/testcontainers-go/modules/kafka
Bumps [github.com/testcontainers/testcontainers-go/modules/kafka](https://github.com/testcontainers/testcontainers-go) from 0.35.0 to 0.36.0.
- [Release notes](https://github.com/testcontainers/testcontainers-go/releases)
- [Commits](https://github.com/testcontainers/testcontainers-go/compare/v0.35.0...v0.36.0)

---
updated-dependencies:
- dependency-name: github.com/testcontainers/testcontainers-go/modules/kafka
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 15:12:43 +02:00
Federico Di Pierro e80fd67259 chore(src): add a deprecation warning for hostProc.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 10:57:46 +02:00
Federico Di Pierro 4c41b3912d fix(plugins/k8smeta): fixed a couple of tests.
Moreover, dropped proc-scan related tests.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 10:57:46 +02:00
Federico Di Pierro d8fd49fef7 chore(plugins/k8smeta): bump libs to 0.20.0.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 10:57:46 +02:00
Federico Di Pierro b0fcd6fba1 update(ci): bump falco image to 0.40.0 and falcoctl to 0.11.0.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 10:57:46 +02:00
Federico Di Pierro 41d2b399d5 chore(plugins/k8smeta): update README.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 10:57:46 +02:00
Federico Di Pierro e10eef70f5 chore(plugins/k8smeta): apply formatting.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 10:57:46 +02:00
Federico Di Pierro 67c4870552 new(plugins/k8smeta): update k8smeta plugin to require plugin API version 3.9.0.
Implement the suggested output fields feature,
by suggesting `k8smeta.pod.name` and `k8smeta.ns.name` as output fields.

Also, entirely avoid the proc scan, instead relying on the listening CAPability to
initially loop over the thread table to attach pod_uid to threads.

`hostProc` initConfig key is now deprecated and unused.

Moved the plugin to 0.3.0 too.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-04-07 10:57:46 +02:00
dependabot[bot] d3f0850baf build(deps): bump the gomod group across 1 directory with 3 updates
Bumps the gomod group with 3 updates in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/aws/aws-sdk-go-v2/config` from 1.29.10 to 1.29.12
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.10...config/v1.29.12)

Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.67 to 1.17.69
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.67...feature/s3/manager/v1.17.69)

Updates `github.com/aws/aws-sdk-go-v2/service/sqs` from 1.38.1 to 1.38.3
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.38.1...service/s3/v1.38.3)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/sqs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-28 18:36:41 +01:00
dependabot[bot] 0b7065dd25 build(deps): bump the gomod group across 5 directories with 7 updates
Bumps the gomod group with 4 updates in the /build/registry directory: [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo), [github.com/onsi/gomega](https://github.com/onsi/gomega), [k8s.io/api](https://github.com/kubernetes/api) and google.golang.org/protobuf.
Bumps the gomod group with 2 updates in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2).
Bumps the gomod group with 1 update in the /plugins/gcpaudit directory: google.golang.org/protobuf.
Bumps the gomod group with 1 update in the /plugins/k8saudit-gke directory: google.golang.org/protobuf.
Bumps the gomod group with 1 update in the /plugins/kafka directory: google.golang.org/protobuf.


Updates `github.com/onsi/ginkgo/v2` from 2.23.0 to 2.23.3
- [Release notes](https://github.com/onsi/ginkgo/releases)
- [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/ginkgo/compare/v2.23.0...v2.23.3)

Updates `github.com/onsi/gomega` from 1.36.2 to 1.36.3
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.36.2...v1.36.3)

Updates `k8s.io/api` from 0.32.2 to 0.32.3
- [Commits](https://github.com/kubernetes/api/compare/v0.32.2...v0.32.3)

Updates `k8s.io/apimachinery` from 0.32.2 to 0.32.3
- [Commits](https://github.com/kubernetes/apimachinery/compare/v0.32.2...v0.32.3)

Updates `google.golang.org/protobuf` from 1.36.5 to 1.36.6

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.29.9 to 1.29.10
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.9...config/v1.29.10)

Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.66 to 1.17.67
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.66...feature/s3/manager/v1.17.67)

Updates `google.golang.org/protobuf` from 1.36.5 to 1.36.6

Updates `google.golang.org/protobuf` from 1.36.5 to 1.36.6

Updates `google.golang.org/protobuf` from 1.36.5 to 1.36.6

---
updated-dependencies:
- dependency-name: github.com/onsi/ginkgo/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: k8s.io/api
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: k8s.io/apimachinery
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: google.golang.org/protobuf
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-27 18:03:35 +01:00
dependabot[bot] ad1c759adb build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.226.0 to 0.227.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.226.0...v0.227.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-27 18:02:35 +01:00
dependabot[bot] 7c7cb4bd13 build(deps): bump github.com/containerd/containerd/v2
Bumps [github.com/containerd/containerd/v2](https://github.com/containerd/containerd) from 2.0.0-rc.6 to 2.0.4.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](https://github.com/containerd/containerd/compare/v2.0.0-rc.6...v2.0.4)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd/v2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-27 18:01:35 +01:00
dependabot[bot] 9656d5ef7d build(deps): bump the actions group with 6 updates
Bumps the actions group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/setup-go](https://github.com/actions/setup-go) | `5.3.0` | `5.4.0` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3.28.11` | `3.28.13` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `4.4.3` | `4.6.2` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `4.1.8` | `4.2.1` |
| [jidicula/clang-format-action](https://github.com/jidicula/clang-format-action) | `4.14.0` | `4.15.0` |
| [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) | `2.7.7` | `2.7.8` |


Updates `actions/setup-go` from 5.3.0 to 5.4.0
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5.3.0...0aaccfd150d50ccaeb58ebd88d36e91967a5f35b)

Updates `github/codeql-action` from 3.28.11 to 3.28.13
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](6bb031afdd...1b549b9259)

Updates `actions/upload-artifact` from 4.4.3 to 4.6.2
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.4.3...ea165f8d65b6e75b540449e92b4886f43607fa02)

Updates `actions/download-artifact` from 4.1.8 to 4.2.1
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4.1.8...95815c38cf2ff2164869cbab79da8d1f422bc89e)

Updates `jidicula/clang-format-action` from 4.14.0 to 4.15.0
- [Release notes](https://github.com/jidicula/clang-format-action/releases)
- [Commits](d05cecd4a1...4726374d1a)

Updates `Swatinem/rust-cache` from 2.7.7 to 2.7.8
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](f0deed1e0e...9d47c6ad4b)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: jidicula/clang-format-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-26 10:22:27 +01:00
dependabot[bot] 6ad48d7e1c build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.226.0 to 0.227.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.226.0...v0.227.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-26 10:21:27 +01:00
Federico Di Pierro 00f6c771e0 cleanup(registry): drop newline.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-03-24 12:31:17 +01:00
Federico Di Pierro 103b5b232c update(build,plugins): bump plugin-sdk-go to 0.7.5.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-03-24 10:15:17 +01:00
Leonardo Grasso 80c962f16e fix(build): prevent race condition when dlopening a Go runtime embedded into an .so
When building a shared library (.so) that contains CGO, it embeds its own instance of the Go runtime. When later the we dlopen that library from a Go program (which already has its own Go runtime) both copies of the runtime are loaded into the same process. Go’s runtime is designed to be a singleton, and having two instances leads to conflicts during the execution of the library’s global init functions, ultimately causing a segfault.
This error was noticed for the first time with the `container` plugin, which makes use of the Podman package, which in turn makes massive use of Go `init()` functions.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-21 17:11:32 +01:00
Federico Di Pierro d8a42ad50c chore(docs): updated container plugin readme through readme tool.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-03-21 15:15:32 +01:00
Federico Di Pierro a7a7974c6c chore(docs): updated registry and readme.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-03-21 15:15:32 +01:00
Federico Di Pierro 955cc10c60 new(ci): added container-ci.
Also, fixed reusable-build-packages.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-03-21 15:15:32 +01:00
Federico Di Pierro 9a6f285ce7 new(plugins): initial import of container plugin.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-03-21 15:15:32 +01:00
poiana dcc78b76e2 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2025-03-21 14:41:31 +01:00
Leonardo Grasso 39666c0566 chore(registry.yaml): small change to trigger the CI
See https://github.com/falcosecurity/test-infra/pull/1796

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-21 12:23:31 +01:00
Leonardo Grasso 18fed960de docs(README.md): modernize README
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-21 12:13:31 +01:00
Leonardo Grasso 9bab8034c9 docs(docs): move "Registering a plugin" to its own document
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-21 12:13:31 +01:00
Leonardo Grasso adccf6c2f4 chore(registry.yaml): small change to trigger the CI
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-19 17:43:21 +01:00
Leonardo Grasso 3bdbfb462d docs(plugins/dummy_rs): remove leftover
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-18 16:04:16 +01:00
Leonardo Grasso 14ba7228ae update(plugins/dummy_rs): pin SDK to 0.4
Co-authored-by: Grzegorz Nosek <grzegorz.nosek@sysdig.com>

Co-authored-by: Grzegorz Nosek <grzegorz.nosek@sysdig.com>
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-18 16:04:16 +01:00
Leonardo Grasso 9064007daf fix(plugins/dummy_rs): typo in comment
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-18 16:04:16 +01:00
Leonardo Grasso 4c88069901 docs: add dummy_rs to the registry
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-18 16:04:16 +01:00
Leonardo Grasso 5689000c17 docs(plugins/dummy_rs): readme
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-18 16:04:16 +01:00
Leonardo Grasso 20c607bfaf chore(plugins/dummy_rs): add Carco.lock
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-18 16:04:16 +01:00
Leonardo Grasso 1e67a44bfb new(plugins): dummy_rs
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-18 16:04:16 +01:00
Leonardo Grasso a20d2dfdfe new(plugins): initial dummy_rs skeleton
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-18 16:04:16 +01:00
Leonardo Grasso 085e627d2d update(.github): add Rust support in reusable build job
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-18 16:04:16 +01:00
Leonardo Grasso 691014574c update(shared/go/azure): upgrade deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-17 15:43:07 +01:00
Leonardo Grasso 471dd904c2 update(plugins/kafka): upgrade deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-17 15:43:07 +01:00
Leonardo Grasso 7ba8f84884 update(plugins/k8saudit-gke): upgrade deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-17 15:43:07 +01:00
Leonardo Grasso f00e48efe5 update(plugins/k8saudit-aks): upgrade deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-17 15:43:07 +01:00
Leonardo Grasso 8094fa32a8 chore(plugins): bulk go mod tidy
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-17 15:43:07 +01:00
Leonardo Grasso b2135b1cc8 update(Makefile): add bulk go mod tidy
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-17 15:43:07 +01:00
Leonardo Grasso 563729cf4b update(plugins/github): upgrade deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-17 15:43:07 +01:00
Leonardo Grasso bb1d3ec149 update(plugins/gcpaudit): upgrade deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-17 15:43:07 +01:00
Leonardo Grasso ba252e31d7 update(plugins/cloudtrail): upgrade deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-17 15:43:07 +01:00
dependabot[bot] 2986623460 build(deps): bump golang.org/x/net in /build/registry
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.35.0 to 0.36.0.
- [Commits](https://github.com/golang/net/compare/v0.35.0...v0.36.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 11:11:06 +01:00
dependabot[bot] dfdc424baf build(deps): bump docker/login-action in the actions group
Bumps the actions group with 1 update: [docker/login-action](https://github.com/docker/login-action).


Updates `docker/login-action` from 3.3.0 to 3.4.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](9780b0c442...74a5d14239)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 18:35:53 +01:00
Leonardo Grasso a56d432475 chore(github): go mod tidy
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-14 18:31:53 +01:00
dependabot[bot] 3fcacd1bc9 build(deps): bump golang.org/x/oauth2 in /plugins/github
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.26.0 to 0.28.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.26.0...v0.28.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 18:31:53 +01:00
Leonardo Grasso 8558865819 revert: fix(.github): add go mod tidy for dependabot.yml
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-14 18:22:53 +01:00
Leonardo Grasso a59561cfb6 fix(.github): add go mod tidy for dependabot.yml
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-03-14 17:51:53 +01:00
dependabot[bot] e09e250fe0 build(deps): bump the actions group across 1 directory with 2 updates
Bumps the actions group with 2 updates in the / directory: [github/codeql-action](https://github.com/github/codeql-action) and [actions/download-artifact](https://github.com/actions/download-artifact).


Updates `github/codeql-action` from 3.28.10 to 3.28.11
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](b56ba49b26...6bb031afdd)

Updates `actions/download-artifact` from 4.1.8 to 4.1.9
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](fa0a91b85d...cc20338598)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-13 10:33:44 +01:00
dependabot[bot] 429430412b build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.222.0 to 0.224.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.222.0...v0.224.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 10:51:36 +01:00
Uli Heilmeier f2fe57d142 update(plugins/cloudtrail): support pre-ControlTower organization trails
Some pre-ControlTower organization Cloutrail trails are missing the OrgId
in the AWSLogs S3 path. Making the OrgId optional gives them the option
to use S3AccountList.

Signed-off-by: Uli Heilmeier <uh@heilmeier.eu>
2025-03-11 10:35:35 +01:00
dependabot[bot] 391b7cdecd build(deps): bump github.com/aws/aws-sdk-go-v2/service/sqs
Bumps [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2) from 1.37.15 to 1.38.1.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/s3/v1.38.1/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/kms/v1.37.15...service/s3/v1.38.1)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/sqs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 09:45:35 +01:00
dependabot[bot] d9ccf1b41f build(deps): bump github.com/onsi/ginkgo/v2 in /build/registry
Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.22.2 to 2.23.0.
- [Release notes](https://github.com/onsi/ginkgo/releases)
- [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/ginkgo/compare/v2.22.2...v2.23.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/ginkgo/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 09:38:35 +01:00
dependabot[bot] 2b5d40db53 build(deps): bump the gomod group across 1 directory with 3 updates
Bumps the gomod group with 2 updates in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/aws/aws-sdk-go-v2/config` from 1.29.8 to 1.29.9
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.8...config/v1.29.9)

Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.64 to 1.17.65
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.64...feature/s3/manager/v1.17.65)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.78.0 to 1.78.1
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.78.0...service/s3/v1.78.1)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 09:30:34 +01:00
dependabot[bot] b68e48ce8f build(deps): bump the gomod group across 1 directory with 4 updates
Bumps the gomod group with 3 updates in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/aws/aws-sdk-go-v2` from 1.36.2 to 1.36.3
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.36.2...v1.36.3)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.29.7 to 1.29.8
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.7...config/v1.29.8)

Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.63 to 1.17.64
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.63...feature/s3/manager/v1.17.64)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.77.1 to 1.78.0
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.77.1...service/s3/v1.78.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 17:14:33 +01:00
dependabot[bot] 947abb0fab build(deps): bump the actions group with 3 updates
Bumps the actions group with 3 updates: [github/codeql-action](https://github.com/github/codeql-action), [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) and [actions/upload-artifact](https://github.com/actions/upload-artifact).


Updates `github/codeql-action` from 3.28.9 to 3.28.10
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](9e8d0789d4...b56ba49b26)

Updates `sigstore/cosign-installer` from 3.8.0 to 3.8.1
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](c56c2d3e59...d7d6bc7722)

Updates `actions/upload-artifact` from 4.6.0 to 4.6.1
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](65c4c4a1dd...4cec3d8aa0)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-25 12:39:21 +01:00
dependabot[bot] 7295c7b6f9 build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.221.0 to 0.222.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.221.0...v0.222.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-25 11:11:21 +01:00
Leonardo Grasso 2ea10833b9 update(plugins/cloudtrail): upgrade direct deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-19 12:36:43 +01:00
dependabot[bot] 7377728ee3 build(deps): bump github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs
Bumps [github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs](https://github.com/Azure/azure-sdk-for-go) from 1.2.3 to 1.3.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/messaging/azeventhubs/v1.2.3...sdk/azcore/v1.3.0)

---
updated-dependencies:
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-18 16:14:39 +01:00
Leonardo Grasso a472cb1eff fix(build/registry): switch to RootDigest
This is required as a consequence of the falcoctl v0.11 upgrade.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-18 15:01:38 +01:00
dependabot[bot] d4f5aaf300 build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.220.0 to 0.221.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.220.0...v0.221.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-18 12:45:38 +01:00
dependabot[bot] 6aa12f87d7 build(deps): bump github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs
Bumps [github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs](https://github.com/Azure/azure-sdk-for-go) from 1.2.3 to 1.3.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/messaging/azeventhubs/v1.2.3...sdk/azcore/v1.3.0)

---
updated-dependencies:
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-18 11:21:37 +01:00
dependabot[bot] c68b87944a build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.220.0 to 0.221.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.220.0...v0.221.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-18 11:20:37 +01:00
dependabot[bot] 55ac30593e build(deps): bump the gomod group across 2 directories with 5 updates
Bumps the gomod group with 1 update in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2).
Bumps the gomod group with 2 updates in the /plugins/k8saudit-gke directory: [k8s.io/api](https://github.com/kubernetes/api) and [k8s.io/apiserver](https://github.com/kubernetes/apiserver).


Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.61 to 1.17.62
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/feature/s3/manager/v1.17.61...feature/s3/manager/v1.17.62)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.76.1 to 1.77.0
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.76.1...service/s3/v1.77.0)

Updates `k8s.io/api` from 0.32.1 to 0.32.2
- [Commits](https://github.com/kubernetes/api/compare/v0.32.1...v0.32.2)

Updates `k8s.io/apimachinery` from 0.32.1 to 0.32.2
- [Commits](https://github.com/kubernetes/apimachinery/compare/v0.32.1...v0.32.2)

Updates `k8s.io/apiserver` from 0.32.1 to 0.32.2
- [Commits](https://github.com/kubernetes/apiserver/compare/v0.32.1...v0.32.2)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: k8s.io/api
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: k8s.io/apimachinery
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: k8s.io/apiserver
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-18 11:05:37 +01:00
Leonardo Grasso 7feb90ca5b fix(build/registry): use new falcoctl v0.11 API to check repo existence
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-18 11:04:38 +01:00
Leonardo Grasso c133e5ff42 update(build/registry): upgrade deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-18 11:04:38 +01:00
dependabot[bot] ddfd6d9b98 build(deps): bump aws-actions/configure-aws-credentials
Bumps the actions group with 1 update: [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials).


Updates `aws-actions/configure-aws-credentials` from 4.0.3 to 4.1.0
- [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases)
- [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
- [Commits](4fc4975a85...ececac1a45)

---
updated-dependencies:
- dependency-name: aws-actions/configure-aws-credentials
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-18 10:03:37 +01:00
dependabot[bot] 2e669631b1 build(deps): bump golang.org/x/time in /shared/go/azure/eventhub
Bumps [golang.org/x/time](https://github.com/golang/time) from 0.8.0 to 0.10.0.
- [Commits](https://github.com/golang/time/compare/v0.8.0...v0.10.0)

---
updated-dependencies:
- dependency-name: golang.org/x/time
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 16:07:33 +01:00
dependabot[bot] 6d5a24e4fb build(deps): bump github.com/testcontainers/testcontainers-go/modules/kafka
Bumps [github.com/testcontainers/testcontainers-go/modules/kafka](https://github.com/testcontainers/testcontainers-go) from 0.31.0 to 0.35.0.
- [Release notes](https://github.com/testcontainers/testcontainers-go/releases)
- [Commits](https://github.com/testcontainers/testcontainers-go/compare/v0.31.0...v0.35.0)

---
updated-dependencies:
- dependency-name: github.com/testcontainers/testcontainers-go/modules/kafka
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-13 12:36:09 +01:00
dependabot[bot] eb95ab9c27 build(deps): bump github.com/aws/aws-sdk-go in /shared/go/aws/session
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.51 to 1.55.6.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG_PENDING.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.51...v1.55.6)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-13 12:24:10 +01:00
dependabot[bot] 8fe42f8ecd build(deps): bump github.com/aws/aws-sdk-go
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.44.51 to 1.55.6.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG_PENDING.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.44.51...v1.55.6)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-13 12:15:10 +01:00
dependabot[bot] b512a7f243 build(deps): bump golang.org/x/time in /plugins/k8saudit-aks
Bumps [golang.org/x/time](https://github.com/golang/time) from 0.9.0 to 0.10.0.
- [Commits](https://github.com/golang/time/compare/v0.9.0...v0.10.0)

---
updated-dependencies:
- dependency-name: golang.org/x/time
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-13 12:14:11 +01:00
dependabot[bot] 36fa7370b6 build(deps): bump github.com/testcontainers/testcontainers-go
Bumps [github.com/testcontainers/testcontainers-go](https://github.com/testcontainers/testcontainers-go) from 0.31.0 to 0.35.0.
- [Release notes](https://github.com/testcontainers/testcontainers-go/releases)
- [Commits](https://github.com/testcontainers/testcontainers-go/compare/v0.31.0...v0.35.0)

---
updated-dependencies:
- dependency-name: github.com/testcontainers/testcontainers-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-13 12:13:10 +01:00
dependabot[bot] 0baafb0afc build(deps): bump golang.org/x/oauth2 in /plugins/github
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.25.0 to 0.26.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.25.0...v0.26.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-13 12:12:10 +01:00
dependabot[bot] 467f7c74a7 build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.219.0 to 0.220.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.219.0...v0.220.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 09:55:57 +01:00
dependabot[bot] 1224a37c0f build(deps): bump golang.org/x/net in /build/changelog
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.23.0 to 0.33.0.
- [Commits](https://github.com/golang/net/compare/v0.23.0...v0.33.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 09:46:57 +01:00
dependabot[bot] eedd891449 build(deps): bump the gomod group across 3 directories with 6 updates
Bumps the gomod group with 4 updates in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2).
Bumps the gomod group with 1 update in the /plugins/gcpaudit directory: google.golang.org/protobuf.
Bumps the gomod group with 1 update in the /plugins/k8saudit-gke directory: google.golang.org/protobuf.


Updates `github.com/aws/aws-sdk-go-v2` from 1.36.0 to 1.36.1
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.36.0...v1.36.1)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.29.4 to 1.29.6
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.4...config/v1.29.6)

Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.57 to 1.17.61
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/credentials/v1.17.57...feature/s3/manager/v1.17.61)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.75.2 to 1.76.1
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.75.2...service/s3/v1.76.1)

Updates `github.com/aws/aws-sdk-go-v2/service/sqs` from 1.37.12 to 1.37.14
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/kms/v1.37.12...service/kms/v1.37.14)

Updates `google.golang.org/protobuf` from 1.36.4 to 1.36.5

Updates `google.golang.org/protobuf` from 1.36.4 to 1.36.5

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/sqs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: google.golang.org/protobuf
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 09:29:57 +01:00
dependabot[bot] ade9618de3 build(deps): bump the actions group with 2 updates
Bumps the actions group with 2 updates: [github/codeql-action](https://github.com/github/codeql-action) and [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer).


Updates `github/codeql-action` from 3.28.8 to 3.28.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](dd746615b3...9e8d0789d4)

Updates `sigstore/cosign-installer` from 3.7.0 to 3.8.0
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](dc72c7d5c4...c56c2d3e59)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 09:28:57 +01:00
Leonardo Grasso 10390ff969 docs(plugins): bulk changelogs update
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-11 09:27:57 +01:00
Leonardo Grasso c1d32cd196 docs(plugins/k8saudit-ovh): update README
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-11 09:27:57 +01:00
Leonardo Grasso 9201ea7c45 docs(plugins/k8saudit-eks): update README
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-11 09:27:57 +01:00
Leonardo Grasso b124ff0b47 docs(plugins/k8saudit-aks): update README
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-11 09:27:57 +01:00
Leonardo Grasso ceba133311 fix(plugins/k8saudit-ovh): add README generation in Makefile
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-11 09:27:57 +01:00
Leonardo Grasso 63d9dd663f fix(changelog-gen.sh): support both the old and new tag formats for first version
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-11 09:27:57 +01:00
Leonardo Grasso 2b5e19f5c0 chore(registry.yaml): update registry to trigger the CI
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-06 18:04:36 +01:00
Leonardo Grasso cf27666b64 chore(registry.yaml): update registry to trigger the CI
See https://github.com/falcosecurity/test-infra/blob/master/config/jobs/build-plugins/build-plugins.yaml We need the job to run to update the falcoctl index.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-06 16:02:36 +01:00
Leonardo Grasso 7214ed99de update(plugins/k8saudit-*): bump k8saudit plugin dep to v0.12
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-06 11:16:32 +01:00
Leonardo Grasso 1da1fc0d10 update(plugins/k8saudit): bump to v0.12.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-05 18:46:22 +01:00
Leonardo Grasso e5a4c209c6 update(plugins/k8saudit): update `required_plugin_versions` in ruleset
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-05 18:46:22 +01:00
Leonardo Grasso f321ad743c update(plugins/k8saudit-gke): bump to v0.5.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-05 18:46:22 +01:00
Leonardo Grasso 275672a759 update(plugins/k8saudit-eks): bump to v0.7.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-05 18:46:22 +01:00
dependabot[bot] 87da20ca07 build(deps): bump google.golang.org/api in /plugins/k8saudit-gke
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.184.0 to 0.220.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.184.0...v0.220.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-05 18:11:22 +01:00
dependabot[bot] dff7758074 build(deps): bump cloud.google.com/go/pubsub in /plugins/k8saudit-gke
Bumps [cloud.google.com/go/pubsub](https://github.com/googleapis/google-cloud-go) from 1.38.0 to 1.47.0.
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/pubsub/v1.38.0...pubsub/v1.47.0)

---
updated-dependencies:
- dependency-name: cloud.google.com/go/pubsub
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-05 17:59:22 +01:00
dependabot[bot] 17b55be12a build(deps): bump k8s.io/apiserver in /plugins/k8saudit-gke
Bumps [k8s.io/apiserver](https://github.com/kubernetes/apiserver) from 0.30.2 to 0.32.1.
- [Commits](https://github.com/kubernetes/apiserver/compare/v0.30.2...v0.32.1)

---
updated-dependencies:
- dependency-name: k8s.io/apiserver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-05 17:46:22 +01:00
Leonardo Grasso e56b80dbb1 docs(plugins): bulk update changelogs
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-05 17:38:22 +01:00
Leonardo Grasso d3120a4ce9 update(changelog-gen.sh): skip empty dev section in changelogs
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-05 17:38:22 +01:00
Leonardo Grasso fdb08c41de update(plugins/k8saudit-gke): bump to go 1.23.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-05 17:30:22 +01:00
dependabot[bot] 28582b7bc8 build(deps): bump k8s.io/apimachinery in /plugins/k8saudit-gke
Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.30.2 to 0.32.1.
- [Commits](https://github.com/kubernetes/apimachinery/compare/v0.30.2...v0.32.1)

---
updated-dependencies:
- dependency-name: k8s.io/apimachinery
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-05 17:30:22 +01:00
dependabot[bot] 1dc00aea3b build(deps): bump google.golang.org/api in /plugins/gcpaudit
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.184.0 to 0.219.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.184.0...v0.219.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-05 16:00:22 +01:00
Leonardo Grasso 06371c1050 update(plugins/gcpaudit): bump to go 1.22.7
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-02-05 15:44:23 +01:00
dependabot[bot] 7cfd78bb2b build(deps): bump cloud.google.com/go/pubsub in /plugins/gcpaudit
Bumps [cloud.google.com/go/pubsub](https://github.com/googleapis/google-cloud-go) from 1.38.0 to 1.47.0.
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/pubsub/v1.38.0...pubsub/v1.47.0)

---
updated-dependencies:
- dependency-name: cloud.google.com/go/pubsub
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-05 15:44:23 +01:00
dependabot[bot] 50aae7ab40 build(deps): bump the actions group with 2 updates
Bumps the actions group with 2 updates: [github/codeql-action](https://github.com/github/codeql-action) and [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials).


Updates `github/codeql-action` from 3.28.5 to 3.28.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](f6091c0113...dd746615b3)

Updates `aws-actions/configure-aws-credentials` from 4.0.2 to 4.0.3
- [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases)
- [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
- [Commits](e3dd6a429d...4fc4975a85)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: aws-actions/configure-aws-credentials
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-04 17:09:15 +01:00
dependabot[bot] 69948acd22 build(deps): bump github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Bumps [github.com/Azure/azure-sdk-for-go/sdk/storage/azblob](https://github.com/Azure/azure-sdk-for-go) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.5.0...sdk/azcore/v1.6.0)

---
updated-dependencies:
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-04 17:03:14 +01:00
dependabot[bot] fde5100c7d build(deps): bump the gomod group across 5 directories with 5 updates
Bumps the gomod group with 1 update in the /build/changelog directory: [github.com/spf13/pflag](https://github.com/spf13/pflag).
Bumps the gomod group with 1 update in the /build/readme directory: [github.com/spf13/pflag](https://github.com/spf13/pflag).
Bumps the gomod group with 1 update in the /build/registry directory: [github.com/spf13/pflag](https://github.com/spf13/pflag).
Bumps the gomod group with 1 update in the /build/utils directory: [github.com/spf13/pflag](https://github.com/spf13/pflag).
Bumps the gomod group with 3 updates in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/spf13/pflag` from 1.0.5 to 1.0.6
- [Release notes](https://github.com/spf13/pflag/releases)
- [Commits](https://github.com/spf13/pflag/compare/v1.0.5...v1.0.6)

Updates `github.com/spf13/pflag` from 1.0.5 to 1.0.6
- [Release notes](https://github.com/spf13/pflag/releases)
- [Commits](https://github.com/spf13/pflag/compare/v1.0.5...v1.0.6)

Updates `github.com/spf13/pflag` from 1.0.5 to 1.0.6
- [Release notes](https://github.com/spf13/pflag/releases)
- [Commits](https://github.com/spf13/pflag/compare/v1.0.5...v1.0.6)

Updates `github.com/spf13/pflag` from 1.0.5 to 1.0.6
- [Release notes](https://github.com/spf13/pflag/releases)
- [Commits](https://github.com/spf13/pflag/compare/v1.0.5...v1.0.6)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.29.2 to 1.29.4
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.2...config/v1.29.4)

Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.54 to 1.17.57
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/credentials/v1.17.54...credentials/v1.17.57)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.74.1 to 1.75.2
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.74.1...service/s3/v1.75.2)

Updates `github.com/aws/aws-sdk-go-v2/service/sqs` from 1.37.10 to 1.37.12
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/kms/v1.37.10...service/kms/v1.37.12)

---
updated-dependencies:
- dependency-name: github.com/spf13/pflag
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/spf13/pflag
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/spf13/pflag
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/spf13/pflag
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/sqs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-04 17:01:15 +01:00
dependabot[bot] 1171418cf1 build(deps): bump github.com/aws/aws-sdk-go-v2/service/sqs
Bumps the gomod group with 1 update in the /plugins/cloudtrail directory: [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2).


Updates `github.com/aws/aws-sdk-go-v2/service/sqs` from 1.37.9 to 1.37.10
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/kms/v1.37.9...service/kms/v1.37.10)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/sqs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-28 11:01:36 +01:00
dependabot[bot] 6c27356af3 build(deps): bump golang.org/x/oauth2 in /plugins/github
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.21.0 to 0.25.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.21.0...v0.25.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-28 11:00:34 +01:00
dependabot[bot] 5b45ddc55a build(deps): bump github.com/aws/aws-sdk-go-v2/feature/s3/manager
Bumps [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) from 1.16.15 to 1.17.54.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.16.15...credentials/v1.17.54)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-28 10:53:34 +01:00
dependabot[bot] 935102282f build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3
Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.53.1 to 1.74.1.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.53.1...service/s3/v1.74.1)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-28 10:25:34 +01:00
dependabot[bot] 9663407521 build(deps): bump github.com/aws/aws-sdk-go-v2 in /plugins/cloudtrail
Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.33.0 to 1.34.0.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.33.0...v1.34.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-28 10:23:33 +01:00
dependabot[bot] 47b7f90951 build(deps): bump github/codeql-action in the actions group
Bumps the actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.28.4 to 3.28.5
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](ee117c905a...f6091c0113)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-28 10:08:33 +01:00
Leonardo Grasso b53587bedf update(plugins/kafka): bump to v0.1.4
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-01-24 16:31:14 +01:00
Leonardo Grasso 2d52d84d75 update(plugins/github): bump to v0.8.1
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-01-24 16:31:14 +01:00
Leonardo Grasso ff835b2b5d update(plugins/gcpaudig): bump to v0.5.2
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-01-24 16:31:14 +01:00
Leonardo Grasso f6e5098d76 update(plugins/cloudtrail): bump to v0.12.3
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-01-24 16:31:14 +01:00
Leonardo Grasso fc7d613cd8 fix(build/registry): downgrade to oras.land/oras-go/v2@v2.2.1
go: downgraded github.com/falcosecurity/driverkit v0.20.4 => v0.14.0
go: downgraded github.com/falcosecurity/falcoctl v0.10.1 => v0.6.2
go: downgraded oras.land/oras-go/v2 v2.5.0 => v2.2.1
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-01-24 16:03:14 +01:00
dependabot[bot] 56c0599ebf build(deps): bump github.com/invopop/jsonschema in /plugins/cloudtrail
Bumps [github.com/invopop/jsonschema](https://github.com/invopop/jsonschema) from 0.12.0 to 0.13.0.
- [Commits](https://github.com/invopop/jsonschema/compare/v0.12.0...v0.13.0)

---
updated-dependencies:
- dependency-name: github.com/invopop/jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 15:27:14 +01:00
dependabot[bot] 69956e9338 build(deps): bump github.com/invopop/jsonschema in /plugins/k8saudit-eks
Bumps [github.com/invopop/jsonschema](https://github.com/invopop/jsonschema) from 0.12.0 to 0.13.0.
- [Commits](https://github.com/invopop/jsonschema/compare/v0.12.0...v0.13.0)

---
updated-dependencies:
- dependency-name: github.com/invopop/jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 15:21:14 +01:00
dependabot[bot] 3cb67a923d build(deps): bump github.com/aws/aws-sdk-go-v2/service/sqs
Bumps [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2) from 1.31.4 to 1.37.9.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/fis/v1.31.4...service/kms/v1.37.9)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/sqs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 15:20:14 +01:00
dependabot[bot] 980adfd2ec build(deps): bump github.com/onsi/ginkgo/v2 in /build/registry
Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.10.0 to 2.22.2.
- [Release notes](https://github.com/onsi/ginkgo/releases)
- [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/ginkgo/compare/v2.10.0...v2.22.2)

---
updated-dependencies:
- dependency-name: github.com/onsi/ginkgo/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 15:19:13 +01:00
dependabot[bot] 281847c959 build(deps): bump github.com/falcosecurity/falcoctl in /build/registry
Bumps [github.com/falcosecurity/falcoctl](https://github.com/falcosecurity/falcoctl) from 0.6.1 to 0.10.1.
- [Release notes](https://github.com/falcosecurity/falcoctl/releases)
- [Changelog](https://github.com/falcosecurity/falcoctl/blob/main/.goreleaser.yml)
- [Commits](https://github.com/falcosecurity/falcoctl/compare/v0.6.1...v0.10.1)

---
updated-dependencies:
- dependency-name: github.com/falcosecurity/falcoctl
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 15:10:13 +01:00
dependabot[bot] bdedf0d4c5 build(deps): bump github.com/stretchr/testify in /build/registry
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.4 to 1.10.0.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.8.4...v1.10.0)

---
updated-dependencies:
- dependency-name: github.com/stretchr/testify
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 14:52:13 +01:00
dependabot[bot] 342a3474a3 build(deps): bump the gomod group across 5 directories with 3 updates
Bumps the gomod group with 1 update in the /build/readme directory: [github.com/falcosecurity/plugin-sdk-go](https://github.com/falcosecurity/plugin-sdk-go).
Bumps the gomod group with 1 update in the /build/registry directory: [github.com/falcosecurity/plugin-sdk-go](https://github.com/falcosecurity/plugin-sdk-go).
Bumps the gomod group with 1 update in the /plugins/cloudtrail directory: [github.com/falcosecurity/plugin-sdk-go](https://github.com/falcosecurity/plugin-sdk-go).
Bumps the gomod group with 1 update in the /plugins/github directory: [github.com/sethvargo/go-password](https://github.com/sethvargo/go-password).
Bumps the gomod group with 1 update in the /plugins/k8saudit-gke directory: [k8s.io/klog/v2](https://github.com/kubernetes/klog).


Updates `github.com/falcosecurity/plugin-sdk-go` from 0.7.3 to 0.7.4
- [Release notes](https://github.com/falcosecurity/plugin-sdk-go/releases)
- [Changelog](https://github.com/falcosecurity/plugin-sdk-go/blob/main/release.md)
- [Commits](https://github.com/falcosecurity/plugin-sdk-go/compare/v0.7.3...v0.7.4)

Updates `github.com/falcosecurity/plugin-sdk-go` from 0.7.3 to 0.7.4
- [Release notes](https://github.com/falcosecurity/plugin-sdk-go/releases)
- [Changelog](https://github.com/falcosecurity/plugin-sdk-go/blob/main/release.md)
- [Commits](https://github.com/falcosecurity/plugin-sdk-go/compare/v0.7.3...v0.7.4)

Updates `github.com/falcosecurity/plugin-sdk-go` from 0.7.3 to 0.7.4
- [Release notes](https://github.com/falcosecurity/plugin-sdk-go/releases)
- [Changelog](https://github.com/falcosecurity/plugin-sdk-go/blob/main/release.md)
- [Commits](https://github.com/falcosecurity/plugin-sdk-go/compare/v0.7.3...v0.7.4)

Updates `github.com/sethvargo/go-password` from 0.3.0 to 0.3.1
- [Commits](https://github.com/sethvargo/go-password/compare/v0.3.0...v0.3.1)

Updates `k8s.io/klog/v2` from 2.130.0 to 2.130.1
- [Release notes](https://github.com/kubernetes/klog/releases)
- [Changelog](https://github.com/kubernetes/klog/blob/main/RELEASE.md)
- [Commits](https://github.com/kubernetes/klog/compare/v2.130.0...v2.130.1)

---
updated-dependencies:
- dependency-name: github.com/falcosecurity/plugin-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/falcosecurity/plugin-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/falcosecurity/plugin-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/sethvargo/go-password
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: k8s.io/klog/v2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 14:50:13 +01:00
dependabot[bot] 094873bedc build(deps): bump actions/setup-go from 4.0.0 to 5.3.0
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4.0.0 to 5.3.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v4...f111f3307d8850f501ac008e886eec1fd1932a34)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 10:02:12 +01:00
dependabot[bot] fae2b7903e build(deps): bump the actions group with 4 updates
Bumps the actions group with 4 updates: [actions/checkout](https://github.com/actions/checkout), [github/codeql-action](https://github.com/github/codeql-action), [jidicula/clang-format-action](https://github.com/jidicula/clang-format-action) and [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer).


Updates `actions/checkout` from 4.1.1 to 4.2.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.1...11bd71901bbe5b1630ceea73d27597364c9af683)

Updates `github/codeql-action` from 3.28.3 to 3.28.4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](dd196fa9ce...ee117c905a)

Updates `jidicula/clang-format-action` from 4.11.0 to 4.14.0
- [Release notes](https://github.com/jidicula/clang-format-action/releases)
- [Commits](f62da5e3d3...d05cecd4a1)

Updates `sigstore/cosign-installer` from 3.5.0 to 3.7.0
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](59acb6260d...dc72c7d5c4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: jidicula/clang-format-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-23 18:35:08 +01:00
cpanato 5c061397dc clean up update ci and add dependabot config
Signed-off-by: cpanato <ctadeu@gmail.com>
2025-01-23 18:27:08 +01:00
Thomas Labarussias 42e49c7d89 fix the rule to detect the exec in EKS
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2025-01-22 17:48:04 +01:00
dependabot[bot] 7e92fd6e3e build(deps): bump golang.org/x/net in /plugins/gcpaudit
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.26.0 to 0.33.0.
- [Commits](https://github.com/golang/net/compare/v0.26.0...v0.33.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-22 13:03:03 +01:00
dependabot[bot] 288bc5c0a2 build(deps): bump golang.org/x/net in /shared/go/azure/eventhub
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.27.0 to 0.33.0.
- [Commits](https://github.com/golang/net/compare/v0.27.0...v0.33.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 12:22:48 +01:00
Leonardo Grasso 02eb75a3c1 fix(.github/workflows): address race condition on terminal "upload-pr-info" job
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-01-17 13:36:33 +01:00
Leonardo Grasso 515d40a276 fix(.github): avoid OCI repo validation before its creation
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-01-17 13:36:33 +01:00
Leonardo Grasso b59b03a06a docs(plugins): bulk update readmes
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-01-17 13:36:33 +01:00
Leonardo Grasso e1e6d5e2a1 docs: bulk update changelogs
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2025-01-17 13:36:33 +01:00
Thomas Labarussias 12e3afe13f upgrade the deps for k8saudit-aks and run go mod tidy to clean up the go.mod and fix the failing step in the CI
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2025-01-17 13:10:33 +01:00
Federico Di Pierro 1dc8b8272f chore(ci): switch to use github provided arm runner.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2025-01-17 10:33:32 +01:00
poiana 04bda84841 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2025-01-16 18:26:28 +01:00
scraly e7e5531d16 feat: Add k8saudiovh plugin in falcosecurity repo
Signed-off-by: scraly <scraly@gmail.com>
2025-01-16 17:43:28 +01:00
Aurelie Vache 11ab7cb31b feat: add k8saudit-ovh in registry.yaml file
Signed-off-by: scraly <scraly@gmail.com>
2025-01-16 17:43:28 +01:00
Aurelie Vache 453dd87b3c Add k8saudit-ovh plugin
Signed-off-by: Aurelie Vache <scraly@gmail.com>
2025-01-16 17:43:28 +01:00
Luca Guerra 208b2b4707 update(ci): upgrade golang to 1.23
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-01-16 16:55:27 +01:00
Luca Guerra a383f07d13 new(plugins/k8saudit): add subject name fields
Signed-off-by: Luca Guerra <luca@guerra.sh>
2025-01-13 10:42:38 +01:00
dependabot[bot] 35ec8874c0 build(deps): bump golang.org/x/crypto in /plugins/kafka
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.24.0 to 0.31.0.
- [Commits](https://github.com/golang/crypto/compare/v0.24.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-07 17:10:35 +01:00
Igor Eulalio 34dac6163c chore: update docs
Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>
2025-01-07 17:07:35 +01:00
Igor Eulalio 7da2323aa0 feat: refactor it to use init config instead environment variables, add plugin max event size configuration
Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>
2025-01-07 17:07:35 +01:00
Igor Eulalio fd257f2d50 fix: add waitgroup to prevent sending messages on closed channels
Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>
2025-01-07 17:07:35 +01:00
Igor Eulalio a476fb5a48 chore: fix license description on all files, remove test rules file, fix typo on README
Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>
2025-01-07 17:07:35 +01:00
Igor Eulalio c53998860c chore: remove unused print
Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>
2025-01-07 17:07:35 +01:00
Igor Eulalio 78c9bc9c8d feat: handling channel closenes in order
Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>
2025-01-07 17:07:35 +01:00
Igor Eulalio d28ea19f5e feat: refactor to remove print logs, add .envrc to .gitignore, configure proper resource shutdown for partitionClient
Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>
2025-01-07 17:07:35 +01:00
Francesco Pirrò fa297815dd feat(plugins/aksaudit): add aks audit logs plugin
Signed-off-by: Francesco Pirrò <francesco.pirro@sysdig.com>

update(plugins/gcpaudit): bump plugin version to 0.5.0

Signed-off-by: Francesco Pirrò <francesco.pirro@sysdig.com>

chore(plugins/gcpaudit): update changelogs with v0.5.0 changes

Signed-off-by: Francesco Pirrò <francesco.pirro@sysdig.com>

add initial plugin structure

Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>

add processor function, refactor workflow to leverage channels

Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>

refactoring main function to handle Process in underlying package, introducing channels

Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>

add makefile

Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>

update regisry + readme for k8saudit-aks

Signed-off-by: Thomas Labarussias <issif+github@gadz.org>

add owners

Signed-off-by: Thomas Labarussias <issif+github@gadz.org>

fix Open method arg

Signed-off-by: Thomas Labarussias <issif+github@gadz.org>

refactor code to handle the channel logic, add Makefile helpers, add new rule

Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>

add logs using proper plugin, finish configuration

Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>

feat: add .envrc to gitignore

Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>

feat: add .envrc to gitignore

Signed-off-by: Igor Eulalio <igor.eulalio@sysdig.com>
2025-01-07 17:07:35 +01:00
Leonardo Grasso 3a2f821596 docs(plugings): update changelogs
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-12-17 12:10:38 +01:00
Leonardo Grasso 8b30c001b4 update(k8saudit-gke): bump to v0.4.1
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-12-17 12:10:38 +01:00
Leonardo Grasso b9c5f803b6 update(gcpaudit): bump to v0.5.1
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-12-17 12:10:38 +01:00
Leonardo Grasso 2fbea5932c update(kafka): bump to v0.1.3
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-12-17 12:10:38 +01:00
dependabot[bot] bb9801e7fa build(deps): bump golang.org/x/crypto in /plugins/k8saudit-gke
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.24.0 to 0.31.0.
- [Commits](https://github.com/golang/crypto/compare/v0.24.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-17 11:24:38 +01:00
dependabot[bot] 59018d7090 build(deps): bump golang.org/x/crypto in /plugins/gcpaudit
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.24.0 to 0.31.0.
- [Commits](https://github.com/golang/crypto/compare/v0.24.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-17 11:15:38 +01:00
Francesco Pirrò e61c52a3a9 chore(plugins/gcpaudit): update changelogs with v0.5.0 changes
Signed-off-by: Francesco Pirrò <francesco.pirro@sysdig.com>
2024-11-21 09:59:21 +01:00
Francesco Pirrò 8f06b508dd update(plugins/gcpaudit): bump plugin version to 0.5.0
Signed-off-by: Francesco Pirrò <francesco.pirro@sysdig.com>
2024-11-20 18:21:19 +01:00
Francesco Pirrò b63c0efc82 chore(plugins/gcpaudit): update readme with new field
Signed-off-by: Francesco Pirrò <francesco.pirro@sysdig.com>
2024-11-20 18:21:19 +01:00
Francesco Pirrò 13e3d11a55 feat(plugins/gcpaudit): add gcp.resourceLabels field
Signed-off-by: Francesco Pirrò <francesco.pirro@sysdig.com>
2024-11-20 18:21:19 +01:00
Leonardo Grasso fc03215e93 update(k8saudit-gke): upgrade base plugin version
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-11-19 16:47:17 +01:00
Leonardo Grasso 26e55fa80f update(k8saudit-eks): upgrade base plugin version
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-11-19 16:47:17 +01:00
Andrea Terzolo 0890696b32 update: improve k8smeta logging
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-11-19 16:34:18 +01:00
Leonardo Grasso 5ddea47f5b fix(ci): add libelf-dev system dep for building packages
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-11-19 15:59:17 +01:00
Leonardo Grasso 45e716e8c4 update(k8saudit): bump to v0.11
Since https://github.com/falcosecurity/plugins/pull/528 is introducing a backward incompatible change within the ruleset

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-11-19 15:45:17 +01:00
Melissa Kilby 406c51778f update(anomalydetection): tweak inits when count_min_sketch disabled + better comments/docs clarity
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby cb0fdb1493 update(anomalydetection): update documentation
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 79c085e498 update(anomalydetection): helper new filtercheck / output field anomaly.falco.duration_ns
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 489ef6d788 update(anomalydetection): ability to reset data structures w/ timers
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby d4e72b8710 update(anomalydetection): more usage safeguards and info log messages
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 23bf05eebf update(anomalydetection): add some fallbacks / evt param extraction in cases of missing fd table entry
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 1e8052c840 update(anomalydetection): add some custom behavior profile short-cut fields options
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 6a448c2e4b update(anomalydetection): add MutexGuard (adopted from libs) to sketches data structures
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby f720e4ac87 update(anomalydetection): finish currently supported behavior profile filterchecks 3/n
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 14a58d3257 update(anomalydetection): add lastevent_fd + enhance robustness / tests + start fd related filterchecks 2/n
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 27747ebf57 update(anomalydetection): unit tests for proc lineage + add filterchecks 1/n
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Jason Dellaluce fa2c05e80b update(anomalydetection): populate info for proc args
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2024-11-13 22:41:54 +01:00
Jason Dellaluce faf66360b7 update(anomalydetection): sync plugin to latest SDK changes
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 6a834a368b new(anomalydetection): init config + start behavior profile extraction
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 73c11bd3af new(anomalydetection): start unit tests + bump libs and sdk
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby f77892214d cleanup(anomalydetection): cms class updates
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Melissa Kilby 6b89390238 new(anomalydetection): init plugin / start dev
Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2024-11-13 22:41:54 +01:00
Aldo Lacuku aceb2c2f78 chore(k8smeta): bump k8smeta version to 0.2.1
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-11-08 11:35:27 +01:00
Aldo Lacuku 8df5a6b2c9 chore(k8smeta): adjust logging level
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-11-07 14:50:24 +01:00
Aldo Lacuku 8aeeaa53c5 fix(k8smeta): handle missing directories/files during /proc scan
std::filesystem::directory_iterator works by retrieving entries on-the-fly as it iterates over them,
rather than preloading all entries. This implies that entries could indeed disappear (or appear)
between iterations, especially in highly dynamic directories such as /proc/.
The loop continues processing other entries even if an exception occurs,
allowing for robust and uninterrupted iteration.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-11-07 12:23:27 +01:00
Aldo Lacuku b5b9a4db2f fix(proc/scan): scan all existing threads
By scanning only /proc we missed the threads of a given process.
It scans all threads under a given process in /proc/pid/task.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-11-07 09:18:23 +01:00
Leonardo Grasso 0a8a799e22 update(.github/workflows): switching to github-arm64-2c-8gb
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-11-06 15:58:18 +01:00
Leonardo Grasso b095b5d69e update(.github/workflows): upgrade to actions/download-artifact@v4
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-11-06 15:58:18 +01:00
Leonardo Grasso acb73c757e update(.github/workflows): upgrade to actions/upload-artifact@v4
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-11-06 15:58:18 +01:00
Luca Guerra 2e570d125c update(docs): add LucaGuerra to owners
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-11-06 11:50:16 +01:00
dependabot[bot] 183bc0b1d0 build(deps): bump github.com/docker/docker in /build/changelog
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 24.0.9+incompatible to 25.0.6+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v24.0.9...v25.0.6)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-08 17:52:10 +02:00
dependabot[bot] 520d1678b5 build(deps): bump github.com/docker/docker in /build/registry
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 26.1.4+incompatible to 26.1.5+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v26.1.4...v26.1.5)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-08 17:30:09 +02:00
dependabot[bot] 6f493c3d49 build(deps): bump github.com/docker/docker in /plugins/kafka
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 27.1.0+incompatible to 27.1.1+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v27.1.0...v27.1.1)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-04 11:26:49 +02:00
Thomas Labarussias e94e21f9b4 update the falco version used in the CI
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2024-10-02 14:53:40 +02:00
Thomas Labarussias 7403eee735 [github plugin] split the field github.repo into github.repo.name and github.repo.url for easier to write rules + fix bad indentation in the registry table
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>

update the upload-artifact action version

Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2024-10-02 14:53:40 +02:00
pyama cea76009a0 fix:Do not output information that contains confidential data.
Signed-off-by: Kazuhiko Yamashita <www.kazu.com@gmail.com>
2024-09-18 10:19:52 +02:00
poiana 6d1d58031d docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2024-09-16 09:42:46 +02:00
Mattia Forcellese ece830a668 feat: Added keycloak plugin
Signed-off-by: Mattia Forcellese <mattiaforc@gmail.com>
2024-09-13 11:26:36 +02:00
poiana b8f9e32ef9 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2024-07-31 10:14:44 +02:00
dependabot[bot] 2277f83d2f build(deps): bump google.golang.org/grpc in /plugins/gcpaudit
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.64.0 to 1.64.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.64.0...v1.64.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-30 18:12:40 +02:00
andy 8e2cb63141 Update registry.yaml
Signed-off-by: andy <127995147+an1245@users.noreply.github.com>
2024-07-30 18:10:40 +02:00
andy ac3e8a9d58 Update registry.yaml
Signed-off-by: andy <127995147+an1245@users.noreply.github.com>
2024-07-30 18:10:40 +02:00
dependabot[bot] 5fbfe1fc4b build(deps): bump github.com/docker/docker in /build/registry
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 24.0.9+incompatible to 26.1.4+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v24.0.9...v26.1.4)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-30 18:09:40 +02:00
dependabot[bot] f1a7628df8 build(deps): bump github.com/docker/docker in /plugins/kafka
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 27.0.0+incompatible to 27.1.0+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/commits/v27.1.0)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-30 17:31:40 +02:00
Andrea Terzolo 40bbf69cd0 chore(k8smeta): bump k8smeta plugin version
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-07-24 17:22:10 +02:00
Andrea Terzolo 1c569c449d cleanup: complete the /proc scan
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-07-24 17:06:10 +02:00
Andrea Terzolo 4585f3ba6d fix(k8smeta): introduce proc-scan to recover the initial host state
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-07-24 17:06:10 +02:00
dependabot[bot] a00cc75bc8 build(deps): bump google.golang.org/grpc in /plugins/k8saudit-gke
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.64.0 to 1.64.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.64.0...v1.64.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-12 14:07:52 +02:00
dependabot[bot] c011440fa6 build(deps): bump google.golang.org/grpc in /plugins/kafka
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.64.0 to 1.64.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.64.0...v1.64.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-11 21:02:48 +02:00
Leonardo Grasso 84340ee760 docs(plugins/k8saudit-gke): update changelog
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-18 11:38:03 +02:00
Leonardo Grasso c9b77f5998 docs(plugins/k8saudit-eks): update changelog
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-18 11:38:03 +02:00
Leonardo Grasso b90a4917de update(plugins/k8saudit-gke): upgrade sdk and deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-18 10:39:03 +02:00
Leonardo Grasso 7310bbe40c update(plugins/k8saudit-eks): upgrade sdk and deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-18 10:39:03 +02:00
Leonardo Grasso b69d0d0912 docs: bulk update for changelogs
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 19:08:00 +02:00
Gerald Combs fbd9f4833d update(cloudtrail): Update ct.resources handling
Generalize our array length check. Use strings.TrimSuffix in order to
avoid a potential string under-read.

Signed-off-by: Gerald Combs <gerald@wireshark.org>
2024-06-17 18:27:00 +02:00
Leonardo Grasso b31ad613da docs(plugins): update README.md
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 16:12:00 +02:00
Leonardo Grasso 0f93bb46ee update(plugins/okta): upgrade sdk and deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 16:12:00 +02:00
Leonardo Grasso c13c93dfc9 docs(plugins/kafka): add SPDXID and file headers for license
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 16:12:00 +02:00
Leonardo Grasso 9490f6264c update(plugins/kafka): upgrade sdk and deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 16:12:00 +02:00
Leonardo Grasso 56e3a81094 update(plugins/k8saudit): upgrade sdk and deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 16:12:00 +02:00
Leonardo Grasso 85f956a9fd update(plugins/json): upgrade sdk and deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 16:12:00 +02:00
Leonardo Grasso 980fa2e46c update(plugins/github): upgrade sdk and deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 16:12:00 +02:00
Leonardo Grasso 92ee2d33f5 update(plugins/gcpaudit): upgrade sdk and deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 16:12:00 +02:00
Leonardo Grasso e99e98caa1 update(plugins/dummy): upgrade sdk and deps
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-06-17 16:12:00 +02:00
Sanja Kosier bc831863a0 update(plugins/gcpaudit): bump version to 0.4.0
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-06-17 10:15:04 +02:00
Sanja Kosier 9c1cab5ac7 feat(plugins/gcpaudit): introduce optional UseAsync field in gcpaudit plugin
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-06-17 10:15:04 +02:00
Sanja Kosier ea17a79ccc feat(plugins/okta): introduce optional UseAsync field in okta plugin
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-06-17 10:14:00 +02:00
Luca Guerra ef2a608365 chore(ci): update cosign-installer to v3.5.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-06-05 11:13:19 +02:00
Luca Guerra 512f1ff361 chore(build): add comment about upgrading debian version
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-05-22 18:03:21 +02:00
Luca Guerra f1c64d727a update(plugins): update changelogs
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-05-22 18:02:20 +02:00
Luca Guerra ed9790a965 fix(build): fix changelog script with double digit versions
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-05-22 16:14:20 +02:00
Luca Guerra c9e92164f9 update(plugins/k8sauditeks,plugins/k8sauditgke): bump versions
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-05-22 15:15:20 +02:00
Luca Guerra cee5818f42 chore(plugins): update k8saudit to 0.10.0 in gke and eks
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-05-22 15:15:20 +02:00
Luca Guerra aaee539faf chore(plugins): bump versions
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-05-22 11:19:19 +02:00
Luca Guerra 5e23552779 chore(plugins/k8saudit): use rc tag
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-05-21 16:49:13 +02:00
Luca Guerra 63b7093365 chore(plugin/cloudtrail): bump cloudtrail version to 0.10.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-05-21 16:49:13 +02:00
Luca Guerra 867b844462 fix(ci): build plugins on debian bullseye
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-05-21 16:18:13 +02:00
Sanja Kosier e66527da1a add field info fields list
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-05-21 16:08:13 +02:00
Sanja Kosier ab63a13b72 feat(plugins/k8saudit): extract pod name
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-05-21 16:08:13 +02:00
Sanja Kosier 1a559ef56f apply feedback; add field into fields.go
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-05-21 15:26:13 +02:00
Sanja Kosier 31c2f535d1 feat(plugins/k8saudit): extract cluster name
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-05-21 15:26:13 +02:00
Sverre Boschman a492a54ea1 build: use plugin event source as alternative commit scope for changelog generation
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-21 10:42:13 +02:00
Sverre Boschman 4686bf8320 build: include dependabot commits in changelog
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-21 10:42:13 +02:00
Sverre Boschman bd22a53b90 build: support go-compatible git tag convention in changelog generation
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-21 10:42:13 +02:00
Aldo Lacuku 04f6e543ec fix(CI): use the repo URL as source of truth for plugin's owner
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-05-14 16:51:47 +02:00
Leonardo Grasso 0e7ef76987 docs(plugins/kafka): update description and contact
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-05-14 10:09:45 +02:00
poiana 563eea578b docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2024-05-10 09:32:03 +02:00
Hunter Madison d486cb06fa Add a Readme and Owners
Signed-off-by: Hunter Madison <hunter.madison@ibm.com>
2024-05-10 09:23:03 +02:00
Hunter Madison e08db5a112 Register plugin as ID 18
Signed-off-by: Hunter Madison <hunter.madison@ibm.com>
2024-05-10 09:23:03 +02:00
Hunter Madison e2d7458b72 Support reading events from Kafka
Signed-off-by: Hunter Madison <hunter.madison@ibm.com>
2024-05-10 09:23:03 +02:00
Hunter Madison f56b5f8e41 Update Golang build environment to 1.22
Signed-off-by: Hunter Madison <hunter.madison@ibm.com>
2024-05-10 09:23:03 +02:00
Sverre Boschman ba30578c64 ci: bump checkout and setup-go actions
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-09 18:53:59 +02:00
Sverre Boschman 7c1f048c61 ci: bump codeql-action/analyze to v3
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-09 18:53:59 +02:00
Sverre Boschman 565d1bb281 ci: bump codeql-action/autobuild to v3
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-09 18:53:59 +02:00
Sverre Boschman 5cdf91322b ci: bump CodeQL to v3
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-09 18:53:59 +02:00
Nuno Adrego c4ed2ca417 chore(plugins/cloudtrail): update changelog
Signed-off-by: Nuno Adrego <55922671+nunoadrego@users.noreply.github.com>
2024-05-08 11:02:53 +02:00
Nuno Adrego d775f538c8 chore(cloudtrail): replace moved package
Signed-off-by: Nuno Adrego <55922671+nunoadrego@users.noreply.github.com>
2024-05-08 11:02:53 +02:00
Nuno Adrego f43ca43326 chore(cloudtrail): update Go and dependencies
Signed-off-by: Nuno Adrego <55922671+nunoadrego@users.noreply.github.com>
2024-05-08 11:02:53 +02:00
Klaus Wagner 65aed62a38 Add ka.auth.openshift.decision and ka.auth.openshift.username as fields to allow processing of events in openshift clusters regarding authentication
Signed-off-by: Klaus Wagner <neniscio@gmail.com>
2024-05-08 10:50:53 +02:00
Sanja Kosier db113db628 apply feedback; bump plugin version in a right way
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-05-07 13:11:48 +02:00
Sanja Kosier 737f336d49 chore(k8saudit-gke): bump version
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-05-07 13:11:48 +02:00
Sanja Kosier 274f99a590 apply feedback; add method comment
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-05-06 17:46:46 +02:00
Sanja Kosier 06814a7908 plugins(k8saudit-gke): export ConvertLogEntry method
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-05-06 17:46:46 +02:00
Sverre Boschman 42fcdae988 chore(plugins/k8saudit): bump plugin version to 0.9.0
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-03 11:00:02 +02:00
Sverre Boschman 472fd1fc53 fix(plugins/k8saudit/rules): split rbac rules by individual rbac object
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-03 11:00:02 +02:00
Sverre Boschman d2e1605236 chore(k8saudit-gke): bump version to 0.1.1
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-02 16:22:57 +02:00
Sverre Boschman 23728c61c8 chore(k8saudit-gke): add changelog
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-05-02 16:22:57 +02:00
sumgang45 6ec224e29a Missing new line indicator
missing a character here. makes the command fail without

Signed-off-by: sumgang45 <102499046+sumgang45@users.noreply.github.com>
2024-05-02 14:55:56 +02:00
Aldo Lacuku 15e3a94824 fix(ci): do not build tag, but use it as got from git
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-05-02 14:52:57 +02:00
Aldo Lacuku 5008a791de feat(CI): extend compare-rule-files to multiple rule files
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-05-02 14:52:57 +02:00
Aldo Lacuku acd2641a02 fix(ci): correctly fetch repository head
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-24 18:04:25 +02:00
dependabot[bot] 1f2fa778b3 build(deps): bump golang.org/x/net in /plugins/k8saudit-gke
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.20.0 to 0.23.0.
- [Commits](https://github.com/golang/net/compare/v0.20.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-24 15:57:25 +02:00
Aldo Lacuku e45070ffde fix(release/rules): ignore symlinks when releasing rulesfiles
k8saudit-gke ships a rulesfiles that overrides the k8saudit rules. To make the
CI happy we have a symlink of the original k8saudit rules in k8saudit-gke/rules
directory. This commit filters out the symlinks when releasing the rulesfiles.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-24 14:52:25 +02:00
Aldo Lacuku 83d5b928e5 fix(ci): correctly retrieve plugin version from tag
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-24 14:47:25 +02:00
Aldo Lacuku 9298bcb5f8 update(github): bump version to 0.7.3
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-23 15:55:20 +02:00
Aldo Lacuku e2565ed24b update(gcpaudit): bump version to 0.3.2
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-23 13:00:18 +02:00
dependabot[bot] 80bfc71eb0 build(deps): bump golang.org/x/net in /plugins/gcpaudit
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.17.0 to 0.23.0.
- [Commits](https://github.com/golang/net/compare/v0.17.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-23 10:12:17 +02:00
dependabot[bot] 6f7ef799af build(deps): bump golang.org/x/net in /plugins/github
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.17.0 to 0.23.0.
- [Commits](https://github.com/golang/net/compare/v0.17.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-23 10:11:17 +02:00
dependabot[bot] ee22f2e5cc build(deps): bump golang.org/x/net in /build/registry
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.17.0 to 0.23.0.
- [Commits](https://github.com/golang/net/compare/v0.17.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-23 10:08:18 +02:00
Aldo Lacuku abea0e4cb6 new(CI): add registry.yaml validator
Before adding an entry to the registry.yaml file we check that
the OCI artifact for that entry has been released.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-22 17:23:14 +02:00
Sverre Boschman 4a3da4848d chore(k8saudit): bump version to 0.8.0 to release rule changes
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-04-22 14:31:22 +02:00
Leonardo Grasso bf6e917f09 fix(plugins/gcpaudit/rules): required version
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-04-12 12:30:31 +02:00
Uli Heilmeier fb4eb7a5bd feat(gcpaudit): Add Display attribute for fields
The Falco Bridge plugin of another tool is using the 'Display' value to have a
name for the field. => Adding 'Display' to all fields so that this plugin is usable.

Signed-off-by: Uli Heilmeier <uh@heilmeier.eu>
2024-04-12 12:30:31 +02:00
Aldo Lacuku 7b26d6e3aa fix(CI): extract info from plugin tag
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-12 12:06:32 +02:00
Aldo Lacuku 3e04dc2cda update(dummy): bump version for ci testing purpose
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-12 11:46:31 +02:00
Aldo Lacuku 225ba6148c update(CI): change release tag format
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-12 11:12:32 +02:00
poiana 155732cfcf docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2024-04-09 15:52:14 +02:00
Grzegorz Nosek 09a006e0d0 update(registry.yaml): register journald plugin
Signed-off-by: Grzegorz Nosek <grzegorz.nosek@sysdig.com>
2024-04-09 15:36:15 +02:00
Aldo Lacuku 42e09c0c1b fix(registry.yaml): add maintainers for k8saudit-gke and k8saudit-eks
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-03 14:47:50 +02:00
Aldo Lacuku 8be5e08630 cleanup: remove registry binary
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-03 13:46:51 +02:00
Aldo Lacuku 90c73b83e6 fix(ci): support release of plugins with same prefix
Cases such k8saudit and k8saudit-gke need special handling
when pushing artifacts.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-03 12:41:50 +02:00
Aldo Lacuku 774b6c6ffd update(docs): update release docs
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-04-02 12:01:44 +02:00
Sverre Boschman 5ab853d403 docs(k8saudit-gke): describe scaling options for high audit log volumes
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-04-02 12:00:45 +02:00
Sverre Boschman ec37c953b3 docs(k8saudit-gke): Explain Pub/Sub setup alternatives
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-28 16:46:16 +01:00
Luca Guerra b0f3f0bf00 chore(plugins): bump dummy plugin version
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-03-28 15:58:16 +01:00
Leonardo Grasso ba8a0e8389 docs: update default branch to `main`
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-03-28 15:38:16 +01:00
Leonardo Grasso a394acb695 update(.github): rename main workflow file
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-03-28 15:38:16 +01:00
Leonardo Grasso 33c740c36c update(registry.yaml): switch to `main` branch
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-03-28 15:38:16 +01:00
Leonardo Grasso 9f5c9806fc update(build): switch to `main` branch
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-03-28 15:38:16 +01:00
Leonardo Grasso a71cbc2cb5 update(.github): switch to `main` branch
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-03-28 15:38:16 +01:00
Leonardo Grasso 4358dfcde1 docs(README.md): switching to `main` branch
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2024-03-28 15:38:16 +01:00
Aldo Lacuku f37dd7487f chore(github): bump version to 0.7.2
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-03-28 12:08:15 +01:00
Aldo Lacuku ee3cd60031 fix(ci): set empty string as a flag when not specified by the ci
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-03-28 11:53:15 +01:00
Aldo Lacuku 456f306b17 fix(oci): fix dependencies for publish-oci-artifacts workflow
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-03-28 11:36:15 +01:00
Aldo Lacuku 4fafb03bdd chore(dummy): bump version
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-03-28 11:28:15 +01:00
Luca Guerra efc5971644 update(ci): update cosign version
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-03-28 11:06:15 +01:00
Aldo Lacuku e9ad6a671e fix(CI): fix command in oci artifacts
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-03-28 10:43:15 +01:00
Aldo Lacuku 6083be8fa2 fix(CI): add suffix input to oci workflow
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-03-28 10:00:15 +01:00
Aldo Lacuku 20a0f25b7e new(CI): publish oci artifacts for main branch and releases
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-03-28 09:28:16 +01:00
Aldo Lacuku d957f8958a feat(build/registry): drop dependency from s3 bucket for oci artifacts
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-03-28 09:28:16 +01:00
Sanja Kosier 2ec47c414c bump plugin version
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-03-27 15:06:14 +01:00
Sanja Kosier b0a27351dc fix(plugins/github): add length check in if statement
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2024-03-27 15:06:14 +01:00
Farid Driouch 1523297cc7 Squashing commits
Signed-off-by: Farid Driouch <farid.driouch@employinc.com>

Fix application name extraction issue

Fix application name extraction issue

Signed-off-by: Farid Driouch <farid.driouch@employinc.com>

Updated version number and CHANGELOG
Signed-off-by: Farid Driouch <farid.driouch@employinc.com>
2024-03-26 15:59:12 +01:00
Sverre Boschman 3d7ce9e274 docs: add k8saudit-gke to registry.yaml
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-25 15:00:06 +01:00
dependabot[bot] 5aceeb642e build(deps): bump github.com/docker/docker in /build/registry
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 24.0.7+incompatible to 24.0.9+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v24.0.7...v24.0.9)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-22 13:43:53 +01:00
Uli Heilmeier b31948c140 refactor(cloudtrail): Get S3 keys concurrently
To speed up the process of getting all the keys, divide the inputParams
array into chunks and get the keys for each item in the chunk concurrently.

Signed-off-by: Uli Heilmeier <uh@heilmeier.eu>
2024-03-15 14:30:27 +01:00
Thomas Labarussias f6775232d6 add Issif as owner of the okta plugin for the PR approvals
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2024-03-14 14:46:26 +01:00
dependabot[bot] 3924e28c03 build(deps): bump google.golang.org/protobuf in /build/registry
Bumps google.golang.org/protobuf from 1.31.0 to 1.33.0.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-14 12:35:25 +01:00
Luca Guerra 24e9f229e0 update(plugins/k8s_audit): rename more falco_ lists
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-03-14 12:34:25 +01:00
Luca Guerra 0879a81384 update(plugins/k8s_audit): k8s_* -> k8s_audit_*
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-03-14 12:34:25 +01:00
Luca Guerra 2f2e62467f update(rules): remove references to k8s.io
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-03-14 12:34:25 +01:00
dependabot[bot] 2a71ea8605 build(deps): bump google.golang.org/protobuf in /plugins/gcpaudit
Bumps google.golang.org/protobuf from 1.30.0 to 1.33.0.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-14 12:33:25 +01:00
dependabot[bot] 8d3dd24c73 chore(deps): bump google.golang.org/protobuf in /plugins/k8saudit-gke
Bumps google.golang.org/protobuf from 1.32.0 to 1.33.0.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-14 11:27:25 +01:00
dependabot[bot] 5e2953f873 build(deps): bump google.golang.org/protobuf in /plugins/github
Bumps google.golang.org/protobuf from 1.28.0 to 1.33.0.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-14 11:10:24 +01:00
Sverre Boschman 16da99d297 fix(k8saudit-gke): update rules with #431
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman aeaef3a2e7 fix(k8saudit-gke): remove falco stable rules dep
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Luca Guerra 2c4a275766 cleanup(plugins/k8s_audit): make the rulesefile self-referenced
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-03-14 11:03:24 +01:00
Luca Guerra a99691aa7a cleanup(plugins/gcp_auditlog): lint
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-03-14 11:03:24 +01:00
Sverre Boschman e45db30295 fix(k8saudit-gke): engine version != falco version
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman dc604e1268 chore(k8saudit-gke): remove modern_pbf setting as it is not applicable
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman 451cbb59e6 chore(k8saudit-gke): use same project/subscription example id as readme
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman a13d908da4 docs(k8saudit-gke): fix some errors in the readme
Co-authored-by: Thomas Labarussias <issif+github@gadz.org>
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman 192c79c868 chore(k8saudit-gke): fix copyright header
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman 7aca8fe0ad chore(k8saudit-gke): set required engine version to 0.37
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman f42b948865 chore(k8saudit-gke): add required_plugin_versions to rules
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman b51d7ae65f ci(k8saudit-gke): try symlink to base k8saudit rules
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman 0f850be287 docs(k8saudit-gke): add note about log sink exclusion filters
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman d0312cc491 chore(k8saudit-gke): publish gke specific rule overrides
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman 3292c48761 ci: bump golang to 1.21
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman af1580eeba chore(k8saudit-gke): set officially assigned PluginID
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman ef07168841 chore(k8saudit): add k8saudit-gke as plugin alternative
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman c61b4db83d fix(k8saudit-gke): prefix resourname with a slash to create uri
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Sverre Boschman d91805f13f feat(k8saudit-gke): initial k8saudit-gke plugin code
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2024-03-14 11:03:24 +01:00
Aldo Lacuku 110e6651a5 fix(CI): correctly extract dependencies for alternatives plugins
When running the CI for a plugin which is set as an alternative
in the rules files, it is correctly set as a dependency.

Furthermore, the dependency extraction logic from rulesfiles
has been unified for all the use cases and supports multiple
rulesfiles at once.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-03-13 16:19:22 +01:00
Uli Heilmeier 9920d3558f feat(cloudtrail): support accounts for org trails
Support accounts for organization trails. When open parameter is
's3://bucket_name/prefix_name/AWSLogs/O-ID/' and 'S3AccountList' is not set
get all events for all accounts in the organization CloudTrail bucket.

If 'S3AccountList' is configured get events for the account IDs specified
in the comma separated list.

S3Interval also works for organisation trails.

Fixes: #423

Signed-off-by: Uli Heilmeier <uh@heilmeier.eu>
2024-03-12 09:15:16 +01:00
Thomas Labarussias ff78f42187 update the versions of falco and falcoctl in the CI
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2024-03-07 14:50:59 +01:00
Uli Heilmeier 746ea983c7 feat(cloudtrail): Support for organization trails
Add support for organization trail path as documented at
https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html

Signed-off-by: Uli Heilmeier <uh@heilmeier.eu>
2024-03-07 11:49:58 +01:00
Andrea Terzolo 256f94cb3f docs: update k8smeta doc
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-02-28 17:00:28 +01:00
Uli Heilmeier 9a1f86a15f feat(cloudtrail): Add generic additionalEventData field
Similar to ct.request, all values should also be available for
additionalEventData.

Signed-off-by: Uli Heilmeier <uh@heilmeier.eu>
2024-02-23 12:19:08 +01:00
Uli Heilmeier 0e4a68736c feat(cloudtrail): Add ct.response and ct.request field
Adding CloudTrail fields requestParameters as ct.request and responseElements
as ct.response.

Signed-off-by: Uli Heilmeier <uh@heilmeier.eu>
2024-02-21 16:27:04 +01:00
matteopasa 4b93e5658f fix s3.cnt.other condition
Signed-off-by: matteopasa <matteo.pasina@sysdig.com>
2024-02-16 15:13:37 +01:00
matteopasa 29fa24d109 remove s3 extract fields
Signed-off-by: matteopasa <matteo.pasina@sysdig.com>
2024-02-16 15:12:37 +01:00
Uli Heilmeier 6a99500af7 feat: add more Cloudtrail fields
Add more fields as defined at
https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html

Signed-off-by: Uli Heilmeier <uh@heilmeier.eu>
2024-02-16 15:10:37 +01:00
Aldo Lacuku 0c21c8a589 update(k8saudit/docs): add k8s configuration files
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-02-16 15:02:38 +01:00
Lorenzo Susini 1212700d7b fix(pkg/oci): trim spaces when handling required_engine_version
Signed-off-by: Lorenzo Susini <susinilorenzo1@gmail.com>
2024-02-12 11:47:15 +01:00
matteopasa 195752b7b9 Update plugins/cloudtrail/rules/aws_cloudtrail_rules.yaml
Co-authored-by: Jason Dellaluce <jasondellaluce@gmail.com>
Signed-off-by: matteopasa <146732818+matteopasa@users.noreply.github.com>
2024-02-06 10:59:53 +01:00
matteopasa c298b2504e bump cloudtrail plugin version to 0.11.0
Signed-off-by: matteopasa <matteo.pasina@sysdig.com>
2024-02-06 10:59:53 +01:00
Mike Coleman f57f32e326 fixed formatting errors
Signed-off-by: Mike Coleman <mikegcoleman@gmail.com>
2024-02-05 15:35:50 +01:00
Mike Coleman 5968c364f3 Update plugins/gcpaudit/walkthrough.md
Co-authored-by: Thomas Labarussias <issif+github@gadz.org>
Signed-off-by: Mike Coleman <mikegcoleman@gmail.com>
2024-02-05 15:35:50 +01:00
Mike Coleman 0c02e9f48b Update plugins/gcpaudit/walkthrough.md
Co-authored-by: Thomas Labarussias <issif+github@gadz.org>
Signed-off-by: Mike Coleman <mikegcoleman@gmail.com>
2024-02-05 15:35:50 +01:00
Mike Coleman 93725a3731 Update plugins/gcpaudit/walkthrough.md
Co-authored-by: Thomas Labarussias <issif+github@gadz.org>
Signed-off-by: Mike Coleman <mikegcoleman@gmail.com>
2024-02-05 15:35:50 +01:00
Mike Coleman e83e4d779f Update plugins/gcpaudit/walkthrough.md
Co-authored-by: Thomas Labarussias <issif+github@gadz.org>
Signed-off-by: Mike Coleman <mikegcoleman@gmail.com>
2024-02-05 15:35:50 +01:00
Mike Coleman bf5bded38b initial commit of GCP Audit logs walkthrough
Signed-off-by: Mike Coleman <mikegcoleman@gmail.com>
2024-02-05 15:35:50 +01:00
matteopasa 7a9233d1df add size to s3.bytes
Signed-off-by: matteopasa <matteo.pasina@sysdig.com>
2024-02-05 11:16:49 +01:00
matteopasa b31e54a0f0 extract from s3 notification message
Signed-off-by: matteopasa <matteo.pasina@sysdig.com>
2024-02-05 11:16:49 +01:00
poiana 980c55493c docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2024-01-29 11:00:28 +01:00
andy 00cc76ffbd Registering Box plugin in registry.yaml
Signed-off-by: andy <127995147+an1245@users.noreply.github.com>
2024-01-29 10:56:27 +01:00
Aldo Lacuku bb67db7e26 update(registry.yaml): update the copyright
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2024-01-26 10:24:18 +01:00
Andrea Terzolo 3a459ef882 tests: bump libs to 0.14.1
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-01-22 11:04:06 +01:00
Andrea Terzolo 03d563552d chore(k8smeta): bump to 0.1.0
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-01-22 11:04:06 +01:00
Luca Guerra e1047e145d update(plugins): okta-rules:0.10.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-19 17:25:00 +01:00
Luca Guerra 03ca9e9518 update(plugins): k8saudit-eks-0.4.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-19 17:25:00 +01:00
Luca Guerra 9275406585 update(plugins): github-0.7.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-19 17:25:00 +01:00
Luca Guerra 466eab065a update(plugins): gcpaudit-0.3.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-19 17:25:00 +01:00
Luca Guerra b3a924863d update(plugins): dummy-0.10.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-19 17:25:00 +01:00
Luca Guerra 080583cfab update(plugins): cloudtrail-0.10.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-19 17:25:00 +01:00
Luca Guerra 091c6bb680 update(plugins): k8saudit-0.7.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-19 17:25:00 +01:00
Lorenzo Susini 192fb5829f update(build): create new engine_version_semver string for new plugin rulesfiles artifact configs
Signed-off-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-19 11:35:59 +01:00
Luca Guerra b3cd036e35 fix(ci): fix remote tag deletion/skipping
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-19 09:44:59 +01:00
Luca Guerra 0503497165 Revert "update(build): create new engine_version_semver string for new plugin rulesfiles artifact configs"
This reverts commit eaa8fb10b9.

Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-18 17:22:57 +01:00
Luca Guerra 6c0d1bcc3a update(plugins/okta): bump version to 0.10.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-17 17:58:55 +01:00
Luca Guerra 2d1476315e fix(ci): add debug for not semver
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-17 16:23:55 +01:00
Andrea Terzolo 8671386064 fix: move a log after verbosity initialization
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-01-16 15:28:51 +01:00
Luca Guerra 48c0a0b32b chore(plugins): bump dummy to 0.10.0-rc1
Signed-off-by: Luca Guerra <luca@guerra.sh>
2024-01-16 15:16:52 +01:00
Lorenzo Susini eaa8fb10b9 update(build): create new engine_version_semver string for new plugin rulesfiles artifact configs
Signed-off-by: Lorenzo Susini <susinilorenzo1@gmail.com>
2024-01-16 15:07:51 +01:00
Thomas Labarussias 612f126219 change the method to detect the truncate
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2024-01-16 14:43:51 +01:00
Thomas Labarussias 0fb4ee322e add a log line with the auditID of the truncated line
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2024-01-16 14:43:51 +01:00
Thomas Labarussias 21cd9b9b38 ignore truncated lines to avoid parsing errors
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2024-01-16 14:43:51 +01:00
lorenzo merici b450d15fb2 Bump json version to 0.7.2
Signed-off-by: lorenzo-merici <lorenzo.merici@sysdig.com>
2024-01-12 11:51:39 +01:00
lorenzo merici f3a617ff51 fix crash on empty json field arg
Signed-off-by: lorenzo-merici <lorenzo.merici@sysdig.com>
2024-01-12 10:29:38 +01:00
Mike Coleman 8fe6a6f409 fixed formatting errors
Signed-off-by: Mike Coleman <mikegcoleman@gmail.com>
2024-01-11 12:49:38 +01:00
Mike Coleman bc869996c9 general rules clean up
Signed-off-by: Mike Coleman <mikegcoleman@gmail.com>
2024-01-11 12:49:38 +01:00
Thomas Labarussias d41172a321 add refresh_interval parameter
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2024-01-09 11:50:34 +01:00
poiana ed61a322a2 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2024-01-09 10:20:33 +01:00
andy 293a7ede8c Update registry.yaml
Signed-off-by: andy <127995147+an1245@users.noreply.github.com>
2024-01-09 10:07:33 +01:00
andy 31ad3a9a61 Update registry.yaml
Signed-off-by: andy <127995147+an1245@users.noreply.github.com>
2024-01-09 10:07:33 +01:00
Andrea Terzolo 936a819073 docs(k8smeta): update README.md
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-01-08 12:08:27 +01:00
Andrea Terzolo 91119e92d7 chore(k8smeta): bump libs to 0.14.0
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-01-08 12:08:27 +01:00
Andrea Terzolo 445079397b fix(k8smeta)!: use `nodeName` instead of `nodename`
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-01-08 12:08:27 +01:00
Andrea Terzolo 08b6424cc5 cleanup(k8smeta): rename some variables
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-01-08 12:08:27 +01:00
Andrea Terzolo ac5c8fbf6f update(k8smeta): add a retry log
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-01-08 12:08:27 +01:00
Andrea Terzolo 93b643c5d3 update(k8smeta): change log verbosity for a log
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2024-01-08 12:08:27 +01:00
poiana 7d049b7ee5 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2023-12-19 09:02:06 +01:00
Andrea Terzolo b58f56095f update(k8smeta): change plugin version to `0.1.0-alpha`
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-18 17:55:02 +01:00
Andrea Terzolo e49c6cca04 update(registry): add `k8smeta` plugin to the registry
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-18 17:28:01 +01:00
Andrea Terzolo 1f80134ed7 update(k8smeta): remove a wrong log
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-18 15:40:01 +01:00
Andrea Terzolo 21eaf331e7 cleanup: fix clang-format issues
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-18 11:49:00 +01:00
Andrea Terzolo ee4e90e710 cleanup: rename `.id` into `.uid`
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
Co-authored-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2023-12-18 11:49:00 +01:00
Andrea Terzolo e23a1c4457 cleanup(k8smeta): rename `k8sres.*` into `k8smeta.*`
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
Co-authored-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
2023-12-18 11:49:00 +01:00
Andrea Terzolo e994cbd42f new(CI): add a new workflow for `k8smeta` plugin
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-18 11:49:00 +01:00
Andrea Terzolo 4f883bc7ee chore(CI): adapt CI to build `k8smeta` plugin
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-18 11:49:00 +01:00
Andrea Terzolo 9b54c04d01 new(plugins): introduce new `k8smeta` plugin
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-18 11:49:00 +01:00
Andrea Terzolo f1e9c79316 chore(CI): use CodeQL autobuild only for golang
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-11 16:59:39 +01:00
Andrea Terzolo 3c98eaa8ac new(ci): add new CI workflow for dummy_c plugin
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-11 16:59:39 +01:00
Andrea Terzolo 08197b7499 style(dummy_c): adapt dummy_c to the new clang-format
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-11 16:59:39 +01:00
Andrea Terzolo b8f27f6b62 new: add a `clang-format` that will be used by cpp plugins
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-11 16:59:39 +01:00
Andrea Terzolo 3a58f91f03 chore(CI): bump Falco and Falcoctl to latest versions
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-11 16:58:39 +01:00
Federico Di Pierro f19d52bd53 new(ci): use actuated arm nodes.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2023-12-06 15:51:26 +01:00
Andrea Terzolo a287031613 update(version): add the binary to the gitignore
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-05 18:42:25 +01:00
Andrea Terzolo 3be7bb76b2 fix(version): adapt the go tool to the cpp sdk behavior
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-05 18:42:25 +01:00
Andrea Terzolo 5611cae344 cleanup: try to uniform the behavior of `dummy` plugins
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-05 18:42:25 +01:00
Andrea Terzolo ef328a3499 fix: use the correct plugin id for dummy_c
According to the registry the id of dummy_c is `4` not `999`

Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-05 18:42:25 +01:00
Andrea Terzolo c30586ff77 new(readme): add readme binary to gitignore
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-05 18:42:25 +01:00
Andrea Terzolo ee0903e296 new(dummy_c): add a rule file for dummy_c
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-05 18:42:25 +01:00
Andrea Terzolo c4cc4a250f plugins(dummy_c): update dummy_c plugin to use the latest sdk
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-12-05 18:42:25 +01:00
Richard Tweed 028fa19288 feat(plugins/k8saudit/rules) add detection for portforwarding
Signed-off-by: Richard Tweed <RichardoC@users.noreply.github.com>
2023-11-27 18:15:00 +01:00
Jason Dellaluce 042f3f28bf update(plugins/gcpaudit): replace json values with new fields in rules
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-11-15 17:11:16 +01:00
Jason Dellaluce d17ea2d592 chore(plugins/gcpaudit): use new fields in example
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-11-15 17:11:16 +01:00
Jason Dellaluce eff2054cac update(plugins): generate fresh changelogs and readmes
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-11-15 17:11:16 +01:00
dependabot[bot] 68467e3213 build(deps): bump github.com/docker/docker in /build/registry
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 24.0.5+incompatible to 24.0.7+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v24.0.5...v24.0.7)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-15 17:10:16 +01:00
dependabot[bot] 87ca5d0e2e build(deps): bump google.golang.org/grpc in /plugins/gcpaudit
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.53.0 to 1.56.3.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.53.0...v1.56.3)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-15 17:09:16 +01:00
Luca Guerra 16306f2ff8 update(cloudtrail): bump version to 0.9.1
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-10-30 14:39:56 +01:00
Sanja Kosier 66c77bebf5 fix(plugins/cloudtrail): remove wrong return statement when extracting recipientAccountId
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-10-30 09:51:55 +01:00
poiana 5445aa1fb8 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2023-10-13 14:21:49 +02:00
Leonardo Grasso 79795f288e update(build/registry): ID max limit and handle 0 special case
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-10-13 14:17:50 +02:00
Leonardo Grasso 48b6b75881 update(registry.yaml): add special case for source id=0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-10-13 14:17:50 +02:00
Leonardo Grasso 7d54bfaa20 docs: spec and blocks for plugin IDs
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-10-13 14:17:50 +02:00
Saad Javed 3a7f1b1920 fix(plugins/github): add a check that before and after commit IDs aren't null and fix some typos
Signed-off-by: saadjaved <saadjaved3@yahoo.com>
2023-10-13 11:46:49 +02:00
dependabot[bot] 81ccd91dfa build(deps): bump golang.org/x/net in /plugins/github
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.7.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.7.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-12 15:18:46 +02:00
dependabot[bot] c588b06431 build(deps): bump golang.org/x/net in /plugins/gcpaudit
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.8.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.8.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-12 11:57:46 +02:00
dependabot[bot] e86bb5f07a build(deps): bump golang.org/x/net in /build/registry
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.14.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.14.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-12 11:56:46 +02:00
Leonardo Grasso 0bac0be282 docs(plugins/gcpauidit): add license headers
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-10-11 18:14:45 +02:00
Leonardo Grasso 34ab875e20 docs: add SPDX license identifier
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-10-11 18:14:45 +02:00
Thomas Labarussias 2605da1c3f update k8saudit-eks readme to explain how to deploy in EKS
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2023-09-22 14:38:49 +02:00
lorenzo-merici 9e0afdb008 update gcp plugin version to 0.2.2
Signed-off-by: lorenzo-merici <lorenzo.merici@sysdig.com>
2023-09-21 17:21:47 +02:00
lorenzo-merici 2fd8cf9882 fix conversion error for empty zone
Signed-off-by: Lorenzo Merici <lorenzo.merici@sysdig.com>
2023-09-21 17:07:48 +02:00
Federico Di Pierro 69618af916 update(plugins): bump to-be-released plugin versions.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2023-09-20 16:57:44 +02:00
lorenzo-merici b68b2d353e update gcp version to 0.2.1
Signed-off-by: Lorenzo Merici <lorenzo.merici@sysdig.com>
2023-09-20 13:01:44 +02:00
Luca Guerra 95a98f26a7 update(registry): add signature info for all official plugins
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-20 12:02:44 +02:00
lorenzo-merici 60ac2672e3 add missing string conversions
Signed-off-by: Lorenzo Merici <lorenzo.merici@sysdig.com>
2023-09-20 12:00:44 +02:00
Luca Guerra ecb1d6f016 update(registry): enforce signature for k8saudit
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-20 11:30:44 +02:00
Luca Guerra ff6dd19ccd new(registry): add signature for gcpaudit
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-19 18:52:33 +02:00
Massimiliano Giovagnoli 166e0c0194 deps: bump falcoctl to v0.6.1
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-09-19 18:20:34 +02:00
Massimiliano Giovagnoli 40910f1418 test(pkg/distribution): add initial index entry signature unit test
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-09-19 18:20:34 +02:00
Massimiliano Giovagnoli f00e485078 test(pkg/distribution): add initial index-update black box unit tests
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-09-19 18:20:34 +02:00
Massimiliano Giovagnoli a4b8b8bc09 feat(pkg/distribution): generate index with signature from registry model
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-09-19 18:20:34 +02:00
Massimiliano Giovagnoli 4145f48fd5 feat(pkg/registry): add index entry signature to registry model
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-09-19 18:20:34 +02:00
maxgio92 af1e0685fd disable release.yml trigger
Signed-off-by: maxgio92 <me@maxgio.it>
2023-09-19 18:20:34 +02:00
Jason Dellaluce cb72c55996 update(plugins/gcpaudit): bump version to 0.2.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-09-19 17:36:34 +02:00
Luca Guerra 4298ca0939 cleanup(build): remove sign older plugins
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-19 17:31:33 +02:00
Federico Di Pierro b274350962 fix(plugins/gcpaudit): check open params.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2023-09-19 15:38:33 +02:00
Luca Guerra 1684fe6dac update(build): temporarily add a job to sign older plugins
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-19 15:31:33 +02:00
lorenzo-merici 573df5af9d Revert "add scaffold for unit testing"
This reverts commit b7bb2f1ada.
Signed-off-by: Lorenzo Merici <lorenzo.merici@sysdig.com>
2023-09-19 12:44:32 +02:00
lorenzo-merici ce0ef95d43 Add missing string conversions
Signed-off-by: Lorenzo Merici <lorenzo.merici@sysdig.com>
2023-09-19 12:44:32 +02:00
lorenzo-merici 3f859d80f6 add scaffold for unit testing
Signed-off-by: Lorenzo Merici <lorenzo.merici@sysdig.com>
2023-09-19 12:44:32 +02:00
lorenzo-merici af20dc663d add nil checks for optional fields
Signed-off-by: Lorenzo Merici <lorenzo.merici@sysdig.com>
2023-09-19 12:44:32 +02:00
Luca Guerra 5688145300 fix(build): skip non-semver tags during oci publishing
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-19 11:38:32 +02:00
Luca Guerra 8c6083244e update(plugins/dummy): update version to 0.10.0-rc1
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-18 17:21:48 +02:00
Luca Guerra a9a97aac38 fix(build): fix empty REGISTRY_UPDATE_STATUS
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-18 15:01:48 +02:00
Luca Guerra dc3891f695 update(gcpaudit): bump version to 0.1.3
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-15 18:25:33 +02:00
Luca Guerra 0906cb2ca2 fix(build): add permissions for push step
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-14 15:44:27 +02:00
Luca Guerra d48d801e1e update(build): update to falcoctl 0.6.0
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-14 15:21:27 +02:00
Gerald Combs 3156ed577d fix(plugins/cloudtrail): Generate the correct interval values
Use the correct format for generating start and stop times.

Signed-off-by: Gerald Combs <gerald@zing.org>
2023-09-14 14:24:43 +02:00
Luca Guerra 373756e29f fix(build): do not halt the build on missing rules repository
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-14 14:23:43 +02:00
Luca Guerra 0c7ac73d01 fix(gha): catch registry update errors during OCI updates
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-09-14 10:31:43 +02:00
Sanja Kosier 01209e3e95 feat(plugins/gcp): extract more gcp fields
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-09-12 18:58:36 +02:00
Jason Dellaluce 54e75bf30a fix(plugins/gcpaudit): properly import gcpaudit package
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-09-12 16:56:35 +02:00
Leonardo Grasso 61926b66f4 fix(plugins/gcpaudit) correct module name
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-09-12 15:43:35 +02:00
Andrea Terzolo 7e5a4a7de4 new(dummy): add an example rule for the dummy plugin
Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
2023-09-08 17:25:03 +02:00
Leonardo Grasso 14ae3c9083 build: bump plugin-sdk-go to v0.7.3
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-08-30 18:43:26 +02:00
Jason Dellaluce 61b877e573 fix(ci): solve vcs stamping issue when building during validation
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-30 11:06:25 +02:00
Jason Dellaluce 7590e96535 fix(ci): solve validation workflow issues
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 20:31:22 +02:00
Jason Dellaluce f135dd290c fix(ci): validate in container to satisfy glibc requirements
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 18:54:21 +02:00
Jason Dellaluce 7ee9d9f6d7 fix(ci): solve bash failure when validating released plugin
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 18:12:21 +02:00
Jason Dellaluce 317cdef57b fix(ci): load plugins when comparing rulesets
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 17:59:22 +02:00
Jason Dellaluce 916fb57e1b fix(ci): make rules suggestion checks use built plugins
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 17:59:22 +02:00
Jason Dellaluce c7bc1e9b06 chore(plugins): update readmes
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 17:25:22 +02:00
Jason Dellaluce 440c2349a5 fix(plugins): adopt cgocheck=1 in debug mode
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 17:25:22 +02:00
Jason Dellaluce 1dc527245d fix(ci): solve bash issues
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce 38c559264d fix(ci): bump get-changed-files action
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce fdcae28c54 fix(ci): copy temp rules file during rules checks
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce 1119a0da90 chore: trigger CI validations
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce 8d52dcb975 refactor(ci): use GHA outputs instead of env
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce abb77e6ea6 fix(ci): use locally-built plugin when falcoctl fails during validation
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce 1e04b36d8b refactor(ci): isolate plugin latest version retrieval logic
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce 151f995ceb chore(plugins/gcpaudit): trigger CI validation
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce 46a7d96817 fix(ci): built temp required plugins in release validation workflow
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce bf00275da7 chore(ci): increase package build concurrency
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Jason Dellaluce 5df7fad902 refactor(ci): further modularize validation workflows
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 16:44:22 +02:00
Federico Di Pierro cdbcf9c9d2 chore: bump codeql actions to v2.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2023-08-29 14:49:23 +02:00
Federico Di Pierro 25d74e4293 chore: bumped build/registry go to 1.21.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2023-08-29 14:49:23 +02:00
Federico Di Pierro 742eebc171 chore(build/registry): updated go deps.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2023-08-29 14:49:23 +02:00
Jason Dellaluce c5e0c28582 chore(plugins/gcpaudit): minor improvements
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 10:35:21 +02:00
Jason Dellaluce 30526f311b refactor(plugins/gcpaudit): improve error reporting
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 10:35:21 +02:00
Jason Dellaluce 57e0881b7b refactor(plugins/gcpaudit): shorten receivers var name
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 10:35:21 +02:00
Jason Dellaluce c019a02fb5 refactor(plugins/gcpaudit): polish init config and open params
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-08-29 10:35:21 +02:00
poiana 647ffca95d docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2023-08-10 11:23:42 +02:00
Thomas Labarussias 0f1a1fa5f2 add Issif as approvers for k8saudit-eks plugin
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2023-08-10 11:22:42 +02:00
m.nabokikh dc289d1f2c Add syslogsrv plugin
Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>
2023-08-10 11:19:42 +02:00
Jason Dellaluce f68b75dec1 fix(ci): solve issues with docker
see: https://github.com/moby/buildkit/pull/4043
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-21 09:40:44 +02:00
poiana db20118cac docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2023-07-20 19:04:42 +02:00
Jason Dellaluce 9e06fd77a3 update(plugins/gcpaudit): remove warnings from rules
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-20 13:46:41 +02:00
Jason Dellaluce faa95d21f3 fix(ci): solve CI failures
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-20 13:46:41 +02:00
Jason Dellaluce 779b746f13 chore(plugins/gcpaudit): rename ruleset for consistency
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-20 13:46:41 +02:00
Jason Dellaluce e3a86691f3 update(plugins/gcpaudit): assign ID and add to registry
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-20 13:46:41 +02:00
Jason Dellaluce 5cc2855007 update(plugins/gcp): add ahmedameenaim to approvers
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-20 13:46:41 +02:00
Jason Dellaluce c7d49d7ddb refactor(plugins/gcpaudit): rename gcp plugin to gcpaudit
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-20 13:46:41 +02:00
ahmedameenaim 86d6d04f21 Contributing GCP plugin
Signed-off-by: ahmedameenaim <run_2005_2005@yahoo.com>
2023-07-20 13:46:41 +02:00
Gerald Combs 5bbc3102bd update(plugins/cloudtrail): Make our default interval ""
Make our default interval "" (which fetches all logs) instead of "24h".

Signed-off-by: Gerald Combs <gerald@wireshark.org>
2023-07-17 10:45:22 +02:00
Gerald Combs 431bcf8fc6 update(plugins/cloudtrail): Remove a dependency
Remove our dependency on str2duration. Fix our interval regex.

Signed-off-by: Gerald Combs <gerald@wireshark.org>
2023-07-17 10:45:22 +02:00
Gerald Combs ef52d3cd87 update(plugins/cloudtrail): Fix a time comparison
Time.Compare was added in go 1.20.

Signed-off-by: Gerald Combs <gerald@wireshark.org>
2023-07-17 10:45:22 +02:00
Gerald Combs c02b076d1a update(plugins/cloudtrail): Add an S3Interval option
Add an "S3Interval" option, which limits log downloads to the specified
time interval. Intervals can be a simple "relative time in the past to
now", "an absolute timestamp until now", or a range of those two
formats.

The interval is applied at the far end using the StartAfter parameter
and locally to filter log pathnames. In my informal testing here the
time from capture start to first event is ~2s.

Signed-off-by: Gerald Combs <gerald@wireshark.org>
2023-07-17 10:45:22 +02:00
Gerald Combs 4b1156b6eb update(plugins/cloudtrail): Add dependencies to our Makefile
Signed-off-by: Gerald Combs <gerald@wireshark.org>
2023-07-17 10:45:22 +02:00
Massimiliano Giovagnoli 513968f2c4 chore(.github/workflows/upload-oci-artifacts): remove print
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-07-10 15:50:58 +02:00
Luca Guerra 0fbe6b5f96 remove error for empty matrix
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-07-10 15:50:58 +02:00
Luca Guerra 2db7ad3a02 login to ghcr before signing
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-07-10 15:50:58 +02:00
Massimiliano Giovagnoli 42978359b1 ci: create and publish artifact signatures with cosign
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-07-10 15:50:58 +02:00
Massimiliano Giovagnoli afe4b8adbd refactor(build/registry): add support for context with options
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-07-10 15:50:58 +02:00
Massimiliano Giovagnoli 91dcd05e9e chore(build/registry): add license headers
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-07-10 15:50:58 +02:00
Massimiliano Giovagnoli c8f1c854e3 ci(upload-oci-artifacts): print registry update status
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-07-10 15:50:58 +02:00
Massimiliano Giovagnoli 2c4b8f1a4f refactor(build/registry): delegate presentation to command
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-07-10 15:50:58 +02:00
Massimiliano Giovagnoli 1b0727d715 test(build/registry): add push metadata printing unit tests
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-07-10 15:50:58 +02:00
Massimiliano Giovagnoli 57190f5eca refactor(build/registry/pkg/registry): add push metadata list type
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-07-10 15:50:58 +02:00
Massimiliano Giovagnoli 433f2355c2 new(build/registry): add support for oci artifact metadata
Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
2023-07-10 15:50:58 +02:00
Jason Dellaluce cced3065a4 chore(plugins): trigger sample CI checks
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-05 17:48:32 +02:00
Jason Dellaluce ecb7c7009e chore(ci): point to mainline falcosecurity/rules
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-05 17:48:32 +02:00
Jason Dellaluce 313d5208ff update(ci): add jon for rules version suggestions
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-05 17:48:32 +02:00
Jason Dellaluce 5042e29dec fix(ci): solve validation workflow issues
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-05 17:48:32 +02:00
Jason Dellaluce e979b8950c update(ci): integrate plugins and rules validatin in ci, master, and release workflows
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-05 17:48:32 +02:00
Jason Dellaluce 5da95b5b11 fix(ci): handle concurrency in codeql job
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-05 17:48:32 +02:00
Jason Dellaluce f3d98daf71 new(ci): add reusable worflow for validating plugins and their rules
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-05 17:48:32 +02:00
Jason Dellaluce 9de9c5469f new(ci): add reusable worflow for building the rules validation tool
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-05 17:48:32 +02:00
Jason Dellaluce bb8b28a6ce new(ci): add reusable worflow for getting changed plugins
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-07-05 17:48:32 +02:00
Gerald Combs 9a0ec0d3bf update(plugins/cloudtrail): Increase our default S3 concurrency
Change the default value of S3DownloadConcurrency from 1 to 32. This
improves performance noticeably here.

Signed-off-by: Gerald Combs <gerald@zing.org>
2023-06-29 12:19:00 +02:00
Leonardo Grasso 8eeb48bb0c docs(README.md): add scope and status badges
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-06-06 16:59:40 +02:00
Jason Dellaluce 5aea6027a9 update(ci/release.yaml): setup per-plugin release concurrency
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-06-05 12:14:32 +02:00
Jason Dellaluce c750c22f0d update(ci/release.yaml): avoid cancelling concurrent release jobs
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-06-05 11:49:33 +02:00
Jason Dellaluce 96800110f5 fix(ci/release.yaml): fix release version check on publish
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-06-05 11:36:33 +02:00
Jason Dellaluce 81ffddd1e0 update(plugins): bump to-be-released plugin versions
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-05-25 10:15:10 +02:00
Luca Guerra 9166d80f35 update(plugins): bump plugin-go-sdk to v0.7.1
Signed-off-by: Luca Guerra <luca@guerra.sh>
2023-05-24 23:10:08 +02:00
Sanja Kosier 753a91296c Revert "fix(plugins/github): fix type field extraction"
This reverts commit 409260abd6.

Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-05-24 11:44:06 +02:00
Thomas Labarussias d9f98762e5 add keywords for k8saudit-plugin
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2023-05-23 11:40:34 +02:00
Aldo Lacuku d7f15553e5 fix(registry/index): do not add artifact name to keywords if already present
The artifact name is added to the list of keywords when generating the index.yaml
file. It could happen that the list of keywords in registry.yaml already contains
the artifact name. This fix checks if the artifact name is contained in the keywords,
if not adds it.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-05-22 17:22:32 +02:00
poiana beef76c966 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2023-05-19 12:01:05 +02:00
Daniel Moloney 7b07a4b766 add dnscollector plugin
Signed-off-by: Daniel Moloney <daniel.moloney@sysdig.com>
2023-05-19 10:22:04 +02:00
Jason Dellaluce de7700514d update(plugins): re-bump sdk go to latest dev version
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-05-19 10:14:04 +02:00
Jason Dellaluce 852cf3cb3e chore(.gitignore): ignore dummy_c files
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-05-19 10:14:04 +02:00
Jason Dellaluce bec21471b6 update(plugins): bump sdk go to latest dev version
This just involves the plugins pulled-in by Falco to allow a dev build of
Falco to be successfully merged in mailine. Also acts as an experiment for the
new plugin API major version compliance.

Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-05-18 15:00:04 +02:00
Federico Di Pierro f5fba8fb65 new(ci): ported to use reusable workflows.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2023-05-11 10:55:15 +02:00
Federico Di Pierro 2ef269374b fix(ci): fix arm64 master and release ci push step.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2023-05-10 17:37:11 +02:00
Tim Schwenke 0c6922e3fc feat(plugins/k8saudit): include query params in health check endpoint exceptions
Fixes #241.

Signed-off-by: Tim Schwenke <tim@trallnag.com>
2023-05-10 14:35:10 +02:00
Roberto Scolaro 16df8169af fix(dummy_c): alligned with the dummy go version
Signed-off-by: Roberto Scolaro <roberto.scolaro21@gmail.com>
2023-05-10 14:34:11 +02:00
Roberto Scolaro f23c702552 update: dummy_c with new api
Signed-off-by: Roberto Scolaro <roberto.scolaro21@gmail.com>
2023-05-10 14:34:11 +02:00
Sanja Kosier 044d7d3e5d fix(plugins/github): fix small typo
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-05-10 14:26:10 +02:00
Sanja Kosier 4c220355a7 feat(plugins/github): add github tag to all rules in ruleset file
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-05-10 14:26:10 +02:00
Sanja Kosier 409260abd6 fix(plugins/github): fix type field extraction
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-05-10 14:25:10 +02:00
Federico Di Pierro 8f4323e605 fix(ci): properly use golang:1.18 image, that was the image used before, with the correct glibc version.
Moreover, fixed CI artifacts versioning.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2023-05-10 14:20:10 +02:00
Gerald Combs 9f362901d4 update(plugins/cloudtrail): Avoid duplicate event info
If ct.user and ct.srcip are the same, just add ct.user to the event info
string so that we return

    cloudtrail.amazonaws.com ← GetBucketAcl

instead of

    cloudtrail.amazonaws.com via cloudtrail.amazonaws.com ← GetBucketAcl

Signed-off-by: Gerald Combs <gerald@zing.org>
2023-04-26 09:19:13 +02:00
Roberto Scolaro e716f812fb chore(docs): more clear params
Signed-off-by: Roberto Scolaro <roberto.scolaro21@gmail.com>
2023-04-24 17:12:59 +02:00
cappellinsamuele 0d0c0c6ccf chore(release.md): updated CI documentation.
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-21 16:07:40 +02:00
cappellinsamuele dd938891cc fix(ci): fixed quemu setup
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-21 15:05:39 +02:00
cappellinsamuele 5ea7304d02 fix(ci): added permissions for S3 upload and volume mount on qemu.
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-21 15:05:39 +02:00
cappellinsamuele 3672d6cffd fix(ci): fixed branch name release pipeline.
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-20 18:32:38 +02:00
cappellinsamuele 9321f8a0ab chore(plugins/dummy/pkg/dummy/dummy.go): bump dummy plugin version to test release gha.
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-20 18:30:38 +02:00
cappellinsamuele 98189dde8f fix(ci): fixed semver matching release gha.
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-18 22:32:32 +02:00
cappellinsamuele d249e47232 cleanup(ci): removed update_registry gha
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-18 14:27:30 +02:00
cappellinsamuele def0ed87e2 chore(ci): improved regex semver and cleanup
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-18 14:27:30 +02:00
cappellinsamuele 1bfc0f156a cleanup(ci): simplifications and refactoring
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-18 14:27:30 +02:00
cappellinsamuele 28c14e1398 fix(ci): jobs for x86 and arm64 builds.
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-18 14:27:30 +02:00
cappellinsamuele 873b351474 new(ci): builds for arm64 via qemu.
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-18 14:27:30 +02:00
cappellinsamuele e83f1787bf new(ci): add release and registry pipelines
Signed-off-by: cappellinsamuele <cappellinsamuele@gmail.com>
2023-04-18 14:27:30 +02:00
Aldo Lacuku dc1e87e919 fix(plugins/github): fix ruleset dependencies
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-04-13 10:19:01 +02:00
Aldo Lacuku 3bac29625b fix(plugins/cloudtrail): fix ruleset dependencies
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-04-13 10:19:01 +02:00
Aldo Lacuku 89496553aa fix(plugins/k8saudit): fix dependencies in ruleset
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-04-13 10:19:01 +02:00
Aldo Lacuku 79d6f671d1 update(plugin-versions): bump plugins and rules versions
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-04-12 15:37:10 +02:00
Aldo Lacuku 6f965df721 fix(oci/CI): set arm architecture as "arm64" in manifests files
Use "arm64" as architecture for plugins build for the arm platform instead of "aarch64".

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-04-12 15:23:10 +02:00
Sanja Kosier c15abf98c0 fix(plugins/okta): return nil if field not present
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-04-07 11:23:01 +02:00
Sanja Kosier 1248d0235c fix(plugins/okta): adjust mappings in actor.id and client.zone
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-04-07 10:48:01 +02:00
Sanja Kosier edb96f4233 feature(plugins/okta): add published timestamp field
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-04-06 10:59:57 +02:00
Sanja Kosier b7cf5f27a4 check if list is empty
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-04-05 14:24:55 +02:00
Sanja Kosier 151b1dfab0 use ecr.imagetag instead ecr.image.tag
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-04-05 14:24:55 +02:00
Sanja Kosier 0c07efc25c feature(plugins/cloudtrail): add fields to plugin
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-04-05 14:24:55 +02:00
dependabot[bot] c2b4e9b33e build(deps): bump github.com/docker/docker in /build/registry
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 20.10.18+incompatible to 20.10.24+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v20.10.18...v20.10.24)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-05 08:59:54 +02:00
Mukul Kolpe fef39f8a57 fix: Typo in README.md
Signed-off-by: Mukul Kolpe <mukulkolpe45@gmail.com>
2023-04-04 17:53:53 +02:00
Sanja Kosier 501f3511dc fix(plugins/cloudtrail): if accountId not present in userIdentity, set it to value of recipientAccountId
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-04-04 17:47:53 +02:00
Paolo Polidori 5a2b8ec0b8 fix(plugins/okta): typo on okta.target.{user,group}.alternateid
Signed-off-by: Paolo Polidori <polyp91@gmail.com>
2023-03-30 17:21:33 +02:00
Aldo Lacuku db416af610 update(oci/CI): fetch tags using checkout action
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-03-30 16:33:33 +02:00
Jason Dellaluce 3609efcba2 docs(plugins): generate changelogs
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-03-29 19:43:31 +02:00
Jason Dellaluce 6e35f16b2a update(plugins): bump plugins versions
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-03-29 19:43:31 +02:00
Jason Dellaluce 8ddaea1424 update(plugins): bump plugin-sdk-go to v0.6.2
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-03-29 19:43:31 +02:00
Sanja Kosier 60997d666e feature(plugins/okta): make api token and organization field optional
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-03-28 15:38:30 +02:00
Sanja Kosier e4334df8e2 feature(plugins/okta): add okta.org as available field
Signed-off-by: Sanja Kosier <sanja.kosier@sysdig.com>
2023-03-28 15:32:29 +02:00
dependabot[bot] 904f750ada build(deps): bump golang.org/x/net in /build/registry
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.2.0 to 0.7.0.
- [Release notes](https://github.com/golang/net/releases)
- [Commits](https://github.com/golang/net/compare/v0.2.0...v0.7.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-26 08:32:41 +01:00
dependabot[bot] f1bd3b4e22 build(deps): bump golang.org/x/net in /plugins/github
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.0.0-20220524220425-1d687d428aca to 0.7.0.
- [Release notes](https://github.com/golang/net/releases)
- [Commits](https://github.com/golang/net/commits/v0.7.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-25 21:00:49 +01:00
cpanato 03daaf8e43 update k8s registry domain
Signed-off-by: cpanato <ctadeu@gmail.com>
2023-02-23 14:52:38 +01:00
dependabot[bot] 861547c3f4 build(deps): bump github.com/emicklei/go-restful in /build/registry
Bumps [github.com/emicklei/go-restful](https://github.com/emicklei/go-restful) from 2.9.5+incompatible to 2.16.0+incompatible.
- [Release notes](https://github.com/emicklei/go-restful/releases)
- [Changelog](https://github.com/emicklei/go-restful/blob/v3/CHANGES.md)
- [Commits](https://github.com/emicklei/go-restful/compare/v2.9.5...v2.16.0)

---
updated-dependencies:
- dependency-name: github.com/emicklei/go-restful
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 18:09:31 +01:00
Jason Dellaluce f17b974954 fix(build/registry): add plugin name as a keyword in index
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2023-02-01 12:17:09 +01:00
Aldo Lacuku 254cd1888d chore(registry/oci): bump falcoctl package to v0.3.0-rc2
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-26 17:40:44 +01:00
Leonardo Grasso 428a961de4 docs(release.md): update the release process
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-01-20 12:33:06 +01:00
Leonardo Grasso 8afe420032 build(build/registry): bump falcoctl
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2023-01-20 11:54:06 +01:00
Tim Schwenke f5ebfb2432 chore: Add eks:addon-manager as well
Signed-off-by: Tim Schwenke <tim@trallnag.com>
2023-01-19 11:01:46 +01:00
Tim Schwenke 8ce5b5b3c9 feature(plugins/k8saudit/rules): Add two additional users to eks_allowed_k8s_users
Signed-off-by: Tim Schwenke <tim@trallnag.com>
2023-01-19 11:01:46 +01:00
Aldo Lacuku 3c22642e0d update(plugins/dummy): bump version to 8.0 for testing purpose
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-17 18:00:24 +01:00
Aldo Lacuku 9e623ef48b update(plugins/k8saudit): bump plugin version to v0.5.0
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-17 11:34:23 +01:00
Aldo Lacuku 972cca0b3d update(plugin/github): bump plugin version to v0.5.0
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-17 11:34:23 +01:00
Aldo Lacuku 3c6009b840 update(plugins/cloudtrail): bump plugin version to v0.7.0
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-17 11:34:23 +01:00
Tim Schwenke a2989d11d3 fix(plugin/k8saudit): Add missing comma
Signed-off-by: Tim Schwenke <tim@trallnag.com>
2023-01-16 18:11:22 +01:00
Aldo Lacuku 60341c125b update(ci/registry): temporary disable cron job for registry ci
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-16 12:18:20 +01:00
Tim Schwenke e9a1ef4e5c docs(plugins/k8saudit-eks): document required aws iam permissions
Signed-off-by: Tim Schwenke <tim@trallnag.com>
2023-01-16 10:24:19 +01:00
Aldo Lacuku dc16239560 update(build/registry): do not set the engine_version in semver format in the config file
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-13 17:59:56 +01:00
Aldo Lacuku 9a5d083333 update(rules/k8saudit): bump required_plugins_versions for k8saudit rules
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-10 18:30:45 +01:00
Aldo Lacuku 0b6e12b5b9 update(rules/github): bump required_plugins_versions for github rules
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-10 18:30:45 +01:00
Aldo Lacuku 8984655edb update(rules/cloudtrail): bump required_plugins_versions for cloudtrail rules
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-10 18:30:45 +01:00
Gerald Combs 505a3088d9 update(plugins/cloudtrail): More friendly error messages
Try to construct error messages from smithy.APIError and
smithy.OperationError, which gives us access to human-readable strings.

Signed-off-by: Gerald Combs <gerald@zing.org>
2023-01-05 11:04:20 +01:00
Aldo Lacuku 5e179806c2 update(build/registry): remove cgo code when extracting required api version from plugins
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-05 10:55:21 +01:00
Aldo Lacuku 2d3bb5af0c feat(build/registry): add config layer to artifacts when pushing to registry
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2023-01-04 11:49:15 +01:00
Aldo Lacuku 7cd58efb5c chore(build/registry): introduce common package to avoid import cycles
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-23 15:26:06 +01:00
Aldo Lacuku cf1d70aefe fix(build/registry): enforce to one the number of rulesfiles for a given version
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-21 17:47:02 +01:00
Aldo Lacuku d9078d9549 fix(ci/registry): push tags for artifacts in correct order
The order of the tags affects how the registries' UI shows the info
about an artifact.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-21 14:31:02 +01:00
Aldo Lacuku b4187bd860 update(build/registry): use latest falcoctl module
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-21 12:19:02 +01:00
Aldo Lacuku ae7034bf79 chore(build/registry): move oci and distribution packages to pkg folder
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-20 16:38:12 +01:00
Aldo Lacuku af0398a830 cleanup(build/registry): drop deprecated ioutil package in favor of os package
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-20 16:19:12 +01:00
Aldo Lacuku 633ae6316a refactor(build/registry): move table command from main package to table package
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-20 16:19:12 +01:00
Aldo Lacuku 4d8bdcd5d9 refactor(build/registry): move file table.go to pkg/table/table.go
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-20 16:19:12 +01:00
Aldo Lacuku 5d15643c46 refactor(build/registry): move check logic from main package to check package
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-20 15:41:12 +01:00
Aldo Lacuku 9beae0e205 refactor(build/registry): move index logic from main package to distribution package
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-20 14:56:12 +01:00
Aldo Lacuku b62034966d refactor(ci/build): make LoadRegistryFromFile function reusable across commands
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-20 14:09:12 +01:00
Aldo Lacuku 5508466475 chore(.gitignore): add .idea folder to .gitignore file
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-20 11:47:11 +01:00
Aldo Lacuku a3ac49fc7a chore(ci/cleanup): remove dead code from oci package
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-20 11:47:11 +01:00
Aldo Lacuku b0d797c068 fix(build/registry): do not error when no archives are found in s3 bucket
It could happen that for a given local tag in the git repo there is not a release.
We just log a warning and keep going with the other plugins.

Co-authored-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-16 11:57:23 +01:00
Aldo Lacuku e6fa58588a fix(CI): fetch all tags befor pushing artifact to OCI repo
Co-authored-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-16 11:57:23 +01:00
Aldo Lacuku dd4e46c309 update(build/registry): use as source of truth for plugins and rulesfile registry.yaml
The CI parses the registry.yaml file and for each entry:
  * Plugins: checks if the plugin entry has already been pushed to the
    OCI registry. If found, retrieves the latest version otherwise
    do nothing. It checks if there have been released new versions
    of the plugin by checking the release tags in the local git repo.
    If yes, it searches and downloads the new released versions from
    the s3 bucket and pushes them to the OCI repo.
  * Rules: since the rules doe not have an entry in the registry.yaml
    file it checks if the plugins has a rulesfile url. If yes does the
    same thing as for the plugins but for the rulesfile associated to
    the plugin entry.

Furthermore, it adds the floating tags based on the major and minor number
of the semver for each artifact.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-16 09:55:23 +01:00
Aldo Lacuku f1b4aba5cf refactor(build/registry): move oci logic to a new package named oci
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-12-16 09:55:23 +01:00
poiana b5d6c8d91f docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2022-11-15 10:48:29 +01:00
Alberto Llamas 12563619e9 Register nomad plugin
Signed-off-by: Alberto Llamas <albertollamaso@gmail.com>
2022-11-15 09:32:28 +01:00
Jason Dellaluce 0809a56b54 fix(plugins/k8saudit): prevent panics while shutting down webserver
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-11-11 15:49:11 +01:00
AleksVAnd e306efbe0a Apply suggestions from code review
Co-authored-by: Jason Dellaluce <jasondellaluce@gmail.com>
Signed-off-by: AleksVAnd <58687337+AleksVAnd@users.noreply.github.com>
2022-11-07 19:05:25 +01:00
Aleksandar V. Andonov a818875967 added the sort standard library and fixed the results slice to use an io.Reader{} interface
Signed-off-by: Aleksandar V. Andonov <aleksv.andonov@protonmail.com>
2022-11-07 19:05:25 +01:00
Aleksandar V. Andonov 02ad67064b changes after feedback
Signed-off-by: Aleksandar V. Andonov <aleksv.andonov@protonmail.com>
2022-11-07 19:05:25 +01:00
Aleksandar V. Andonov c339cc2723 fixed the single file logic
Signed-off-by: Aleksandar V. Andonov <aleksv.andonov@protonmail.com>
2022-11-07 19:05:25 +01:00
Aleksandar V. Andonov 337246a367 added custom struct and io.MultiReader
Signed-off-by: Aleksandar V. Andonov <aleksv.andonov@protonmail.com>
2022-11-07 19:05:25 +01:00
Aleksandar V. Andonov cdd782177d pruned unnecessary code
Signed-off-by: Aleksandar V. Andonov <aleksv.andonov@protonmail.com>
2022-11-07 19:05:25 +01:00
Aleksandar V. Andonov a47f56a969 forgot to add the filepath package
Signed-off-by: Aleksandar V. Andonov <aleksv.andonov@protonmail.com>
2022-11-07 19:05:25 +01:00
Aleksandar V. Andonov 5fdfe6b57a trim + construct the filepath and open before passing to the event stream
Signed-off-by: Aleksandar V. Andonov <aleksv.andonov@protonmail.com>
2022-11-07 19:05:25 +01:00
Aleksandar V. Andonov 27982f3142 differentiate between single file and directory
Signed-off-by: Aleksandar V. Andonov <aleksv.andonov@protonmail.com>
2022-11-07 19:05:25 +01:00
Jason Dellaluce 9bd0bdfb8f update(README.md): support dash in plugin name regex
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-11-04 12:03:23 +01:00
Jason Dellaluce 38659d5a99 fix(build/utils): support plugin names with dash and same prefix
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-11-04 12:03:23 +01:00
Jason Dellaluce 36573a79df chore(plugins): generate changelogs
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-11-04 12:03:23 +01:00
Jason Dellaluce 3ae54162b4 fix(build/changelog): support plugin names with same prefix
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-11-04 12:03:23 +01:00
Jason Dellaluce 797e0cf7cc chore(plugins): generate readmes
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-11-04 12:03:23 +01:00
Jason Dellaluce f4dcac294e update(plugins/k8saudit): bump version to 0.4.1 for patched ruleset
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-11-04 12:03:23 +01:00
Jason Dellaluce c83fb72b94 update(plugins/k8saudit): update ruleset to support k8saudit-eks alternative officially
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-11-04 12:03:23 +01:00
Jason Dellaluce fa60639f2d update(plugins/k8saudit-eks): point k8saudit dependency to latest stable tag
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-11-04 12:03:23 +01:00
Loris Degioanni e59c8043d9 refine the GitHub miner detection rule
Signed-off-by: Loris Degioanni <loris@sysdig.com>
2022-10-21 22:53:59 +02:00
Loris Degioanni fad7e88fab detect more miners + miner rule simplification
Signed-off-by: Loris Degioanni <loris@sysdig.com>
2022-10-21 17:31:18 +02:00
Loris Degioanni e5b0d282e3 initial implementation of miners in github actions
Signed-off-by: Loris Degioanni <loris@sysdig.com>
2022-10-21 17:31:18 +02:00
poiana 7e3173053b docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2022-10-21 16:16:18 +02:00
Luca Guerra c349be6e84 update(registry): update registry.yaml
Signed-off-by: Luca Guerra <luca@guerra.sh>
2022-10-18 19:26:37 +02:00
Aldo Lacuku bfc808d4b6 fix(oci-registry): correctly set repo value for plugin artifacts
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-18 19:16:36 +02:00
poiana c8b21d5149 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2022-10-18 19:12:37 +02:00
Lorenzo Susini 42d27f06cb chore: little modification to dummy_c description to test prow CI
Signed-off-by: Lorenzo Susini <susinilorenzo1@gmail.com>
2022-10-18 19:01:37 +02:00
Aldo Lacuku 6592a40033 fix(workflows): correctly set the cron job timer
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-18 15:57:02 +02:00
Aldo Lacuku d6e122b0b4 update(ci): add cron time to test the ci
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-18 15:04:02 +02:00
Aldo Lacuku 4d78bd18bc fix(registry): ignore reserved plugins in registry.yaml file
Co-authored-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-18 15:04:02 +02:00
Aldo Lacuku 3fd743be32 update(registry): change namespaces for plugin and ruleset artifacts
Co-authored-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-18 15:04:02 +02:00
Lorenzo Susini 851a8fa8d0 update: temporarily remove cron job when uploading OCI artifacts
Signed-off-by: Lorenzo Susini <susinilorenzo1@gmail.com>
2022-10-18 12:44:02 +02:00
Aldo Lacuku d0191ae2fe fix(ci): fix registry username to reflect the one of the organization
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-18 11:46:01 +02:00
Aldo Lacuku 1f87174dfb chore(ci): cleanup github actions workflow
Co-authored-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-18 11:28:01 +02:00
Lorenzo Susini d62fcaef89 update(ci): update github action with latest changes
Co-authored-by: Aldo Lacuku <aldo@lacuku.eu>
Signed-off-by: Lorenzo Susini <susinilorenzo1@gmail.com>
2022-10-18 11:28:01 +02:00
Aldo Lacuku 900eeb7538 feature(build/registry): check if oci artifacts exist while updating index.yaml
Co-authored-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-18 11:28:01 +02:00
Aldo Lacuku a797342ce7 refactor(oci-tool): move oci logic under the registry binary
Co-authored-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-18 11:28:01 +02:00
Jason Dellaluce 87bcb982b6 update(plugins): generate changelog
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-17 11:28:13 +02:00
Jason Dellaluce 73fec1eb27 update(changelog-gen.sh): discard -rc tags
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-17 11:28:13 +02:00
Aldo Lacuku 8f1a599ad3 fix(oci-tool/output): porperly populate the map entries when reading from file
Co-authored-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-13 12:30:17 +02:00
Aldo Lacuku f1279a077b new(build/oci): save to file the artifacts present in the OCI registry
The output file containes all the artifacts(rulefiles and plugins) that
are present in the remote registry. Usefuf for external tools that wants
to keep track of the packages.

Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-13 10:38:17 +02:00
Aldo Lacuku 379e7c89dc chore(build/oci): add .gitignore for the oci tool
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-13 10:38:17 +02:00
Aldo Lacuku 14c82d088c new(oci): add missing pieces for the oci tool
Co-authored-by: Lorenzo Susini <susinilorenzo1@gmail.com>
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-10-13 10:38:17 +02:00
Lorenzo Susini 7cec719d03 new(oci-CI): introducing oci tool
Signed-off-by: Lorenzo Susini <susinilorenzo1@gmail.com>
2022-10-13 10:38:17 +02:00
Jason Dellaluce 4ea1faf151 update(plugins/okta): update readme
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-12 20:39:16 +02:00
Jason Dellaluce 543a65791f update(plugins/okta): bump plugin version to v0.5.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-12 20:39:16 +02:00
Jason Dellaluce f4315ffaa6 update(plugins/k8saudit): bump plugin version to v0.4.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-12 20:39:16 +02:00
Jason Dellaluce cb30978528 update(plugins/json): bump plugin version to v0.6.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-12 20:39:16 +02:00
Jason Dellaluce 96547228a9 update(plugins/github): bump plugin version to v0.4.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-12 20:39:16 +02:00
Jason Dellaluce 2e161d7a0c update(plugins/dummy): bump plugin version to v0.7.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-12 20:39:16 +02:00
Jason Dellaluce 0571948fef update(plugins/cloudtrail): bump plugin version to v0.6.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-12 20:39:16 +02:00
Jason Dellaluce 028b3bd438 update(plugins): bump plugin-sdk-go to v0.6.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-12 20:39:16 +02:00
Jason Dellaluce 7305d23b60 update(build): bump plugin-sdk-go to v0.6.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-10-12 20:39:16 +02:00
Thomas Labarussias 88d4e51fda update lib for cloudwatch
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-10-12 10:17:21 +02:00
Gerald Combs 1db4264964 update(plugins/cloudtrail): Add a region setting.
Add a "region" configuration option which lets the user specify an AWS
region.

The jsonschema module was truncating descriptions with commas, so remove
them for now.

Signed-off-by: Gerald Combs <gerald@zing.org>
2022-10-04 22:51:18 +02:00
Thomas Labarussias de127d261d use the dedicated function for iteration over pages
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-10-04 22:34:18 +02:00
Thomas Labarussias 388aa72bf1 update gitignore to follow new name
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-09-27 10:28:59 +02:00
Thomas Labarussias 2929152fc2 change to dash for k8saudit-eks name
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-09-27 10:28:59 +02:00
Thomas Labarussias 39a2db9032 remove renamed folders
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-09-27 10:28:59 +02:00
Thomas Labarussias f3d2aa6fe8 update registry.yaml + respect naming convention
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-09-27 10:28:59 +02:00
Thomas Labarussias de0f7f2421 reserve the ID for k8saudit-eks
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-09-27 10:28:59 +02:00
Thomas Labarussias ff8045286a remove /rules folder
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-09-27 10:28:59 +02:00
Thomas Labarussias da3de1533d update github.com/falcosecurity/plugins/plugins/k8saudit dep to 0.3.0
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-09-27 10:28:59 +02:00
Issif d6f938a380 creation of a plugin for k8saudit logs of EKS clusters from Cloudwatch Logs
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-09-27 10:28:59 +02:00
Leonardo Grasso e47f23ba62 fix(okta): correct version (release candidate)
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-26 18:36:56 +02:00
Thomas Labarussias 7aa76d0278 add new fields with count of failed and denied MFA requests
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-09-26 15:29:55 +02:00
poiana 7b86e9d904 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2022-09-22 15:30:37 +02:00
Jason Dellaluce b9866951a3 refactor(plugins/cloudtrail): isolate AWS sdk config code logic
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-22 15:06:37 +02:00
Jason Dellaluce fa8e9571e5 chore(plugins/cloudtrail): use oop method declarations
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-22 15:06:37 +02:00
Jason Dellaluce 4df7a0583d update(plugins/cloudtrail): use custom sdk config files and profiles
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-22 15:06:37 +02:00
Jason Dellaluce 3032fd1fb8 update(plugins/cloudtrail): add aws client config overrides
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-22 15:06:37 +02:00
Jason Dellaluce 0306830ec8 update(plugins/cloudtraill): remove aws sdk v1 dependency
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-22 15:06:37 +02:00
Jason Dellaluce 8fc454f202 chore(registry.yaml): trigger the CI
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-22 12:23:57 +02:00
Aldo Lacuku c0729b4a00 chore(registry.yaml): triggering the CI
Signed-off-by: Aldo Lacuku <aldo@lacuku.eu>
2022-09-22 09:31:38 +02:00
Jason Dellaluce bfbd0ee697 chore(registry.yaml): triggering the CI
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-21 20:19:36 +02:00
Leonardo Grasso 7fb07f0503 build: split name and source regex
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-21 18:20:36 +02:00
Leonardo Grasso 2317cba3e2 docs(README.md): update metadata constraints
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-21 18:20:36 +02:00
Jason Dellaluce 56ec19fc5e chore(registry.yaml): dummy in upper case
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-21 16:37:35 +02:00
Leonardo Grasso 3f0233e442 chore(registry.yaml): dummy change just to trigger the CI
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-21 14:09:35 +02:00
poiana 7a22c28221 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2022-09-21 14:05:35 +02:00
Leonardo Grasso cfee5bebc0 build(Makefile): add `update-index` target
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-21 12:33:34 +02:00
Leonardo Grasso 62275cd202 build: cmd to update a distribution index
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-21 12:33:34 +02:00
Leonardo Grasso 9fde818b11 update: extending registry.yaml with new metadata
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-21 12:33:34 +02:00
Leonardo Grasso 79e01784d2 update(build/registry): extend Plugin type
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-21 12:33:34 +02:00
Leonardo Grasso da5b4373d9 build: do not include README.md in packages
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-20 19:30:31 +02:00
Leonardo Grasso 256c669e33 docs(k8saudit): update README.md
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-20 19:16:30 +02:00
Hi120ki 41cd0f03c3 add containerd.sock to sensitive_vol_mount
Signed-off-by: Hi120ki <12624257+hi120ki@users.noreply.github.com>
2022-09-15 10:30:29 +02:00
Hi120ki 8efcec33df add ka.sourceips
Signed-off-by: Hi120ki <12624257+hi120ki@users.noreply.github.com>
2022-09-13 12:26:20 +02:00
Jason Dellaluce 6c38f20df2 update(plugins/json): bumo plugin version to 0.6.0-rc1
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-07 11:45:03 +02:00
Jason Dellaluce 3a6b9ec447 update(plugins/cloudtrail): bumo plugin version to 0.6.0-rc1
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-07 11:45:03 +02:00
Jason Dellaluce 3ff5e94c46 update(plugins/k8saudit): bumo plugin version to 0.4.0-rc1
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-09-07 11:45:03 +02:00
Leonardo Grasso a0fd4d57ee chore: bump plugin-sdk-go v0.6.0-rc2 (plugin API v2)
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-09-07 10:33:03 +02:00
Jason Dellaluce 9f3a5e0e39 chore(plugins/github): update readme
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-31 10:30:42 +02:00
Frank Jogeleit 84f30619bc feature(plugins/k8saudit/rules): Add ka.target.resource to each rule as default output
Signed-off-by: Frank Jogeleit <frank.jogeleit@lovoo.com>
2022-08-26 12:32:18 +02:00
Issif c23dc2a465 add shared libs for AWS Session + Cloudwatch
Signed-off-by: Thomas Labarussias <issif+github@gadz.org>
2022-08-24 13:57:09 +02:00
Adnan Kobir a0050c3441 fix: only init s3 once
Signed-off-by: Adnan Kobir <adnan.kobir@gmail.com>
2022-08-23 19:05:07 +02:00
adnankobir 9b0f15f13d feat: parse SNS originating from S3 (#1)
* feat: parse SNS originating from S3

* refactor: use s3Event struct

* chore: tidy

* docs: add useS3SNS details

Signed-off-by: Adnan Kobir <adnan.kobir@gmail.com>
2022-08-23 19:05:07 +02:00
Jason Dellaluce 4b1872c821 update(plugins): generate rea
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-22 13:00:59 +02:00
Jason Dellaluce 2d807a228f update(build/readme): add field arg info in tables
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-22 13:00:59 +02:00
Jason Dellaluce 6c9fd11571 update(plugins): generate readmes
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-22 13:00:59 +02:00
Jason Dellaluce 550b3c378e update(plugins): add readme entry in makefiles
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-22 13:00:59 +02:00
Jason Dellaluce a2bebef6c5 update(makefile): edit readme everytime after building plugins
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-22 13:00:59 +02:00
Jason Dellaluce d142131538 update(plugins): add generator tags in readmes
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-22 13:00:59 +02:00
Jason Dellaluce b0d25aa312 new(build): add a tool for plugin readme generation
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-22 13:00:59 +02:00
Gerald Combs 453d1ae479 update(plugins): Add titles and default values.
Add title and default values to the config schema properties for each
plugin.

Signed-off-by: Gerald Combs <gerald@zing.org>
2022-08-22 12:57:00 +02:00
Leonardo Grasso a3734f1527 docs(best-practices): update URL
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-08-19 18:55:49 +02:00
Jason Dellaluce 97329e4b1c update(makefile): support parallel makes
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-12 10:21:26 +02:00
Jason Dellaluce 7c1d7ce462 update(plugins/dummy_c): fix target dependencies
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-12 10:21:26 +02:00
Jason Dellaluce f6c48e3e32 update(plugins/okta): fix makefile cleanup
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-12 10:21:26 +02:00
Jason Dellaluce f90c4f68a7 update(plugins/k8saudit): fix makefile cleanup
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-12 10:21:26 +02:00
Jason Dellaluce 51f7376ef7 update(plugins/json): fix makefile cleanup
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-12 10:21:26 +02:00
Jason Dellaluce 0b7468a0dd update(plugins/github): fix makefile cleanup
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-12 10:21:26 +02:00
Jason Dellaluce 33a7768f7f update(plugins/dummy_c): fix makefile cleanup
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-12 10:21:26 +02:00
Jason Dellaluce fb20ebef0c update(plugins/dummy): fix makefile cleanup
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-12 10:21:26 +02:00
Jason Dellaluce fe2defae1b update(plugins/cloudtrail): fix makefile cleanup
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-08-12 10:21:26 +02:00
Leonardo Grasso fd296e843f update(OWNERS): move inactive maintainers to emeritus
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-07-18 16:51:02 +02:00
Jason Dellaluce 1bf3df4c5c update(plugin/github): bump version to 0.3.1
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-07-18 14:19:00 +02:00
Jason Dellaluce cf809fa98d fix(plugins/github): correctly parse git diffs
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-07-18 14:19:00 +02:00
Jason Dellaluce 4c84fdfb7a update(plugins/dummy): update changelog
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-28 17:03:04 +02:00
Jason Dellaluce 3092c791d5 docs(plugins): generate changelogs
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-28 16:55:04 +02:00
Jason Dellaluce b1706e8a46 update(build/changelog): improve decoration of changelog lines
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-28 16:55:04 +02:00
Jason Dellaluce 7719df35bc update(makefile): add make option to generate changelogs
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-28 16:55:04 +02:00
Jason Dellaluce 2deef26de8 new(Makefile): add script for generating whole changelog for plugins
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-28 16:55:04 +02:00
Jason Dellaluce 5baab92bcd new(build/changelog): add tool to generate plugin changelogs from git history
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-28 16:55:04 +02:00
Jason Dellaluce ae6e3edb46 docs(plugins/dummy): update readme according to new plugin version
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-28 16:50:04 +02:00
Jason Dellaluce 95633975d1 update(plugins/dummy): bump plugin version to 0.6.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-28 16:50:04 +02:00
Jason Dellaluce aa9a20d504 refactor(plugins/dummy): modify plugin open parameters for modern SDK approaches
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-28 16:50:04 +02:00
Leonardo Grasso 60f151d934 update(plugins/okta): bump version to 0.4.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-24 10:09:25 +02:00
Leonardo Grasso df79bbf95e update(plugins/k8saudit): bump version to 0.3.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-24 10:09:25 +02:00
Leonardo Grasso d4f1a4c4ab update(plugins/json): bump version to 0.5.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-24 10:09:25 +02:00
Leonardo Grasso c2412cf59b update(plugins/github): bump version to 0.3.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-24 10:09:25 +02:00
Leonardo Grasso 30f4fac89e update(plugins/dummy): bump version to 0.5.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-24 10:09:25 +02:00
Leonardo Grasso f32982d6d6 update(plugins/cloudtrail): bump version to 0.5.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-24 10:09:25 +02:00
Leonardo Grasso 2606677ab3 update(plugins): upgrade go SDK to v0.5.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-24 10:09:25 +02:00
Jason Dellaluce 1bce4c1bb5 fix(plugins): use right object for init schema reflection
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-24 09:57:25 +02:00
Jason Dellaluce 9026424465 update(plugins/json): add optional init configuration
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-24 09:57:25 +02:00
Jason Dellaluce fe991d032b update(plugins/json/go.mod): add jsonschema library dependency
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-24 09:57:25 +02:00
Jason Dellaluce 37ca72ba6a refactor(plugins/k8saudit): implement k8saudit event source using prebuilts from SDK Go
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-15 15:31:33 +02:00
Jason Dellaluce 52e46f7e87 fix(build/registry): fix makefile clear
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-10 16:46:43 +02:00
Jason Dellaluce 8647f94764 update(build/repository): add Falco Authors copyright notice
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-10 16:46:43 +02:00
Jason Dellaluce 63b0de683f update(build/registry): document and refactor code, add documentation and convenience methods
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-10 16:46:43 +02:00
Jason Dellaluce 2bf22eb9fc update(build/registry): bump dependencies versions
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-10 16:46:43 +02:00
Jason Dellaluce 83fa672858 refactor(build/registry): turn registry tool into a package
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-10 16:46:43 +02:00
Jason Dellaluce 6c920da510 update(plugins/k8saudit): bump plugin version to 0.2.1
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-07 14:17:54 +02:00
Jason Dellaluce a9b4988d9e fix(plugins/k8saudit): return non-nil error from NextBatch with closed channel
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-07 14:17:54 +02:00
Luca Guerra a497e7305a fix(cloudtrail): update README with uncompressed file support on S3
Signed-off-by: Luca Guerra <luca@guerra.sh>
2022-06-01 12:44:39 +02:00
Luca Guerra a2023d4fe7 fix(cloudtrail): allow plain text logs in S3
Signed-off-by: Luca Guerra <luca@guerra.sh>
2022-06-01 12:44:39 +02:00
Leonardo Grasso a30cfaaa84 update(plugins/k8saudit): adapt plugin for plugin-sdk-go v0.4.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-01 12:33:38 +02:00
Jason Dellaluce ad47c2ac0e chore(plugins): use code md notation consistently in readmes
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-01 12:30:39 +02:00
Jason Dellaluce 12443f3668 chore(plugins/json): fix typo in readme
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-01 12:30:39 +02:00
Jason Dellaluce 4257d88d66 update(plugins/k8saudit): add new config entries to readme
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-01 12:30:39 +02:00
lucas.teixeira 527cac0a3b Update cloudtrail plugin doc
Signed-off-by: lucas.teixeira <lucas.teixeira@ifood.com.br>
2022-06-01 12:22:39 +02:00
Leonardo Grasso 938478845c update(plugins/k8saudit): adapt plugin for plugin-sdk-go v0.4.0
Note that this plugin was already adapter for plugin-sdk-go v0.4.0, but not yet released.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-01 11:59:38 +02:00
Leonardo Grasso 66955899e5 update(plugins/json): adapt plugin for plugin-sdk-go v0.4.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-01 11:59:38 +02:00
Leonardo Grasso d9c1f08453 update(plugins/github): adapt plugin for plugin-sdk-go v0.4.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-01 11:59:38 +02:00
Leonardo Grasso 41696f9f91 update(plugins/dummy): adapt plugin for plugin-sdk-go v0.4.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-01 11:59:38 +02:00
Leonardo Grasso e05d16ea26 update(plugins/cloudtrail): adapt plugin for plugin-sdk-go v0.4.0
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-06-01 11:59:38 +02:00
Jason Dellaluce 43b7eb6a08 fix(plugins/k8saudit): drop events larger than max evt size
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-06-01 10:16:39 +02:00
Jason Dellaluce b4b22f13db refactor(plugins/k8saudit): make evt size and batch size configurable with official terminology
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-31 16:26:02 +02:00
Jason Dellaluce 91cc17b436 refactor(plugins/k8saudit): bump sdk go version
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-31 15:19:02 +02:00
Jason Dellaluce 5fc76555fd chore(plugins/k8saudit): update maxEventBytes default value
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-31 15:19:02 +02:00
Jason Dellaluce eb3e49d91e chore(plugins/k8saudit): use logging for bad requests
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-31 15:19:02 +02:00
Jason Dellaluce 972ac410b3 fix(plugins/k8saudit): correctly parse and respond for http requests
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-31 15:19:02 +02:00
Jason Dellaluce bf0cce1057 fix(plugins/k8saudit): make corrupted jsons non-blocking
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-31 15:19:02 +02:00
Jason Dellaluce fc2a956dbb new(plugins/k8saudit): add internal plugin logger
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-31 15:19:02 +02:00
Jason Dellaluce 177b23289c chore(plugins/k8saudit): export plugin config field
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-31 15:19:02 +02:00
Jason Dellaluce 122bed3977 new(plugins/k8saudit): make async extraction part of init config
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-31 15:19:02 +02:00
Jason Dellaluce 71f653f35e chore(plugins/github): address review suggestions
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
Co-authored-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce 32cccff120 chore(plugins/github): use log instead of fmt prints
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce dbf7459f93 chore(plugins/github): reduce method visibility
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce a1ef331c63 chore(plugins/github): solve warnings
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce daaa42615b chore(plugins/gihub): remove non-meaningful logging
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce c79c890411 refactor(plugin/github): adhere to package design and init plugin main file
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce 79336d4d8b chore(plugins/github): insert copyright headers
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce 57caa6c48e update(plugins/github): bump dependencies version
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce 678787f804 update(plugins/github/rules): add version dependencies in ruleset
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce 982ac09b34 refactor(plugins/github): create package directory
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 12:57:27 +02:00
Jason Dellaluce 52366d25d1 update(plugins): bump version requirements in plugin rulesets
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 11:17:27 +02:00
Jason Dellaluce 535eb1e61a update(plugins): bump version of cloudtrail, json, okta, and dummy
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-26 11:17:27 +02:00
poiana 61c0346b26 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2022-05-25 16:00:31 +02:00
Leonardo Grasso 86b4bc33bb chore(plugins/github): apply suggestions from review
Co-authored-by: Loris Degioanni <loris@sysdig.com>
Co-authored-by: Jason Dellaluce <jasondellaluce@gmail.com>
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-25 15:54:31 +02:00
Loris Degioanni 064c25a792 registry entry for the github plugin
Signed-off-by: Loris Degioanni <loris@sysdig.com>
2022-05-25 15:54:31 +02:00
Loris Degioanni 604cfd9744 github plugin
Signed-off-by: Loris Degioanni <loris@sysdig.com>
2022-05-25 15:54:31 +02:00
Leonardo Grasso fe39e5d0c7 docs(best-practices): rephrase source plugins part
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-25 11:14:45 +02:00
Leonardo Grasso d01e1092f6 docs(best-practices): directory structure
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-25 11:14:45 +02:00
Jason Dellaluce 12a4c246f0 refactor(plugins/k8saudit): properly handle open params prefix
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
Co-authored-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-25 11:10:45 +02:00
Jason Dellaluce 921535fd63 fix(plugins/k8saudit): fix webserver host resolution
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-25 11:10:45 +02:00
Jason Dellaluce ea894aa39d docs(plugins/k8saudit): add readme
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 17:42:17 +02:00
Jason Dellaluce 2e136d54aa refactor(plugins/cloudtrail): create package directory
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Jason Dellaluce 1084e5284a fix(plugins/k8saudit): fix extraction of ka.req.pod.volumes.volume_type
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Jason Dellaluce b0a717784c update(plugins/k8saudit): change default config values
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Jason Dellaluce a55436f336 update(plugins/k8saudit): open filepath by default if prefix is unknown
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Jason Dellaluce 7386f82550 refactor(plugins/k8saudit): create package directory
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Jason Dellaluce 6211a1d245 update(plugins/okta/rules): specify required engine and plugin versions
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Jason Dellaluce 42dc4b3c12 refactor(plugins/okta): create package directory
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Jason Dellaluce 2f95c6bfb3 refactor(plugins/json): create package directory
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Jason Dellaluce ab3491f001 refactor(plugins/dummy): create package directory
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Jason Dellaluce f2ed025867 update(plugins): bump Go plugins deps and GO SDK to v0.3.0
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-24 14:28:17 +02:00
Leonardo Grasso 680536f0bc chore(Makefile): remove leftover
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 14:29:52 +02:00
Leonardo Grasso d13a1bfa5c chore(okta/rules): add copyright
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Leonardo Grasso bf61ca87ec chore(k8saudit): move ruleset to plugin folder
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Leonardo Grasso be90f35359 chore(okta): move ruleset to plugin folder
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Leonardo Grasso 3446a68390 chore(cloudtrail): move ruleset to plugin folder
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Sebastien Le Digabel 7110181204 rule(Anonymous Request Allowed): exclude {/livez, /readyz}
Fixes #1794.

/livez and /readyz don't require authentication and can generate a lot
of noise if the cluster is checked by an anonymous external
system.

Some k8s systems have those endpoints required to be anonymous, as per this
[link to an OpenShift
setup](http://static.open-scap.org/ssg-guides/ssg-ocp4-guide-cis.html#xccdf_org.ssgproject.content_rule_api_server_anonymous_auth).

Signed-off-by: Sebastien Le Digabel <sledigabel@gmail.com>
2022-05-09 12:59:51 +02:00
Jason Dellaluce 6bd0e7cb41 refactor: add k8saudit plugin and adapt config, tests, and rulesets
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-09 12:59:51 +02:00
Furkan 9747b0aa7e update(rules): k8s: secret get detection
Signed-off-by: Furkan <furkan.turkal@trendyol.com>
2022-05-09 12:59:51 +02:00
Mateusz Gozdek a8eaedaed1 Fix more typos
Signed-off-by: Mateusz Gozdek <mgozdek@microsoft.com>
2022-05-09 12:59:51 +02:00
Clemence Saussez 2401d3c43c rules(allowed_kube_namespace_image_list): add container threat detection image
Signed-off-by: Clemence Saussez <clemence@zen.ly>
2022-05-09 12:59:51 +02:00
Stefano e65e8c12e4 Fixed ouput Rules K8s Serviceaccount Created/Deleted
Signed-off-by: darryk10 <stefano.chierici@sysdig.com>
Co-authored-by: AlbertoPellitteri <alberto.pellitteri@sysdig.com>
2022-05-09 12:59:51 +02:00
Lorenzo Susini 5af2b92240 new(rules/k8s_audit): add rules to detect pods sharing host pid and IPC namespaces
Signed-off-by: Lorenzo Susini <susinilorenzo1@gmail.com>
2022-05-09 12:59:51 +02:00
Stefano 1c008a9e0a Fix spaces
Signed-off-by: darryk10 <stefano.chierici@sysdig.com>
2022-05-09 12:59:51 +02:00
Stefano b6831a4cea Added eks_allowed_k8s_users list to whitelist EKS users
Signed-off-by: darryk10 <stefano.chierici@sysdig.com>
Co-authored-by: Alberto Pellitteri <alberto.pellitteri@sysdig.com>
2022-05-09 12:59:51 +02:00
Stefano abe599a081 Disabled by default noisy rules
Signed-off-by: darryk10 <stefano.chierici@sysdig.com>
2022-05-09 12:59:51 +02:00
schie b998883f76 Update rules/okta_rules.yaml
Signed-off-by: darryk10 <stefano.chierici@sysdig.com>
Co-authored-by: Thomas Labarussias <issif+github@gadz.org>
2022-05-09 12:59:51 +02:00
schie 478beb26d0 Update rules/okta_rules.yaml
Signed-off-by: darryk10 <stefano.chierici@sysdig.com>
Co-authored-by: Thomas Labarussias <issif+github@gadz.org>
2022-05-09 12:59:51 +02:00
Stefano f6cd26e3cc Added okta_rules.yaml
Signed-off-by: darryk10<stefano.chierici@sysdig.com>
2022-05-09 12:59:51 +02:00
Josh Soref 5a048e7145 spelling: expand
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-05-09 12:59:51 +02:00
Josh Soref dff9b471f5 spelling: discretion
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-05-09 12:59:51 +02:00
pablopez 3562a4185b rule_output(Delete Bucket Public Access Block) typo
Signed-off-by: pablopez <pablo.lopezzaldivar@sysdig.com>
2022-05-09 12:59:51 +02:00
Leonardo Grasso 6bf8978697 update(rules): updated aws cloudtrail rule bumping plugins version
Co-authored-by: Jason Dellaluce <jasondellaluce@gmail.com>
Co-authored-by: Federico Di Pierro <nierro92@gmail.com>
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Federico Di Pierro 14fa88303f rule: updated aws_cloudtrail_rules with correct copyright year and required plugin versions.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
2022-05-09 12:59:51 +02:00
Leonardo Di Donato b5734e8f83 update(rules): move falco_hostnetwork_images list to k8s audit rules
Co-authored-by: Leonardo Grasso <me@leonardograsso.com>
Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 0996438602 Add initial set of Cloudtrail rules
These rules can be used when combined with the cloudtrail plugin.

They're installed to /etc/falco like the other rules files.

Co-authored-by: Leonardo Grasso <me@leonardograsso.com>
Co-authored-by: Loris Degioanni <loris@sysdig.com>
Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Sverre Boschman 8d46497aca add known k8s service accounts
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2022-05-09 12:59:51 +02:00
Sverre Boschman 07892dfec9 reformat known_sa_list
Signed-off-by: Sverre Boschman <1142569+sboschman@users.noreply.github.com>
2022-05-09 12:59:51 +02:00
Sverre Boschman 1bc07ee467 add known k8s service accounts
Signed-off-by: Sverre Boschman
2022-05-09 12:59:51 +02:00
Lorenzo Fontana 1ad73174d2 update(rules): revert exceptions in default ruleset for k8s audit
Signed-off-by: Lorenzo Fontana <lo@linux.com>
2022-05-09 12:59:51 +02:00
Lorenzo Fontana 2476d52d10 rules(list user_known_sa_list): revert as an empty list for user overwrite
rules(list known_sa_list): list of known sa moved here from user_known_sa_list

Signed-off-by: Lorenzo Fontana <lo@linux.com>
2022-05-09 12:59:51 +02:00
ismail yenigul ba8416a4b1 remove commercial images to unblock PR
add endpoint-controller to user_known_sa_list
related event:
    {
        "output": "05:19:25.557989888: Warning Service account created
in kube namespace (user=system:kube-controller-manager
serviceaccount=endpoint-controller ns=kube-system)",
        "priority": "Warning",
        "rule": "Service Account Created in Kube Namespace",
        "time": "2021-02-16T05:19:25.557989888Z",
        "output_fields": {
            "jevt.time": "05:19:25.557989888",
            "ka.target.name": "endpoint-controller",
            "ka.target.namespace": "kube-system",
            "ka.user.name": "system:kube-controller-manager"
        }
    }

Signed-off-by: ismail yenigul <ismailyenigul@gmail.com>
2022-05-09 12:59:51 +02:00
ismail yenigul f1dc366815 rebase to master
update user_known_sa_list with k8s internal sa in kube-system

{
        "output": "10:27:56.539783936: Warning Service account created
in kube namespace (user=system:kube-controller-manager
serviceaccount=replicaset-controller ns=kube-system)",
        "priority": "Warning",
        "rule": "Service Account Created in Kube Namespace",
        "time": "2021-02-15T10:27:56.539783936Z",
        "output_fields": {
            "jevt.time": "10:27:56.539783936",
            "ka.target.name": "replicaset-controller",
            "ka.target.namespace": "kube-system",
            "ka.user.name": "system:kube-controller-manager"
        }
    }

{
        "output": "17:06:18.267429888: Warning Service account created
in kube namespace (user=system:kube-controller-manager
serviceaccount=deployment-controller ns=kube-system)",
        "priority": "Warning",
        "rule": "Service Account Created in Kube Namespace",
        "time": "2021-02-15T17:06:18.267429888Z",
        "output_fields": {
            "jevt.time": "17:06:18.267429888",
            "ka.target.name": "deployment-controller",
            "ka.target.namespace": "kube-system",
            "ka.user.name": "system:kube-controller-manager"
        }
    }

and more..

Signed-off-by: ismail yenigul <ismailyenigul@gmail.com>
2022-05-09 12:59:51 +02:00
ismail yenigul 6897d90d08 add eks:node-manager to allowed_k8s_users list
eks:node-manager  is an Amazon EKS internal service role that performs specific operations for managed node groups and Fargate.
Reference: https://github.com/awsdocs/amazon-eks-user-guide/blob/master/doc_source/logging-monitoring.md
Related falco log

```
{"output":"10:56:31.181308928: Warning K8s Operation performed by user not in allowed list of users
 (user=eks:node-manager target=aws-auth/configmaps verb=get uri=/api/v1/namespaces/kube-system/configmaps/aws-auth?timeout=19s resp=200)","priority":"Warning","rule":"Disallowed K8s User","time":"2021-01-26T10:56:31.181308928Z", "output_fields":
{"jevt.time":"10:56:31.181308928","ka.response.code":"200","ka.target.name":"aws-auth","ka.target.resource":"configmaps","ka.uri":"/api/v1/namespaces/kube-system/configmaps/aws-auth?timeout=19s","ka.user.name":"eks:node-manager","ka.verb":"get"}}
```

Signed-off-by: ismailyenigul <ismailyenigul@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm c1841ab5fe Make the req. engine version 8 for k8s_audit rules
These define exceptions too.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm e71f3e658d Add exceptions fields/comps/values to rules files
Take advantage of the changes to support exceptions and refactor rules
to use them whenever feasible:

- Define exceptions for every rule. In cases where no practical
  exception exists e.g. "K8s <obj> Created/Deleted", define an empty
  exception property just to avoid warnings when loading rules.
- Go through all rules and convert macros-used-as-exceptions that
  matched against 2-3 filter fields into exceptions. In most cases,
  switching from equality (e.g proc.name=nginx) to in (e.g. proc.name
  in (nginx)) allowed for better groupings into a smaller set of
  exception items.
- In cases where the exception had complex combinations of fields, keep
  the macro as is.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm c364ce5303 rule(Full K8s... Access): fix users list
Use the right list name in the rule Full K8s Administrative Access--it
was using the nonexistent list admin_k8s_users, so it was just using the
string "admin_k8s_users".

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Lorenzo Fontana 7724251166 macro(allowed_k8s_users): exclude cloud-controller-manage to avoid false positives on k3s
Signed-off-by: Lorenzo Fontana <fontanalorenz@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 4fe66df2a4 Rule(Disallowed K8s User): quote colons
It turns out if you read this rules file with falco versions 0.24.0 and
earlier, it can't parse the bare string containing colons:

(Ignore the misleading error context, that's a different problem):

```
Thu Sep 10 10:31:23 2020: Falco initialized with configuration file
/etc/falco/falco.yaml
Thu Sep 10 10:31:23 2020: Loading rules from file
/tmp/k8s_audit_rules.yaml:
Thu Sep 10 10:31:23 2020: Runtime error: found unexpected ':'
---
  source: k8s_audit
    tags: [k8s]
    # In a local/user rules file, you could override this macro to
```

I think the change in 0.25.0 to use a bundled libyaml fixed the problem,
as it also upgraded libyaml to a version that fixed
https://github.com/yaml/libyaml/pull/104.

Work around the problem with earlier falco releases by quoting the colon.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 5e50276496 rule(System ClusterRole Modified/Deleted): + role
Add system:managed-certificate-controller as a system role that can be
modified. Can be changed as a part of upgrades.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm fd3377e94a Rule(Pod Created in Kube Namespace): add images
Add several images seen in GKE environments that can run in the
kube-system namespace.

Also change the names of the lists to be more specific. The old names
are retained but are kept around for backwards compatibility.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 1b81d9ad9e rule(Disallowed K8s User): add known users
Seen when using K8s cluster autoscaling or addon manager.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
kaizhe f21a96f0f7 rule (EphemeralContainers Created): add new rule to detect ephemeral container created
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
kaizhe 36824aaabd macro(trusted_pod): add new list k8s_image_list
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
Leonardo Grasso b02bd0288f rule(list allowed_k8s_users): add "kubernetes-admin" user
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
kaizhe 33417de0a0 rules update: create placeholder macros for customization
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
Antoine Deschênes d6ebb9ce41 rule(Disallowed K8s User): whitelist kube-apiserver-healthcheck
kops 1.17 adds a kube-apiserver-healthcheck user: https://github.com/kubernetes/kops/tree/master/cmd/kube-apiserver-healthcheck

Logs are currently spammed with:
```
{"output":"18:02:15.466580992: Warning K8s Operation performed by user not in allowed list of users (user=kube-apiserver-healthcheck target=<NA>/<NA> verb=get uri=/healthz resp=200)","priority":"Warning","rule":"Disallowed K8s User","time":"2020-06-29T18:02:15.466580992Z", "output_fields": {"jevt.time":"18:02:15.466580992","ka.response.code":"200","ka.target.name":"<NA>","ka.target.resource":"<NA>","ka.uri":"/healthz","ka.user.name":"kube-apiserver-healthcheck","ka.verb":"get"}}
```

Signed-off-by: Antoine Deschênes <antoine.deschenes@equisoft.com>
2022-05-09 12:59:51 +02:00
kaizhe d2660f251e rule update (Anonymous Request Allowed): update to checking auth decision equals to allow
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 149ac222d0 rule(list allowed_k8s_users): Add vertical pod autoscaler as known k8s users
https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler

Example alert:
---
K8s Operation performed by user not in allowed list of
users (user=vpa-recommender target=vpa-recommender/endpoints verb=update
uri=core/v1/namespaces/kube-system/endpoints/vpa-recommender resp=200)

K8s Operation performed by user not in allowed list of
users (user=vpa-updater target=vpa-updater/endpoints verb=update
uri=core/v1/namespaces/kube-system/endpoints/vpa-updater resp=200)
---

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 04b6b0f034 Only use metadata in k8s audit event for secrets
Instead of using the request object to identify service account tokens,
exclude any secrets activity by system users (e.g. users starting with
"system:"). This allows the rules to work on k8s audit events at
Metadata level instead of RequestResponse level.

Also change the example objects for automated tests to ones collected at
Metadata level.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 690323dddf Add rules to detect creating/deleting secrets
New rules K8s Secret Created/K8s Secret Deleted detect creating/deleting
secrets, following the pattern of the other "K8s XXX Created/Deleted"
rules. One minor difference is that service account token secrets are
excluded, as those are created automatically as namespaces are created.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Vicente Herrera 6f10e16996 Introduce missing allowed_full_admin_users macro so its corresponding rule is disabled by default
Signed-off-by: Vicente Herrera <vicenteherrera@vicenteherrera.com>
2022-05-09 12:59:51 +02:00
Vicente Herrera 543cce2f13 Removed default K3s admin user from list, clarified comments
Signed-off-by: Vicente Herrera <vicenteherrera@vicenteherrera.com>
2022-05-09 12:59:51 +02:00
Vicente Herrera 917488569b Added four new rules, to detect k8s operation by an administrator, nodes successfully joining the cluster, nodes unsuccessfully attempt to join, creation ingress without TLS certificate
Signed-off-by: Vicente Herrera <vicenteherrera@vicenteherrera.com>
2022-05-09 12:59:51 +02:00
kaizhe 105bbc6b97 rule(Service Account Created in Kube Namespace): only detect sa created in kube namespace with success
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
kaizhe b22b5ed6bd rule update: align sensitive mount macro between k8s_audit rules and syscall rules
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
kaizhe e1fb071db1 minor changes
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
kaizhe 1df0792479 update k8s audit rule
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
kaizhe 89bf407176 minor changes
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
kaizhe c7e12d3c31 rules update: add more sensitive host path to sensitive_host_mount macro
Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
kaizhe 8b96d43b15 rules update: expand list allowed_k8s_users
Signed-off-by: kaizhe <derek0405@gmail.com>

add comments

Signed-off-by: kaizhe <derek0405@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm bf1c084afa JSON/K8s Audit Evts extract multiple typed values
Refactor how JSON event/k8s audit events extract values in two important
ways:

1. An event can now extract multiple values.
2. The extracted value is a class json_event_value instead of a simple
string.

The driver for 1. was that some filtercheck fields like
"ka.req.container.privileged" actually should extract multiple values,
as a pod can have multiple containers and it doesn't make sense to
summarize that down to a single value.

The driver for 2. is that by having an object represent a single
extracted value, you can also hold things like numbers e.g. ports, uids,
gids, etc. and ranges e.g. [0:3]. With an object, you can override
operators ==, <, etc. to do comparisons between the numbers and ranges,
or even set membership tests between extracted numbers and sets of
ranges.

This is really handy for a lot of new fields implemented as a part of
PSP support, where you end up having to check for overlaps between the
paths, images, ports, uids, etc in a K8s Audit Event and the acceptable
values, ranges, path prefixes enumerated in a PSP.

Implementing these changes also involve an overhaul of how aliases are
implemented. Instead of having an optional "formatting" function, where
arguments to the formatting function were expressed as text within the
index, define optional extraction and indexing functions. If an
extraction function is defined, it's responsible for taking the full
json object and calling add_extracted_value() to add values. There's a
default extraction function that uses a list of json_pointers with
automatic iteration over array values returned by a json pointer.

There's still a notion of filter fields supporting indexes--that's
simply handled within the default extraction or custom extraction
function. And for most fields, there won't be a need to write a custom
extraction function simply to implement indexing.

Within a json_event_filter_check object, instead of having a single
extracted value as a string, hold a vector of extracted json_event_value
objects (vector because order matters) and a set of json_event_value
objects (for set comparisons) as m_evalues. Values on the right hand
side of the expression are held as a set m_values.

json_event_filter_check::compare now supports IN/INTERSECTS as set
comparisons. It also supports PMATCH using path_prefix_search objects,
which simplifies checks like ka.req.pod.volumes.hostpath--now they can
be expressed as "ka.req.pod.volumes.hostpath intersects (/proc,
/var/run/docker.sock, /, /etc, /root)" instead of
"ka.req.volume.hostpath[/proc]=true or
ka.req.volume.hostpath[/root]=true or ...".

Define ~10 new filtercheck fields that extract pod properties like
hostIpc, readOnlyRootFilesystem, etc. that are relevant for PSP validation.

As a part of these changes, also clarify the names of filter fields
related to pods to always have a .pod in the name. Furthermore, fields
dealing with containers in a pod always have a .pod.containers prefix in
the name.

Finally, change the comparisons for existing k8s audit rules to use
"intersects" and/or "in" when appropriate instead of a single equality
comparison.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Lorenzo Fontana dcaad5b905 update: license headers
Co-Authored-By: Leonardo Di Donato <leodidonato@gmail.com>
Signed-off-by: Lorenzo Fontana <lo@linux.com>
2022-05-09 12:59:51 +02:00
Mark Stemm eb1f880823 Start using falco_ prefix for default lists/macros
Start using a falco_ prefix for falco-provided lists/macros. Not
changing existing object names to retain compatibility.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 0281a8b303 Define always_true/never_true macros for k8s evts
Define macros k8s_audit_always_true/k8s_audit_never_true that work for
k8s audit events. Use them in macros that were asserting true/false values.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Mark Stemm b2a3ed57da Clean up privileged/sens mount container rules
Previously, the exceptions for Launch Privileged Container/Launch
Sensitive Mount Container came from a list of "trusted" images and/or a
macro that defined "trusted" containers. We want more fine-grained
control over the exceptions for these rules, so split them into
exception lists/macros that are specific to each rule. This defines:

 - falco_privileged_images: only those images that are known to require
   privileged=true
 - falco_privileged_containers: uses privileged_images and (for now) still
   allows all openshift images
 - user_privileged_containers: allows user exceptions
 - falco_sensitive_mount_images: only thoe images that are known to perform
   sensitive mounts
 - falco_sensitive_mount_containers: uses sensitive_mount_images
 - user_sensitive_mount_containers: allows user exceptions

For backwards compatibility purposes only, we keep the trusted_images
list and user_trusted_containers macro and they are still used as
exceptions for both rules. Comments recommend using the more
fine-grained alternatives, though.

While defining these lists, also do another survey to see if they still
require these permissions and remove them if they didn't. Removed:
 - quay.io/coreos/flannel
 - consul

Moved to sensitive mount only:
 - gcr.io/google_containers/hyperkube
 - datadog
 - gliderlabs/logspout

Finally, get rid of the k8s audit-specific lists of privileged/sensitive
mount images, relying on the ones in falco_rules.yaml.

Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
2022-05-09 12:59:51 +02:00
Stefan Thies 73409f022e Add Sematext Monitoring & Logging agents to trusted k8s containers (#594)
Please note
registry.access.redhat.com/sematext/agent,
registry.access.redhat.com/sematext/logagent
are not available yet, but we are in the process of certification ...

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 1b3455aef2 Rule updates 2019.02.v1 (#551)
* Let cassandra write to /root/.cassandra

* Add kubelet/kops to allowed_k8s_users

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 0a94539d59 Rules versioning (#492)
* Add ability to print field names only

Add ability to print field names only instead of all information about
fields (description, etc) using -N cmdline option.

This will be used to add some versioning support steps that check for a
changed set of fields.

* Add an engine version that changes w/ filter flds

Add a method falco_engine::engine_version() that returns the current
engine version (e.g. set of supported fields, rules objects, operators,
etc.). It's defined in falco_engine_version.h, starts at 2 and should be
updated whenever a breaking change is made.

The most common reason for an engine change will be an update to the set
of filter fields. To make this easy to diagnose, add a build time check
that compares the sha256 output of "falco --list -N" against a value
that's embedded in falco_engine_version.h. A mismatch fails the build.

* Check engine version when loading rules

A rules file can now have a field "required_engine_version N". If
present, the number is compared to the falco engine version. If the
falco engine version is less, an error is thrown.

* Unit tests for engine versioning

Add a required version: 2 to one trace file to check the positive case
and add a new test that verifies that a too-new rules file won't be loaded.

* Rename falco test docker image

Rename sysdig/falco to falcosecurity/falco in unit tests.

* Don't pin falco_rules.yaml to an engine version

Currently, falco_rules.yaml is compatible with versions <= 0.13.1 other
than the required_engine_version object itself, so keep that line
commented out so users can use this rules file with older falco
versions.

We'll uncomment it with the first incompatible falco engine change.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 12e7904989 Make k8s-audit rules and main rules compatible (#464)
Add k8s audit rules to falco's config so they are read by default.

Rename some generic macros like modify, create, delete in the k8s audit
rules so they don't overlap with macros in the main rules file.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Mark Stemm 929c76e3ad K8s audit evts (#450)
* Add new json/webserver libs, embedded webserver

Add two new external libraries:

 - nlohmann-json is a better json library that has stronger use of c++
   features like type deduction, better conversion from stl structures,
   etc. We'll use it to hold generic json objects instead of jsoncpp.

 - civetweb is an embeddable webserver that will allow us to accept
   posted json data.

New files webserver.{cpp,h} start an embedded webserver that listens for
POSTS on a configurable url and passes the json data to the falco
engine.

New falco config items are under webserver:
  - enabled: true|false. Whether to start the embedded webserver or not.
  - listen_port. Port that webserver listens on
  - k8s_audit_endpoint: uri on which to accept POSTed k8s audit events.

(This commit doesn't compile entirely on its own, but we're grouping
these related changes into one commit for clarity).

* Don't use relative paths to find lua code

You can look directly below PROJECT_SOURCE_DIR.

* Reorganize compiler lua code

The lua compiler code is generic enough to work on more than just
sinsp-based rules, so move the parts of the compiler related to event
types and filterchecks out into a standalone lua file
sinsp_rule_utils.lua.

The checks for event types/filterchecks are now done from rule_loader,
and are dependent on a "source" attribute of the rule being
"sinsp". We'll be adding additional types of events next that come from
sources other than system calls.

* Manage separate syscall/k8s audit rulesets

Add the ability to manage separate sets of rules (syscall and
k8s_audit). Stop using the sinsp_evttype_filter object from the sysdig
repo, replacing it with falco_ruleset/falco_sinsp_ruleset from
ruleset.{cpp,h}. It has the same methods to add rules, associate them
with rulesets, and (for syscall) quickly find the relevant rules for a
given syscall/event type.

At the falco engine level, there are new parallel interfaces for both
types of rules (syscall and k8s_audit) to:
  - add a rule: add_k8s_audit_filter/add_sinsp_filter
  - match an event against rules, possibly returning a result:
    process_sinsp_event/process_k8s_audit_event

At the rule loading level, the mechanics of creating filterchecks
objects is handled two factories (sinsp_filter_factory and
json_event_filter_factory), both of which are held by the engine.

* Handle multiple rule types when parsing rules

Modify the steps of parsing a rule's filter expression to handle
multiple types of rules. Notable changes:

 - In the rule loader/ast traversal, pass a filter api object down,
   which is passed back up in the lua parser api calls like nest(),
   bool_op(), rel_expr(), etc.
 - The filter api object is either the sinsp factory or k8s audit
   factory, depending on the rule type.
 - When the rule is complete, the complete filter is passed to the
   engine using either add_sinsp_filter()/add_k8s_audit_filter().

* Add multiple output formatting types

Add support for multiple output formatters. Notable changes:

 - The falco engine is passed along to falco_formats to gain access to
   the engine's factories.
 - When creating a formatter, the source of the rule is passed along
   with the format string, which controls which kind of output formatter
   is created.

Also clean up exception handling a bit so all lua callbacks catch all
exceptions and convert them into lua errors.

* Add support for json, k8s audit filter fields

With some corresponding changes in sysdig, you can now create general
purpose filter fields and events, which can be tied together with
nesting, expressions, and relational operators. The classes here
represent an instance of these fields devoted to generic json objects as
well as k8s audit events. Notable changes:

 - json_event: holds a json object, used by all of the below

 - json_event_filter_check: Has the ability to extract values out of a
   json_event object and has the ability to define macros that associate
   a field like "group.field" with a json pointer expression that
   extracts a single property's value out of the json object. The basic
   field definition also allows creating an index
   e.g. group.field[index], where a std::function is responsible for
   performing the indexing. This class has virtual void methods so it
   must be overridden.

 - jevt_filter_check: subclass of json_event_filter_check and defines
   the following fields:
     - jevt.time/jevt.rawtime: extracts the time from the underlying json object.
     - jevt.value[<json pointer>]: general purpose way to extract any
       json value out of the underlying object. <json pointer> is a json
       pointer expression
     - jevt.obj: Return the entire object, stringified.

 - k8s_audit_filter_check: implements fields that extract values from
   k8s audit events. Most of the implementation is in the form of macros
   like ka.user.name, ka.uri, ka.target.name, etc. that just use json
   pointers to extact the appropriate value from a k8s audit event. More
   advanced fields like ka.uri.param, ka.req.container.image use
   indexing to extract individual values out of maps or arrays.

 - json_event_filter_factory: used by things like the lua parser api,
   output formatter, etc to create the necessary objects and return
   them.

  - json_event_formatter: given a format string, create the necessary
    fields that will be used to create a resolved string when given a
    json_event object.

* Add ability to list fields

Similar to sysdig's -l option, add --list (<source>) to list the fields
supported by falco. With no source specified, will print all
fields. Source can be "syscall" for inspector fields e.g. what is
supported by sysdig, or "k8s_audit" to list fields supported only by the
k8s audit support in falco.

* Initial set of k8s audit rules

Add an initial set of k8s audit rules. They're broken into 3 classes of
rules:

 - Suspicious activity: this includes things like:
    - A disallowed k8s user performing an operation
    - A disallowed container being used in a pod.
    - A pod created with a privileged pod.
    - A pod created with a sensitive mount.
    - A pod using host networking
    - Creating a NodePort Service
    - A configmap containing private credentials
    - A request being made by an unauthenticated user.
    - Attach/exec to a pod. (We eventually want to also do privileged
      pods, but that will require some state management that we don't
      currently have).
    - Creating a new namespace outside of an allowed set
    - Creating a pod in either of the kube-system/kube-public namespaces
    - Creating a serviceaccount in either of the kube-system/kube-public
      namespaces
    - Modifying any role starting with "system:"
    - Creating a clusterrolebinding to the cluster-admin role
    - Creating a role that wildcards verbs or resources
    - Creating a role with writable permissions/pod exec permissions.
 - Resource tracking. This includes noting when a deployment, service,
    - configmap, cluster role, service account, etc are created or destroyed.
 - Audit tracking: This tracks all audit events.

To support these rules, add macros/new indexing functions as needed to
support the required fields and ways to index the results.

* Add ability to read trace files of k8s audit evts

Expand the use of the -e flag to cover both .scap files containing
system calls as well as jsonl files containing k8s audit events:

If a trace file is specified, first try to read it using the
inspector. If that throws an exception, try to read the first line as
json. If both fail, return an error.

Based on the results of the open, the main loop either calls
do_inspect(), looping over system events, or
read_k8s_audit_trace_file(), reading each line as json and passing it to
the engine and outputs.

* Example showing how to enable k8s audit logs.

An example of how to enable k8s audit logging for minikube.

* Add unit tests for k8s audit support

Initial unit test support for k8s audit events. A new multiplex file
falco_k8s_audit_tests.yaml defines the tests. Traces (jsonl files) are
in trace_files/k8s_audit and new rules files are in
test/rules/k8s_audit.

Current test cases include:

- User outside allowed set
- Creating disallowed pod.
- Creating a pod explicitly on the allowed list
- Creating a pod w/ a privileged container (or second container), or a
  pod with no privileged container.
- Creating a pod w/ a sensitive mount container (or second container), or a
  pod with no sensitive mount.
- Cases for a trace w/o the relevant property + the container being
  trusted, and hostnetwork tests.
- Tests that create a Service w/ and w/o a NodePort type.
- Tests for configmaps: tries each disallowed string, ensuring each is
  detected, and the other has a configmap with no disallowed string,
  ensuring it is not detected.
- The anonymous user creating a namespace.
- Tests for all kactivity rules e.g. those that create/delete
  resources as compared to suspicious activity.
- Exec/Attach to Pod
- Creating a namespace outside of an allowed set
- Creating a pod/serviceaccount in kube-system/kube-public namespaces
- Deleting/modifying a system cluster role
- Creating a binding to the cluster-admin role
- Creating a cluster role binding that wildcards verbs or resources
- Creating a cluster role with write/pod exec privileges

* Don't manually install gcc 4.8

gcc 4.8 should already be installed by default on the vm we use for
travis.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF e53e6f1dbe Remove outdated rule examples
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 7ebc19fd28 Convert rules file to yaml format
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 83473c9c75 Renaming
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 775f32931a Rename digwatch.conf -> digwatch_rules.conf
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF b818bab8df Add some simple example rules
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 5edf05c5d9 rename rules file
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF deedb215d1 Remove function outputs from grammar
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF c5c50a734a Add priorities to all outputs
For now, all are WARNING. Will need to refine/adjust over time.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF d30eb70ec6 Add timestamp in function outputs
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 1379603725 Implicit time in output formats
As pointed out by Loris, timestamping output messages should be a
responsibility of the output/collection system.

So as a first step towards this, add timestamps automatically for output
formats, and remove them from rules.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF d76f9fa90e rules: fix error in zookeeper_port
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 27493654b8 Add mysql rules
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF a416bb280c Add more services to rules file
(HBase, Kafka, Memcached, MongoDB)

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF aef1792544 Tweak comments in rules file
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 32df962201 Some tweaks to rules
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 36ca330c50 Add a bunch of rules for service ports
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF cf79c04c93 rules tweaks
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 5387d735e7 Rules tweaks
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 650453c2f4 Mo rules
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF cd8d1b5ab2 Some more progress on rules
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 3532441c48 Tweaks to base.txt
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 848277be61 Add ssh alert
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF 841fd4cfda Progress on base rules
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF bc61c9ee50 Some updates to base rules file
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Henri DF fb47729bec Example ruleset
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-09 12:59:51 +02:00
Jason Dellaluce 440a4b3ed7 update(plugins): bump sdk version in go plugins
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-09 11:48:51 +02:00
Leonardo Grasso c0449484aa build(Makefile): optionally release "rules" packages
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-06 11:36:02 +02:00
Leonardo Grasso ca2bbd6688 build(Makefile): reorganize release targets
The `make releases` target has been removed because plugins should always be released separately
(a plugin release implies a git tag, it should never happen that all plugins get git-tagged simultaneously).
Furthermore, since we assume a plugin release at the time,
the output folder is now cleared before a plugin release.

Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-06 11:36:02 +02:00
Gerald Combs cc7c279c57 update(plugins/cloudtrail): Always fill in ct.info
Always fill in ct.info with the user, source IP, and event name. Use
arrows to represent reads vs writes and denote errors with an
exclamation mark.

Signed-off-by: Gerald Combs <gerald@wireshark.org>
2022-05-02 18:01:38 +02:00
Gerald Combs b47bb51593 update(plugins/cloudtrail): Add ct.managementevent
Add the ct.managementevent field, which corresponds to the
managementEvent element.

Signed-off-by: Gerald Combs <gerald@wireshark.org>
2022-05-02 18:01:38 +02:00
Jason Dellaluce 71641143a6 update(readme): remove notion of plugin type from readme
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-02 17:35:38 +02:00
Jason Dellaluce d91504c1ee refactor(build/registry): update registry tool with new definitions
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
Co-authored-by: Leonardo Grasso <me@leonardograsso.com>
2022-05-02 17:35:38 +02:00
Jason Dellaluce 455e798ce5 refactor(registry.yaml): re-design registry to notion of plugin capabilities
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-05-02 17:35:38 +02:00
Jason Dellaluce d2cfa30253 refactor(plugins/k8saudit): do not return <NA> on missing field values
In the legacy implementation, list values used to include the value <NA> whenever a given field could
not be extracted (see: https://github.com/falcosecurity/falco/pull/1601). However, this makes the semantics
of missing values ambigue and not coherent. Instead, here we just skip missing values. If a value is not found
when extracted, the plugin framework is able to signal the "field is not present" info. For list values, missing
values are simply skipped now. This works as expected with operators such as `in` and `intersects`, for which
the <NA> string was ambiguous anyways. If a list field is accessed with an index argument, then the extracted
value can either be a list with a single value (the one actually extracted at the positional index of the arg),
or an empty string (which is interpreted by the framework as <NA> internally).

Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-22 11:04:56 +02:00
Jason Dellaluce e2ad7d118a refactor(plugins/k8saudit): allow non-blocking null values and place <NA> like legacy implementation
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-22 11:04:56 +02:00
Jason Dellaluce e759462c72 refactor(plugins/k8saudit): implement recursive json exploration and simplify codebase
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-22 11:04:56 +02:00
Jason Dellaluce d8f9194460 refactor(plugins/k8saudit): remove unused u64 extraction logic
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-22 11:04:56 +02:00
Jason Dellaluce 73eab5f1f7 chore(build): allow publishing packages without readme.md
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-19 18:38:26 +02:00
poiana 852b645231 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2022-04-19 16:57:26 +02:00
Jason Dellaluce 16a1955f9b test(plugins/k8saudit): add k8saudit extractor rough benchmark
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-19 16:27:41 +02:00
Jason Dellaluce d709cd5d6c fix(plugins/k8saudit): fix typo that caused null ptr error
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-19 16:27:41 +02:00
Jason Dellaluce f205356a47 update(plugins/k8saudit): reject unrelated JSON from extraction and add webserver chan buffering
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-19 16:27:41 +02:00
Jason Dellaluce 5e9826c99b refactor(plugins/k8saudit): use a default event timeout
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-19 16:27:41 +02:00
Jason Dellaluce 41effdd654 refactor(plugins/k8saudit): bump plugin sdk go version and adapt field arg definitions
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-19 16:27:41 +02:00
Jason Dellaluce b93d09e346 update(plugins/k8saudit): improve error handling and resource disposal
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-19 16:27:41 +02:00
Jason Dellaluce 64f2d41482 update(registry): fill k8s audit plugin information in plugin registry
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-19 16:27:41 +02:00
Jason Dellaluce 059e0d0d5a new(plugins/k8saudit): initial implementation of K8S audit plugin
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-04-19 16:27:41 +02:00
Michele Zuccala 2c1bb25322 update(plugins): bump Go sdk version
Signed-off-by: Michele Zuccala <michele@zuccala.com>
2022-04-15 12:08:58 +02:00
poiana 9099e5578b docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2022-03-25 00:06:27 +01:00
Issif 25033b312c register new plugin for Okta
Signed-off-by: Issif <issif+github@gadz.org>
2022-03-24 16:40:27 +01:00
Jason Dellaluce 6a2e5421b5 test(plugins/json): add unit tests for json plugin
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-03-24 10:48:58 +01:00
Jason Dellaluce 10cd992540 fix(plugins/json): support json pointer escapes
Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-03-24 10:48:58 +01:00
Jason Dellaluce 3068d86b23 update(plugins): bump SDK Go version
This points to a specific commit hash to include recent changes not-yet released in the Go SDK. For the same reason,
the version of each plugin is not bumped, thus not meant to be tagged and released after this. The goal here
is to create dev builds that are able to comply with the new 1.0.0 Plugin API version.

Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
2022-03-18 14:29:37 +01:00
poiana f191149c76 docs(README.md): update plugin registry table
Signed-off-by: poiana <51138685+poiana@users.noreply.github.com>
2022-02-25 14:37:33 +01:00
Alban Crequy c9aea2df13 register new plugin for Seccomp Agent
Signed-off-by: Alban Crequy <albancrequy@microsoft.com>
2022-02-23 18:34:39 +01:00
443 changed files with 54334 additions and 2720 deletions

16
.clang-format Normal file
View File

@ -0,0 +1,16 @@
---
Language: Cpp
BasedOnStyle: LLVM
AccessModifierOffset: -8
BreakBeforeBraces: Allman
BreakConstructorInitializers: AfterColon
ColumnLimit: 80
ConstructorInitializerIndentWidth: 8
ContinuationIndentWidth: 8
DerivePointerAlignment: true
IndentWidth: 4
SortIncludes: Never
SpaceAfterTemplateKeyword: false
SpaceBeforeCtorInitializerColon: false
SpaceBeforeParens: Never
UseTab: Never

View File

@ -1,6 +1,6 @@
<!-- Thanks for sending a pull request! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines in the [CONTRIBUTING.md](https://github.com/falcosecurity/.github/blob/master/CONTRIBUTING.md) file and learn how to compile Falco from source [here](https://falco.org/docs/source).
1. If this is your first time, please read our contributor guidelines in the [CONTRIBUTING.md](https://github.com/falcosecurity/.github/blob/main/CONTRIBUTING.md) file and learn how to compile Falco from source [here](https://falco.org/docs/source).
2. Please label this pull request according to what type of issue you are addressing.
3. Please add a release note!
4. If the PR is unfinished while opening it specify a wip in the title before the actual title, for example, "wip: my awesome feature"

67
.github/compare-rule-files.sh vendored Executable file
View File

@ -0,0 +1,67 @@
#!/bin/bash
RULES_DIR=$1
CONFIG_FILE=$2
PLUGIN_NAME=$3
RESULT_FILE=$4
CHECKER_TOOL=$5
FALCO_DOCKER_IMAGE=$6
LATEST_TAG=$7
set -e pipefail
rm -f $RESULT_FILE
touch $RESULT_FILE
extra_flags=""
loaded_plugins="$(cat $CONFIG_FILE | grep 'library_path: ' | cut -d ':' -f 2 | xargs)"
for plugin_lib in $loaded_plugins; do
extra_flags="${extra_flags} -f /usr/share/falco/plugins/${plugin_lib}"
done
cur_branch=`git rev-parse HEAD`
echo Current branch is \"$cur_branch\"
echo Checking version for rules file in dir \"$RULES_DIR\"...
# Get the rules files and save them.
# We sort the rules files but first we remove the file extension.
rules_files=$(ls ${RULES_DIR}/* | while read -r line; do echo "${line%.yaml}"; done | sort)
# Add the extension to the files.
# Append the .yaml extension back to the sorted strings
rules_files=$(echo "${rules_files}" | sed 's/$/.yaml/')
echo Rule files found: ${rules_files}
# We save the current rules files before going back to the previous
# version.
prefix="tmp-"
for rules_file in ${rules_files}; do
new_file="${prefix}$(basename "$rules_file")"
echo "Copying rules file ${rules_file} to temporary file ${new_file}"
cp "$rules_file" "$new_file"
tmp_rules+=" $new_file"
done
git checkout tags/$LATEST_TAG
chmod +x $CHECKER_TOOL
$CHECKER_TOOL \
compare \
--falco-image=$FALCO_DOCKER_IMAGE \
-c $CONFIG_FILE \
-l ${rules_files} \
-r ${tmp_rules} \
${extra_flags} \
1>tmp_res.txt
git switch --detach $cur_branch
echo '##' $(basename $RULES_DIR) >> $RESULT_FILE
echo Comparing \`$cur_branch\` with latest tag \`$LATEST_TAG\` >> $RESULT_FILE
echo "" >> $RESULT_FILE
if [ -s tmp_res.txt ]
then
cat tmp_res.txt >> $RESULT_FILE
else
echo "No changes detected" >> $RESULT_FILE
fi
echo "" >> $RESULT_FILE
rm -f ${tmp_rules}
rm -f tmp_res.txt

35
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,35 @@
version: 2
updates:
- package-ecosystem: gomod
directories:
- ./build/*
- ./plugins/*
- ./shared/go/*/*
schedule:
interval: "weekly"
open-pull-requests-limit: 10
groups:
gomod:
update-types:
- "patch"
- package-ecosystem: cargo
directories:
- /plugins/*
schedule:
interval: "weekly"
open-pull-requests-limit: 10
groups:
cargo:
update-types:
- "minor"
- "patch"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
groups:
actions:
update-types:
- "minor"
- "patch"

View File

@ -0,0 +1,77 @@
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
# Plugins for which we need to check if there exist as alternative plugin.
# If so, then we set them as a dependency. This is a must for rulesfiles
# that have multiple plugins that satisfy their requirements and the plugin we are
# checking is an alternative.
# It accepts a single value or coma separated values.
PLUGINS=$1
filtered_entries=()
# Extract plugins requirement from all files and save in a local file.
# Combine the sections from multiple files and save the output to file.
yq eval-all --no-doc '.[].required_plugin_versions | select(. != null and . != "")' ${@:2} > combined_requirements.yaml
# Remove duplicates from the top level.
yq eval-all --inplace 'unique_by(.name)' combined_requirements.yaml
#echo $(cat combined_requirements.yaml)
for YAML_FILE in "combined_requirements.yaml"; do
#echo "Processing file $YAML_FILE"
# Get the length of the entries list
length=$(yq eval '. | length' "$YAML_FILE")
# Iterate over each index in the entries list
for ((i = 0; i < length; i++)); do
# Access the entry by index using yq
entry=$(yq eval '.['"$i"']' "$YAML_FILE")
# Extract name and version from the entry
name=$(echo "$entry" | yq eval '.name' -)
version=$(echo "$entry" | yq eval '.version' -)
# If a plugin we are considering exists as an alternative of another one, then we just skip.
# This case could happen when we are processing multiple files and one of them overrides the
# plugin since it has some specific rules for that plugin.
to_be_skipped=false
for alternative in $(yq eval '.[].alternatives[].name' combined_requirements.yaml);do
if [[ "$alternative" == "$name" ]]; then
to_be_skipped=true
break
fi
done
if [ "$to_be_skipped" = true ];then
#echo "skipping plugin ${name} because already an alternative"
continue
fi
# Check if alternatives exist
alternatives=$(echo "$entry" | yq eval '.alternatives[]?')
if [ -n "$alternatives" ]; then
is_alternative=false
# Get the length of the alternatives list
alt_length=$(echo "$entry" | yq eval '.alternatives | length' -)
# Iterate over each alternative
for ((j = 0; j < alt_length; j++)); do
alt_entry=$(echo "$entry" | yq eval '.alternatives['"$j"']?' -)
alt_name=$(echo "$alt_entry" | yq eval '.name' -)
alt_version=$(echo "$alt_entry" | yq eval '.version' -)
# If our plugin is set as an alternative then we use it as a dependency.
if [[ " ${PLUGINS//,/ } " =~ " $alt_name " ]]; then
#echo "Preferring alternative plugin ${alt_name} over ${name}"
is_alternative=true
name=$alt_name
version=$alt_version
break
fi
done
fi
filtered_entries+=("$name:$version")
done
done
# Output the filtered entries
printf "%s\n" "${filtered_entries[@]}"

26
.github/get-latest-plugin-version.sh vendored Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
PLUGIN=$1
set +e pipefail
echo Searching tag with prefix prefix \"${PLUGIN}-\"...
git fetch --tags origin
latest_tag=`git describe --match="${PLUGIN}-[0-9]*" --match="plugins/${PLUGIN}/v*" --abbrev=0 --tags`
set -e pipefail
latest_ver="0.0.0"
if [ -z "$latest_tag" ]
then
echo Not previous tag has been found
else
echo Most recent tag found is \"$latest_tag\"
if [[ "${latest_tag}" == "plugins/${PLUGIN}"* ]]; then
latest_ver="${latest_tag##*/v}"
else
latest_ver="${latest_tag##*-}"
fi
fi
echo Setting plugin version for "${PLUGIN}" to $latest_ver
echo "version=$latest_ver" >> $GITHUB_OUTPUT
echo "ref=${latest_tag}" >> $GITHUB_OUTPUT

39
.github/setup-plugin-config-rules.sh vendored Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
PLUGIN=$1
# set expected paths for plugins' config and rules files
rules_dir="$GITHUB_WORKSPACE/plugins/${PLUGIN}/rules"
config_file="$GITHUB_WORKSPACE/plugins/${PLUGIN}/falco.yaml"
# set paths into step outputs
echo "rules_dir=${rules_dir}" >> "$GITHUB_OUTPUT"
echo "config_file=${config_file}" >> "$GITHUB_OUTPUT"
# craft a default falco.yaml if no custom one is available
if [ ! -f "$config_file" ]; then
# we assume that the current plugin is always a dependency
deps="$PLUGIN"
# we collect all plugin dependencies across all plugin rulesets
# todo(jasondellaluce): find a way to avoid ignoring alternatives
if [ -d "$rules_dir" ]; then
rules_files=$(ls $rules_dir/*)
echo Extracting plugin dependencies from rules file "${rules_files}"...
rules_deps=$($GITHUB_WORKSPACE/.github/extract-plugins-deps-from-rulesfile.sh $PLUGIN $rules_files)
echo "${rules_deps}"
fi
mkdir -p $(echo $config_file | sed 's:[^/]*$::')
touch $config_file
echo "plugins:" >> $config_file
for dep in $rules_deps; do
dep=$(echo $dep | tr -d '"' | cut -d ':' -f 1)
echo " - name: ${dep}" >> $config_file
echo " library_path: lib${dep}.so" >> $config_file
done
fi
echo Using config file "${config_file}"
cat ${config_file}
echo ""

22
.github/validate-rules.sh vendored Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
falco_image=$1
checker_tool=$2
config_file=$3
rules_files=$4
# craft rules validation command
validation_flags=""
for rules_file in $rules_files; do
validation_flags="${validation_flags} -r ${rules_file}"
done
# append plugin files to validation command
configured_plugins="$(cat $config_file | grep 'library_path: ' | cut -d ':' -f 2 | xargs)"
for plugin_lib in $configured_plugins; do
validation_flags="${validation_flags} -f /usr/share/falco/plugins/${plugin_lib}"
done
chmod +x $checker_tool
echo $checker_tool validate -c $config_file $validation_flags
$checker_tool validate --falco-image=$falco_image -c $config_file $validation_flags

67
.github/workflows/ci.yaml vendored Normal file
View File

@ -0,0 +1,67 @@
name: Build Plugins PR
on:
pull_request:
branches: [main]
# Checks if any concurrent jobs under the same pull request or branch are being executed
# NOTE: this will cancel every workflow that is being ran against a PR as group is just the github ref (without the workflow name)
concurrency:
group: ci-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build-plugins:
uses: ./.github/workflows/reusable_build_packages.yaml
with:
makecommand: make packages -j4
suffix: ${{ github.event.number }}
secrets: inherit
get-changed-plugins:
uses: ./.github/workflows/reusable_get_changed_plugins.yaml
build-rules-tool:
needs: [get-changed-plugins]
if: needs.get-changed-plugins.outputs.changed-plugins != '[]' && needs.get-changed-plugins.outputs.changed-plugins != ''
uses: ./.github/workflows/reusable_build_rules_tool.yaml
with:
output: rules-checker
repository: falcosecurity/rules
validate-plugins:
needs: [build-plugins, get-changed-plugins, build-rules-tool]
if: needs.get-changed-plugins.outputs.changed-plugins != '[]' && needs.get-changed-plugins.outputs.changed-plugins != ''
strategy:
fail-fast: false
matrix:
plugin: ${{ fromJson(needs.get-changed-plugins.outputs.changed-plugins) }}
uses: ./.github/workflows/reusable_validate_plugins.yaml
with:
plugin: ${{ matrix.plugin }}
falcoctl-version: 0.11.0
falco-image: falcosecurity/falco:0.40.0
plugins-artifact: plugins-x86_64-${{ github.event.number }}.tar.gz
rules-checker: ./rules-checker
arch: x86_64
suggest-rules-version:
needs: [build-plugins, get-changed-plugins, build-rules-tool]
if: needs.get-changed-plugins.outputs.changed-plugins != '[]' && needs.get-changed-plugins.outputs.changed-plugins != ''
strategy:
fail-fast: false
matrix:
plugin: ${{ fromJson(needs.get-changed-plugins.outputs.changed-plugins) }}
uses: ./.github/workflows/reusable_suggest_rules_version.yaml
with:
plugin: ${{ matrix.plugin }}
falco-image: falcosecurity/falco:0.40.0
plugins-artifact: plugins-x86_64-${{ github.event.number }}.tar.gz
rules-checker: ./rules-checker
arch: x86_64
job-index: ${{ strategy.job-index }}
upload-pr-info:
needs: [suggest-rules-version]
if: needs.get-changed-plugins.outputs.changed-plugins != '[]' && needs.get-changed-plugins.outputs.changed-plugins != ''
uses: ./.github/workflows/reusable_upload_pr_info.yaml

View File

@ -9,17 +9,23 @@
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
name: "Golang CodeQL"
on:
push:
branches: [ master ]
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
branches: [ main ]
schedule:
- cron: '28 11 * * 2'
# Checks if any concurrent jobs under the same pull request or branch are being executed
# NOTE: this will cancel every workflow that is being ran against a PR as group is just the github ref (without the workflow name)
concurrency:
group: codeql-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
analyze:
name: Analyze
@ -31,21 +37,23 @@ jobs:
strategy:
fail-fast: false
matrix:
language: [ 'cpp', 'go' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup Go
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version: 1.21
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
with:
languages: ${{ matrix.language }}
languages: go
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
@ -54,7 +62,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
uses: github/codeql-action/autobuild@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@ -68,4 +76,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4

171
.github/workflows/container-ci.yaml vendored Normal file
View File

@ -0,0 +1,171 @@
name: Build and test container plugin
on:
pull_request:
branches: [ main ]
paths:
- 'plugins/container/**'
push:
branches: [ main ]
paths:
- 'plugins/container/**'
workflow_dispatch:
jobs:
build-others:
strategy:
fail-fast: false
matrix:
os: [ windows-latest, macos-latest ]
include:
- os: windows-latest
artifact-name: 'libcontainer-win'
artifact-path: 'plugins/container/container.dll'
- os: macos-latest
artifact-name: 'libcontainer-osx'
artifact-path: 'plugins/container/libcontainer.dylib'
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
submodules: 'recursive'
- name: Setup Go
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version-file: plugins/container/go-worker/go.mod
cache-dependency-path: plugins/container/go-worker/go.sum
- name: Build plugin library
working-directory: plugins/container
run: make
- name: Upload artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: ${{ matrix.artifact-name }}
path: ${{ matrix.artifact-path }}
build-linux:
name: build-linux-${{ matrix.arch }}
runs-on: ${{ (matrix.arch == 'arm64' && 'ubuntu-22.04-arm') || 'ubuntu-22.04' }}
strategy:
fail-fast: false
matrix:
arch: [ amd64, arm64 ]
container: golang:1.23-bullseye
steps:
- name: Install plugin deps
run: apt-get update && apt-get install -y --no-install-recommends zip unzip ninja-build
- name: Install updated cmake version ⛓️
run: |
curl -L -o /tmp/cmake.tar.gz https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-$(uname -m).tar.gz
gzip -d /tmp/cmake.tar.gz
tar -xpf /tmp/cmake.tar --directory=/tmp
cp -R /tmp/cmake-3.31.4-linux-$(uname -m)/* /usr
rm -rf /tmp/cmake-3.31.4-linux-$(uname -m)
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
submodules: 'recursive'
- name: Safe directory
run: git config --global --add safe.directory $GITHUB_WORKSPACE
- name: Build plugin library
working-directory: plugins/container
run: make
- name: Upload artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: libcontainer-${{ matrix.arch }}
path: 'plugins/container/libcontainer.so'
test:
name: test-${{ matrix.arch }}
needs: [build-linux]
runs-on: ${{ (matrix.arch == 'arm64' && 'ubuntu-24.04-arm') || 'ubuntu-24.04' }}
strategy:
fail-fast: false
matrix:
arch: [ amd64, arm64 ]
steps:
# libbtrfs: needed by podman package - build dep.
- name: Install go test deps
run: sudo apt-get install -y --no-install-recommends libbtrfs-dev
- name: Checkout repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
submodules: 'recursive'
- name: Setup Go
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version-file: plugins/container/go-worker/go.mod
cache-dependency-path: plugins/container/go-worker/go.sum
- name: Build go-worker executable
working-directory: plugins/container
run: make -C go-worker exe
- name: Run tests
working-directory: plugins/container
run: |
systemctl --user start podman
make test
falco-tests:
needs: [build-linux]
name: falco-tests-${{ matrix.arch }}
runs-on: ${{ (matrix.arch == 'arm64' && 'ubuntu-22.04-arm') || 'ubuntu-22.04' }}
strategy:
fail-fast: false
matrix:
arch: [ amd64, arm64 ]
container:
image: falcosecurity/falco:master-debian
steps:
- name: Download library
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: libcontainer-${{ matrix.arch }}
path: /usr/share/falco/plugins/
- name: Run falcosecurity/testing Falco tests
uses: falcosecurity/testing@main
with:
test-falco: 'true'
test-falcoctl: 'false'
test-k8saudit: 'false'
test-dummy: 'false'
static: 'false'
test-drivers: 'false'
show-all: 'true'
sudo: ''
libs-tests:
needs: [build-linux]
uses: falcosecurity/libs/.github/workflows/reusable_e2e_tests.yaml@master
with:
container_plugin_artifact_name: 'libcontainer-amd64'
secrets: inherit
formatting-check:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Run clang-format style check
uses: jidicula/clang-format-action@4726374d1aa3c6aecf132e5197e498979588ebc8 #v4.15.0
with:
clang-format-version: '18'
check-path: plugins/container
exclude-regex: 'plugin_config_schema.h'

54
.github/workflows/create-comment.yaml vendored Normal file
View File

@ -0,0 +1,54 @@
# NOTE: This has read-write repo token and access to secrets, so this must
# not run any untrusted code.
# see: https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
name: Comment on the pull request
on:
workflow_run:
workflows: ["Build Plugins PR"]
types:
- completed
jobs:
upload:
runs-on: ubuntu-latest
if: github.event.workflow_run.event == 'pull_request'
steps:
- name: 'Download artifact'
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id }},
});
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "pr"
})[0];
var download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data));
- name: 'Unpack artifact'
run: unzip pr.zip
- name: 'Comment on PR'
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
var fs = require('fs');
var issue_number = Number(fs.readFileSync('./NR'));
var comment_body = fs.readFileSync('./COMMENT');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue_number,
body: comment_body.toString('utf8')
});

56
.github/workflows/dummy_c-ci.yaml vendored Normal file
View File

@ -0,0 +1,56 @@
name: Build dummy_c plugin
on:
pull_request:
branches: [ main ]
paths:
- 'plugins/dummy_c/**'
push:
branches: [ main ]
paths:
- 'plugins/dummy_c/**'
workflow_dispatch:
# Checks if any concurrent jobs under the same pull request or branch are being executed
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build:
name: build
runs-on: ubuntu-22.04
steps:
- name: Checkout ⤵️
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Install deps ⛓️
run: |
sudo apt update -y
sudo apt install -y --no-install-recommends build-essential
- name: Initialize CodeQL
uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
with:
languages: cpp
- name: Build dummy_c plugin 🏗️
run: |
cd plugins/dummy_c
make libdummy_c.so
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
formatting-check:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Run clang-format style check
uses: jidicula/clang-format-action@4726374d1aa3c6aecf132e5197e498979588ebc8 #v4.15.0
with:
clang-format-version: '14'
check-path: plugins/dummy_c

72
.github/workflows/k8smeta-ci.yaml vendored Normal file
View File

@ -0,0 +1,72 @@
name: Build K8smeta plugin
on:
pull_request:
branches: [ main ]
paths:
- 'plugins/k8smeta/**'
push:
branches: [ main ]
paths:
- 'plugins/k8smeta/**'
workflow_dispatch:
# Checks if any concurrent jobs under the same pull request or branch are being executed
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build-and-test:
name: build-and-test
runs-on: ubuntu-22.04
steps:
- name: Checkout ⤵️
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version: '1.21'
check-latest: true
- name: Install deps ⛓️
run: |
sudo apt update -y
sudo apt install -y --no-install-recommends cmake build-essential autoconf libtool pkg-config
- name: Initialize CodeQL
uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
with:
languages: cpp
- name: Build k8s meta plugin 🏗️
run: |
cd plugins/k8smeta
mkdir build
cd build && cmake -DCMAKE_BUILD_TYPE=Release ../
make k8smeta -j6
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
- name: Build and run tests 🏎️
run: |
cd plugins/k8smeta/build
make build-server
make build-tests
make run-server &
make run-tests
formatting-check:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Run clang-format style check
uses: jidicula/clang-format-action@4726374d1aa3c6aecf132e5197e498979588ebc8 #v4.15.0
with:
clang-format-version: '14'
check-path: plugins/k8smeta

61
.github/workflows/main.yaml vendored Normal file
View File

@ -0,0 +1,61 @@
name: Update Plugins-dev
on:
push:
branches: [ main ]
workflow_dispatch:
# Checks if any concurrent jobs is already being executed for main and cancel it.
concurrency:
group: ci-main
cancel-in-progress: true
jobs:
build-plugins-dev:
uses: falcosecurity/plugins/.github/workflows/reusable_build_packages.yaml@main
with:
makecommand: make packages -j4
suffix: dev
secrets: inherit
get-changed-plugins:
uses: ./.github/workflows/reusable_get_changed_plugins.yaml
build-rules-tool:
needs: [get-changed-plugins]
if: needs.get-changed-plugins.outputs.changed-plugins != '[]' && needs.get-changed-plugins.outputs.changed-plugins != ''
uses: ./.github/workflows/reusable_build_rules_tool.yaml
with:
output: rules-checker
repository: falcosecurity/rules
validate-plugins:
needs: [build-plugins-dev, get-changed-plugins, build-rules-tool]
if: needs.get-changed-plugins.outputs.changed-plugins != '[]' && needs.get-changed-plugins.outputs.changed-plugins != ''
strategy:
fail-fast: false
matrix:
plugin: ${{ fromJson(needs.get-changed-plugins.outputs.changed-plugins) }}
uses: ./.github/workflows/reusable_validate_plugins.yaml
with:
plugin: ${{ matrix.plugin }}
falcoctl-version: 0.11.0
falco-image: falcosecurity/falco:0.40.0
plugins-artifact: plugins-x86_64-dev.tar.gz
rules-checker: ./rules-checker
arch: x86_64
publish-plugins-dev:
needs: [build-plugins-dev, validate-plugins]
uses: falcosecurity/plugins/.github/workflows/reusable_publish_packages.yaml@main
with:
suffix: dev
secrets: inherit
publish-oci-artifacts-dev:
needs: [ build-plugins-dev, validate-plugins ]
uses: ./.github/workflows/reusable-publish-oci-artifacts.yaml
with:
dev-tag: main
suffix: dev
secrets: inherit

43
.github/workflows/registry.yaml vendored Normal file
View File

@ -0,0 +1,43 @@
name: Check registry.yaml
on:
pull_request:
branches: [main]
paths:
- "registry.yaml"
push:
branches: [main]
paths:
- "registry.yaml"
workflow_dispatch:
# Checks if any concurrent jobs under the same pull request or branch are being executed
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
check-registry:
name: check-registry
runs-on: ubuntu-22.04
steps:
- name: Checkout ⤵️
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version: "1.21"
check-latest: true
- name: Build registry artifact tool
working-directory: build/registry
run: make
# Formal validation only.
# When a new plugin is added and not yet released,
# its OCI repo has not been created yet, so we can't validate it.
- name: Verify the correctness of registry.yaml
working-directory: build/registry
run: ./bin/registry check ../../registry.yaml

70
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,70 @@
name: Release Plugins
on:
push:
tags:
# All tags
- '**'
# Checks if any concurrent jobs is running for release CI and eventually cancel it.
concurrency:
group: ci-release-${{ github.ref }}
cancel-in-progress: true
jobs:
extract-info:
runs-on: ubuntu-latest
outputs:
package: ${{ steps.regex-match.outputs.group1 }}
steps:
- name: Validate tag
uses: actions-ecosystem/action-regex-match@9e6c4fb3d5e898f505be7a1fb6e7b0a278f6665b # v2.0.2
id: regex-match
with:
text: ${{ github.ref_name }}
regex: '^plugins\/([a-z0-9_-]+)\/v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$'
- name: Fail on invalid tag
if: steps.regex-match.outputs.match == ''
run: exit 1
build-plugins:
needs: extract-info
uses: falcosecurity/plugins/.github/workflows/reusable_build_packages.yaml@main
with:
makecommand: make release/${{ needs.extract-info.outputs.package }} -j4
suffix: stable
secrets: inherit
build-rules-tool:
needs: [extract-info]
uses: ./.github/workflows/reusable_build_rules_tool.yaml
with:
output: rules-checker
repository: falcosecurity/rules
validate-plugins:
needs: [extract-info, build-plugins, build-rules-tool]
uses: ./.github/workflows/reusable_validate_plugins.yaml
with:
plugin: ${{ needs.extract-info.outputs.package }}
falcoctl-version: 0.11.0
falco-image: falcosecurity/falco:0.40.0
plugins-artifact: plugins-x86_64-stable.tar.gz
rules-checker: ./rules-checker
arch: x86_64
publish-plugins:
needs: [build-plugins, validate-plugins]
uses: falcosecurity/plugins/.github/workflows/reusable_publish_packages.yaml@main
with:
suffix: stable
secrets: inherit
publish-oci-artifacts:
needs: [ build-plugins, validate-plugins ]
uses: ./.github/workflows/reusable-publish-oci-artifacts.yaml
with:
suffix: stable
secrets: inherit

View File

@ -0,0 +1,98 @@
on:
workflow_call:
inputs:
dev-tag:
description: The tag used for oci artifacts published from the main branch.
required: false
type: string
suffix:
description: Suffix for uploading packages (dev or stable)
required: true
type: string
jobs:
publish-oci-artifacts:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
outputs:
matrix: ${{ steps.oci_build.outputs.REGISTRY_UPDATE_STATUS }}
steps:
- name: Download x86_64 plugins
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: plugins-x86_64-${{ inputs.suffix }}.tar.gz
path: /tmp/plugins-x86_64
- name: Download aarch64 plugins
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: plugins-aarch64-${{ inputs.suffix }}.tar.gz
path: /tmp/plugins-aarch64
- name: Checkout Plugins
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Setup Golang
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version: "^1.21"
- name: Build registry artifact tool
working-directory: build/registry
run: make
- name: Upload OCI artifacts to GitHub packages
id: oci_build
env:
REGISTRY: ghcr.io
REGISTRY_USER: ${{ github.repository_owner }}
REGISTRY_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO_GITHUB: https://github.com/${{ github.repository_owner }}/plugins.git
working-directory: build/registry
run: |
REGISTRY_UPDATE_STATUS=$(./bin/registry update-oci-registry \
../../registry.yaml \
--plugins-amd64-path /tmp/plugins-x86_64 \
--plugins-arm64-path /tmp/plugins-aarch64 \
--rulesfiles-path /tmp/plugins-x86_64 \
--dev-tag "${{ inputs.dev-tag }}"
)
echo "REGISTRY_UPDATE_STATUS=${REGISTRY_UPDATE_STATUS}" >> $GITHUB_OUTPUT
# Create signatures of the plugin artifacts as OCI artifacts
sign-oci-artifacts:
needs: [publish-oci-artifacts]
runs-on: ubuntu-latest
if: ${{ needs.publish-oci-artifacts.outputs.matrix != '[]' }}
strategy:
matrix:
value: ${{ fromJson(needs.publish-oci-artifacts.outputs.matrix) }}
permissions:
contents: read
id-token: write
packages: write
steps:
- name: Install Cosign
uses: sigstore/cosign-installer@d58896d6a1865668819e1d91763c7751a165e159 # v3.9.2
- run: cosign version
- name: Log into ghcr.io
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Sign the artifacts with GitHub OIDC Token
run: cosign sign --yes ${{ matrix.value.repository.ref }}@${{ matrix.value.artifact.digest }}

View File

@ -0,0 +1,74 @@
# This is a reusable workflow used by main and release CI
on:
workflow_call:
inputs:
makecommand:
description: Command used for make
required: true
type: string
suffix:
description: Suffix for uploading packages (dev or stable)
required: true
type: string
jobs:
build-packages:
name: build-packages-${{ matrix.arch }}
runs-on: ${{ (matrix.arch == 'aarch64' && 'ubuntu-22.04-arm') || 'ubuntu-22.04' }}
strategy:
matrix:
arch: [x86_64, aarch64]
# Upgrading to a newer debian version would make the build process generate
# binaries that require newer GLIBC version so we need to be based on bullseye for now
container: golang:1.23-bullseye
steps:
- name: Install deps
run: |
apt update
apt install -y --no-install-recommends awscli build-essential autoconf libelf-dev libtool autotools-dev \
automake zip unzip ninja-build wget lsb-release software-properties-common gnupg
- name: Install updated clang version ⛓️
run: |
wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
./llvm.sh 19
ln -s /usr/bin/clang-19 /usr/bin/clang
- name: Install updated cmake version ⛓️
run: |
curl -L -o /tmp/cmake.tar.gz https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-$(uname -m).tar.gz
gzip -d /tmp/cmake.tar.gz
tar -xpf /tmp/cmake.tar --directory=/tmp
cp -R /tmp/cmake-3.31.4-linux-$(uname -m)/* /usr
rm -rf /tmp/cmake-3.31.4-linux-$(uname -m)
- name: Install Rust 🦀
uses: dtolnay/rust-toolchain@b3b07ba8b418998c39fb20f53e8b695cdcc8de1b # v1
with:
toolchain: "1.86.0"
- name: Install bpf-linker
run: |
cargo install bpf-linker@0.9.14
- name: Configure Rust cache
uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 #v2
- name: Checkout Plugins ⤵️
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
submodules: "recursive"
- name: Safe directory
run: git config --global --add safe.directory $GITHUB_WORKSPACE
- name: Run build 🏗️
run: ${{ inputs.makecommand }}
- name: Upload artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: plugins-${{ matrix.arch }}-${{ inputs.suffix }}.tar.gz
path: output/*.tar.gz

View File

@ -0,0 +1,43 @@
# This is a reusable workflow used by main and release CI
on:
workflow_call:
inputs:
output:
description: Name of the output binary
required: false
default: rules-check
type: string
repository:
description: Falco rules repository
required: false
default: falcosecurity/rules
type: string
jobs:
build-rules-checker:
runs-on: ubuntu-latest
steps:
- name: Setup Golang
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version: "1.19.0"
- name: Checkout rules
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: ${{ inputs.repository }}
- name: Build checker tool
working-directory: build/checker
run: go build -o ${{ inputs.output }}
- name: Test checker tool
working-directory: build/checker
run: go test ./... -cover
- name: Upload artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: rules-tool.tar.gz
path: build/checker/${{ inputs.output }}
retention-days: 1

View File

@ -0,0 +1,46 @@
# This is a reusable workflow used by main CI
on:
workflow_call:
outputs:
changed-plugins:
description: "A json-encoded array with the names of plugins to be used by the CI"
value: ${{ jobs.get-values.outputs.changed-plugins }}
jobs:
get-values:
runs-on: ubuntu-latest
outputs:
changed-plugins: ${{ steps.set-changed-plugins.outputs.changed-plugins }}
steps:
- name: Checkout rules
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get changed files
id: changed-plugins
if: github.event_name == 'pull_request'
uses: Ana06/get-changed-files@25f79e676e7ea1868813e21465014798211fad8c # v2.3.0
with:
format: space-delimited
token: ${{ secrets.GITHUB_TOKEN }}
- name: Get changed plugins
id: set-changed-plugins
run: |
# if we skip changed-plugins because we're not in a pull-request,
# then we consider all the rules contained in the repo
all_files="${{ steps.changed-plugins.outputs.all }}"
values=""
if [ -z "$all_files" ]; then
values=$(ls plugins)
else
for changed_file in $all_files; do
if [[ ${changed_file} =~ ^plugins/.* ]]; then
plugindir=$(echo ${changed_file} | sed -e 's/^plugins//' | sed -E 's_(/[^/]+).*_\1_')
pluginname="${plugindir:1}"
if [[ ! $values =~ "$pluginname" ]]; then
values="${values}$pluginname"$'\n'
fi
fi
done
fi
echo "changed-plugins=$(echo "${values}" | jq -R -s -c 'split("\n")' | jq -c 'map(select(length > 0))')" >> $GITHUB_OUTPUT

View File

@ -0,0 +1,45 @@
# This is a reusable workflow used by main and release CI
on:
workflow_call:
inputs:
suffix:
description: Suffix for uploading packages (dev or stable)
required: true
type: string
permissions:
id-token: write
contents: read
env:
AWS_S3_BUCKET: falco-distribution
AWS_S3_PREFIX: plugins
AWS_S3_REGION: eu-west-1
jobs:
publish-packages:
runs-on: ubuntu-latest
steps:
- name: Download x86_64 plugins
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: plugins-x86_64-${{ inputs.suffix }}.tar.gz
path: /tmp/plugins-x86_64
- name: Download aarch64 plugins
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: plugins-aarch64-${{ inputs.suffix }}.tar.gz
path: /tmp/plugins-aarch64
- name: Configure AWS credentials 🔧⚙️
uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df # v4.2.1
with:
role-to-assume: "arn:aws:iam::292999226676:role/github_actions-plugins-s3"
aws-region: ${{ env.AWS_S3_REGION }}
- name: Upload files to S3 ⬆️
run: |
for package in /tmp/plugins-*/*.tar.gz; do
aws s3 cp --no-progress $package s3://${{ env.AWS_S3_BUCKET}}/${{ env.AWS_S3_PREFIX }}/${{ inputs.suffix }}/
done

View File

@ -0,0 +1,122 @@
# This is a reusable workflow used by the PR CI
on:
workflow_call:
inputs:
plugin:
description: Name of the plugin that needs to be validated
required: true
type: string
falco-image:
description: Docker image of Falco to be used for validation
required: true
type: string
plugins-artifact:
description: Name of the plugin artifact containing the dev builds
required: true
type: string
rules-checker:
description: Path of the rules checker tool built from falcosecurity/rules
required: true
type: string
arch:
description: Architecture of the plugins artifacts (x86_64 or aarch64)
required: true
type: string
job-index:
description: If used in a matrix, the value of strategy.job-index
required: false
default: 0
type: number
jobs:
# note: we don't need anything else than x86_64 since we're validating rules
check-version:
if: github.event_name == 'pull_request' && inputs.arch == 'x86_64'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Install system dependencies
run: sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq && sudo chmod +x /usr/bin/yq
- name: Setup plugin config and rules
id: get-config
run: ./.github/setup-plugin-config-rules.sh ${{ inputs.plugin }}
- name: Get latest tag
id: get-tag
run: ./.github/get-latest-plugin-version.sh ${{ inputs.plugin }}
- name: Download rules tool
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: rules-tool.tar.gz
# note: here we're loading the locally-built plugins, whereas another
# solution would be to pull them with falcoctl. The flaw with this
# approach is that we load the same plugin for both the "old" and the
# "new" rulesets. The issue would be that the job would fail whenever
# the two rulesets depend on plugins with different majors.
# todo(jasondellaluce): fix this corner case in the future
- name: Download plugins
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: ${{ inputs.plugins-artifact }}
path: /tmp/plugins-${{ inputs.arch }}
- name: Extract plugins
run: |
for archive in /tmp/plugins-*/*.tar.gz; do
echo Extracting archive "$archive"...
mkdir -p tmpdir && pushd tmpdir
tar -xvf $archive
sudo mkdir -p /usr/share/falco/plugins
sudo cp -r *.so /usr/share/falco/plugins || true
popd && rm -fr tmpdir
done
- name: Compare changed files with previous versions
id: compare
if: steps.get-tag.outputs.version != '0.0.0'
run: |
rules_dir=${{ steps.get-config.outputs.rules_dir }}
if [ -d "$rules_dir" ]; then
./.github/compare-rule-files.sh \
"$rules_dir" \
${{ steps.get-config.outputs.config_file }} \
${{ inputs.plugin }} \
rule_result.txt \
${{ inputs.rules-checker }} \
${{ inputs.falco-image }} \
${{ steps.get-tag.outputs.ref }}
if [ -s rule_result.txt ]; then
if [ ! -s result.txt ]; then
touch result.txt
fi
cat rule_result.txt >> result.txt
fi
fi
if [ -s result.txt ]; then
echo "comment_file=result.txt" >> $GITHUB_OUTPUT
fi
- name: Save PR info
if: steps.compare.outputs.comment_file != ''
run: |
mkdir -p ./pr
cp ${{ steps.compare.outputs.comment_file }} ./pr/COMMENT-${{ inputs.job-index }}
- name: Upload PR info as artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: steps.compare.outputs.comment_file != ''
with:
name: pr-${{ inputs.job-index }}
path: pr/
retention-days: 1

View File

@ -0,0 +1,37 @@
# This is a reusable workflow used by the PR CI
on:
workflow_call:
jobs:
upload-pr-info:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Download PR infos
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
path: tmp-artifacts
- name: Save PR info
run: |
mkdir -p ./pr
echo ${{ github.event.number }} > ./pr/NR
touch ./pr/COMMENT
echo "# Rules files suggestions" >> ./pr/COMMENT
echo "" >> ./pr/COMMENT
files=$(find ./tmp-artifacts/)
for file in $files; do
if [[ $file =~ "COMMENT" ]]; then
cat $file >> ./pr/COMMENT
fi
done
echo Uploading PR info...
cat ./pr/COMMENT
echo ""
- name: Upload PR info as artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: pr
path: pr/
retention-days: 1

View File

@ -0,0 +1,226 @@
# This is a reusable workflow used by main and release CI
on:
workflow_call:
inputs:
plugin:
description: Name of the plugin that needs to be validated
required: true
type: string
falco-image:
description: Docker image of Falco to be used for validation
required: true
type: string
falcoctl-version:
description: Version of falcoctl to be used for pulling artifacts
required: true
type: string
plugins-artifact:
description: Name of the plugin artifact containing the dev builds
required: true
type: string
rules-checker:
description: Path of the rules checker tool built from falcosecurity/rules
required: true
type: string
arch:
description: Architecture of the plugins artifacts (x86_64 or aarch64)
required: true
type: string
jobs:
# todo(jasondellaluce): support aarch64 too
validate-local:
if: inputs.arch == 'x86_64'
runs-on: ubuntu-latest
container: golang:1.18
env:
GOFLAGS: "-buildvcs=false"
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install system dependencies
run: wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq && chmod +x /usr/bin/yq
- name: Setup plugin config and rules
id: get-config
run: ./.github/setup-plugin-config-rules.sh ${{ inputs.plugin }}
- name: Download rules tool
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: rules-tool.tar.gz
- name: Download plugins
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: ${{ inputs.plugins-artifact }}
path: /tmp/plugins-${{ inputs.arch }}
- name: Install plugin and rules
run: |
set -e pipefail
arch=${{ inputs.arch }}
loaded_plugins="$(cat ${{ steps.get-config.outputs.config_file }} | grep '\- name: ' | cut -d ':' -f 2 | xargs)"
mkdir -p /etc/falco/falco
mkdir -p /usr/share/falco/plugins
# avoids git exit status 128: detected dubious ownership in repository
git config --global --add safe.directory $(pwd)
for plugin_name in $loaded_plugins; do
echo Installing locally-built plugin "$plugin_name"...
# At release time we only build the released plugin, so it's possible
# that validation requires a plugin that we haven't built locally.
# in those cases, we build it on-the-fly perform validation with it.
set +e pipefail
packages=$(ls /tmp/plugins-${arch}/${plugin_name}-* || echo "")
set -e pipefail
if [ -z "$packages" ]; then
echo Building plugin "$plugin_name" temporary packages...
make package/$plugin_name -j4
packages=$(ls $(pwd)/output/${plugin_name}-*)
fi
for archive in $packages; do
echo Extracting archive "$archive"...
mkdir -p tmpdir && cd tmpdir
tar -xvf $archive
cp -r *.yaml /etc/falco/falco || true
cp -r *.so /usr/share/falco/plugins || true
cd .. && rm -fr tmpdir
done
done
- name: Validate plugin and rules
run: |
# craft an empty rules file if none is available.
# this ensures that the plugin gets still loaded even if it has no rules.
rules_files=""
if [ ! -d "${{ steps.get-config.outputs.rules_dir }}" ]; then
touch tmp_rules.yaml
rules_files="./tmp_rules.yaml"
else
rules_files=$(ls ${{ steps.get-config.outputs.rules_dir }}/*)
fi
./.github/validate-rules.sh \
"${{ inputs.falco-image }}" \
"${{ inputs.rules-checker }}" \
"${{ steps.get-config.outputs.config_file }}" \
"$rules_files"
# todo(jasondellaluce): support aarch64 too
validate-falcoctl:
if: inputs.arch == 'x86_64'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install system dependencies
run: sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq && sudo chmod +x /usr/bin/yq
- name: Setup plugin config and rules
id: get-config
run: ./.github/setup-plugin-config-rules.sh ${{ inputs.plugin }}
- name: Download plugins
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: ${{ inputs.plugins-artifact }}
path: /tmp/plugins-${{ inputs.arch }}
- name: Download rules tool
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: rules-tool.tar.gz
- name: Download falcoctl
run: |
curl --fail -LS "https://github.com/falcosecurity/falcoctl/releases/download/v${{ inputs.falcoctl-version }}/falcoctl_${{ inputs.falcoctl-version }}_linux_${{ inputs.arch == 'x86_64' && 'amd64' || 'arm64' }}.tar.gz" | tar -xz
sudo install -o root -g root -m 0755 falcoctl /usr/local/bin/falcoctl
# note(jsondellaluce): exploring the set of all dependencies including their
# alternatives and all the possible combinations of different versions would
# result in a combinatorial explosion. As such, we take the simple route
# of exploring a subset of all the possible combinations (which does not
# include the deps alternatives) that attempts resembling real-world use cases.
#
# We validate each ruleset by loading its plugin dependencies at different
# versions, with the following logic:
# - for all the plugin dependencies defined in the ruleset:
# - we take the plugin version of the dependency
# - we set the patch version number to 0, to forbid patch-level dependencies
# (e.g. falco will fail the validation if v0.8.1 of a plugin is required and we provide v0.8.0)
# - iteratively:
# - for all the plugin dependencies defined in the ruleset:
# - we download the plugin at the given version of the dependency by using falcoctl
# - we increase the minor version number of the plugin by 1
# - we validate the ruleset with Falco and stop if we encounter an error
# - if falcoctl didn't find any updated plugin with the increased minor
# version for any of the plugin deps, we stop iterating
#
# todo(jasondellaluce): improve this by attempting more cases
# todo(jasondellaluce): if we skip one minor version (e.g. bump from v0.1.0
# to v0.3.0), this algorithm would stop before finishing the exploration
- name: Validate plugin and rules
run: |
set -e pipefail
if [ ! -d "${{ steps.get-config.outputs.rules_dir }}" ]; then
exit 0
fi
sudo mkdir -p /usr/share/falco/plugins
rules_files=$(ls ${{ steps.get-config.outputs.rules_dir }}/*)
deps=$(./.github/extract-plugins-deps-from-rulesfile.sh \
"${{ inputs.plugin }}" \
"$rules_files")
echo "Deps: ${deps}"
ver_diff=0
has_updates=1
while [ "$has_updates" -eq 1 ]; do
has_updates=0
for dep in $deps; do
echo "Plugin: ${dep}"
plugin_name=$(echo $dep | tr -d '"' | cut -d ':' -f 1)
# forcing zero patch version to forbid patch-like dependencies
# bumping minor version at every iteration
plugin_ver=$(echo $dep | tr -d '"' | cut -d ':' -f 2)
plugin_ver_major=$(echo $plugin_ver | cut -d '.' -f 1)
plugin_ver_minor=$(expr $(echo $plugin_ver | cut -d '.' -f 2) + $ver_diff)
plugin_ver_patch=0
plugin_ver="${plugin_ver_major}.${plugin_ver_minor}.${plugin_ver_patch}"
set +e pipefail
sudo falcoctl artifact install ${plugin_name}:${plugin_ver}
if [ $? -eq 0 ]; then
echo Installed plugin "${plugin_name}" at version "${plugin_ver}"
has_updates=1
else
echo Can\'t pull plugin "${plugin_name}" at version "${plugin_ver}"
echo Attempt installing locally-built plugin "${plugin_name}"...
for archive in $(ls /tmp/plugins-${{ inputs.arch }}/${plugin_name}-*); do
echo Extracting archive "$archive"...
mkdir -p tmpdir && pushd tmpdir
tar -xvf $archive
sudo cp -r *.so /usr/share/falco/plugins || true
popd && rm -fr tmpdir
done
fi
set -e pipefail
done
ver_diff=$(expr $ver_diff + 1)
./.github/validate-rules.sh \
"${{ inputs.falco-image }}" \
"${{ inputs.rules-checker }}" \
"${{ steps.get-config.outputs.config_file }}" \
"$rules_files"
done

5
.gitignore vendored
View File

@ -1,7 +1,10 @@
*~
.vscode
.DS_Store
.idea
output/
plugins/*/*.so
plugins/*/lib*.h
plugins/dummy_c/nlohmann
plugins/dummy_c/sdk
plugins/dummy_c/include
plugins/dummy_c/*.tar.gz

30
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,30 @@
repos:
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: 'v18.1.3'
hooks:
- id: clang-format
name: clang-format-18
files: ^plugins/container/.*$
exclude: plugin_config_schema\.h
stages: [pre-commit]
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: 'v14.0.6'
hooks:
- id: clang-format
name: clang-format-14
files: ^plugins/(k8smeta|dummy_c)/.*$
stages: [pre-commit]
- repo: local
hooks:
- id: rust-fmt
name: rust-fmt
description: Format files with rustfmt.
entry: rustfmt +nightly --color always
types: [rust]
language: system
stages: [pre-commit]
- id: dco
name: dco
entry: ./tools/local_hooks/dco-pre-commit-msg.sh
language: script
stages: [prepare-commit-msg]

121
Makefile
View File

@ -1,5 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2022 The Falco Authors.
# Copyright (C) 2023 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
@ -14,9 +15,8 @@
SHELL := /bin/bash
GO ?= $(shell which go)
FALCOSECURITY_LIBS_REVISION=e25e44b3ba4cb90ba9ac75bf747978e41fb6b221
DEBUG = 1
PRE_RELEASE = --pre-release
OUTPUT_DIR := output
SOURCE_DIR := plugins
ARCH ?=$(shell uname -m)
@ -24,18 +24,31 @@ PLATFORM ?=$(shell uname -s | tr '[:upper:]' '[:lower:]')
plugins = $(shell ls -d ${SOURCE_DIR}/*/ | cut -f2 -d'/' | xargs)
plugins-clean = $(addprefix clean/,$(plugins))
plugins-changelogs = $(addprefix changelog/,$(plugins))
plugins-packages = $(addprefix package/,$(plugins))
plugins-releases = $(addprefix release/,$(plugins))
plugins-tidy = $(addprefix tidy/,$(plugins))
.PHONY: all
all: check-registry $(plugins)
.PHONY: $(plugins)
$(plugins):
cd plugins/$@ && make DEBUG=$(DEBUG)
$(plugins): build/readme/readme
+cd plugins/$@ && make DEBUG=$(DEBUG)
# make rules, if any
+@cd plugins/$@ \
&& make rules \
&& echo "$@ rules generated" || :
# make readme, if any
+@cd plugins/$@ \
&& make readme READMETOOL=../../build/readme/bin/readme \
&& echo "$@ readme generated" || :
tidy/%:
+cd plugins/$@ && [-f go.mod] && $(GO) mod tidy
.PHONY: clean
clean: $(plugins-clean) clean/packages clean/build/utils/version clean/build/registry/registry
clean: $(plugins-clean) clean/packages clean/build/utils/version clean/build/registry/registry clean/build/changelog/changelog clean/build/readme/readme
.PHONY: clean/packages
clean/packages:
@ -43,67 +56,101 @@ clean/packages:
.PHONY: $(plugins-clean)
$(plugins-clean):
cd plugins/$(shell basename $@) && make clean
+cd plugins/$(shell basename $@) && make clean
.PHONY: $(plugins-tidy)
$(plugins-tidy):
+cd plugins/$(shell basename $@) && [ -f go.mod ] && $(GO) mod tidy || true
.PHONY: tidy
tidy: $(plugins-tidy)
+cd build/utils && $(GO) mod tidy
+cd build/readme && $(GO) mod tidy
+cd build/registry && $(GO) mod tidy
+cd build/utils && $(GO) mod tidy
.PHONY: packages
packages: clean/packages $(plugins-clean) $(plugins-packages)
packages: clean/packages $(plugins-packages)
.PHONY: releases
releases: $(plugins-releases)
.PHONY: $(plugins-packages)
$(plugins-packages): all build/utils/version
package/%: clean/% % build/utils/version
$(eval PLUGIN_NAME := $(shell basename $@))
$(eval PLUGIN_PATH := plugins/$(PLUGIN_NAME)/lib$(PLUGIN_NAME).so)
$(eval PLUGIN_VERSION := $(shell ./build/utils/version --path $(PLUGIN_PATH) --pre-release | tail -n 1))
$(eval PLUGIN_VERSION := $(shell ./build/utils/version --path $(PLUGIN_PATH) $(PRE_RELEASE) | tail -n 1))
# re-run command to stop in case of non-zero exit code
@./build/utils/version --path $(PLUGIN_PATH) --pre-release
@./build/utils/version --path $(PLUGIN_PATH) $(PRE_RELEASE)
mkdir -p $(OUTPUT_DIR)/$(PLUGIN_NAME)
cp -r $(PLUGIN_PATH) $(OUTPUT_DIR)/$(PLUGIN_NAME)/
cp -r plugins/$(PLUGIN_NAME)/README.md $(OUTPUT_DIR)/$(PLUGIN_NAME)/
tar -zcvf $(OUTPUT_DIR)/$(PLUGIN_NAME)-$(PLUGIN_VERSION)-${PLATFORM}-${ARCH}.tar.gz -C ${OUTPUT_DIR}/$(PLUGIN_NAME) $$(ls -A ${OUTPUT_DIR}/$(PLUGIN_NAME))
rm -rf $(OUTPUT_DIR)/$(PLUGIN_NAME)
@echo "$(PLUGIN_NAME) package built"
# build rules package, if any
mkdir -p $(OUTPUT_DIR)/$(PLUGIN_NAME)-rules
# symlinks are ignored when creating the rules package. Only regular files are considered.
find plugins/$(PLUGIN_NAME)/rules/* -type f -exec cp -t $(OUTPUT_DIR)/$(PLUGIN_NAME)-rules/ {} + && \
tar -zcvf $(OUTPUT_DIR)/$(PLUGIN_NAME)-rules-$(PLUGIN_VERSION).tar.gz -C \
$(OUTPUT_DIR)/$(PLUGIN_NAME)-rules $$(ls -A ${OUTPUT_DIR}/$(PLUGIN_NAME)-rules) || :
@test $(OUTPUT_DIR)/$(PLUGIN_NAME)-rules-$(PLUGIN_VERSION).tar.gz && echo "$(PLUGIN_NAME) rules package built"
rm -rf $(OUTPUT_DIR)/$(PLUGIN_NAME)-rules
release/%: DEBUG=0
release/%: clean/% % build/utils/version
release/%: PRE_RELEASE=
release/%: clean package/%
@echo "$(PLUGIN_NAME) released"
.PHONY: changelogs
changelogs: $(plugins-changelogs)
changelog/%: build/changelog/changelog
$(eval PLUGIN_NAME := $(shell basename $@))
$(eval PLUGIN_PATH := plugins/$(PLUGIN_NAME)/lib$(PLUGIN_NAME).so)
$(eval PLUGIN_VERSION := $(shell ./build/utils/version --path $(PLUGIN_PATH) | tail -n 1))
# re-run command to stop in case of non-zero exit code
@./build/utils/version --path $(PLUGIN_PATH)
mkdir -p $(OUTPUT_DIR)/$(PLUGIN_NAME)
cp -r $(PLUGIN_PATH) $(OUTPUT_DIR)/$(PLUGIN_NAME)/
cp -r plugins/$(PLUGIN_NAME)/README.md $(OUTPUT_DIR)/$(PLUGIN_NAME)/
tar -zcvf $(OUTPUT_DIR)/$(PLUGIN_NAME)-$(PLUGIN_VERSION)-${PLATFORM}-${ARCH}.tar.gz -C ${OUTPUT_DIR}/$(PLUGIN_NAME) $$(ls -A ${OUTPUT_DIR}/$(PLUGIN_NAME))
$(eval CHANGELOG_PATH := plugins/$(PLUGIN_NAME)/CHANGELOG.md)
@./changelog-gen.sh $(PLUGIN_NAME) > $(CHANGELOG_PATH)
@echo "$(CHANGELOG_PATH) generated"
.PHONY: check-registry
check-registry: build/registry/registry
@build/registry/registry check ./registry.yaml
@build/registry/bin/registry check ./registry.yaml
@echo The plugin registry is OK
.PHONY: update-readme
update-readme: build/registry/registry
@build/registry/registry table ./registry.yaml \
@build/registry/bin/registry table ./registry.yaml \
--subfile=./README.md \
--subtag="<!-- REGISTRY:SOURCE-TABLE -->" \
--type=plugins-source
@build/registry/registry table ./registry.yaml \
--subfile=./README.md \
--subtag="<!-- REGISTRY:EXTRACTOR-TABLE -->" \
--type=plugins-extractor
--subtag="<!-- REGISTRY:TABLE -->"
@echo Readme has been updated successfully
.PHONY: update-index
update-index: build/registry/registry
@build/registry/bin/registry update-index ./registry.yaml ${DIST_INDEX}
@echo Distribution index has been updated successfully
.PHONY: build/utils/version
build/utils/version:
@cd build/utils && make
+@cd build/utils && make
.PHONY: clean/build/utils/version
clean/build/utils/version:
@cd build/utils && make clean
+@cd build/utils && make clean
.PHONY: build/registry/registry
build/registry/registry:
@cd build/registry && make
+@cd build/registry && make
.PHONY: clean/build/registry/registry
clean/build/registry/registry:
@cd build/registry && make clean
+@cd build/registry && make clean
.PHONY: build/changelog/changelog
build/changelog/changelog:
+@cd build/changelog && make
.PHONY: clean/build/changelog/changelog
clean/build/changelog/changelog:
+@cd build/changelog && make clean
.PHONY: build/readme/readme
build/readme/readme:
+@cd build/readme && make
.PHONY: clean/build/readme/readme
clean/build/readme/readme:
+@cd build/readme && make clean

10
OWNERS
View File

@ -1,14 +1,10 @@
approvers:
- ldegio
- leodido
- fntlnz
- mstemm
- leogr
- jasondellaluce
reviewers:
- LucaGuerra
- ekoops
emeritus_approvers:
- ldegio
- leodido
- fntlnz
- mstemm
- leogr
- jasondellaluce

148
README.md
View File

@ -1,78 +1,124 @@
# Plugins
![GitHub branch checks state](https://img.shields.io/github/checks-status/falcosecurity/plugins/master?style=for-the-badge)
[![License](https://img.shields.io/github/license/falcosecurity/plugins?style=for-the-badge)](./LICENSE)
[![Falco Core Repository](https://github.com/falcosecurity/evolution/blob/main/repos/badges/falco-core-blue.svg)](https://github.com/falcosecurity/evolution/blob/main/REPOSITORIES.md#core-scope) [![Stable](https://img.shields.io/badge/status-stable-brightgreen?style=for-the-badge)](https://github.com/falcosecurity/evolution/blob/main/REPOSITORIES.md#stable) [![License](https://img.shields.io/github/license/falcosecurity/rules?style=for-the-badge)](./LICENSE)
Note: *The plugin system is a new feature introduced since Falco 0.31.0. You can find more detail in the original [proposal document](https://github.com/falcosecurity/falco/blob/master/proposals/20210501-plugin-system.md).*
This repository is the central hub for the Falco Plugin ecosystem. It serves two main purposes:
This repository contains the [Plugin Registry](#plugin-registry) and the [plugins officially maintained](#falcusecurity-plugins) by the Falcosecurity organization. [Plugins](https://falco.org/docs/plugins) can be used to extend [Falco](https://github.com/falcosecurity/falco) and of applications using [Falcosecurity libs](https://github.com/falcosecurity/libs). Please refer to the [official documentation](https://falco.org/docs/plugins) to better understand the plugin system's concepts and architecture.
- **Be a registry:** A comprehensive catalog of plugins recognized by The Falco Project, regardless of where their source code is hosted.
- **Monorepo for Falcosecurity plugins:** Official plugins hosted and maintained by The Falco Project, with robust release and distribution processes.
For more information about the plugin systems architecture and concepts, please see the [official documentation](https://falco.org/docs/plugins).
---
## Plugin Registry
The Registry contains metadata and information about every plugin known and recognized by the Falcosecurity organization. It lists plugins hosted either in this repository or in other repositories. These plugins are developed for Falco and made available to the community. Check out the sections below to know how to [register your plugins](#registering-a-new-plugin) and see plugins currently contained in the registry.
The registry contains metadata and information about every plugin known and recognized by the Falcosecurity organization. It lists plugins hosted either in this repository or in other repositories. These plugins are developed for Falco and made available to the community.
### Registering a new Plugin
Registering your plugin inside the registry helps ensure that some technical constraints are respected, such as that a [given ID is used by exactly one source plugin](https://falco.org/docs/plugins/#plugin-event-ids) and allows source plugin authors and extractor plugin authors to [coordinate event source formats](https://falco.org/docs/plugins/#plugin-event-sources-and-interoperability). Moreover, this is a great way to share your plugin project with the community and engage with it, thus gaining new users and **increasing its visibility**. We encourage you to register your plugin in this registry before publishing it. You can add your plugins in this registry regardless of where its source code is hosted (there's a `url` field for this specifically).
The registration process involves adding an entry about your plugin inside the [registry.yaml](./registry.yaml) file by creating a Pull Request in this repository. Please be mindful of a few constraints that are automatically checked and required for your plugin to be accepted:
- The `name` field is mandatory and must be **unique** across all the plugins in the registry
- *(Source plugins only)* The `id` field is mandatory and must be **unique** across all the source plugins in the registry
- The plugin `name` and `source` fields should match this [regular expression](https://en.wikipedia.org/wiki/Regular_expression): `^[a-z]+[a-z0-9_]*$`
For reference, here's an example of a source plugin entry:
```yaml
- id: 2
source: aws_cloudtrail
name: cloudtrail
description: ...
authors: The Falco Authors
contact: https://falco.org/community
url: ...
license: Apache-2.0
```
You can find the full registry specification here: *(coming soon...)*
> Check out the [Registering a Plugin](./docs/registering-a-plugin.md) to know how to add your plugin to this registry.
### Registered Plugins
The tables below list all the plugins currently registered. The tables are automatically generated from the [registry.yaml](./registry.yaml) file.
<!-- The text inside \<!-- REGISTRY:xxx --\> comments is auto-generated. These comments and the text between them should not be edited by hand -->
<!-- The text inside \<!-- REGISTRY:xxx --\> comments is auto-generated.
These comments and the text between them should not be edited by hand -->
<!-- REGISTRY:TABLE -->
| Name | Capabilities | Description
| --- | --- | --- |
| plugin-id-zero-value | **Event Sourcing** <br/>ID: 0 <br/>`` | This ID is reserved for particular purposes and cannot be registered. A plugin author should not use this ID unless specified by the documentation. <br/><br/> Authors: N/A <br/> License: N/A |
| test | **Event Sourcing** <br/>ID: 999 <br/>`test` | This ID is reserved for source plugin development. Any plugin author can use this ID, but authors can expect events from other developers with this ID. After development is complete, the author should request an actual ID <br/><br/> Authors: N/A <br/> License: N/A |
| [k8saudit](https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit) | **Event Sourcing** <br/>ID: 1 <br/>`k8s_audit` <br/>**Field Extraction** <br/> `k8s_audit` | Read Kubernetes Audit Events and monitor Kubernetes Clusters <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [cloudtrail](https://github.com/falcosecurity/plugins/tree/main/plugins/cloudtrail) | **Event Sourcing** <br/>ID: 2 <br/>`aws_cloudtrail` <br/>**Field Extraction** <br/> `aws_cloudtrail` | Reads Cloudtrail JSON logs from files/S3 and injects as events <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [json](https://github.com/falcosecurity/plugins/tree/main/plugins/json) | **Field Extraction** <br/> *All Sources* | Extract values from any JSON payload <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [dummy](https://github.com/falcosecurity/plugins/tree/main/plugins/dummy) | **Event Sourcing** <br/>ID: 3 <br/>`dummy` <br/>**Field Extraction** <br/> `dummy` | Reference plugin used to document interface <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [dummy_c](https://github.com/falcosecurity/plugins/tree/main/plugins/dummy_c) | **Event Sourcing** <br/>ID: 4 <br/>`dummy_c` <br/>**Field Extraction** <br/> `dummy_c` | Like dummy, but written in C++ <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [docker](https://github.com/Issif/docker-plugin) | **Event Sourcing** <br/>ID: 5 <br/>`docker` <br/>**Field Extraction** <br/> `docker` | Docker Events <br/><br/> Authors: [Thomas Labarussias](https://github.com/Issif) <br/> License: Apache-2.0 |
| [seccompagent](https://github.com/kinvolk/seccompagent) | **Event Sourcing** <br/>ID: 6 <br/>`seccompagent` <br/>**Field Extraction** <br/> `seccompagent` | Seccomp Agent Events <br/><br/> Authors: [Alban Crequy](https://github.com/kinvolk/seccompagent) <br/> License: Apache-2.0 |
| [okta](https://github.com/falcosecurity/plugins/tree/main/plugins/okta) | **Event Sourcing** <br/>ID: 7 <br/>`okta` <br/>**Field Extraction** <br/> `okta` | Okta Log Events <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [github](https://github.com/falcosecurity/plugins/tree/main/plugins/github) | **Event Sourcing** <br/>ID: 8 <br/>`github` <br/>**Field Extraction** <br/> `github` | Github Webhook Events <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [k8saudit-eks](https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-eks) | **Event Sourcing** <br/>ID: 9 <br/>`k8s_audit` <br/>**Field Extraction** <br/> `k8s_audit` | Read Kubernetes Audit Events from AWS EKS Clusters <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [nomad](https://github.com/albertollamaso/nomad-plugin/tree/main) | **Event Sourcing** <br/>ID: 10 <br/>`nomad` <br/>**Field Extraction** <br/> `nomad` | Read Hashicorp Nomad Events Stream <br/><br/> Authors: [Alberto Llamas](https://github.com/albertollamaso/nomad-plugin/issues) <br/> License: Apache-2.0 |
| [dnscollector](https://github.com/SysdigDan/dnscollector-falco-plugin) | **Event Sourcing** <br/>ID: 11 <br/>`dnscollector` <br/>**Field Extraction** <br/> `dnscollector` | DNS Collector Events <br/><br/> Authors: [Daniel Moloney](https://github.com/SysdigDan/dnscollector-falco-plugin/issues) <br/> License: Apache-2.0 |
| [gcpaudit](https://github.com/falcosecurity/plugins/tree/main/plugins/gcpaudit) | **Event Sourcing** <br/>ID: 12 <br/>`gcp_auditlog` <br/>**Field Extraction** <br/> `gcp_auditlog` | Read GCP Audit Logs <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [syslogsrv](https://github.com/nabokihms/syslogsrv-falco-plugin/tree/main/plugins/syslogsrv) | **Event Sourcing** <br/>ID: 13 <br/>`syslogsrv` <br/>**Field Extraction** <br/> `syslogsrv` | Syslog Server Events <br/><br/> Authors: [Maksim Nabokikh](https://github.com/nabokihms/syslogsrv-falco-plugin/issues) <br/> License: Apache-2.0 |
| [salesforce](https://github.com/an1245/falco-plugin-salesforce/) | **Event Sourcing** <br/>ID: 14 <br/>`salesforce` <br/>**Field Extraction** <br/> `salesforce` | Falco plugin providing basic runtime threat detection and auditing logging for Salesforce <br/><br/> Authors: [Andy](https://github.com/an1245/falco-plugin-salesforce/issues) <br/> License: Apache-2.0 |
| [box](https://github.com/an1245/falco-plugin-box/) | **Event Sourcing** <br/>ID: 15 <br/>`box` <br/>**Field Extraction** <br/> `box` | Falco plugin providing basic runtime threat detection and auditing logging for Box <br/><br/> Authors: [Andy](https://github.com/an1245/falco-plugin-box/issues) <br/> License: Apache-2.0 |
| [k8smeta](https://github.com/falcosecurity/plugins/tree/main/plugins/k8smeta) | **Field Extraction** <br/> `syscall` | Enriche Falco syscall flow with Kubernetes Metadata <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [k8saudit-gke](https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-gke) | **Event Sourcing** <br/>ID: 16 <br/>`k8s_audit` <br/>**Field Extraction** <br/> `k8s_audit` | Read Kubernetes Audit Events from GKE Clusters <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [journald](https://github.com/gnosek/falco-journald-plugin) | **Event Sourcing** <br/>ID: 17 <br/>`journal` <br/>**Field Extraction** <br/> `journal` | Read Journald events into Falco <br/><br/> Authors: [Grzegorz Nosek](https://github.com/gnosek/falco-journald-plugin) <br/> License: Apache-2.0 |
| [kafka](https://github.com/falcosecurity/plugins/tree/main/plugins/kafka) | **Event Sourcing** <br/>ID: 18 <br/>`kafka` | Read events from Kafka topics into Falco <br/><br/> Authors: [Hunter Madison](https://falco.org/community) <br/> License: Apache-2.0 |
| [gitlab](https://github.com/an1245/falco-plugin-gitlab) | **Event Sourcing** <br/>ID: 19 <br/>`gitlab` <br/>**Field Extraction** <br/> `gitlab` | Falco plugin providing basic runtime threat detection and auditing logging for GitLab <br/><br/> Authors: [Andy](https://github.com/an1245/falco-plugin-gitlab/issues) <br/> License: Apache-2.0 |
| [keycloak](https://github.com/mattiaforc/falco-keycloak-plugin) | **Event Sourcing** <br/>ID: 20 <br/>`keycloak` <br/>**Field Extraction** <br/> `keycloak` | Falco plugin for sourcing and extracting Keycloak user/admin events <br/><br/> Authors: [Mattia Forcellese](https://github.com/mattiaforc/falco-keycloak-plugin/issues) <br/> License: Apache-2.0 |
| [k8saudit-aks](https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-aks) | **Event Sourcing** <br/>ID: 21 <br/>`k8s_audit` <br/>**Field Extraction** <br/> `k8s_audit` | Read Kubernetes Audit Events from Azure AKS Clusters <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [k8saudit-ovh](https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-ovh) | **Event Sourcing** <br/>ID: 22 <br/>`k8s_audit` <br/>**Field Extraction** <br/> `k8s_audit` | Read Kubernetes Audit Events from OVHcloud MKS Clusters <br/><br/> Authors: [Aurélie Vache](https://falco.org/community) <br/> License: Apache-2.0 |
| [dummy_rs](https://github.com/falcosecurity/plugins/tree/main/plugins/dummy_rs) | **Event Sourcing** <br/>ID: 23 <br/>`dummy_rs` <br/>**Field Extraction** <br/> `dummy_rs` | Like dummy, but written in Rust <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [container](https://github.com/falcosecurity/plugins/tree/main/plugins/container) | **Field Extraction** <br/> `syscall` | Enriche Falco syscall flow with Container Metadata <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [krsi](https://github.com/falcosecurity/plugins/tree/main/plugins/krsi) | **Field Extraction** <br/> `syscall` | Security (KRSI) events support for Falco <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [collector](https://github.com/falcosecurity/plugins/tree/main/plugins/collector) | **Event Sourcing** <br/>ID: 24 <br/>`collector` | Generic collector to ingest raw payloads into Falco <br/><br/> Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| [awselb](https://github.com/yukinakanaka/falco-plugin-aws-elb) | **Event Sourcing** <br/>ID: 25 <br/>`awselb` <br/>**Field Extraction** <br/> `awselb` | AWS Elastic Load Balancer access logs events <br/><br/> Authors: [Yuki Nakamura](https://github.com/yukinakanaka/falco-plugin-aws-elb/issues) <br/> License: Apache-2.0 |
#### Source Plugins
<!-- REGISTRY:SOURCE-TABLE -->
| ID | Name | Event Source | Description | Info |
| --- | --- | --- | --- | --- |
| 1 | k8s_audit | `k8s_audit` | Reserved for a future back-port of Falco's k8s_audit event source as a plugin | Authors: N/A <br/> License: N/A |
| 2 | [cloudtrail](https://github.com/falcosecurity/plugins/tree/master/plugins/cloudtrail) | `aws_cloudtrail` | Reads Cloudtrail JSON logs from files/S3 and injects as events | Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| 3 | [dummy](https://github.com/falcosecurity/plugins/tree/master/plugins/dummy) | `dummy` | Reference plugin used to document interface | Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| 4 | [dummy_c](https://github.com/falcosecurity/plugins/tree/master/plugins/dummy_c) | `dummy_c` | Like Dummy, but written in C++ | Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
| 5 | [docker](https://github.com/Issif/docker-plugin) | `docker` | Docker Events | Authors: [Thomas Labarussias](https://github.org/Issif) <br/> License: Apache-2.0 |
| 999 | test | `test` | This ID is reserved for source plugin development. Any plugin author can use this ID, but authors can expect events from other developers with this ID. After development is complete, the author should request an actual ID | Authors: N/A <br/> License: N/A |
<!-- REGISTRY:TABLE -->
<!-- REGISTRY:SOURCE-TABLE -->
## Falcosecurity Plugins
#### Extractor Plugins
<!-- REGISTRY:EXTRACTOR-TABLE -->
| Name | Extract Event Sources | Description | Info |
| --- | --- | --- | --- |
| [json](https://github.com/falcosecurity/plugins/tree/master/plugins/json) | N/A | Extract values from any JSON payload | Authors: [The Falco Authors](https://falco.org/community) <br/> License: Apache-2.0 |
Along with the registry, this repository hosts the official plugins maintained by the Falcosecurity organization. Each plugin is an independent project with its own directory in the [plugins folder](https://github.com/falcosecurity/plugins/tree/main/plugins).
<!-- REGISTRY:EXTRACTOR-TABLE -->
The `main` branch reflects the latest development state, and plugins are released on a regular basis. Development builds are published automatically when a Pull Request is merged into `main`, while stable builds are released only when a new tag is created. You can find all published artifacts at [download.falco.org](https://download.falco.org/?prefix=plugins). For details on the release process, please see our [Release Process](./release.md).
## Hosted Plugins
The instructions below explain how to install and apply only to plugins from this repository.
Another purpose of this repository is to host and maintain the plugins owned by the Falcosecurity organization. Each plugin is a standalone project and has its own directory, and they are all inside the [plugins](https://github.com/falcosecurity/plugins/tree/master/plugins) folder.
### Installing Plugins
The `master` branch contains the most up-to-date state of development, and each plugin is regularly released. Please check our [Release Process](./release.md) to know how plugins are released and how artifacts are distributed. Dev builds are published each time a Pull Request gets merged into `master`, whereas stable builds are released and published only when a new release gets tagged. You can find the published artifacts at https://download.falco.org/?prefix=plugins.
Plugins hosted in this repository are built and distributed through Falco's official channels. You can easily install them using either [falcoctl](https://github.com/falcosecurity/falcoctl) or the [Falco Helm chart](https://github.com/falcosecurity/charts/tree/master/charts/falco).
If you wish to contribute your plugin to the Falcosecurity organization, you just need to open a Pull Request to add it inside the `plugins` folder and to add it inside the registry. In order to be hosted in this repository, plugins must be licensed under the [Apache 2.0 License](./LICENSE).
#### Using falcoctl
1. **Install falcoctl:** If you haven't already, follow the [falcoctl installation guide](https://github.com/falcosecurity/falcoctl?tab=readme-ov-file#installation).
2. **Install a Plugin:** Execute the following command, replacing `<plugin-name>` with the name of the plugin you wish to install:
```bash
falcoctl index update falcosecurity
falcoctl artifact install <plugin-name>
```
> Depending on your environment, you may need to run the above commands with `sudo`.
3. Configure Falco to load the plugin as described in the [plugin's documentation](https://falco.org/docs/concepts/plugins/usage/#loading-plugins-in-falco).
#### Using the Falco Helm Chart
When installing Falco using the Helm chart, you can instruct the chart to install a specific plugin by setting the `falcoctl.config.artifact.install.refs` value and then adding the relevant plugin configuration under `falco`.
The Helm charts provides a preset [values-k8saudit.yaml](https://github.com/falcosecurity/charts/blob/master/charts/falco/values-k8saudit.yaml) file that can be used to install the `k8saudit` plugin or as example for installing other plugins.
## Contributing
If you want to help and wish to contribute, please review our [contribution guidelines](https://github.com/falcosecurity/.github/blob/master/CONTRIBUTING.md). Code contributions are always encouraged and welcome!
If you want to help and wish to contribute, please review our [contribution guidelines](https://github.com/falcosecurity/.github/blob/main/CONTRIBUTING.md). Code contributions are always encouraged and welcome!
If you wish to contribute a plugin to The Falco Project, simply open a Pull Request to add your plugin to the `/plugins` folder and [update the registry accordingly](./docs/registering-a-plugin.md). Note that to be hosted in this repository, plugins must be licensed under the [Apache 2.0 License](./LICENSE).
### Enforcing coding style and repo policies locally
This repository supports enforcing coding style and policies locally through the `pre-commit` framework. `pre-commit`
allows to automatically install `git-hooks` that will be executed at every new commit. The following is the list of
`git-hooks` defined in `.pre-commit-config.yaml` (notice that some of them only target files written in a specific
language):
1. the `rust-fmt` hook - a `pre-commit` git hook running `rust fmt` on the staged changes
2. the `dco` hook - a `pre-commit-msg` git hook running adding the `DCO` on the commit if not present
The following steps describe how to install these hooks.
##### Step 1
Install `pre-commit` framework following the [official documentation](https://pre-commit.com/#installation).
> __Please note__: you have to follow only the "Installation" section.
#### Step 2
Install `pre-commit` git hooks:
```bash
pre-commit install --hook-type pre-commit --hook-type prepare-commit-msg --overwrite
```
## License

1
build/changelog/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
bin

26
build/changelog/Makefile Normal file
View File

@ -0,0 +1,26 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2023 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
SHELL=/bin/bash -o pipefail
GO ?= go
all: bin/changelog
clean:
@rm -fr bin
bin/changelog: changelog.go
@mkdir -p bin
@$(GO) build -o bin/changelog changelog.go

View File

@ -0,0 +1,172 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"errors"
"fmt"
"os"
"os/exec"
"regexp"
"strings"
"github.com/falcosecurity/plugins/build/registry/pkg/registry"
"github.com/spf13/pflag"
)
const (
commitHashMaxLen = 7
commitLinkFmt = "https://github.com/falcosecurity/plugins/commit/%s"
commitMsgMaxLen = 80
)
func git(args ...string) (output []string, err error) {
fmt.Fprintln(os.Stderr, "git ", strings.Join(args, " "))
stdout, err := exec.Command("git", args...).Output()
if err != nil {
if exitErr, ok := err.(*exec.ExitError); ok {
return nil, errors.New("git (" + exitErr.String() + "): " + string(exitErr.Stderr))
}
return nil, err
}
return strings.Split(string(stdout), "\n"), nil
}
// an empty string matches the last tag with no match filtering
func gitGetLatestTagWithMatch(match []string) (string, error) {
args := []string{"describe", "--tags", "--abbrev=0"}
if len(match) > 0 {
for _, m := range match {
args = append(args, "--match", m)
}
}
tags, err := git(args...)
if err != nil {
return "", err
}
if len(tags) == 0 {
return "", errors.New("git tag not found")
}
return tags[0], nil
}
// an empty tag lists commit from whole history
func gitListCommits(from, to string) ([]string, error) {
revRange := ""
if len(to) > 0 {
revRange = to
}
if len(from) > 0 {
if len(revRange) == 0 {
revRange = "HEAD"
}
revRange = from + ".." + revRange
}
logs, err := git("log", revRange, "--oneline")
if err != nil {
return nil, err
}
return logs, nil
}
func pluginSource(pname string) string {
reg, err := registry.LoadRegistryFromFile("registry.yaml")
if err != nil {
fail(fmt.Errorf("an error occurred while loading registry entries from file %q: %v", "registry.yaml", err))
}
for _, plugin := range reg.Plugins {
if plugin.Name == pname && plugin.Capabilities.Sourcing.Supported {
return plugin.Capabilities.Sourcing.Source
}
}
return ""
}
func fail(err error) {
fmt.Printf("error: %s\n", err)
os.Exit(1)
}
// formats the line with markdown syntax and decorates it
func formatCommitLine(c string) string {
firstSpace := strings.Index(c, " ")
hash := strings.Trim(c[:firstSpace], " ") // hash is before the first space
message := strings.Trim(c[firstSpace:], " ") // message is after the first space
if len(message) > commitMsgMaxLen {
message = message[:commitMsgMaxLen-3] + "..."
}
commitLink := fmt.Sprintf(commitLinkFmt, hash)
return fmt.Sprintf("* [`%s`](%s) %s", hash[:commitHashMaxLen], commitLink, message)
}
func main() {
var plugin string
var from string
var to string
pflag.StringVar(&plugin, "plugin", "", "Name of the plugin to generate the changelog for")
pflag.StringVar(&from, "from", "", "Tag/branch/hash from which start listing commits")
pflag.StringVar(&to, "to", "HEAD", "Tag/branch/hash to which stop listing commits")
pflag.Parse()
// if from is not specified, we use the latest tag matching the plugin name
if len(from) == 0 {
match := []string{}
if len(plugin) > 0 {
match = append(match, "plugins/"+plugin+"/v[0-9]*.[0-9]*.[0-9]*")
match = append(match, plugin+"-[0-9]*.[0-9]*.[0-9]*")
}
tag, err := gitGetLatestTagWithMatch(match)
if err != nil {
fmt.Fprintln(os.Stderr, "no matching tag found for plugin '"+plugin+"', using commits from whole history:", err.Error())
} else {
from = tag
}
}
// get all commits
commits, err := gitListCommits(from, to)
if err != nil {
fail(err)
}
var rgx, rgxSource, rgxDeps *regexp.Regexp
if len(plugin) > 0 {
// craft a regex to filter all plugin-related commits that follow
// the conventional commit format
rgx, _ = regexp.Compile("^[a-f0-9]+ [a-zA-Z]+\\(([a-zA-Z\\/]+\\/)?" + plugin + "(\\/[a-zA-Z\\/]+)?\\):.*")
// use source name of the plugin as well, if it has sourcing capabilities
pluginSource := pluginSource(plugin)
if pluginSource != "" {
rgxSource, _ = regexp.Compile("^[a-f0-9]+ [a-zA-Z]+\\(([a-zA-Z\\/]+\\/)?" + pluginSource + "(\\/[a-zA-Z\\/]+)?\\):.*")
}
// craft a regex to filter all plugin-related dependabot commits
rgxDeps, _ = regexp.Compile("^[a-f0-9]+ build\\(deps\\):.*" + plugin + "$")
}
for _, c := range commits {
if len(c) > 0 && (rgx == nil || rgx.MatchString(c) ||
(rgxSource != nil && rgxSource.MatchString(c)) ||
rgxDeps.MatchString(c)) {
fmt.Println(formatCommitLine(c) + "\n")
}
}
}

39
build/changelog/go.mod Normal file
View File

@ -0,0 +1,39 @@
module github.com/falcosecurity/plugins/build/changelog
go 1.23.0
toolchain go1.24.1
require (
github.com/falcosecurity/plugins/build/registry v0.0.0-20240514080945-0e7ef7698747
github.com/spf13/pflag v1.0.6
)
require (
github.com/docker/cli v24.0.5+incompatible // indirect
github.com/docker/docker v25.0.6+incompatible // indirect
github.com/docker/docker-credential-helpers v0.8.0 // indirect
github.com/falcosecurity/falcoctl v0.6.1 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0-rc4 // indirect
github.com/pelletier/go-toml/v2 v2.0.9 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/spf13/afero v1.9.5 // indirect
github.com/spf13/cast v1.5.1 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/viper v1.16.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
golang.org/x/oauth2 v0.27.0 // indirect
golang.org/x/sync v0.12.0 // indirect
golang.org/x/sys v0.31.0 // indirect
golang.org/x/text v0.23.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
oras.land/oras-go/v2 v2.2.1 // indirect
)

516
build/changelog/go.sum Normal file
View File

@ -0,0 +1,516 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/docker/cli v24.0.5+incompatible h1:WeBimjvS0eKdH4Ygx+ihVq1Q++xg36M/rMi4aXAvodc=
github.com/docker/cli v24.0.5+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg=
github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8=
github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/falcosecurity/falcoctl v0.6.1 h1:Klg3jHi/PL1Inw9DO9kGpzL6ka+TjI4oDl6kvm1I+VY=
github.com/falcosecurity/falcoctl v0.6.1/go.mod h1:4Hx4h3KtcaQzPKxvYn5S9x4IHxwd6QRK9Gu04HHNbhE=
github.com/falcosecurity/plugins/build/registry v0.0.0-20240514080945-0e7ef7698747 h1:d+YgxJXgcmu9LX5ixICSTaN3y5MmgCnxW8TfPu5i+Eg=
github.com/falcosecurity/plugins/build/registry v0.0.0-20240514080945-0e7ef7698747/go.mod h1:I/unuAO/urquhDsyOE+YmcY0FNBInVtLfZ5VwD3FUMo=
github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0=
github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/pelletier/go-toml/v2 v2.0.9 h1:uH2qQXheeefCCkuBBSLi7jCiSmj3VRh2+Goq2N7Xxu0=
github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM=
github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ=
github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA=
github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48=
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc=
github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY=
gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
oras.land/oras-go/v2 v2.2.1 h1:3VJTYqy5KfelEF9c2jo1MLSpr+TM3mX8K42wzZcd6qE=
oras.land/oras-go/v2 v2.2.1/go.mod h1:GeAwLuC4G/JpNwkd+bSZ6SkDMGaaYglt6YK2WvZP7uQ=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

2
build/readme/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
bin
readme

26
build/readme/Makefile Normal file
View File

@ -0,0 +1,26 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2023 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
SHELL=/bin/bash -o pipefail
GO ?= go
all: bin/readme
clean:
@rm -fr bin
bin/readme: readme.go fields.go
@mkdir -p bin
@$(GO) build -o bin/readme readme.go fields.go

87
build/readme/fields.go Normal file
View File

@ -0,0 +1,87 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"bytes"
"strings"
"github.com/falcosecurity/plugin-sdk-go/pkg/loader"
"github.com/falcosecurity/plugin-sdk-go/pkg/sdk"
"github.com/olekukonko/tablewriter"
)
const (
defaultFieldsTag = "README-PLUGIN-FIELDS"
)
func fieldsRenderArgRow(a *sdk.FieldEntryArg) string {
if !a.IsIndex && !a.IsKey {
return "None"
}
var res []string
if a.IsIndex {
res = append(res, "Index")
}
if a.IsKey {
res = append(res, "Key")
}
if a.IsRequired {
res = append(res, "Required")
}
return strings.Join(res, ", ")
}
// renderNewLines replaces '\n' character with "<br/>" for proper table formatting.
func renderNewLines(desc string) string {
return strings.ReplaceAll(desc, "\n", "<br/>")
}
func fieldsEditor(p *loader.Plugin, s string) (string, error) {
if !p.HasCapExtraction() {
return s, nil
}
fields := p.Fields()
if len(fields) == 0 {
return s, nil
}
var buf bytes.Buffer
table := tablewriter.NewWriter(&buf)
table.SetHeader([]string{"Name", "Type", "Arg", "Description"})
table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false})
table.SetCenterSeparator("|")
table.SetRowSeparator("-")
table.SetAutoWrapText(false)
for _, f := range fields {
row := []string{}
row = append(row, "`"+f.Name+"`")
if f.IsList {
row = append(row, "`"+f.Type+" (list)`")
} else {
row = append(row, "`"+f.Type+"`")
}
row = append(row, fieldsRenderArgRow(&f.Arg))
row = append(row, renderNewLines(f.Desc))
table.Append(row)
}
table.Render()
return replateTag(s, fieldsTag, buf.String())
}

9
build/readme/go.mod Normal file
View File

@ -0,0 +1,9 @@
module github.com/falcosecurity/plugins/build/readme
go 1.13
require (
github.com/falcosecurity/plugin-sdk-go v0.7.5
github.com/olekukonko/tablewriter v0.0.5
github.com/spf13/pflag v1.0.6
)

33
build/readme/go.sum Normal file
View File

@ -0,0 +1,33 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/falcosecurity/plugin-sdk-go v0.7.5 h1:ke/+kTt0PwedM8+IGTKcW3LrUI/xiJNDCSzqTSW+CvI=
github.com/falcosecurity/plugin-sdk-go v0.7.5/go.mod h1:NP+y22DYOS+G3GDXIXNmzf0CBL3nfPPMoQuHvAzfitQ=
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

102
build/readme/readme.go Normal file
View File

@ -0,0 +1,102 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"fmt"
"io/ioutil"
"os"
"strings"
"github.com/falcosecurity/plugin-sdk-go/pkg/loader"
"github.com/spf13/pflag"
)
var (
pluginPath string
readmePath string
fieldsTag string
)
type EditorFunc func(*loader.Plugin, string) (string, error)
func fail(err error) {
println(err.Error())
os.Exit(1)
}
func replateTag(s string, t string, r string) (string, error) {
startTag := "<!-- " + t + " -->\n"
endTag := "<!-- /" + t + " -->\n"
start := 0
for {
start = strings.Index(s[start:], startTag)
if start < 0 {
return s, nil
}
start += len(startTag)
end := strings.Index(s[start:], endTag)
if end < 0 {
return "", fmt.Errorf("can't find end tag: " + endTag)
}
end += start
s = s[:start] + r + s[end:]
start += len(r) + len(endTag)
}
}
func editFile(plugin *loader.Plugin, path string, editors ...EditorFunc) error {
bytes, err := ioutil.ReadFile(path)
if err != nil {
return err
}
edited := string(bytes)
for _, editor := range editors {
edited, err = editor(plugin, edited)
if err != nil {
return err
}
}
return ioutil.WriteFile(path, ([]byte)(edited), 0)
}
func main() {
pflag.StringVarP(&pluginPath, "plugin", "p", "", "File path to the plugin shared library.")
pflag.StringVarP(&readmePath, "file", "f", "", "File path to the README file to be edited.")
pflag.StringVar(&fieldsTag, "fields-tag", defaultFieldsTag, "Tag to substitute with the plugin fields table.\nIn the file, formatted as \"<!-- TAG -->\\n...\\n<!-- /TAG -->\".")
pflag.Parse()
if len(pluginPath) == 0 {
fail(fmt.Errorf("must specify a plugin path with the -p option"))
}
if len(readmePath) == 0 {
fail(fmt.Errorf("must specify a file path with the -f option"))
}
// load plugin
plugin, err := loader.NewPlugin(pluginPath)
if err != nil {
fail(err)
}
defer plugin.Unload()
// use plugin info to edit readme file
err = editFile(plugin, readmePath, fieldsEditor)
if err != nil {
fail(err)
}
}

View File

@ -1 +1 @@
registry
bin/*

View File

@ -1,5 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2022 The Falco Authors.
# Copyright (C) 2023 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
@ -18,7 +19,8 @@ GO ?= go
all: registry
clean:
@rm -f registry
@rm -fr bin
registry: *.go
@$(GO) build -o registry *.go
registry:
@mkdir -p bin
@$(GO) build -o bin/registry ./cmd/registry/...

View File

@ -1,102 +0,0 @@
/*
Copyright (C) 2022 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"fmt"
"os"
"regexp"
)
var (
rgxName *regexp.Regexp
)
func init() {
var err error
rgxName, err = regexp.Compile(`^[a-z]+[a-z0-9_]*$`)
if err != nil {
println(err.Error())
os.Exit(1)
}
}
func (s *Source) Check(reserved []string) error {
if s.ID == 0 {
return fmt.Errorf("forbidden source ID: '%d'", s.ID)
}
if !rgxName.MatchString(s.Name) {
return fmt.Errorf("name does follow the naming convention: '%s'", s.Name)
}
for _, source := range reserved {
if s.Source == source {
return fmt.Errorf("forbidden source name: '%s'", s.Source)
}
}
if !rgxName.MatchString(s.Source) {
return fmt.Errorf("source name does follow the naming convention: '%s'", s.Source)
}
return nil
}
func (e *Extractor) Check() error {
if !rgxName.MatchString(e.Name) {
return fmt.Errorf("name does follow the naming convention: '%s'", e.Name)
}
return nil
}
func (p *Plugins) Check(reserved []string) error {
ids := make(map[uint]bool)
names := make(map[string]bool)
for _, s := range p.Source {
if err := s.Check(reserved); err != nil {
return err
}
if _, ok := names[s.Name]; ok {
return fmt.Errorf("plugin name is not unique: '%s'", s.Name)
}
if _, ok := ids[s.ID]; ok {
return fmt.Errorf("source id is not unique: '%d'", s.ID)
}
names[s.Name] = true
ids[s.ID] = true
}
for _, e := range p.Extractor {
if err := e.Check(); err != nil {
return err
}
if _, ok := names[e.Name]; ok {
return fmt.Errorf("plugin name is not unique: '%s'", e.Name)
}
names[e.Name] = true
}
return nil
}
func (r *Registry) Check() error {
return r.Plugins.Check(r.ReservedSources)
}

View File

@ -0,0 +1,128 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"bufio"
"context"
"fmt"
"os"
"github.com/falcosecurity/plugins/build/registry/cmd/validateRegistry"
"github.com/spf13/cobra"
"github.com/falcosecurity/plugins/build/registry/internal/options"
"github.com/falcosecurity/plugins/build/registry/pkg/check"
"github.com/falcosecurity/plugins/build/registry/pkg/distribution"
"github.com/falcosecurity/plugins/build/registry/pkg/oci"
"github.com/falcosecurity/plugins/build/registry/pkg/table"
)
const (
defaultTableSubTag = "<!-- REGISTRY -->"
)
var (
out = bufio.NewWriter(os.Stdout)
)
func main() {
defer out.Flush()
opts := options.NewCommonOptions(
options.WithContext(context.Background()),
options.WithOutput(out),
)
checkCmd := &cobra.Command{
Use: "check <filename>",
Short: "Verify the correctness of a plugin registry YAML file",
Args: cobra.ExactArgs(1),
DisableFlagsInUseLine: true,
RunE: func(c *cobra.Command, args []string) error {
return check.DoCheck(args[0])
},
}
var tableSubFileName string
var tableSubTab string
tableCmd := &cobra.Command{
Use: "table <filename>",
Short: "Format a plugin registry YAML file in a MarkDown table",
Args: cobra.ExactArgs(1),
RunE: func(c *cobra.Command, args []string) error {
return table.DoTable(args[0], tableSubFileName, tableSubTab)
},
}
tableFlags := tableCmd.Flags()
tableFlags.StringVar(&tableSubTab, "subtag", defaultTableSubTag, "A tag that delimits the start and the end of the text section to substitute with the generated table.")
tableFlags.StringVar(&tableSubFileName, "subfile", "", "If specified, the table will be written inside the file at this path, inserting it between the first two instances of the substitution tag.")
updateIndexCmd := &cobra.Command{
Use: "update-index <registryFilename> <indexFilename>",
Short: "Update an index file for artifacts distribution using registry data",
Args: cobra.ExactArgs(2),
DisableFlagsInUseLine: true,
RunE: func(c *cobra.Command, args []string) error {
return distribution.DoUpdateIndex(args[0], args[1])
},
}
var (
pluginsAMD64Path string
pluginsARM64Path string
rulesfilesPath string
devTag string
)
updateOCIRegistry := &cobra.Command{
Use: "update-oci-registry <registryFilename>",
Short: "Update the oci registry starting from the registry file and s3 bucket",
Args: cobra.ExactArgs(1),
DisableFlagsInUseLine: true,
RunE: func(c *cobra.Command, args []string) error {
status, err := oci.DoUpdateOCIRegistry(opts.Context, args[0], pluginsAMD64Path, pluginsARM64Path, rulesfilesPath, devTag)
if err != nil {
return err
}
return oci.PrintUpdateStatus(status, opts.Output)
},
}
ociFlags := updateOCIRegistry.Flags()
ociFlags.StringVar(&pluginsAMD64Path, "plugins-amd64-path", "", "Path to plugins for the amd64 architecture")
ociFlags.StringVar(&pluginsARM64Path, "plugins-arm64-path", "", "Path to plugins for the arm64 architecture")
ociFlags.StringVar(&rulesfilesPath, "rulesfiles-path", "", "Path to rulesfiles")
ociFlags.StringVar(&devTag, "dev-tag", "", "Tag for devel versions")
rootCmd := &cobra.Command{
Use: "registry",
Version: "0.2.0",
}
rootCmd.AddCommand(checkCmd)
rootCmd.AddCommand(tableCmd)
rootCmd.AddCommand(updateIndexCmd)
rootCmd.AddCommand(updateOCIRegistry)
rootCmd.AddCommand(validateRegistry.NewValidateRegistry(context.Background()))
if err := rootCmd.Execute(); err != nil {
fmt.Printf("error: %s\n", err)
os.Exit(1)
}
}

View File

@ -0,0 +1,57 @@
package validateRegistry
import (
"context"
"fmt"
"strings"
"github.com/falcosecurity/falcoctl/pkg/oci/authn"
ocipuller "github.com/falcosecurity/falcoctl/pkg/oci/puller"
"github.com/falcosecurity/plugins/build/registry/pkg/oci"
"github.com/falcosecurity/plugins/build/registry/pkg/registry"
"github.com/spf13/cobra"
"k8s.io/klog/v2"
)
func NewValidateRegistry(ctx context.Context) *cobra.Command {
updateOCIRegistry := &cobra.Command{
Use: "validate-registry <registryFilename>",
Short: "Check that an OCI repo exists for each plugin in the registry file",
Args: cobra.ExactArgs(1),
DisableFlagsInUseLine: true,
RunE: func(c *cobra.Command, args []string) error {
return validateRegistry(ctx, args[0])
},
}
return updateOCIRegistry
}
func validateRegistry(ctx context.Context, registryFile string) error {
reg, err := registry.LoadRegistryFromFile(registryFile)
if err != nil {
return fmt.Errorf("an error occurred while loading registry entries from file %q: %v", registryFile, err)
}
ociClient := authn.NewClient()
puller := ocipuller.NewPuller(ociClient, false, nil)
// For each plugin in the registry index, look for new ones to be released, and publish them.
for _, plugin := range reg.Plugins {
// Filter out plugins that are not owned by falcosecurity.
if !strings.HasPrefix(plugin.URL, oci.PluginsRepo) {
klog.V(2).Infof("skipping plugin %q with authors %q: it is not maintained by %q",
plugin.Name, plugin.Authors, oci.FalcoAuthors)
continue
}
klog.Infof("Checking OCI repo for plugin %q", plugin.Name)
ref := fmt.Sprintf("ghcr.io/falcosecurity/plugins/plugin/%s:latest", plugin.Name)
// We just retrieve the descriptor from the remote repository,
// if it fails, likely the repository does not exist
if _, err := puller.Descriptor(ctx, ref); err != nil {
return fmt.Errorf("plugin %s seems to not have an OCI repository: %w", plugin.Name, err)
}
}
return nil
}

View File

@ -1,8 +1,165 @@
module github.com/falcosecurity/plugins/build/registry
go 1.13
go 1.23.4
toolchain go1.24.1
require (
github.com/go-yaml/yaml v2.1.0+incompatible
github.com/spf13/cobra v1.3.0
github.com/blang/semver v3.5.1+incompatible
github.com/falcosecurity/falcoctl v0.11.0
github.com/falcosecurity/plugin-sdk-go v0.7.5
github.com/onsi/ginkgo/v2 v2.23.4
github.com/onsi/gomega v1.37.0
github.com/pkg/errors v0.9.1
github.com/spf13/cobra v1.9.1
github.com/stretchr/testify v1.10.0
gopkg.in/yaml.v2 v2.4.0
gopkg.in/yaml.v3 v3.0.1
k8s.io/klog/v2 v2.130.1
oras.land/oras-go/v2 v2.6.0
)
require (
atomicgo.dev/cursor v0.2.0 // indirect
atomicgo.dev/keyboard v0.2.9 // indirect
atomicgo.dev/schedule v0.1.0 // indirect
cloud.google.com/go/compute/metadata v0.6.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
github.com/MakeNowJust/heredoc v1.0.0 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/chai2010/gettext-go v1.0.3 // indirect
github.com/cilium/ebpf v0.17.3 // indirect
github.com/containerd/console v1.0.4 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/creasty/defaults v1.8.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/distribution/reference v0.6.0 // indirect
github.com/docker/cli v27.5.1+incompatible // indirect
github.com/docker/docker v27.5.1+incompatible // indirect
github.com/docker/docker-credential-helpers v0.8.2 // indirect
github.com/docker/go-connections v0.5.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
github.com/falcosecurity/driverkit v0.20.5 // indirect
github.com/fatih/camelcase v1.0.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fsnotify/fsnotify v1.8.0 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/gabriel-vasile/mimetype v1.4.8 // indirect
github.com/go-errors/errors v1.5.1 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.25.0 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/btree v1.1.3 // indirect
github.com/google/gnostic-models v0.6.9 // indirect
github.com/google/go-cmp v0.7.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gookit/color v1.5.4 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
github.com/hashicorp/hcl v1.0.1-vault-7 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.17.11 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
github.com/lithammer/fuzzysearch v1.1.8 // indirect
github.com/magiconair/properties v1.8.9 // indirect
github.com/mailru/easyjson v0.9.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/patternmatcher v0.6.0 // indirect
github.com/moby/spdystream v0.5.0 // indirect
github.com/moby/sys/sequential v0.6.0 // indirect
github.com/moby/sys/user v0.3.0 // indirect
github.com/moby/sys/userns v0.1.0 // indirect
github.com/moby/term v0.5.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.1 // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/pterm/pterm v0.12.80 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sagikazarmark/locafero v0.7.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.12.0 // indirect
github.com/spf13/cast v1.7.1 // indirect
github.com/spf13/pflag v1.0.6 // indirect
github.com/spf13/viper v1.19.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
github.com/xlab/treeprint v1.2.0 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect
go.opentelemetry.io/otel v1.34.0 // indirect
go.opentelemetry.io/otel/metric v1.34.0 // indirect
go.opentelemetry.io/otel/trace v1.34.0 // indirect
go.uber.org/automaxprocs v1.6.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.36.0 // indirect
golang.org/x/exp v0.0.0-20250215185904-eff6e970281f // indirect
golang.org/x/net v0.38.0 // indirect
golang.org/x/oauth2 v0.27.0 // indirect
golang.org/x/sync v0.14.0 // indirect
golang.org/x/sys v0.32.0 // indirect
golang.org/x/term v0.30.0 // indirect
golang.org/x/text v0.23.0 // indirect
golang.org/x/time v0.10.0 // indirect
golang.org/x/tools v0.31.0 // indirect
google.golang.org/protobuf v1.36.6 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
k8s.io/api v0.32.3 // indirect
k8s.io/apimachinery v0.32.3 // indirect
k8s.io/cli-runtime v0.32.2 // indirect
k8s.io/client-go v0.32.2 // indirect
k8s.io/component-base v0.32.2 // indirect
k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect
k8s.io/kubectl v0.32.2 // indirect
k8s.io/utils v0.0.0-20241210054802-24370beab758 // indirect
modernc.org/libc v1.61.13 // indirect
modernc.org/mathutil v1.7.1 // indirect
modernc.org/memory v1.8.2 // indirect
modernc.org/sqlite v1.35.0 // indirect
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
sigs.k8s.io/kustomize/api v0.19.0 // indirect
sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.5.0 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,52 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package options
import (
"context"
"io"
)
type CommonOptions struct {
Output io.Writer
Context context.Context
}
type CommonOption func(opts *CommonOptions)
func NewCommonOptions(opts ...CommonOption) *CommonOptions {
o := &CommonOptions{}
for _, f := range opts {
f(o)
}
return o
}
func WithOutput(out io.Writer) CommonOption {
return func(opts *CommonOptions) {
opts.Output = out
}
}
func WithContext(ctx context.Context) CommonOption {
return func(opts *CommonOptions) {
opts.Context = ctx
}
}

View File

@ -0,0 +1,12 @@
package check
import "github.com/falcosecurity/plugins/build/registry/pkg/registry"
// DoCheck loads the registry.yaml file from disk and validates it.
func DoCheck(fileName string) error {
registry, err := registry.LoadRegistryFromFile(fileName)
if err != nil {
return err
}
return registry.Validate()
}

View File

@ -0,0 +1,28 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package common
const (
RulesArtifactSuffix = "-rules"
// EngineVersionKey is the name given to all the engine requirements.
// The same name used by Falco when outputting the engine version.
EngineVersionKey = "engine_version_semver"
// PluginAPIVersion is the name givet to the plugin api version requirements.
// The same name used by Falco when outputting the plugin api version
PluginAPIVersion = "plugin_api_version"
)

View File

@ -0,0 +1,99 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package common
import (
"archive/tar"
"compress/gzip"
"errors"
"fmt"
"io"
"os"
"path/filepath"
"strings"
)
// ExtractTarGz extracts a *.tar.gz compressed archive and moves its content to destDir.
// Returns a slice containing the full path of the extracted files.
func ExtractTarGz(fileName, destDir string) ([]string, error) {
var files []string
gzipStream, err := os.Open(fileName)
if err != nil {
return nil, fmt.Errorf("unable to open file %q: %w", fileName, err)
}
uncompressedStream, err := gzip.NewReader(gzipStream)
if err != nil {
return nil, err
}
tarReader := tar.NewReader(uncompressedStream)
for {
header, err := tarReader.Next()
if errors.Is(err, io.EOF) {
break
}
if err != nil {
return nil, err
}
switch header.Typeflag {
case tar.TypeDir:
return nil, fmt.Errorf("unexepected dir inside the archive, expected to find only files without any tree structure")
case tar.TypeReg, tar.TypeSymlink:
f := filepath.Join(destDir, filepath.Clean(header.Name))
if !strings.HasPrefix(f, filepath.Clean(destDir)+string(os.PathSeparator)) {
return nil, fmt.Errorf("illegal file path: %q", f)
}
outFile, err := os.Create(filepath.Clean(f))
if err != nil {
return nil, err
}
if err = copyInChunks(outFile, tarReader); err != nil {
return nil, err
}
if err = outFile.Close(); err != nil {
return nil, err
}
files = append(files, f)
default:
return nil, fmt.Errorf("extractTarGz: uknown type: %b in %s", header.Typeflag, header.Name)
}
}
return files, nil
}
func copyInChunks(dst io.Writer, src io.Reader) error {
for {
_, err := io.CopyN(dst, src, 1024)
if err != nil {
if errors.Is(err, io.EOF) {
break
}
return err
}
}
return nil
}

View File

@ -0,0 +1,30 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package distribution_test
import (
"testing"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
func TestDistribution(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Distribution Suite")
}

View File

@ -0,0 +1,190 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package distribution
import (
"context"
"errors"
"fmt"
"os"
"path/filepath"
"strings"
"github.com/falcosecurity/plugins/build/registry/pkg/common"
"github.com/falcosecurity/falcoctl/pkg/index/index"
falcoctloci "github.com/falcosecurity/falcoctl/pkg/oci"
"github.com/falcosecurity/falcoctl/pkg/oci/authn"
"github.com/falcosecurity/plugins/build/registry/pkg/oci"
"github.com/falcosecurity/plugins/build/registry/pkg/registry"
"oras.land/oras-go/v2/errdef"
"oras.land/oras-go/v2/registry/remote"
"oras.land/oras-go/v2/registry/remote/auth"
)
// Define our conventions.
const (
GHOrg = "falcosecurity"
)
func PluginToIndexEntry(p registry.Plugin, registry, repo string) *index.Entry {
return &index.Entry{
Name: p.Name,
Type: string(falcoctloci.Plugin),
Registry: registry,
Signature: p.Signature,
Repository: repo,
Description: p.Description,
Home: p.URL,
Keywords: appendIfNotPresent(p.Keywords, p.Name),
License: p.License,
Maintainers: p.Maintainers,
Sources: []string{p.URL},
}
}
func PluginRulesToIndexEntry(p registry.Plugin, registry, repo string) *index.Entry {
return &index.Entry{
Name: p.Name + common.RulesArtifactSuffix,
Type: string(falcoctloci.Rulesfile),
Registry: registry,
Signature: p.Signature,
Repository: repo,
Description: p.Description,
Home: p.URL,
Keywords: appendIfNotPresent(p.Keywords, p.Name+common.RulesArtifactSuffix),
License: p.License,
Maintainers: p.Maintainers,
Sources: []string{p.RulesURL},
}
}
func upsertIndex(r *registry.Registry, ociArtifacts map[string]string, indexPath string) error {
i := index.New(GHOrg)
if err := i.Read(indexPath); err != nil {
return err
}
for _, p := range r.Plugins {
// If the plugins is reserved than we just skip it.
if p.Reserved {
continue
}
// We only publish falcosecurity artifacts that have been uploaded to the repo.
if refPlugin, ok := ociArtifacts[p.Name]; ok {
tokens := strings.Split(refPlugin, "/")
ociRegistry := tokens[0]
ociRepo := filepath.Join(tokens[1:]...)
i.Upsert(PluginToIndexEntry(p, ociRegistry, ociRepo))
}
if refRulesfile, ok := ociArtifacts[p.Name+common.RulesArtifactSuffix]; ok {
tokens := strings.Split(refRulesfile, "/")
ociRegistry := tokens[0]
ociRepo := filepath.Join(tokens[1:]...)
i.Upsert(PluginRulesToIndexEntry(p, ociRegistry, ociRepo))
}
}
return i.Write(indexPath)
}
func DoUpdateIndex(registryFile, indexFile string) error {
var user, reg string
var found bool
if user, found = os.LookupEnv(oci.RegistryUser); !found {
return fmt.Errorf("environment variable with key %q not found, please set it before running this tool", oci.RegistryUser)
}
if reg, found = os.LookupEnv(oci.RegistryOCI); !found {
return fmt.Errorf("environment variable with key %q not found, please set it before running this tool", oci.RegistryOCI)
}
registryEntries, err := registry.LoadRegistryFromFile(registryFile)
if err != nil {
return err
}
ociEntries, err := ociRepos(registryEntries, reg, user)
if err != nil {
return err
}
if err := registryEntries.Validate(); err != nil {
return err
}
return upsertIndex(registryEntries, ociEntries, indexFile)
}
func ociRepos(registryEntries *registry.Registry, reg, user string) (map[string]string, error) {
ociClient := authn.NewClient(authn.WithCredentials(&auth.EmptyCredential))
ociEntries := make(map[string]string)
for _, entry := range registryEntries.Plugins {
if err := ociRepo(ociEntries, ociClient, oci.PluginNamespace, reg, user, entry.Name); err != nil {
return nil, err
}
if entry.RulesURL != "" {
if err := ociRepo(ociEntries, ociClient, oci.RulesfileNamespace, reg, user, entry.Name); err != nil {
return nil, err
}
}
}
return ociEntries, nil
}
func ociRepo(ociEntries map[string]string, client remote.Client, ociRepoNamespace, reg, user, artifactName string) error {
ref := filepath.Join(reg, user, ociRepoNamespace, artifactName)
if ociRepoNamespace == oci.RulesfileNamespace {
artifactName = artifactName + common.RulesArtifactSuffix
}
repo, err := remote.NewRepository(ref)
if err != nil {
return fmt.Errorf("unable to create repo for ref %q: %w", ref, err)
}
repo.Client = client
_, _, err = repo.FetchReference(context.Background(), ref+":latest")
if err != nil && (errors.Is(err, errdef.ErrNotFound) || strings.Contains(err.Error(), "requested access to the resource is denied")) {
return nil
}
if err != nil {
return fmt.Errorf("unable to fetch reference for %q: %w", ref+":latest", err)
}
ociEntries[artifactName] = ref
return nil
}
// Add new item to a slice if not present.
func appendIfNotPresent(keywords []string, kw string) []string {
// If the keyword already exist do nothing.
for i := range keywords {
if keywords[i] == kw {
return keywords
}
}
// Add the keyword
return append(keywords, kw)
}

View File

@ -0,0 +1,62 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package distribution_test
import (
"reflect"
"testing"
"github.com/falcosecurity/falcoctl/pkg/index/index"
"github.com/falcosecurity/plugins/build/registry/pkg/distribution"
"github.com/falcosecurity/plugins/build/registry/pkg/registry"
)
func TestPluginToIndexEntrySignature(t *testing.T) {
t.Parallel()
signature := &index.Signature{
Cosign: &index.CosignSignature{},
}
expected := signature
p := registry.Plugin{Signature: signature}
entry := distribution.PluginToIndexEntry(p, "", "")
if !reflect.DeepEqual(entry.Signature, expected) {
t.Fatalf("Index entry signature: expected %#v, got %v", expected, entry.Signature)
}
}
func TestPluginRulesToIndexEntrySignature(t *testing.T) {
t.Parallel()
signature := &index.Signature{
Cosign: &index.CosignSignature{},
}
expected := signature
p := registry.Plugin{Signature: signature}
entry := distribution.PluginRulesToIndexEntry(p, "", "")
if !reflect.DeepEqual(entry.Signature, expected) {
t.Fatalf("Index entry signature: expected %#v, got %v", expected, entry.Signature)
}
}

View File

@ -0,0 +1,86 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package distribution_test
import (
"os"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/falcosecurity/plugins/build/registry/pkg/distribution"
)
const (
indexFile = "testdata/index.yaml"
wrongIndexFile = "testdata/wrong-index.yaml"
registryFile = "testdata/registry.yaml"
wrongRegistryFile = "testdata/wrong-registry.yaml"
registryUser = "falcosecurity"
registryName = "ghcr.io"
)
var _ = Describe("Update index", func() {
var (
err error
)
Context("with registry file", func() {
BeforeEach(func() {
os.Setenv("REGISTRY_USER", registryUser)
os.Setenv("REGISTRY", registryName)
})
Context("with index file", func() {
BeforeEach(func() {
err = distribution.DoUpdateIndex(registryFile, indexFile)
})
It("Should not fail", func() {
Expect(err).To(BeNil())
})
})
Context("without index file", func() {
BeforeEach(func() {
err = distribution.DoUpdateIndex(registryFile, wrongIndexFile)
})
It("Should fail", func() {
Expect(err).ToNot(BeNil())
})
})
})
Context("without registry file", func() {
BeforeEach(func() {
os.Setenv("REGISTRY_USER", registryUser)
os.Setenv("REGISTRY", registryName)
})
Context("with index file", func() {
BeforeEach(func() {
err = distribution.DoUpdateIndex(wrongRegistryFile, indexFile)
})
It("Should fail", func() {
Expect(err).ToNot(BeNil())
})
})
Context("without index file", func() {
BeforeEach(func() {
err = distribution.DoUpdateIndex(wrongRegistryFile, wrongIndexFile)
})
It("Should fail", func() {
Expect(err).ToNot(BeNil())
})
})
})
})

View File

@ -0,0 +1,247 @@
- name: application-rules
type: rulesfile
registry: ghcr.io
repository: falcosecurity/rules/application-rules
description: Application rules
home: https://github.com/falcosecurity/rules/blob/main/rules/application_rules.yaml
keywords:
- application-rules
license: apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/rules/blob/main/rules/application_rules.yaml
- name: cloudtrail
type: plugin
registry: ghcr.io
repository: falcosecurity/plugins/plugin/cloudtrail
description: Reads Cloudtrail JSON logs from files/S3 and injects as events
home: https://github.com/falcosecurity/plugins/tree/main/plugins/cloudtrail
keywords:
- audit
- user-activity
- api-usage
- aws
- cloudtrail
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/cloudtrail
- name: cloudtrail-rules
type: rulesfile
registry: ghcr.io
repository: falcosecurity/plugins/ruleset/cloudtrail
description: Reads Cloudtrail JSON logs from files/S3 and injects as events
home: https://github.com/falcosecurity/plugins/tree/main/plugins/cloudtrail
keywords:
- audit
- user-activity
- api-usage
- aws
- cloudtrail-rules
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/cloudtrail/rules
- name: dummy
type: plugin
registry: ghcr.io
repository: falcosecurity/plugins/plugin/dummy
description: Reference plugin used to document interface
home: https://github.com/falcosecurity/plugins/tree/main/plugins/dummy
keywords:
- dummy
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/dummy
- name: dummy_c
type: plugin
registry: ghcr.io
repository: falcosecurity/plugins/plugin/dummy_c
description: Like dummy, but written in C++
home: https://github.com/falcosecurity/plugins/tree/main/plugins/dummy_c
keywords:
- dummy_c
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/dummy_c
- name: falco-rules
type: rulesfile
registry: ghcr.io
repository: falcosecurity/rules/falco-rules
description: Falco rules that are loaded by default
home: https://github.com/falcosecurity/rules/blob/main/rules/falco_rules.yaml
keywords:
- falco-rules
license: apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/rules/blob/main/rules/falco_rules.yaml
- name: github
type: plugin
registry: ghcr.io
repository: falcosecurity/plugins/plugin/github
description: Github Webhook Events
home: https://github.com/falcosecurity/plugins/tree/main/plugins/github
keywords:
- audit
- log-events
- webhook
- github-activity
- github
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/github
- name: github-rules
type: rulesfile
registry: ghcr.io
repository: falcosecurity/plugins/ruleset/github
description: Github Webhook Events
home: https://github.com/falcosecurity/plugins/tree/main/plugins/github
keywords:
- audit
- log-events
- webhook
- github-activity
- github
- github-rules
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/github/rules
- name: json
type: plugin
registry: ghcr.io
repository: falcosecurity/plugins/plugin/json
description: Extract values from any JSON payload
home: https://github.com/falcosecurity/plugins/tree/main/plugins/json
keywords:
- json-events
- json-payload
- extractor
- json
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/json
- name: k8saudit
type: plugin
registry: ghcr.io
repository: falcosecurity/plugins/plugin/k8saudit
description: Read Kubernetes Audit Events and monitor Kubernetes Clusters
home: https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit
keywords:
- audit
- audit-log
- audit-events
- kubernetes
- k8saudit
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit
- name: k8saudit-eks
type: plugin
registry: ghcr.io
repository: falcosecurity/plugins/plugin/k8saudit-eks
description: Read Kubernetes Audit Events from AWS EKS Clusters
home: https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-eks
keywords:
- audit
- audit-log
- audit-events
- kubernetes
- eks
- aws
- k8saudit-eks
license: Apache-2.0
maintainers: []
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-eks
- name: k8saudit-rules
type: rulesfile
registry: ghcr.io
repository: falcosecurity/plugins/ruleset/k8saudit
description: Read Kubernetes Audit Events and monitor Kubernetes Clusters
home: https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit
keywords:
- audit
- audit-log
- audit-events
- kubernetes
- k8saudit-rules
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit/rules
- name: okta
type: plugin
registry: ghcr.io
repository: falcosecurity/plugins/plugin/okta
signature:
cosign:
certificate-oidc-issuer: https://token.actions.githubusercontent.com
certificate-oidc-issuer-regexp: ""
certificate-identity: ""
certificate-identity-regexp: https://github.com/LucaGuerra/cool-falco-ruleset/
certificate-github-workflow: ""
description: Okta Log Events
home: https://github.com/falcosecurity/plugins/tree/main/plugins/okta
keywords:
- audit
- log-events
- okta
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/okta
- name: okta-rules
type: rulesfile
registry: ghcr.io
repository: falcosecurity/plugins/ruleset/okta
signature:
cosign:
certificate-oidc-issuer: https://token.actions.githubusercontent.com
certificate-oidc-issuer-regexp: ""
certificate-identity: ""
certificate-identity-regexp: https://github.com/LucaGuerra/cool-falco-ruleset/
certificate-github-workflow: ""
description: Okta Log Events
home: https://github.com/falcosecurity/plugins/tree/main/plugins/okta
keywords:
- audit
- log-events
- okta
- okta-rules
license: Apache-2.0
maintainers:
- email: cncf-falco-dev@lists.cncf.io
name: The Falco Authors
sources:
- https://github.com/falcosecurity/plugins/tree/main/plugins/okta/rules

View File

@ -0,0 +1,271 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2023 The Falco Authors.
#
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# The list of the data sources not allowed in plugins, since they are already
# used in Falco.
reserved_sources: ["syscall", "internal", "plugins"]
# The list of plugins officially recognized by the Falcosecurity organization.
# Registering your plugin here is required to reserve a given name, source, or id.
#
# License IDs refer to the SPDX License List at https://spdx.org/licenses
plugins:
- name: k8saudit
description: Read Kubernetes Audit Events and monitor Kubernetes Clusters
authors: The Falco Authors
contact: https://falco.org/community
maintainers:
- name: The Falco Authors
email: cncf-falco-dev@lists.cncf.io
keywords:
- audit
- audit-log
- audit-events
- kubernetes
url: https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit
rules_url: https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit/rules
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 1
source: k8s_audit
extraction:
supported: true
- name: cloudtrail
description: Reads Cloudtrail JSON logs from files/S3 and injects as events
authors: The Falco Authors
contact: https://falco.org/community
maintainers:
- name: The Falco Authors
email: cncf-falco-dev@lists.cncf.io
keywords:
- audit
- user-activity
- api-usage
- aws
url: https://github.com/falcosecurity/plugins/tree/main/plugins/cloudtrail
rules_url: https://github.com/falcosecurity/plugins/tree/main/plugins/cloudtrail/rules
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 2
source: aws_cloudtrail
extraction:
supported: true
- name: json
description: Extract values from any JSON payload
authors: The Falco Authors
contact: https://falco.org/community
maintainers:
- name: The Falco Authors
email: cncf-falco-dev@lists.cncf.io
keywords:
- json-events
- json-payload
- extractor
url: https://github.com/falcosecurity/plugins/tree/main/plugins/json
license: Apache-2.0
capabilities:
extraction:
supported: true
- name: dummy
description: Reference plugin used to document interface
authors: The Falco Authors
contact: https://falco.org/community
maintainers:
- name: The Falco Authors
email: cncf-falco-dev@lists.cncf.io
url: https://github.com/falcosecurity/plugins/tree/main/plugins/dummy
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 3
source: dummy
extraction:
supported: true
- name: dummy_c
description: Like dummy, but written in C++
authors: The Falco Authors
contact: https://falco.org/community
maintainers:
- name: The Falco Authors
email: cncf-falco-dev@lists.cncf.io
url: https://github.com/falcosecurity/plugins/tree/main/plugins/dummy_c
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 4
source: dummy_c
extraction:
supported: true
- name: docker
description: Docker Events
authors: Thomas Labarussias
contact: https://github.com/Issif
maintainers:
- name: Thomas Labarussias
email: issif_github@gadz.org
keywords:
- docker-events
url: https://github.com/Issif/docker-plugin
rules_url: https://github.com/Issif/docker-plugin/tree/main/rules
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 5
source: docker
extraction:
supported: true
- name: seccompagent
description: Seccomp Agent Events
authors: Alban Crequy
contact: https://github.com/kinvolk/seccompagent
url: https://github.com/kinvolk/seccompagent
keywords:
- seccomp
- kinvolk
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 6
source: seccompagent
extraction:
supported: true
- name: okta
description: Okta Log Events
authors: The Falco Authors
contact: https://falco.org/community
maintainers:
- name: The Falco Authors
email: cncf-falco-dev@lists.cncf.io
keywords:
- audit
- log-events
- okta
url: https://github.com/falcosecurity/plugins/tree/main/plugins/okta
rules_url: https://github.com/falcosecurity/plugins/tree/main/plugins/okta/rules
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 7
source: okta
extraction:
supported: true
signature:
cosign:
certificate-oidc-issuer: https://token.actions.githubusercontent.com
certificate-identity-regexp: https://github.com/LucaGuerra/cool-falco-ruleset/
- name: github
description: Github Webhook Events
authors: The Falco Authors
contact: https://falco.org/community
maintainers:
- name: The Falco Authors
email: cncf-falco-dev@lists.cncf.io
keywords:
- audit
- log-events
- webhook
- github-activity
- github
url: https://github.com/falcosecurity/plugins/tree/main/plugins/github
rules_url: https://github.com/falcosecurity/plugins/tree/main/plugins/github/rules
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 8
source: github
extraction:
supported: true
- name: k8saudit-eks
description: Read Kubernetes Audit Events from AWS EKS Clusters
authors: The Falco Authors
contact: https://falco.org/community
url: https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit-eks
rules_url: https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit/rules
license: Apache-2.0
keywords:
- audit
- audit-log
- audit-events
- kubernetes
- eks
- aws
capabilities:
sourcing:
supported: true
id: 9
source: k8s_audit
extraction:
supported: true
- name: nomad
description: Read Hashicorp Nomad Events Stream
authors: Alberto Llamas
contact: https://github.com/albertollamaso/nomad-plugin/issues
maintainers:
- name: Alberto Llamas
keywords:
- audit
- audit-events
- nomad
url: https://github.com/albertollamaso/nomad-plugin/tree/main
rules_url: https://github.com/albertollamaso/nomad-plugin/tree/main/rules
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 10
source: nomad
extraction:
supported: true
- name: dnscollector
description: DNS Collector Events
authors: Daniel Moloney
contact: https://github.com/SysdigDan/dnscollector-falco-plugin/issues
maintainers:
- name: Daniel Moloney
keywords:
- audit
- log-events
- dns
url: https://github.com/SysdigDan/dnscollector-falco-plugin
rules_url: https://github.com/SysdigDan/dnscollector-falco-plugin/tree/master/rules
license: Apache-2.0
capabilities:
sourcing:
supported: true
id: 11
source: dnscollector
extraction:
supported: true
- name: test
description: This ID is reserved for source plugin development. Any plugin author can use this ID, but authors can expect events from other developers with this ID. After development is complete, the author should request an actual ID
reserved: true
capabilities:
sourcing:
supported: true
id: 999
source: test

View File

@ -0,0 +1,128 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package oci
import (
"errors"
"fmt"
"os"
"strings"
"github.com/falcosecurity/plugin-sdk-go/pkg/loader"
"github.com/falcosecurity/plugin-sdk-go/pkg/sdk/plugins"
"github.com/falcosecurity/falcoctl/pkg/oci"
"github.com/falcosecurity/plugins/build/registry/pkg/common"
)
// rulesFileConfig generates the artifact configuration for a rulesfile starting form the tar.gz archive,
// its name and version.
func rulesfileConfig(name, version, filePath string) (*oci.ArtifactConfig, error) {
// Create temp dir.
tmpDir, err := os.MkdirTemp("", "registry-oci-")
if err != nil {
return nil, fmt.Errorf("unable to create temporary dir while preparing to extract rulesfile %q: %v", filePath, err)
}
defer os.RemoveAll(tmpDir)
files, err := common.ExtractTarGz(filePath, tmpDir)
if err != nil {
return nil, err
}
cfg := &oci.ArtifactConfig{
Name: name,
Version: version,
Dependencies: nil,
Requirements: nil,
}
for _, file := range files {
// Get the requirements for the given file.
req, err := rulesfileRequirement(file)
if err != nil && !errors.Is(err, ErrReqNotFound) {
return nil, err
}
// If found add it to the requirements list.
if err == nil {
_ = cfg.SetRequirement(req.Name, req.Version)
}
deps, err := rulesfileDependencies(file)
if err != nil && !errors.Is(err, ErrDepNotFound) {
return nil, err
}
// If found add it to the dependencies list.
if err == nil {
for _, d := range deps {
_ = cfg.SetDependency(d.Name, d.Version, d.Alternatives)
}
}
}
if cfg.Dependencies == nil || cfg.Requirements == nil {
return nil, fmt.Errorf("no dependencies or requirements found for rulesfile %q", filePath)
}
return cfg, nil
}
func pluginConfig(name, version string, pluginInfo *plugins.Info) (*oci.ArtifactConfig, error) {
// Check that the name we got from the registry.yaml is the same as the embedded one in the plugin at build time.
if name != pluginInfo.Name {
return nil, fmt.Errorf("mismatch between name in registry.yaml (%q) and name found in plugin shared object (%q)", name, pluginInfo.Name)
}
cfg := &oci.ArtifactConfig{
Name: name,
Version: version,
Dependencies: nil,
Requirements: nil,
}
_ = cfg.SetRequirement(common.PluginAPIVersion, pluginInfo.RequiredAPIVersion)
return cfg, nil
}
func pluginInfo(filePath string) (*plugins.Info, error) {
// Create temp dir.
tmpDir, err := os.MkdirTemp("", "registry-oci-")
if err != nil {
return nil, fmt.Errorf("unable to create temporary dir while preparing to extract plugin %q: %v", filePath, err)
}
defer os.RemoveAll(tmpDir)
files, err := common.ExtractTarGz(filePath, tmpDir)
if err != nil {
return nil, err
}
for _, file := range files {
// skip files that are not a shared library such as README files.
if !strings.HasSuffix(file, ".so") {
continue
}
// Get the plugin info.
plugin, err := loader.NewPlugin(file)
if err != nil {
return nil, fmt.Errorf("unable to open plugin %q: %w", file, err)
}
return plugin.Info(), nil
}
return nil, fmt.Errorf("no plugin found in archive %q", filePath)
}

View File

@ -0,0 +1,48 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
Copyright (C) 2022 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package oci
const (
PluginNamespace = "plugins/plugin"
RulesfileNamespace = "plugins/ruleset"
RegistryToken = "REGISTRY_TOKEN"
RegistryUser = "REGISTRY_USER"
RegistryOCI = "REGISTRY"
RepoGithub = "REPO_GITHUB"
FalcoAuthors = "The Falco Authors"
PluginsRepo = "https://github.com/falcosecurity/plugins"
archiveSuffix = ".tar.gz"
amd64Platform = "linux/amd64"
arm64Platform = "linux/arm64"
)

View File

@ -0,0 +1,83 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package oci
import (
"bufio"
"errors"
"fmt"
"os"
"strings"
"github.com/falcosecurity/falcoctl/pkg/oci"
"gopkg.in/yaml.v3"
)
const depsKey = "- required_plugin_versions"
// ErrDepNotFound error when the dependencies are not found in the rulesfile.
var ErrDepNotFound = errors.New("dependencies not found")
// rulesfileDependencies given a rulesfile in yaml format it scans it nad extracts its dependencies.
func rulesfileDependencies(fileName string) ([]oci.ArtifactDependency, error) {
var start bool
var buf []byte
var deps []oci.ArtifactDependency
// Open the file.
file, err := os.Open(fileName)
if err != nil {
return nil, fmt.Errorf("unable to open file %q: %v", fileName, file)
}
// Prepare the file to be read line by line.
fileScanner := bufio.NewScanner(file)
fileScanner.Split(bufio.ScanLines)
// Is appended to each line when inserted in the buffer.
newLine := []byte("\n")
// Falco rulesfiles are a list of dictionaries. We only want the "required plugin versions" by the ruleset. We do
// not want to load all the file in memory, so we scan it line by line. When we reach the interested section we save
// each line in a buffer, and after that we unmarshal it to a proper data structure.
for fileScanner.Scan() {
// If we have already found the section of interest, and we get a new item of the list then we stop.
if start {
if strings.HasPrefix(fileScanner.Text(), "-") {
break
} else {
buf = append(buf, fileScanner.Bytes()...)
buf = append(buf, newLine...)
}
} else {
if strings.HasPrefix(fileScanner.Text(), depsKey) {
start = true
}
}
}
if !start {
return nil, fmt.Errorf("dependencies for rulesfile %q: %w", fileName, ErrDepNotFound)
}
if err := yaml.Unmarshal(buf, &deps); err != nil {
return nil, fmt.Errorf("unable to unmarshal the required plugins versions: %w", err)
}
return deps, nil
}

View File

@ -0,0 +1,423 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package oci
import (
"context"
"fmt"
"os"
"path/filepath"
"regexp"
"runtime"
"strings"
"github.com/falcosecurity/plugin-sdk-go/pkg/sdk/plugins"
"github.com/falcosecurity/plugins/build/registry/pkg/common"
"github.com/blang/semver"
"github.com/falcosecurity/falcoctl/pkg/oci"
"github.com/falcosecurity/falcoctl/pkg/oci/authn"
ocipusher "github.com/falcosecurity/falcoctl/pkg/oci/pusher"
"github.com/falcosecurity/plugins/build/registry/pkg/registry"
"k8s.io/klog/v2"
"oras.land/oras-go/v2/registry/remote"
"oras.land/oras-go/v2/registry/remote/auth"
)
type config struct {
// registryToken authentication token for the OCI registry.
registryToken string
// registryUser user used to interact with the OCI registry.
registryUser string
// registryHost hostname of the OCI registry.
registryHost string
// pluginsRepo the Ref of the git repository associated with the OCI artifacts.
pluginsRepo string
}
func lookupConfig() (*config, error) {
var found bool
cfg := &config{}
if cfg.registryToken, found = os.LookupEnv(RegistryToken); !found {
return nil, fmt.Errorf("environment variable with key %q not found, please set it before running this tool", RegistryToken)
}
if cfg.registryUser, found = os.LookupEnv(RegistryUser); !found {
return nil, fmt.Errorf("environment variable with key %q not found, please set it before running this tool", RegistryUser)
}
if cfg.registryHost, found = os.LookupEnv(RegistryOCI); !found {
return nil, fmt.Errorf("environment variable with key %q not found, please set it before running this tool", RegistryOCI)
}
if cfg.pluginsRepo, found = os.LookupEnv(RepoGithub); !found {
return nil, fmt.Errorf("environment variable with key %q not found, please set it before running this tool", RepoGithub)
}
return cfg, nil
}
// refFromPluginEntry returns an OCI reference for a plugin entry in the registry.yaml file.
func refFromPluginEntry(cfg *config, plugin *registry.Plugin, rulesFile bool) string {
var namespace string
// If the RulesURL field is set then the artifact is a rulesfile, otherwise a plugin.
if rulesFile {
namespace = RulesfileNamespace
} else {
namespace = PluginNamespace
}
// Build and return the artifact reference.
return filepath.Join(cfg.registryHost, cfg.registryUser, namespace, plugin.Name)
}
func currentPlatform() string {
return fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH)
}
// DoUpdateOCIRegistry publishes new plugins with related rules to be released.
// For each plugin in the registry index, it looks for new versions, since the latest version fetched from the remote OCI
// repository, as tags on the local Git repository.
// For each new version, it downloads the related plugin and rule set from the Falco distribution and updates the OCI
// repository accordingly.
func DoUpdateOCIRegistry(ctx context.Context, registryFile, pluginsAMD4, pluginsARM64, rulesfiles, devTag string) ([]registry.ArtifactPushMetadata, error) {
var (
cfg *config
err error
)
// Load the configuration from env variables.
if cfg, err = lookupConfig(); err != nil {
return nil, err
}
cred := &auth.Credential{
Username: cfg.registryUser,
Password: cfg.registryToken,
}
ociClient := authn.NewClient(authn.WithCredentials(cred))
reg, err := registry.LoadRegistryFromFile(registryFile)
if err != nil {
return nil, fmt.Errorf("an error occurred while loading registry entries from file %q: %v", registryFile, err)
}
artifacts := []registry.ArtifactPushMetadata{}
// For each plugin in the registry index, look for new ones to be released, and publish them.
for _, plugin := range reg.Plugins {
pa, ra, err := handleArtifact(ctx, cfg, &plugin, ociClient, pluginsAMD4, pluginsARM64, rulesfiles, devTag)
if err != nil {
return artifacts, err
}
artifacts = append(artifacts, pa...)
artifacts = append(artifacts, ra...)
// Clean up
if err := os.RemoveAll(plugin.Name); err != nil {
return artifacts, fmt.Errorf("unable to remove folder %q: %v", plugin.Name, err)
}
}
return artifacts, nil
}
func tagsFromVersion(version *semver.Version) []string {
var tags []string
// If we are not handling a release candidate then add floating tags.
if len(version.Pre) == 0 {
majorVer := fmt.Sprintf("%d", version.Major)
minorVer := fmt.Sprintf("%d.%d", version.Major, version.Minor)
fullVer := version.String()
tags = append(tags, "latest", majorVer, minorVer, fullVer)
} else {
tags = append(tags, version.String())
}
return tags
}
// handleArtifact it pushes artifacts related to a given plugin in the registry.yaml file.
// It could happen that for a given plugin no artifacts such as builds and rulesets are available.
// Consider the case when we release a single plugin.
func handleArtifact(ctx context.Context, cfg *config, plugin *registry.Plugin, ociClient remote.Client,
pluginsAMD64, pluginsARM64, rulesfiles, devTag string) ([]registry.ArtifactPushMetadata, []registry.ArtifactPushMetadata, error) {
// Filter out plugins that are not owned by falcosecurity.
if !strings.HasPrefix(plugin.URL, PluginsRepo) {
sepString := strings.Repeat("#", 15)
klog.Info("%s %s %s", sepString, plugin.Name, sepString)
klog.Infof("skipping plugin %q with authors %q: it is not maintained by %q",
plugin.Name, plugin.Authors, FalcoAuthors)
return nil, nil, nil
}
// Handle the plugin.
newPluginArtifacts, err := handlePlugin(ctx, cfg, plugin, ociClient, pluginsAMD64, pluginsARM64, devTag)
if err != nil {
return nil, nil, err
}
// Handle the rules.
newRuleArtifacts := []registry.ArtifactPushMetadata{}
if plugin.RulesURL != "" {
newRuleArtifacts, err = handleRule(ctx, cfg, plugin, ociClient, rulesfiles, devTag)
if err != nil {
return nil, nil, err
}
}
return newPluginArtifacts, newRuleArtifacts, nil
}
// handlePlugin for a given plugin it checks if there exists build artifacts in the given folders, and
// if found packs them as an OCI artifact and pushes them to the registry.
func handlePlugin(ctx context.Context, cfg *config, plugin *registry.Plugin, ociClient remote.Client,
pluginsAMD64, pluginsARM64 string, devTag string) ([]registry.ArtifactPushMetadata, error) {
var configLayer *oci.ArtifactConfig
var err error
var filepaths, platforms, tags []string
var version string
var infoP *plugins.Info
// Build the reference for the artifact.
ref := refFromPluginEntry(cfg, plugin, false)
// Metadata of the plugins OCI artifacts push.
metadata := []registry.ArtifactPushMetadata{}
// Get the name of the build object for the amd64 architecture.
amd64Build, err := buildName(plugin.Name, pluginsAMD64, false)
if err != nil {
return nil, err
}
if amd64Build != "" {
if infoP, err = pluginInfo(filepath.Join(pluginsAMD64, amd64Build)); err != nil {
return nil, err
}
// Check that the plugin has the same name as the one we got from the registry.yaml.
// If not, we skip it. It could happen that plugins share the same prefix, example k8saudit, k8saudit-gke.
if infoP.Name != plugin.Name {
// buildName func returned a wrong path starting from the plugin name found in registry.yaml.
klog.Warningf("skipping plugin since there is a mismatch in plugin name (%q) and plugin info name(%q)", plugin.Name, infoP.Name)
return nil, nil
}
filepaths = append(filepaths, filepath.Join(pluginsAMD64, amd64Build))
platforms = append(platforms, amd64Platform)
}
// Get the name of the build object for the arm64 architecture.
arm64Build, err := buildName(plugin.Name, pluginsARM64, false)
if err != nil {
return nil, err
}
if arm64Build != "" {
filepaths = append(filepaths, filepath.Join(pluginsARM64, arm64Build))
platforms = append(platforms, arm64Platform)
}
if arm64Build == "" && amd64Build == "" {
return nil, nil
}
sepString := strings.Repeat("#", 15)
klog.Infof("%s %s %s", sepString, plugin.Name, sepString)
// Extract version from build object.
klog.Infof("generating plugin's config layer")
version, tags, err = versionAndTags(plugin.Name, filepath.Base(filepaths[0]), devTag)
if err != nil {
return nil, err
}
if infoP == nil {
klog.Warningf("no config layer generated for plugin %q: the plugins has not been build for the current platform %q", plugin.Name, currentPlatform())
return nil, nil
}
configLayer, err = pluginConfig(plugin.Name, version, infoP)
if err != nil {
klog.Errorf("unable to generate config file: %v", err)
return nil, err
}
klog.Infof("pushing plugin to remote repo with ref %q and tags %q", ref, tags)
pusher := ocipusher.NewPusher(ociClient, false, nil)
res, err := pusher.Push(ctx, oci.Plugin, ref,
ocipusher.WithTags(tags...),
ocipusher.WithFilepathsAndPlatforms(filepaths, platforms),
ocipusher.WithArtifactConfig(*configLayer),
ocipusher.WithAnnotationSource(cfg.pluginsRepo))
if err != nil {
return nil, fmt.Errorf("an error occurred while pushing plugin %q: %w", plugin.Name, err)
}
if res != nil {
metadata = append(metadata, registry.ArtifactPushMetadata{
registry.RepositoryMetadata{
Ref: ref,
},
registry.ArtifactMetadata{
Digest: res.RootDigest,
Tags: tags,
},
})
}
return metadata, nil
}
// handleRule for a given plugin it checks if there exists rulesfiles in the given folder, and
// if found packs them as an OCI artifact and pushes it to the registry.
func handleRule(ctx context.Context, cfg *config, plugin *registry.Plugin,
ociClient remote.Client, rulesfiles, devTag string) ([]registry.ArtifactPushMetadata, error) {
var err error
var filepaths, tags []string
var version string
// Build the reference for the artifact.
ref := refFromPluginEntry(cfg, plugin, true)
// Metadata of the plugins OCI artifacts push.
metadata := []registry.ArtifactPushMetadata{}
// Get the name of the build object for the amd64 architecture.
rulesfileBuild, err := buildName(plugin.Name, rulesfiles, true)
if err != nil {
return nil, err
}
if rulesfileBuild != "" {
filepaths = append(filepaths, filepath.Join(rulesfiles, rulesfileBuild))
} else {
return nil, nil
}
sepString := strings.Repeat("#", 15)
klog.Infof("%s %s %s", sepString, rulesfileNameFromPlugin(plugin.Name), sepString)
klog.Infof("generating rulesfile's config layer")
version, tags, err = versionAndTags(plugin.Name, filepath.Base(filepaths[0]), devTag)
if err != nil {
return nil, err
}
configLayer, err := rulesfileConfig(rulesfileNameFromPlugin(plugin.Name), version, filepaths[0])
if err != nil {
klog.Errorf("unable to generate config file: %v", err)
return nil, err
}
klog.Infof("pushing rulesfile to remote repo with ref %q and tags %q", ref, tags)
pusher := ocipusher.NewPusher(ociClient, false, nil)
res, err := pusher.Push(ctx, oci.Rulesfile, ref,
ocipusher.WithTags(tags...),
ocipusher.WithFilepaths(filepaths),
ocipusher.WithArtifactConfig(*configLayer),
ocipusher.WithAnnotationSource(cfg.pluginsRepo))
if err != nil {
return nil, fmt.Errorf("an error occurred while pushing rulesfile %q: %w", plugin.Name, err)
}
if res != nil {
metadata = append(metadata, registry.ArtifactPushMetadata{
registry.RepositoryMetadata{
Ref: ref,
},
registry.ArtifactMetadata{
Digest: res.RootDigest,
Tags: tags,
},
})
}
return metadata, nil
}
func rulesfileNameFromPlugin(name string) string {
return fmt.Sprintf("%s%s", name, common.RulesArtifactSuffix)
}
// buildName returns the name of the build object for a given object name.
// It searches in the given folder if build artifact exists that has the same
// prefix as the object. If we are searching for a rulesfiles object then, the
// rulefiles variable needs to be set to true.
func buildName(objName, dirPath string, rulesfile bool) (string, error) {
if dirPath == "" {
return "", nil
}
// Get the entries
entries, err := os.ReadDir(dirPath)
if err != nil {
return "", fmt.Errorf("unable to get build object for %q: %w", objName, err)
}
for _, entry := range entries {
name := entry.Name()
if rulesfile {
if strings.HasPrefix(name, objName+"-rules") {
return name, nil
}
} else {
if strings.HasPrefix(name, objName) && !strings.Contains(name, "rules") {
return name, nil
}
}
}
return "", nil
}
func versionAndTags(pluginName, buildName, devTag string) (string, []string, error) {
var version string
var tags []string
var err error
if strings.Contains(buildName, "-rules") {
version = strings.TrimPrefix(buildName, pluginName+"-rules-")
version = strings.TrimSuffix(version, archiveSuffix)
} else {
regexPattern := `\b-linux\S*`
regex := regexp.MustCompile(regexPattern)
// Replace all substrings starting with "linux" with an empty string
version = regex.ReplaceAllString(buildName, "")
version = strings.TrimPrefix(version, pluginName+"-")
}
if devTag != "" {
return version, append(tags, devTag), nil
}
// If not a dev version, we expect to but be semver compatible.
semVer, err := semver.Parse(version)
if err != nil {
return "", nil, fmt.Errorf("unable to parse version for %q: %w", buildName, err)
}
return version, tagsFromVersion(&semVer), nil
}

View File

@ -0,0 +1,36 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package oci_test
import (
"testing"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
const (
samplePluginRepoRef = "ghcr.io/falcosecurity/plugins/plugins/k8saudit"
sampleDigest = "sha256:454b5d97ecbb71c8b605af2028f12fc2c792e363b150b1aeeb773c802699d647"
samplePluginTag = "1.0.0"
)
func TestOCI(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "OCI Suite")
}

View File

@ -0,0 +1,37 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package oci
import (
"encoding/json"
"io"
"github.com/pkg/errors"
"github.com/falcosecurity/plugins/build/registry/pkg/registry"
)
func PrintUpdateStatus(newArtifacts registry.ArtifactsPushStatus, output io.Writer) error {
bytes, err := json.Marshal(newArtifacts)
if err != nil {
return errors.Wrap(err, "error marshaling oci registry push metadata")
}
output.Write(bytes)
return nil
}

View File

@ -0,0 +1,93 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package oci_test
import (
"bytes"
"encoding/json"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/falcosecurity/plugins/build/registry/internal/options"
"github.com/falcosecurity/plugins/build/registry/pkg/oci"
"github.com/falcosecurity/plugins/build/registry/pkg/registry"
)
var _ = Describe("Update OCI registry", func() {
var (
out *bytes.Buffer
status registry.ArtifactsPushStatus
opts *options.CommonOptions
err error
)
Context("Print update result", func() {
BeforeEach(func() {
out = new(bytes.Buffer)
opts = options.NewCommonOptions(options.WithOutput(out))
})
When("at least one artifact has been pushed to the OCI registry", func() {
BeforeEach(func() {
status = registry.ArtifactsPushStatus{
{
Repository: registry.RepositoryMetadata{
Ref: samplePluginRepoRef,
},
Artifact: registry.ArtifactMetadata{
Digest: sampleDigest,
Tags: []string{samplePluginTag}},
},
}
err = oci.PrintUpdateStatus(status, opts.Output)
})
It("should not fail", func() {
Expect(err).To(BeNil())
})
It("output should not be empty", func() {
Expect(out.String()).ToNot(BeEmpty())
})
It("output should contain a valid JSON", func() {
status = registry.ArtifactsPushStatus{}
err := json.Unmarshal(out.Bytes(), &status)
Expect(err).To(BeNil())
})
})
When("no artifacts have been pushed to the OCI registry", func() {
BeforeEach(func() {
status = registry.ArtifactsPushStatus{}
err = oci.PrintUpdateStatus(status, opts.Output)
})
It("should not fail", func() {
Expect(err).To(BeNil())
})
It("output should not be empty", func() {
Expect(out.String()).ToNot(BeEmpty())
})
It("output should contain a valid JSON", func() {
status = registry.ArtifactsPushStatus{}
err := json.Unmarshal(out.Bytes(), &status)
Expect(err).To(BeNil())
})
})
})
})

View File

@ -0,0 +1,88 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package oci
import (
"bufio"
"errors"
"fmt"
"os"
"strconv"
"strings"
"github.com/blang/semver"
"github.com/falcosecurity/falcoctl/pkg/oci"
"github.com/falcosecurity/plugins/build/registry/pkg/common"
)
const (
rulesEngineAnchor = "- required_engine_version"
)
// ErrReqNotFound error when the requirements are not found in the rulesfile.
var ErrReqNotFound = errors.New("requirements not found")
// rulesfileRequirement given a rulesfile in yaml format it scans it and extracts its requirements.
func rulesfileRequirement(filePath string) (*oci.ArtifactRequirement, error) {
var requirement string
// Open the file.
file, err := os.Open(filePath)
if err != nil {
return nil, fmt.Errorf("unable to open file %q: %v", filePath, file)
}
defer file.Close()
// Prepare the file to be read line by line.
fileScanner := bufio.NewScanner(file)
fileScanner.Split(bufio.ScanLines)
for fileScanner.Scan() {
if strings.HasPrefix(fileScanner.Text(), rulesEngineAnchor) {
requirement = fileScanner.Text()
break
}
}
if requirement == "" {
return nil, fmt.Errorf("requirements for rulesfile %q: %w", filePath, ErrReqNotFound)
}
// Split the requirement and parse the version to semVer.
// In case the requirement was expressed as a numeric value,
// we convert it to semver and treat it as minor version.
tokens := strings.Split(fileScanner.Text(), ":")
version := strings.TrimSpace(tokens[1])
reqVer, err := semver.Parse(version)
if err != nil {
minor, err := strconv.ParseUint(version, 10, 64)
if err != nil {
return nil, fmt.Errorf("unable to parse requirement %q: expected a numeric value or a valid semver string", version)
}
reqVer = semver.Version{
Major: 0,
Minor: minor,
Patch: 0,
}
}
return &oci.ArtifactRequirement{
Name: common.EngineVersionKey,
Version: reqVer.String(),
}, nil
}

View File

@ -0,0 +1,39 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2024 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package oci
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestRulesfileRequirement(t *testing.T) {
req, err := rulesfileRequirement("testdata/rules-failed-req.yaml")
assert.Error(t, err)
req, err = rulesfileRequirement("testdata/rules-numeric-req.yaml")
assert.NoError(t, err)
assert.Equal(t, "0.15.0", req.Version)
assert.Equal(t, "engine_version_semver", req.Name)
req, err = rulesfileRequirement("testdata/rules-semver-req.yaml")
assert.NoError(t, err)
assert.Equal(t, "0.31.0", req.Version)
assert.Equal(t, "engine_version_semver", req.Name)
}

View File

@ -0,0 +1 @@
- required_engine_version: test

View File

@ -0,0 +1 @@
- required_engine_version: 15

View File

@ -0,0 +1 @@
- required_engine_version: 0.31.0

View File

@ -0,0 +1,78 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package registry
import (
"io"
"gopkg.in/yaml.v2"
)
type encoder interface {
Encode(io.Writer) error
}
// Encode writes the content to a io.Writer
func (r *SourcingCapability) Encode(w io.Writer) error {
return yaml.NewEncoder(w).Encode(r)
}
// Encode writes the content to a io.Writer
func (r *ExtractionCapability) Encode(w io.Writer) error {
return yaml.NewEncoder(w).Encode(r)
}
// Encode writes the content to a io.Writer
func (r *Capabilities) Encode(w io.Writer) error {
return yaml.NewEncoder(w).Encode(r)
}
// Encode writes the content to a io.Writer
func (r *Plugin) Encode(w io.Writer) error {
return yaml.NewEncoder(w).Encode(r)
}
// Encode writes the content to a io.Writer
func (r *Registry) Encode(w io.Writer) error {
return yaml.NewEncoder(w).Encode(r)
}
// Decode fills the structure by reading from a io.Reader
func (r *SourcingCapability) Decode(w io.Reader) error {
return yaml.NewDecoder(w).Decode(r)
}
// Decode fills the structure by reading from a io.Reader
func (r *ExtractionCapability) Decode(w io.Reader) error {
return yaml.NewDecoder(w).Decode(r)
}
// Decode fills the structure by reading from a io.Reader
func (r *Capabilities) Decode(w io.Reader) error {
return yaml.NewDecoder(w).Decode(r)
}
// Decode fills the structure by reading from a io.Reader
func (r *Plugin) Decode(w io.Reader) error {
return yaml.NewDecoder(w).Decode(r)
}
// Decode fills the structure by reading from a io.Reader
func (r *Registry) Decode(w io.Reader) error {
return yaml.NewDecoder(w).Decode(r)
}

View File

@ -0,0 +1,40 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package registry
import (
"io"
"os"
)
// LoadRegistryFromFile loads the registry from a file on disk.
func LoadRegistryFromFile(fname string) (*Registry, error) {
file, err := os.Open(fname)
if err != nil {
return nil, err
}
defer file.Close()
return load(file)
}
// load reads from a io.Reader and uses the content to populate and
// return a new instance of Registry
func load(r io.Reader) (*Registry, error) {
registry := &Registry{}
return registry, registry.Decode(r)
}

View File

@ -0,0 +1,56 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package registry
import (
"bytes"
)
func encodeString(r encoder) string {
buf := bytes.Buffer{}
err := r.Encode(&buf)
if err != nil {
return "string encoding error: " + err.Error()
}
return buf.String()
}
// String implements the fmt.Stringer interface
func (r *SourcingCapability) String() string {
return encodeString(r)
}
// String implements the fmt.Stringer interface
func (r *ExtractionCapability) String() string {
return encodeString(r)
}
// String implements the fmt.Stringer interface
func (r *Capabilities) String() string {
return encodeString(r)
}
// String implements the fmt.Stringer interface
func (r *Plugin) String() string {
return encodeString(r)
}
// String implements the fmt.Stringer interface
func (r *Registry) String() string {
return encodeString(r)
}

View File

@ -0,0 +1,83 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package registry
import (
"github.com/falcosecurity/falcoctl/pkg/index/index"
)
// MaxPublicID represents the max allowed value for plublic plugin IDs,
// see https://github.com/falcosecurity/plugins/blob/main/docs/plugin-ids.md
const MaxPublicID = 1<<30 - 1 // 1073741823 is the public block upper limit
type SourcingCapability struct {
Supported bool `yaml:"supported"`
ID uint `yaml:"id"`
Source string `yaml:"source"`
}
type ExtractionCapability struct {
Supported bool `yaml:"supported"`
Sources []string `yaml:"sources"`
}
type Capabilities struct {
Sourcing SourcingCapability `yaml:"sourcing"`
Extraction ExtractionCapability `yaml:"extraction"`
}
type Plugin struct {
Name string `yaml:"name"`
Description string `yaml:"description"`
Authors string `yaml:"authors"`
Contact string `yaml:"contact"`
Maintainers []struct {
Email string `yaml:"email"`
Name string `yaml:"name"`
} `yaml:"maintainers"`
Keywords []string `yaml:"keywords"`
URL string `yaml:"url"`
RulesURL string `yaml:"rules_url"`
License string `yaml:"license"`
Reserved bool `yaml:"reserved"`
Capabilities Capabilities `yaml:"capabilities"`
Signature *index.Signature `yaml:"signature,omitempty"`
}
type Registry struct {
Plugins []Plugin `yaml:"plugins"`
ReservedSources []string `yaml:"reserved_sources"`
}
type ArtifactsPushStatus []ArtifactPushMetadata
// ArtifactPushMetadata represents metadata of a push of an OCI Artifact to
// an OCI repository.
type ArtifactPushMetadata struct {
Repository RepositoryMetadata `json:"repository"`
Artifact ArtifactMetadata `json:"artifact"`
}
type ArtifactMetadata struct {
Digest string `json:"digest"`
Tags []string `json:"tags"`
}
type RepositoryMetadata struct {
Ref string `json:"ref"`
}

View File

@ -0,0 +1,77 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package registry
import (
"fmt"
"regexp"
)
var (
rgxName = regexp.MustCompile(`^[a-z]+[a-z0-9-_]*$`)
rgxSource = regexp.MustCompile(`^[a-z]+[a-z0-9_]*$`)
)
func (s *SourcingCapability) validate(usedIDs map[uint]bool, forbiddenSources map[string]bool) error {
if s.Supported {
if s.ID > MaxPublicID {
return fmt.Errorf("source ID outside the allowed range (%d): '%d'", MaxPublicID, s.ID)
}
if _, ok := usedIDs[s.ID]; ok {
return fmt.Errorf("source ID is not unique: '%d'", s.ID)
}
// ID=0 is a special case and we don't want to define a source name
if s.ID != 0 {
if _, ok := forbiddenSources[s.Source]; ok {
return fmt.Errorf("forbidden source name: '%s'", s.Source)
}
if !rgxSource.MatchString(s.Source) {
return fmt.Errorf("source name does follow the naming convention: '%s'", s.Source)
}
}
usedIDs[s.ID] = true
}
return nil
}
// Validates returns nil if the Registry is valid, and an error otherwise.
// For more details regarding which constraints are checked for validation,
// refer to: https://github.com/falcosecurity/plugins#registering-a-new-plugin
func (r *Registry) Validate() error {
forbiddenSources := make(map[string]bool)
for _, s := range r.ReservedSources {
forbiddenSources[s] = true
}
ids := make(map[uint]bool)
names := make(map[string]bool)
for _, p := range r.Plugins {
if !rgxName.MatchString(p.Name) {
return fmt.Errorf("plugin name does follow the naming convention: '%s'", p.Name)
}
if _, ok := names[p.Name]; ok {
return fmt.Errorf("plugin name is not unique: '%s'", p.Name)
}
if err := p.Capabilities.Sourcing.validate(ids, forbiddenSources); err != nil {
return err
}
names[p.Name] = true
}
return nil
}

View File

@ -0,0 +1,125 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package table
import (
"fmt"
"os"
"strings"
"github.com/falcosecurity/plugins/build/registry/pkg/registry"
)
func DoTable(registryFile, subFile, subTag string) error {
r, err := registry.LoadRegistryFromFile(registryFile)
if err != nil {
return err
}
err = r.Validate()
if err != nil {
return err
}
table, err := formatMarkdownTable(r)
if err != nil {
return err
}
if len(subFile) == 0 {
fmt.Println(table)
} else {
if len(subTag) == 0 {
return fmt.Errorf("subtag flag is required")
}
content, err := os.ReadFile(subFile)
if err != nil {
return err
}
pieces := strings.SplitN(string(content), subTag, 3)
if len(pieces) != 3 {
return fmt.Errorf("can't find two instances of subtag in text file: '%s'", subTag)
}
contentStr := fmt.Sprintf("%s%s\n%s\n%s%s", pieces[0], subTag, table, subTag, pieces[2])
if err = os.WriteFile(subFile, []byte(contentStr), 0666); err != nil {
return err
}
}
return nil
}
func formatMarkdownTable(r *registry.Registry) (string, error) {
var ret strings.Builder
ret.WriteString("| Name | Capabilities | Description\n")
ret.WriteString("| --- | --- | --- |\n")
for _, p := range r.Plugins {
line := fmt.Sprintf("| %s | %s | %s <br/><br/> Authors: %s <br/> License: %s |\n",
formatMarkdownStringWithURL(r, p.Name, p.URL),
formatMarkdownCapabilities(r, &p.Capabilities),
formatMarkdownStringNotAvailable(r, p.Description),
formatMarkdownStringWithURL(r, p.Authors, p.Contact),
formatMarkdownStringNotAvailable(r, p.License),
)
ret.WriteString(line)
}
return ret.String(), nil
}
func formatMarkdownCapabilities(r *registry.Registry, caps *registry.Capabilities) string {
var ret strings.Builder
if caps.Sourcing.Supported {
ret.WriteString(fmt.Sprintf("**Event Sourcing** <br/>ID: %d <br/>`%s`",
caps.Sourcing.ID,
caps.Sourcing.Source,
))
}
if caps.Extraction.Supported {
if ret.Len() > 0 {
ret.WriteString(" <br/>")
}
ret.WriteString("**Field Extraction** <br/> ")
if len(caps.Extraction.Sources) == 0 {
if caps.Sourcing.Supported {
ret.WriteString("`" + caps.Sourcing.Source + "`")
} else {
ret.WriteString("*All Sources*")
}
} else {
var sources []string
for _, s := range caps.Extraction.Sources {
sources = append(sources, "`"+s+"`")
}
ret.WriteString(strings.Join(sources, ", "))
}
}
return ret.String()
}
func formatMarkdownStringNotAvailable(r *registry.Registry, s string) string {
if len(s) == 0 {
return "N/A"
}
return s
}
func formatMarkdownStringWithURL(r *registry.Registry, s, url string) string {
if len(url) == 0 {
return formatMarkdownStringNotAvailable(r, s)
}
return fmt.Sprintf("[%s](%s)", formatMarkdownStringNotAvailable(r, s), url)
}

View File

@ -1,125 +0,0 @@
/*
Copyright (C) 2022 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"fmt"
"io/ioutil"
"os"
"strings"
"github.com/spf13/cobra"
)
const (
defaultTableSubTag = "<!-- REGISTRY -->"
)
func loadRegistryFromFile(fname string) (*Registry, error) {
file, err := os.Open(fname)
if err != nil {
return nil, err
}
defer file.Close()
return LoadRegistry(file)
}
func doCheck(fileName string) error {
registry, err := loadRegistryFromFile(fileName)
if err != nil {
return err
}
return registry.Check()
}
func doTable(registryFile, subFile, subTag, contentType string) error {
registry, err := loadRegistryFromFile(registryFile)
if err != nil {
return err
}
err = registry.Check()
if err != nil {
return err
}
table, err := registry.FormatMarkdownTable(contentType)
if err != nil {
return err
}
if len(subFile) == 0 {
fmt.Println(table)
} else {
if len(subTag) == 0 {
return fmt.Errorf("subtag flag is required")
}
content, err := ioutil.ReadFile(subFile)
if err != nil {
return err
}
pieces := strings.SplitN(string(content), subTag, 3)
if len(pieces) != 3 {
return fmt.Errorf("can't find two instances of subtag in text file: '%s'", subTag)
}
contentStr := fmt.Sprintf("%s%s\n%s\n%s%s", pieces[0], subTag, table, subTag, pieces[2])
if err = ioutil.WriteFile(subFile, []byte(contentStr), 0666); err != nil {
return err
}
}
return nil
}
func main() {
checkCmd := &cobra.Command{
Use: "check <filename>",
Short: "Verify the correctness of a plugin registry YAML file",
Args: cobra.ExactArgs(1),
DisableFlagsInUseLine: true,
RunE: func(c *cobra.Command, args []string) error {
return doCheck(args[0])
},
}
var tableSubFileName string
var tableSubTab string
var tableType string
tableCmd := &cobra.Command{
Use: "table <filename>",
Short: "Format a plugin registry YAML file in a MarkDown table",
Args: cobra.ExactArgs(1),
RunE: func(c *cobra.Command, args []string) error {
return doTable(args[0], tableSubFileName, tableSubTab, tableType)
},
}
tableFlags := tableCmd.Flags()
tableFlags.StringVar(&tableSubTab, "subtag", defaultTableSubTag, "A tag that delimits the start and the end of the text section to substitute with the generated table.")
tableFlags.StringVar(&tableSubFileName, "subfile", "", "If specified, the table will be written inside the file at this path, inserting it between the first two instances of the substitution tag.")
tableFlags.StringVar(&tableType, "type", sourcePluginsTableContentType, "The type of content to be included in the table")
rootCmd := &cobra.Command{
Use: "registry",
Version: "0.1.0",
}
rootCmd.AddCommand(checkCmd)
rootCmd.AddCommand(tableCmd)
if err := rootCmd.Execute(); err != nil {
fmt.Printf("error: %s\n", err)
os.Exit(1)
}
}

View File

@ -1,81 +0,0 @@
/*
Copyright (C) 2022 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"fmt"
"strings"
)
var (
sourcePluginsTableContentType = "plugins-source"
extractorPluginsTableContentType = "plugins-extractor"
)
func (r *Registry) FormatMarkdownTable(contentType string) (string, error) {
var ret strings.Builder
wrapNotAvailable := func(s string) string {
if len(s) == 0 {
return "N/A"
}
return s
}
formatWithURL := func(s string, url string) string {
if len(url) == 0 {
return wrapNotAvailable(s)
}
return fmt.Sprintf("[%s](%s)", wrapNotAvailable(s), url)
}
switch contentType {
case sourcePluginsTableContentType:
ret.WriteString("| ID | Name | Event Source | Description | Info |\n")
ret.WriteString("| --- | --- | --- | --- | --- |\n")
for _, s := range r.Plugins.Source {
line := fmt.Sprintf("| %d | %s | `%s` | %s | Authors: %s <br/> License: %s |\n",
s.ID,
formatWithURL(s.Name, s.URL),
wrapNotAvailable(s.Source),
wrapNotAvailable(s.Description),
formatWithURL(s.Authors, s.Contact),
wrapNotAvailable(s.License),
)
ret.WriteString(line)
}
case extractorPluginsTableContentType:
ret.WriteString("| Name | Extract Event Sources | Description | Info |\n")
ret.WriteString("| --- | --- | --- | --- |\n")
for _, e := range r.Plugins.Extractor {
sources := make([]string, 0)
for _, s := range e.Sources {
sources = append(sources, fmt.Sprintf("`%s`", s))
}
line := fmt.Sprintf("| %s | %s | %s | Authors: %s <br/> License: %s |\n",
formatWithURL(e.Name, e.URL),
wrapNotAvailable(strings.Join(sources, ", ")),
wrapNotAvailable(e.Description),
formatWithURL(e.Authors, e.Contact),
wrapNotAvailable(e.License),
)
ret.WriteString(line)
}
default:
return "", fmt.Errorf("unknown table content type: %s", contentType)
}
return ret.String(), nil
}

View File

@ -1,65 +0,0 @@
/*
Copyright (C) 2022 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"io"
"github.com/go-yaml/yaml"
)
type Source struct {
ID uint `yaml:"id"`
Source string `yaml:"source"`
Name string `yaml:"name"`
Description string `yaml:"description"`
Authors string `yaml:"authors"`
Contact string `yaml:"contact"`
URL string `yaml:"url"`
License string `yaml:"license"`
Reserved bool `yaml:"reserved"`
}
type Extractor struct {
Sources []string `yaml:"sources"`
Name string `yaml:"name"`
Description string `yaml:"description"`
Authors string `yaml:"authors"`
Contact string `yaml:"contact"`
URL string `yaml:"url"`
License string `yaml:"license"`
Reserved bool `yaml:"reserved"`
}
type Plugins struct {
Source []Source `yaml:"source"`
Extractor []Extractor `yaml:"extractor"`
}
type Registry struct {
Plugins Plugins `yaml:"plugins"`
ReservedSources []string `yaml:"reserved_sources"`
}
func LoadRegistry(r io.Reader) (*Registry, error) {
decoder := yaml.NewDecoder(r)
registry := &Registry{}
if err := decoder.Decode(registry); err != nil {
return nil, err
}
return registry, nil
}

View File

@ -1 +1,2 @@
version
version
utils

View File

@ -1,5 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2022 The Falco Authors.
# Copyright (C) 2023 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at

View File

@ -2,4 +2,4 @@ module github.com/falcosecurity/plugins/build/utils
go 1.17
require github.com/spf13/pflag v1.0.5
require github.com/spf13/pflag v1.0.6

View File

@ -1,2 +1,2 @@
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=

49
build/utils/version.go Normal file → Executable file
View File

@ -1,8 +1,9 @@
// SPDX-License-Identifier: Apache-2.0
//go:build (linux && cgo) || (darwin && cgo) || (freebsd && cgo)
// +build linux,cgo darwin,cgo freebsd,cgo
/*
Copyright (C) 2022 The Falco Authors.
Copyright (C) 2023 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@ -42,7 +43,7 @@ import (
#include <stdio.h>
static uintptr_t pluginOpen(const char* path, char** err) {
void* h = dlopen(path, RTLD_NOW|RTLD_GLOBAL);
void* h = dlopen(path, RTLD_NOW|RTLD_GLOBAL|RTLD_DEEPBIND);
if (h == NULL) {
*err = (char*)dlerror();
}
@ -74,26 +75,9 @@ static char* get_version(uintptr_t h, char** err) {
*/
import "C"
var rgxVersion *regexp.Regexp
var rgxHash *regexp.Regexp
var rgxName *regexp.Regexp
func init() {
var err error
// see: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
rgxVersion, err = regexp.Compile(`^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?$`)
if err != nil {
panic(err.Error())
}
rgxHash, err = regexp.Compile(`^[0-9a-z]+$`)
if err != nil {
panic(err.Error())
}
rgxName, err = regexp.Compile(`^[a-z]+[a-z0-9_]*$`)
if err != nil {
panic(err.Error())
}
}
var rgxVersion = regexp.MustCompile(`^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?$`)
var rgxHash = regexp.MustCompile(`^[0-9a-z]+$`)
var rgxName = regexp.MustCompile(`^[a-z]+[a-z0-9_\-]*$`)
func pluginInfo(path string) (name, version string, err error) {
path, err = filepath.Abs(path)
@ -115,14 +99,19 @@ func pluginInfo(path string) (name, version string, err error) {
err = errors.New("cannot get name of " + path + ": " + C.GoString(cErr))
return
}
// we need to convert immediately the pointer into a string
// otherwise the pointer could change see plugin sdk cpp
name = C.GoString(cName)
cVer := C.get_version(h, &cErr)
if cVer == nil {
err = errors.New("cannot get version of " + path + ": " + C.GoString(cErr))
return
}
// Same as before
version = C.GoString(cVer)
return C.GoString(cName), C.GoString(cVer), nil
return
}
func git(args ...string) (output []string, err error) {
@ -174,13 +163,18 @@ func main() {
var hash string
// get last tag
tags, err := git("describe", "--tags", "--abbrev=0", "--match", name+`-*`)
// It matches the old tag in "pluginName-version" or the new one "plugins/pluginName/semver"
tags, err := git("describe", "--tags", "--abbrev=0", "--match", name+`-[0-9]*`, "--match", "plugins/"+name+"/v*")
if err == nil {
if len(tags) == 0 {
fail(errors.New("no git tag found for: " + name))
}
lastTag := tags[0]
lastVer = strings.Replace(lastTag, name+"-", "", 1)
if strings.HasPrefix(lastTag, name) {
lastVer = strings.Replace(lastTag, name+"-", "", 1)
} else {
lastVer = strings.Replace(lastTag, "plugins/"+name+"/v", "", 1)
}
if !rgxVersion.MatchString(lastVer) {
fail(errors.New("plugin latest released version not compatible with SemVer: " + lastTag))
}
@ -211,11 +205,14 @@ func main() {
} else {
// stable versions MUST have a precise tag matching plugin name and version
expectedTag := name + "-" + version
expectedTag := "plugins/" + name + "/v" + version
tags, err := git("--no-pager", "tag", "--points-at", "HEAD")
if err != nil {
fail(err)
}
if len(tags) == 0 || len(tags[0]) == 0 {
fail(errors.New("there are no tags pointing at HEAD"))
}
for _, tag := range tags {
if tag == expectedTag {
fmt.Println(version)

76
changelog-gen.sh Executable file
View File

@ -0,0 +1,76 @@
#!/bin/bash
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2025 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
plugin=$1
if [ -z "$plugin" ]; then
echo "Usage changelog-gen.sh <plugin_name>"
exit 1
fi
tool=./build/changelog/bin/changelog
to=""
from=""
tags="$(git tag -l | grep -E -e ${plugin}-[0-9]+.[0-9]+.[0-9]+ -e ${plugin}/v[0-9]+.[0-9]+.[0-9]+ | grep -E -v ${plugin}-[0-9]+.[0-9]+.[0-9]+-rc | sort -V -r)"
# print title
echo "# Changelog"
echo ""
# generate entry for upcoming tag, if any
head="$(git rev-parse HEAD)"
dev_changelog="$(${tool} --from="" --to=${head} --plugin=${plugin})"
if [ ! -z "$dev_changelog" ]; then
echo "## dev build (unreleased)"
echo ""
echo "$dev_changelog"
echo ""
fi
# generate entry for each tag
for tag in $tags
do
from=$tag
if [ ! -z "$to" ]; then
ver=""
# support both the old and new tag formats
if [[ $to == plugins/* ]]; then
ver="$(echo ${to} | sed -e s/^plugins\\/${plugin}\\///)"
else
ver="$(echo ${to} | sed -e s/^${plugin}-// -e s/^/v/)"
fi
echo "## ${ver}"
echo ""
${tool} --from=${from} --to=${to} --plugin=${plugin}
echo ""
fi
to=$tag
done
# generate last entry for first tag, starting from the first commit
if [ -n "$to" ]; then
from="$(git rev-list --max-parents=0 HEAD)"
# support both the old and new tag formats
if [[ $to == plugins/* ]]; then
ver="$(echo ${to} | sed -e s/^plugins\\/${plugin}\\///)"
else
ver="$(echo ${to} | sed -e s/^${plugin}-// -e s/^/v/)"
fi
echo "## ${ver}"
echo ""
${tool} --from=${from} --to=${to} --plugin=${plugin}
echo ""
fi

View File

@ -2,14 +2,69 @@
This page summarizes some best practices and guidelines that can be useful to developers that are getting started with the [plugin system of Falco](https://falco.org/docs/plugins/). The [Developers Guide](https://falco.org/docs/plugins/developers-guide/) is mostly focused on the technical aspects of plugin development. In contrast, here we provide some guidance on more high-level points that may occur during the design and implementation phases.
## Plugin Directory Structure
Currently, Go is the most used language for writing plugins. So, below you can find the recommended layout for Go plugin projects. For other languages, you can adapt the layout accordingly.
### `/pkg`
Reusable Go packages that other plugins or projects can use. This directory is not mandatory but is highly recommended.
### `/plugin`
This directory contains the plugin entry point. This directory should have only one `.go` file, named as your plugin. This file must define the `main` package (and an empty `main()` function) per CGO requirement.
Usually, this file also imports packages from `/pkg` and defines an `init()` function to register the plugin capabilities (that's required if you are using the [plugin-go-sdk](https://github.com/falcosecurity/plugin-sdk-go)).
### `/rules`
This directory is optional. If you want to distribute rules files for your plugin, you can put them in this directory.
The building system of this repository will automatically build and publish them as a `.tar.gz` archive under [https://download.falco.org/?prefix=plugins/](https://download.falco.org/?prefix=plugins/).
### `/Makefile`
Providing a `Makefile` is mandatory for plugins hosted by this repository. The building system of this repository will use:
- `make` to build the plugin binary
- `make clean` to clean the built artifacts
- `make rules` to build the rules files (this is optional)
Below you can find an example of a typical `Makefile` for a plugin hosted by this repository.
```Makefile
SHELL=/bin/bash -o pipefail
GO ?= go
NAME := <YOUR-PLUGIN-NAME-HERE>
OUTPUT := lib$(NAME).so
ifeq ($(DEBUG), 1)
GODEBUGFLAGS= GODEBUG=cgocheck=1
else
GODEBUGFLAGS= GODEBUG=cgocheck=0
endif
all: $(OUTPUT)
clean:
@rm -f *.so *.h
$(OUTPUT):
@$(GODEBUGFLAGS) $(GO) build -buildmode=c-shared -o $(OUTPUT) ./plugin
```
## Configuration in Source Plugins
One of the main differences between source and extractor plugins is the way they can accept user configurations. Extractor plugins can only be configured during the initialization phase through `plugin_init()`, whereas source plugins also accept and some parameters while opening the event stream with `plugin_open()`. This creates some ambiguity on **which** information should go inside the init configuration, and what should be part of the open parameters instead.
One peculiarity of plugins with event source capability is how they can accept user configurations. Other plugins can only be configured during the initialization phase through `plugin_init()`, whereas source plugins also take some parameters while opening the event stream with `plugin_open()`. This creates some ambiguity on **which** information should go inside the init configuration and what should be part of the open parameters instead.
There's no silver bullet for this problem, and the solution strictly depends on the use cases of your plugin. However, there are some principles you can follow.
- The [init configuration](https://falco.org/docs/configuration/#plugins) should contain information that is used during the whole plugin lifecycle and that is used across both field extraction and event generation
- The init configuration is the right place for structured data. In fact, in most cases, plugins accept JSON strings as a configuration and also expose a schema describing/documenting the expected data format (see [`plugin_get_init_schema`](https://falco.org/docs/plugins/plugin-api-reference/#const-char-plugin-get-init-schema-ss-plugin-schema-type-schema-type-required-no) for more details)
- The init configuration is the right place for structured data. In fact, in most cases, plugins accept JSON strings as a configuration and also expose a schema describing/documenting the expected data format (see [`plugin_get_init_schema`](https://falco.org/docs/plugins/plugin-api-reference/#get-init-schema) for more details)
- Init configuration parameters should have the following annotations. See the [JSON Schema Validation specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#name-a-vocabulary-for-basic-meta) for more details:
- `title`, which provides a short user-facing name for the parameter.
- `description`, which describes the parameter using a sentence or a short paragraph.
- `default` (optional), which provides the default value of the parameter.
- `required` (optional), which notes that the parameter value is required.
- `examples` (optional), which provides example values for the parameter.
- The open parameters should contain information that is only relevant for opening a specific event source, and their lifecycle ends at the invocation of `plugin_close()`
- The open parameters should contain minimal and non-structured information, such as a URI or a resource descriptor string. This is the reason why the framework does not support any schema definition for open parameters and treats them as an opaque string. Ideally, if more than one parameter is required to open a data source, comma-separated string concatenation is preferable to structured data formats such as JSON

35
docs/plugin-ids.md Normal file
View File

@ -0,0 +1,35 @@
# Plugin IDs (Sourcing Capability Only)
Using a unique `id` is mandatory to maintain interoperability across all plugins with _event sourcing_ capability. When a plugin is loaded by a compatible application (e.g., Falco), the `id` is used to route events to the correct plugin. Indeed, attempting to load two or more plugins using the same `id` will result in an error.
For this reason, The Falco Project maintains a [public registry of plugins](https://github.com/falcosecurity/plugins/blob/main/README.md#registering-a-new-plugin), which allows the assignment of a unique `id` for your plugin. However, some plugins may not be registered in the public registry. For example, if you are privately developing a plugin for your own use, you might use any `id` you want. To avoid conflicts in these situations, this document mandates general rules regarding `id` assignment and reservation.
## ID Blocks
The following ID ranges are designated for specific purposes:
| Block name | ID range | # of IDs | Description |
|---|---|---|---|
| Public | 01073741823 (30-bit) | 1073741824 | Used in the public registry. Single IDs in this range can be [assigned](#assigning-an-id) or [reserved](#reserving-an-id). |
| Private | 10737418242147483647 (30-bit) | 1073741824 | Used for private plugins (think of this range as the equivalent of 192.168.0.0/16 in networks). Organizations may use this range for plugins intended for their private domain. Interoperability is not guaranteed. |
| Reserved | 2147483648-3221225471 (30-bit) | 1073741824 | This range is reserved for future use and must not be used under any circumstances. |
| Internal | 3221225472-4294967295 (30-bit) | 1073741824 | This range is reserved for internal use and must not be used by plugins. It might be used by the plugin framework implementation for technical purposes. |
Notes:
- An `id` is a 32-bit unsigned integer. The MSBs are used to identify the block of IDs.
- Only IDs up to 1073741823 can be requested for use in the public registry.
- Only IDs up to 2147483647 can be used by plugins.
## Assigning an ID
The public registry is intended for assigning IDs to plugins that are publicly available. If you want to share your plugin with the community, you should follow the instructions reported in the [Registering a new plugin](../README.md#registering-a-new-plugin) section of this repository's documentation.
When making your request, please choose the next available ID in the [registry.yaml](../registry.yaml) file. The `id` will be definitively assigned to your plugin once the corresponding PR is merged, and the [registry.yaml](../registry.yaml) file is updated.
## Reserving an ID
For particular technical purposes or special cases, an `id` can be reserved so that it will not be assigned to any specific plugin. Notably, id 999 has been reserved for source plugin development. Any plugin author can temporarily use this `id`; however, it can't be assigned to any specific plugin and must not be used for purposes other than local development.
To reserve an `id`, you can use the same procedure for [registering a new plugin](../README.md#registering-a-new-plugin) and specify the `reserved: true` option.
Requests for `id` reservation will be evaluated on a case-by-case basis. The Falco Project reserves the right to reject any request for any reason.

View File

@ -0,0 +1,40 @@
### Registering a Plugin
Registering your plugin inside the registry helps ensure that some technical constraints are respected, such as that a [given ID is used by exactly one plugin with event source capability](https://falco.org/docs/concepts/plugins/architecture/#plugin-event-ids) and allows plugin authors to [coordinate about event source formats](https://falco.org/docs/concepts/plugins/architecture/#plugin-event-sources-and-interoperability). Moreover, this is a great way to share your plugin project with the community and engage with it, thus gaining new users and **increasing its visibility**. We encourage you to register your plugin in this registry before publishing it. You can add your plugins in this registry regardless of where its source code is hosted (there's a `url` field for this specifically).
The registration process involves adding an entry about your plugin inside the [registry.yaml](../registry.yaml) file by creating a Pull Request in this repository. Please be mindful of a few constraints that are automatically checked and required for your plugin to be accepted:
- The `name` field is mandatory and must be **unique** across all the plugins in the registry
- *(Sourcing Capability Only)* The `id` field is mandatory and must be **unique** in the registry across all the plugins with event source capability
- See [docs/plugin-ids.md](plugin-ids.md) for more information about plugin IDs
- The plugin `name` must match this [regular expression](https://en.wikipedia.org/wiki/Regular_expression): `^[a-z]+[a-z0-9-_\-]*$` (however, its not recommended to use `_` in the name, unless you are trying to match the name of a source or for particular reasons)
- The `source` *(Sourcing Capability Only)* and `sources` *(Extraction Capability Only)* must match this [regular expression](https://en.wikipedia.org/wiki/Regular_expression): `^[a-z]+[a-z0-9_]*$`
- The `url` field should point to the plugin source code
- The `rules_url` field should point to the default ruleset, if any
For reference, here's an example of an entry for a plugin with both event sourcing and field extraction capabilities:
```yaml
- name: k8saudit
description: ...
authors: ...
contact: ...
maintainers:
- name: The Falco Authors
email: cncf-falco-dev@lists.cncf.io
keywords:
- audit
- audit-log
- audit-events
- kubernetes
url: https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit
rules_url: https://github.com/falcosecurity/plugins/tree/main/plugins/k8saudit/rules
url: ...
license: ...
capabilities:
sourcing:
supported: true
id: 2
source: k8s_audit
extraction:
supported: true
```

6
plugins/anomalydetection/.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
*.so
*.a
*.o
.vscode
build*
libanomalydetection.so

View File

@ -0,0 +1,38 @@
# Changelog
## dev build (unreleased)
* [`406c517`](https://github.com/falcosecurity/plugins/commit/406c517) update(anomalydetection): tweak inits when count_min_sketch disabled + better...
* [`cb0fdb1`](https://github.com/falcosecurity/plugins/commit/cb0fdb1) update(anomalydetection): update documentation
* [`79c085e`](https://github.com/falcosecurity/plugins/commit/79c085e) update(anomalydetection): helper new filtercheck / output field anomaly.falco...
* [`489ef6d`](https://github.com/falcosecurity/plugins/commit/489ef6d) update(anomalydetection): ability to reset data structures w/ timers
* [`d4e72b8`](https://github.com/falcosecurity/plugins/commit/d4e72b8) update(anomalydetection): more usage safeguards and info log messages
* [`23bf05e`](https://github.com/falcosecurity/plugins/commit/23bf05e) update(anomalydetection): add some fallbacks / evt param extraction in cases ...
* [`1e8052c`](https://github.com/falcosecurity/plugins/commit/1e8052c) update(anomalydetection): add some custom behavior profile short-cut fields o...
* [`6a448c2`](https://github.com/falcosecurity/plugins/commit/6a448c2) update(anomalydetection): add MutexGuard (adopted from libs) to sketches data...
* [`f720e4a`](https://github.com/falcosecurity/plugins/commit/f720e4a) update(anomalydetection): finish currently supported behavior profile filterc...
* [`14a58d3`](https://github.com/falcosecurity/plugins/commit/14a58d3) update(anomalydetection): add lastevent_fd + enhance robustness / tests + sta...
* [`27747eb`](https://github.com/falcosecurity/plugins/commit/27747eb) update(anomalydetection): unit tests for proc lineage + add filterchecks 1/n
* [`fa2c05e`](https://github.com/falcosecurity/plugins/commit/fa2c05e) update(anomalydetection): populate info for proc args
* [`faf6636`](https://github.com/falcosecurity/plugins/commit/faf6636) update(anomalydetection): sync plugin to latest SDK changes
* [`6a834a3`](https://github.com/falcosecurity/plugins/commit/6a834a3) new(anomalydetection): init config + start behavior profile extraction
* [`73c11bd`](https://github.com/falcosecurity/plugins/commit/73c11bd) new(anomalydetection): start unit tests + bump libs and sdk
* [`f778922`](https://github.com/falcosecurity/plugins/commit/f778922) cleanup(anomalydetection): cms class updates
* [`6b89390`](https://github.com/falcosecurity/plugins/commit/6b89390) new(anomalydetection): init plugin / start dev

View File

@ -0,0 +1,57 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2024 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
cmake_minimum_required(VERSION 3.22)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
option(BUILD_TESTS "Enable tests" ON)
# Project metadata
project(
anomalydetection
VERSION 0.1.0
DESCRIPTION "Falco Anomaly Detection Plugin"
LANGUAGES CXX)
# Dependencies
include(FetchContent)
include(plugin-sdk-cpp)
include(libs) # Temporarily include libs for initial dev
include(xxhash)
# Project target
file(GLOB_RECURSE anomalydetection_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
add_library(anomalydetection SHARED ${anomalydetection_SOURCES} )
set_target_properties(anomalydetection PROPERTIES CXX_EXTENSIONS OFF)
# Project compilation options
target_compile_options(anomalydetection PRIVATE "-fPIC")
target_compile_options(anomalydetection PRIVATE "-Wl,-z,relro,-z,now")
target_compile_options(anomalydetection PRIVATE "-fstack-protector-strong")
# When compiling in Debug mode, this will define the DEBUG symbol for use in your code
target_compile_options(anomalydetection PUBLIC "$<$<CONFIG:DEBUG>:-DDEBUG>")
target_compile_features(anomalydetection PUBLIC cxx_std_17)
# Project includes
target_include_directories(
anomalydetection PRIVATE "${PLUGIN_SDK_INCLUDE}" "${XXHASH_INCLUDE}" "${LIBS_INCLUDE}")
# Project linked libraries
target_link_libraries(anomalydetection ${_REFLECTION})
# Testing
if(BUILD_TESTS)
add_subdirectory(test)
endif()

View File

@ -0,0 +1,36 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2024 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
NAME := anomalydetection
OUTPUT := lib$(NAME).so
all: $(OUTPUT)
clean:
rm -rf build $(OUTPUT)
# Temporarily include libs for initial dev
$(OUTPUT):
mkdir -p build \
&& cd build \
&& cmake \
-DCMAKE_BUILD_TYPE=Release \
-DMINIMAL_BUILD=ON \
-DUSE_BUNDLED_LIBELF=OFF \
-DCREATE_TEST_TARGETS=OFF \
../ \
&& make -j6 anomalydetection \
&& cp ./$(OUTPUT) ../$(OUTPUT)
readme:
@$(READMETOOL) -p ./$(OUTPUT) -f README.md

View File

@ -0,0 +1,319 @@
# Falcosecurity `anomalydetection` Plugin
**This plugin is experimental and under development**
This `anomalydetection` plugin has been created upon this [Proposal](https://github.com/falcosecurity/falco/blob/master/proposals/20230620-anomaly-detection-framework.md).
## Introduction
The `anomalydetection` plugin enhances {syscall} event analysis by incorporating anomaly detection estimates for probabilistic filtering.
### Functionality
The initial scope focuses exclusively on "CountMinSketch Powered Probabilistic Counting and Filtering" for a subset of syscalls and a selection of options for defining behavior profiles. This limitation is due to current restrictions related to the plugin API and SDK layout.
The new framework primarily aims to improve the usability of standard Falco rules. It may reduce the need for precise rule tuning, leverages probabilistic count estimates to auto-tune noisy rules on the fly, and enables the creation of broader Falco rules. Read more in the [Proposal](https://github.com/falcosecurity/falco/blob/master/proposals/20230620-anomaly-detection-framework.md).
### TL;DR
The official documentation will eventually be available on the Falco [Plugins](https://falco.org/docs/plugins/) site. Therefore, consider this README as not being a complete documentation for using this plugin.
*Disclaimer*: Anomaly detection can mean different things to different people. It's best to keep your expectations low for this plugin's current capabilities. For now, it is focused solely on probabilistic counting.
What this plugin is:
- **Initial step for real-time anomaly detection in Falco**: Introduces basic real-time anomaly detection methods on the host.
- **Probabilistic counting**: Currently supports only probabilistic counting, with the guarantee that any overcounting remains within an acceptable error margin.
- **Use-case dependent**: Requires careful derivation of custom use cases; no default use cases are provided at this time.
- **Limited by current API**: Subject to several restrictions due to plugin API and other limitations.
- **Built for future extensibility**: Designed to support more algorithms in the future, limited to those that can be implemented in a single data pass to ensure real-time performance.
- **Documentation is insufficient**: Expect to need hands-on exploration to understand usage and restrictions.
What this plugin is not:
- **Not a pre-trained AI/ML model**.
- **Not ready out-of-the-box**: No default configuration or use cases are provided at this time.
- **Not a universal solution**: Does not offer a one-size-fits-all approach to anomaly detection.
- **No multi-pass algorithms**: Algorithms requiring multiple data passes are not planned; the plugin is intended to remain real-time and efficient for applicable use cases.
- **Not yet battle-tested in production**.
### Outlook
In the near term, the plan is to expand the syscalls for which behavior profiles can be applied and to enhance the fields available for defining these profiles. The first version is quite restrictive in this regard due to current plugin API limitations. Additionally, from an algorithmic and capabilities point of view, we will explore the following:
- Support for HyperLogLog probabilistic distinct counting (ETA unknown).
- Overcoming the cold start problem by loading sketch data structures and counts from previous agent runs or from test environments (ETA unknown).
- Efficient and feasible options for real-time, single-pass time series analysis (ETA unknown).
### Plugin Official Name
`anomalydetection`
## Capabilities
The `anomalydetection` plugin implements 2 capabilities:
* `extraction`
* `parsing`
## Supported Fields
Here is the current set of output / filter fields introduced by this plugin:
<!-- README-PLUGIN-FIELDS -->
| NAME | TYPE | ARG | DESCRIPTION |
|------------------------------------|----------|-------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `anomaly.count_min_sketch` | `uint64` | Index | Count Min Sketch Estimate according to the specified behavior profile for a predefined set of {syscalls} events. Access different behavior profiles/sketches using indices. For instance, anomaly.count_min_sketch[0] retrieves the first behavior profile defined in the plugins' `init_config`. |
| `anomaly.count_min_sketch.profile` | `string` | Index | Concatenated string according to the specified behavior profile (not preserving original order). Access different behavior profiles using indices. For instance, anomaly.count_min_sketch.profile[0] retrieves the first behavior profile defined in the plugins' `init_config`. |
| `anomaly.falco.duration_ns` | `uint64` | None | Falco agent run duration in nanoseconds, which could be useful for ignoring some rare events at launch time while Falco is just starting to build up the counts in the sketch data structures (if applicable). |
<!-- /README-PLUGIN-FIELDS -->
## Usage
**Configuration**
Here's an example of configuration of `falco.yaml`:
```yaml
plugins:
- name: anomalydetection
library_path: libanomalydetection.so
init_config:
count_min_sketch:
enabled: true
n_sketches: 3
# `gamma_eps`: auto-calculate rows and cols; usage: [[gamma, eps], ...];
# gamma -> error probability -> determine d / rows / number of hash functions
# eps -> relative error -> determine w / cols / number of buckets
gamma_eps: [
[0.001, 0.0001],
[0.001, 0.0001],
[0.001, 0.0001]
]
# `rows_cols`: pass explicit dimensions, supersedes `gamma_eps`; usage: [[7, 27183], ...]; by default disabled when not used.
# rows_cols: []
behavior_profiles: [
{
"fields": "%container.id %custom.proc.aname.lineage.join[7] %custom.proc.aexepath.lineage.join[7] %proc.tty %proc.vpgid.name %proc.sname",
# execve, execveat exit event codes
"event_codes": [293, 331]
},
{
"fields": "%container.id %custom.proc.aname.lineage.join[7] %custom.proc.aexepath.lineage.join[7] %proc.tty %proc.vpgid.name %proc.sname %fd.name %fd.nameraw",
# open, openat, openat2 exit event codes
"event_codes": [3, 307, 327]
},
{
"fields": "%container.id %proc.cmdline",
# execve, execveat exit event codes
"event_codes": [293, 331],
# optional config `reset_timer_ms`, resets the data structure every x milliseconds, here one hour as example
# Remove JSON key if not wanted / needed.
"reset_timer_ms": 3600000
}
]
load_plugins: [anomalydetection]
```
The first version is quite restrictive with respect to the behavior profile's `event_codes` and `fields`. In a nutshell, you can currently define them only for a handful of event codes that Falco supports and a subset of the [Supported Fields for Conditions and Outputs](https://falco.org/docs/reference/rules/supported-fields/).
When you disable the `count_min_sketch` algorithm as shown below, all `anomaly.count_min_sketch` fields will be null.
```
count_min_sketch:
enabled: false
```
__NOTE__: Do not toggle the `enabled` key while hot reloading the config, as it currently does not get properly applied in such cases. Restart Falco with the `count_min_sketch` either enabled or disabled; subsequent reloads will work as expected.
**Behavior profiles for "execve/execveat/clone/clone3" events**
Example 1:
```
"event_codes": [293, 331],
```
Example 2:
```
"event_codes": [223, 335],
```
You can reference a behavior profile based on "execve/execveat/clone/clone3" events in any Falco rule that monitors any supported syscall. This works because every syscall is associated with a process.
**Behavior profiles for "fd-related" events**
Example 1:
```
rule: (evt.type in (open, openat, openat2) and evt.dir=<)
...
"event_codes": [3, 307, 327],
```
Example 2:
```
rule: (evt.type=connect and evt.dir=<)
...
"event_codes": [23],
```
You should avoid writing rules for arbitrary syscalls using "fd-related" behavior profiles because if a syscall doesn't involve a file descriptor (fd), referencing counts that rely on fd fields won't be meaningful.
Here's how it works:
- If your behavior profile includes `%fd.*` fields, all event codes in that profile must be related to file descriptors.
- If you use an "fd-related" behavior profile with a syscall that doesn't involve a file descriptor, the count will always be zero. While Falco won't crash, the anomaly detection estimate won't function as expected.
References:
- See the [Supported PPME `event codes`](#ppme-event-codes) reference below.
- See the [Supported Behavior Profiles `fields`](#behavior-profiles-fields) reference below.
**Open Parameters**:
This plugin does not have open params.
**Rules**
This plugin does not provide any default use cases or rules at the moment. More concrete use cases may be added at a later time.
Example of a dummy Falco rule using the `anomalydetection` fields for local testing:
```yaml
- macro: spawned_process
condition: (evt.type in (execve, execveat) and evt.dir=<)
- rule: execve count_min_sketch test
desc: "execve count_min_sketch test"
condition: spawned_process and proc.name=cat and anomaly.count_min_sketch[0] > 10
output: '%anomaly.count_min_sketch[0] %proc.pid %proc.ppid %proc.name %user.loginuid %user.name %user.uid %proc.cmdline %container.id %evt.type %evt.res %proc.cwd %proc.sid %proc.exepath %container.image.repository'
priority: NOTICE
tags: [maturity_sandbox, host, container, process, anomalydetection]
```
__NOTE__: Ensure you regularly execute `cat` commands. Once you have done so frequently enough, logs will start to appear. Alternatively, perform an inverse test to observe how quickly a very noisy rule gets silenced.
**Adoption**
To adopt the plugin framework, you can start by identifying rules in the [default](https://github.com/falcosecurity/rules) Falco ruleset that could benefit from auto-tuning based on your heuristics regarding counts. For example, you might broaden the scope of a rule and add an `anomaly.count_min_sketch` filter condition as a safety upper bound.
For initial adoption, we recommend creating new, separate rules inspired by existing upstream rules, rather than modifying rules that are already performing well in production.
Another approach is to duplicate a rule -- one version with and another without the anomaly detection filtering.
Alternatively, you can add the count estimates as output fields to provide additional forensic evidence without using the counts for on-host filtering.
Lastly, keep in mind that there is a configuration to reset the counts per behavior profile every x milliseconds if this suits your use case better.
### Running
This plugin requires Falco with version >= **0.38.2**.
1. Have Falco >= **0.38.2** installed and set up
2. Download the plugin's shared object (or build it yourself; see instructions below) and place it under `/usr/share/falco/plugins/libanomalydetection.so`
3. Modify the `falco.yaml` with the provided example [configuration](#configuration) above
4. Add a rule that uses `anomaly.count_min_sketch` as an output field and/or filter to `falco_rules.yaml`, and you're ready to go!
```shell
# Read the steps above before running Falco with this plugin
sudo falco -c falco.yaml -r falco_rules.yaml
```
## Local Development
### Build
```bash
git clone https://github.com/falcosecurity/plugins.git
cd plugins/plugins/anomalydetection
rm -f libanomalydetection.so;
rm -f build/libanomalydetection.so;
make;
# Copy the shared library to the expected location for `falco.yaml`, which is `library_path: libanomalydetection.so`
sudo mkdir -p /usr/share/falco/plugins/;
sudo cp -f libanomalydetection.so /usr/share/falco/plugins/libanomalydetection.so;
```
## References
### PPME event codes
Read this [blog post](https://falco.org/blog/adaptive-syscalls-selection/) to learn more about Falco's internal PPME event codes compared to the syscall names you are used to using in Falco rules.
The list below is complete, and no other event codes from Falco can be used for the behavior profiles at the moment. The binary will error out if used incorrectly. Thank you for your patience.
```CPP
typedef enum {
PPME_SYSCALL_OPEN_X = 3, // compare to "(evt.type=open and evt.dir=<)" in a Falco rule
PPME_SOCKET_CONNECT_X = 23, // compare to "(evt.type=connect and evt.dir=<)" in a Falco rule
PPME_SYSCALL_CREAT_X = 59, // compare to "(evt.type=creat and evt.dir=<)" in a Falco rule
PPME_SYSCALL_CLONE_20_X = 223, // compare to "(evt.type=clone and evt.dir=<)" in a Falco rule
PPME_SOCKET_ACCEPT_5_X = 247, // compare to "(evt.type=accept and evt.dir=<)" in a Falco rule
PPME_SYSCALL_EXECVE_19_X = 293, // compare to "(evt.type=execve and evt.dir=<)" in a Falco rule
PPME_SYSCALL_OPENAT_2_X = 307, // compare to "(evt.type=openat and evt.dir=<)" in a Falco rule
PPME_SYSCALL_OPENAT2_X = 327, // compare to "(evt.type=openat2 and evt.dir=<)" in a Falco rule
PPME_SYSCALL_EXECVEAT_X = 331, // compare to "(evt.type=execveat and evt.dir=<)" in a Falco rule
PPME_SYSCALL_CLONE3_X = 335, // compare to "(evt.type=clone3 and evt.dir=<)" in a Falco rule
PPME_SYSCALL_OPEN_BY_HANDLE_AT_X = 337, // compare to "(evt.type=open_by_handle_at and evt.dir=<)" in a Falco rule
PPME_SOCKET_ACCEPT4_6_X = 389, // compare to "(evt.type=accept4 and evt.dir=<)" in a Falco rule
} ppm_event_code;
```
### Behavior Profiles fields
Compare to [Supported Fields for Conditions and Outputs](https://falco.org/docs/reference/rules/supported-fields/).
The list below is complete, and no other fields from Falco can be used for the behavior profiles at the moment. The binary will error out if used incorrectly. Thank you for your patience.
| Supported Behavior Profile Field | Description |
| --- | --- |
|proc.exe|The first command-line argument (i.e., argv[0]), typically the executable name or a custom string as specified by the user. It is primarily obtained from syscall arguments, truncated after 4096 bytes, or, as a fallback, by reading /proc/PID/cmdline, in which case it may be truncated after 1024 bytes. This field may differ from the last component of proc.exepath, reflecting how command invocation and execution paths can vary.|
|proc.pexe|The proc.exe (first command line argument argv[0]) of the parent process.|
|proc.aexe|The proc.exe (first command line argument argv[0]) for a specific process ancestor. You can access different levels of ancestors by using indices. For example, proc.aexe[1] retrieves the proc.exe of the parent process, proc.aexe[2] retrieves the proc.exe of the grandparent process, and so on. The current process's proc.exe line can be obtained using proc.aexe[0]. When used without any arguments, proc.aexe is applicable only in filters and matches any of the process ancestors. For instance, you can use `proc.aexe endswith java` to match any process ancestor whose proc.exe ends with the term `java`.|
|proc.exepath|The full executable path of a process, resolving to the canonical path for symlinks. This is primarily obtained from the kernel, or as a fallback, by reading /proc/PID/exe (in the latter case, the path is truncated after 1024 bytes). For eBPF drivers, due to verifier limits, path components may be truncated to 24 for legacy eBPF on kernel <5.2, 48 for legacy eBPF on kernel >=5.2, or 96 for modern eBPF.|
|proc.pexepath|The proc.exepath (full executable path) of the parent process.|
|proc.aexepath|The proc.exepath (full executable path) for a specific process ancestor. You can access different levels of ancestors by using indices. For example, proc.aexepath[1] retrieves the proc.exepath of the parent process, proc.aexepath[2] retrieves the proc.exepath of the grandparent process, and so on. The current process's proc.exepath line can be obtained using proc.aexepath[0]. When used without any arguments, proc.aexepath is applicable only in filters and matches any of the process ancestors. For instance, you can use `proc.aexepath endswith java` to match any process ancestor whose path ends with the term `java`.|
|proc.name|The process name (truncated after 16 characters) generating the event (task->comm). Truncation is determined by kernel settings and not by Falco. This field is collected from the syscalls args or, as a fallback, extracted from /proc/PID/status. The name of the process and the name of the executable file on disk (if applicable) can be different if a process is given a custom name which is often the case for example for java applications.|
|proc.pname|The proc.name truncated after 16 characters) of the process generating the event.|
|proc.aname|The proc.name (truncated after 16 characters) for a specific process ancestor. You can access different levels of ancestors by using indices. For example, proc.aname[1] retrieves the proc.name of the parent process, proc.aname[2] retrieves the proc.name of the grandparent process, and so on. The current process's proc.name line can be obtained using proc.aname[0]. When used without any arguments, proc.aname is applicable only in filters and matches any of the process ancestors. For instance, you can use `proc.aname=bash` to match any process ancestor whose name is `bash`.|
|proc.args|The arguments passed on the command line when starting the process generating the event excluding argv[0] (truncated after 4096 bytes). This field is collected from the syscalls args or, as a fallback, extracted from /proc/PID/cmdline.|
|proc.cmdline|The concatenation of `proc.name + proc.args` (truncated after 4096 bytes) when starting the process generating the event.|
|proc.pcmdline|The proc.cmdline (full command line (proc.name + proc.args)) of the parent of the process generating the event.|
|proc.acmdline|The full command line (proc.name + proc.args) for a specific process ancestor. You can access different levels of ancestors by using indices. For example, proc.acmdline[1] retrieves the full command line of the parent process, proc.acmdline[2] retrieves the proc.cmdline of the grandparent process, and so on. The current process's full command line can be obtained using proc.acmdline[0]. When used without any arguments, proc.acmdline is applicable only in filters and matches any of the process ancestors. For instance, you can use `proc.acmdline contains base64` to match any process ancestor whose command line contains the term base64.|
|proc.cmdnargs|The number of command line args (proc.args).|
|proc.cmdlenargs|The total count of characters / length of the command line args (proc.args) combined excluding whitespaces between args.|
|proc.exeline|The full command line, with exe as first argument (proc.exe + proc.args) when starting the process generating the event.|
|proc.env|The environment variables of the process generating the event as concatenated string 'ENV_NAME=value ENV_NAME1=value1'. Can also be used to extract the value of a known env variable, e.g. proc.env[ENV_NAME].|
|proc.cwd|The current working directory of the event.|
|proc.tty|The controlling terminal of the process. 0 for processes without a terminal.|
|proc.pid|The id of the process generating the event.|
|proc.ppid|The pid of the parent of the process generating the event.|
|proc.apid|The pid for a specific process ancestor. You can access different levels of ancestors by using indices. For example, proc.apid[1] retrieves the pid of the parent process, proc.apid[2] retrieves the pid of the grandparent process, and so on. The current process's pid can be obtained using proc.apid[0]. When used without any arguments, proc.apid is applicable only in filters and matches any of the process ancestors. For instance, you can use `proc.apid=1337` to match any process ancestor whose pid is equal to 1337.|
|proc.vpid|The id of the process generating the event as seen from its current PID namespace.|
|proc.pvpid|The id of the parent process generating the event as seen from its current PID namespace.|
|proc.sid|The session id of the process generating the event.|
|proc.sname|The name of the current process's session leader. This is either the process with pid=proc.sid or the eldest ancestor that has the same sid as the current process.|
|proc.sid.exe|The first command line argument argv[0] (usually the executable name or a custom one) of the current process's session leader. This is either the process with pid=proc.sid or the eldest ancestor that has the same sid as the current process.|
|proc.sid.exepath|The full executable path of the current process's session leader. This is either the process with pid=proc.sid or the eldest ancestor that has the same sid as the current process.|
|proc.vpgid|The process group id of the process generating the event, as seen from its current PID namespace.|
|proc.vpgid.name|The name of the current process's process group leader. This is either the process with proc.vpgid == proc.vpid or the eldest ancestor that has the same vpgid as the current process. The description of `proc.is_vpgid_leader` offers additional insights.|
|proc.vpgid.exe|The first command line argument argv[0] (usually the executable name or a custom one) of the current process's process group leader. This is either the process with proc.vpgid == proc.vpid or the eldest ancestor that has the same vpgid as the current process. The description of `proc.is_vpgid_leader` offers additional insights.|
|proc.vpgid.exepath|The full executable path of the current process's process group leader. This is either the process with proc.vpgid == proc.vpid or the eldest ancestor that has the same vpgid as the current process. The description of `proc.is_vpgid_leader` offers additional insights.|
|proc.is_exe_writable|'true' if this process' executable file is writable by the same user that spawned the process.|
|proc.is_exe_upper_layer|'true' if this process' executable file is in upper layer in overlayfs. This field value can only be trusted if the underlying kernel version is greater or equal than 3.18.0, since overlayfs was introduced at that time.|
|proc.is_exe_from_memfd|'true' if the executable file of the current process is an anonymous file created using memfd_create() and is being executed by referencing its file descriptor (fd). This type of file exists only in memory and not on disk. Relevant to detect malicious in-memory code injection. Requires kernel version greater or equal to 3.17.0.|
|proc.is_sid_leader|'true' if this process is the leader of the process session, proc.sid == proc.vpid. For host processes vpid reflects pid.|
|proc.is_vpgid_leader|'true' if this process is the leader of the virtual process group, proc.vpgid == proc.vpid. For host processes vpgid and vpid reflect pgid and pid. Can help to distinguish if the process was 'directly' executed for instance in a tty (similar to bash history logging, `is_vpgid_leader` would be 'true') or executed as descendent process in the same process group which for example is the case when subprocesses are spawned from a script (`is_vpgid_leader` would be 'false').|
|proc.exe_ino|The inode number of the executable file on disk. Can be correlated with fd.ino.|
|proc.exe_ino.ctime|Last status change time of executable file (inode->ctime) as epoch timestamp in nanoseconds. Time is changed by writing or by setting inode information e.g. owner, group, link count, mode etc.|
|proc.exe_ino.mtime|Last modification time of executable file (inode->mtime) as epoch timestamp in nanoseconds. Time is changed by file modifications, e.g. by mknod, truncate, utime, write of more than zero bytes etc. For tracking changes in owner, group, link count or mode, use proc.exe_ino.ctime instead.|
|container.id|The truncated container ID (first 12 characters), e.g. 3ad7b26ded6d is extracted from the Linux cgroups by Falco within the kernel. Consequently, this field is reliably available and serves as the lookup key for Falco's synchronous or asynchronous requests against the container runtime socket to retrieve all other `'container.*'` information. One important aspect to be aware of is that if the process occurs on the host, meaning not in the container PID namespace, this field is set to a string called 'host'. In Kubernetes, pod sandbox container processes can exist where `container.id` matches `k8s.pod.sandbox_id`, lacking other 'container.*' details.|
|fd.num|the unique number identifying the file descriptor.|
|fd.name|FD full name. If the fd is a file, this field contains the full path. If the FD is a socket, this field contain the connection tuple.|
|fd.directory|If the fd is a file, the directory that contains it.|
|fd.filename|If the fd is a file, the filename without the path.|
|fd.dev|device number (major/minor) containing the referenced file|
|fd.ino|inode number of the referenced file|
|fd.nameraw|FD full name raw. Just like fd.name, but only used if fd is a file path. File path is kept raw with limited sanitization and without deriving the absolute path.|
|custom.proc.aname.lineage.join|[Incubating] String concatenate the process lineage to achieve better performance. It requires an argument to specify the maximum level of traversal, e.g. 'custom.proc.aname.lineage.join[7]'. This is a custom plugin specific field for the anomaly behavior profiles only. It may be dperecated in the future.|
|custom.proc.aexe.lineage.join|[Incubating] String concatenate the process lineage to achieve better performance. It requires an argument to specify the maximum level of traversal, e.g. 'custom.proc.aexe.lineage.join[7]'. This is a custom plugin specific field for the anomaly behavior profiles only. It may be dperecated in the future.|
|custom.proc.aexepath.lineage.join|[Incubating] String concatenate the process lineage to achieve better performance. It requires an argument to specify the maximum level of traversal, e.g. 'custom.proc.aexepath.lineage.join[7]'. This is a custom plugin specific field for the anomaly behavior profiles only. It may be dperecated in the future.|
|custom.fd.name.part1|[Incubating] For fd related network events only. Part 1 as string of the ip tuple in the format 'ip:port', e.g '172.40.111.222:54321' given fd.name '172.40.111.222:54321->142.251.111.147:443'. It may be dperecated in the future.|
|custom.fd.name.part2|[Incubating] For fd related network events only. Part 2 as string of the ip tuple in the format 'ip:port', e.g.'142.251.111.147:443' given fd.name '172.40.111.222:54321->142.251.111.147:443'. This is a custom plugin specific field for the anomaly behavior profiles only. It may be dperecated in the future.|

View File

@ -0,0 +1,26 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2024 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
message(STATUS "Fetching libs at 'https://github.com/falcosecurity/libs.git'")
FetchContent_Declare(
libs
GIT_REPOSITORY https://github.com/falcosecurity/libs.git
GIT_TAG 273299c5832ab7efa6a93547f7c3bd55706b135c
CONFIGURE_COMMAND "" BUILD_COMMAND "")
FetchContent_MakeAvailable(libs)
set(LIBS_INCLUDE "${libs_SOURCE_DIR}")
set(LIBS_DIR "${libs_SOURCE_DIR}")
message(STATUS "Using libs include at '${LIBS_INCLUDE}'")

View File

@ -0,0 +1,27 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2024 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
message(
STATUS
"Fetching plugin-sdk-cpp at 'https://github.com/falcosecurity/plugin-sdk-cpp.git'"
)
FetchContent_Declare(
plugin-sdk-cpp
GIT_REPOSITORY https://github.com/falcosecurity/plugin-sdk-cpp.git
GIT_TAG 1c46ba02e8e9fe30a8362a54e99a6c3c804661f6)
FetchContent_MakeAvailable(plugin-sdk-cpp)
set(PLUGIN_SDK_INCLUDE "${plugin-sdk-cpp_SOURCE_DIR}/include")
message(STATUS "Using plugin-sdk-cpp include at '${PLUGIN_SDK_INCLUDE}'")

View File

@ -0,0 +1,31 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2024 The Falco Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
message(
STATUS
"Fetching xxhash at 'https://raw.githubusercontent.com/Cyan4973/xxHash/v0.8.2/xxhash.h'"
)
FetchContent_Declare(
# BSD 2-Clause License
xxhash
URL "https://raw.githubusercontent.com/Cyan4973/xxHash/v0.8.2/xxhash.h"
URL_HASH SHA256=be275e9db21a503c37f24683cdb4908f2370a3e35ab96e02c4ea73dc8e399c43
DOWNLOAD_NAME "xxhash.h"
DOWNLOAD_NO_EXTRACT TRUE
)
FetchContent_MakeAvailable(xxhash)
set(XXHASH_INCLUDE "${xxhash_SOURCE_DIR}")
message(STATUS "Using xxhash include at '${XXHASH_INCLUDE}'")

View File

@ -0,0 +1,228 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2024 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#pragma once
#include "xxhash_ext.h"
#include <iostream>
#include <cstdint>
#include <cmath>
#include <vector>
#include <algorithm>
#include <memory>
/*
CountMinSketch Powered Probabilistic Counting and Filtering
Falco Proposal: https://github.com/falcosecurity/falco/blob/master/proposals/20230620-anomaly-detection-framework.md
*/
namespace plugin::anomalydetection::num
{
template<typename T>
class cms
{
private:
std::unique_ptr<std::unique_ptr<T[]>[]> sketch;
uint64_t d_; // d / Rows / number of hash functions
uint64_t w_; // w / Cols / number of buckets
double gamma_; // Error probability (e.g. 0.001)
double eps_; // Relative error (e.g. 0.0001)
public:
static uint64_t calculate_d_rows_from_gamma(double gamma)
{
// -> determine Rows / number of hash functions
return static_cast<uint64_t>(std::ceil(std::log(1.0 / gamma)));
}
static double calculate_gamma_rows_from_d(uint64_t d)
{
// -> reverse calculate error probability from Rows / number of hash functions
return 1.0 / std::exp(d);
}
static uint64_t calculate_w_cols_buckets_from_eps(double eps)
{
// -> determine Cols / number of buckets
return static_cast<uint64_t>(std::ceil(std::exp(1) / eps));
}
static double calculate_eps_cols_buckets_from_w(uint64_t w)
{
// -> reverse calculate relative error from Cols / number of buckets
return std::exp(1) / w;
}
cms(double gamma, double eps)
{
d_ = calculate_d_rows_from_gamma(gamma); // -> determine Rows / number of hash functions
w_ = calculate_w_cols_buckets_from_eps(eps); // -> determine Cols / number of buckets
gamma_ = gamma;
eps_ = eps;
sketch = std::make_unique<std::unique_ptr<T[]>[]>(d_);
for (uint64_t i = 0; i < d_; ++i)
{
sketch[i] = std::make_unique<T[]>(w_);
std::fill(sketch[i].get(), sketch[i].get() + w_, static_cast<T>(0)); // Init to 0
}
}
// Overloaded constructor
cms(uint64_t d, uint64_t w)
{
d_ = d;
w_ = w;
gamma_ = calculate_gamma_rows_from_d(d); // -> reverse calculate error probability from Rows / number of hash functions
eps_ = calculate_eps_cols_buckets_from_w(w); // -> reverse calculate relative error from Cols / number of buckets
sketch = std::make_unique<std::unique_ptr<T[]>[]>(d_);
for (uint64_t i = 0; i < d_; ++i)
{
sketch[i] = std::make_unique<T[]>(w_);
std::fill(sketch[i].get(), sketch[i].get() + w_, static_cast<T>(0)); // Init to 0
}
}
void reset()
{
// Reset data structure
for (uint64_t i = 0; i < d_; ++i)
{
std::fill(sketch[i].get(), sketch[i].get() + w_, static_cast<T>(0));
}
}
uint64_t hash_XXH3_seed(std::string value, uint64_t seed) const
{
// using https://raw.githubusercontent.com/Cyan4973/xxHash/v0.8.2/xxhash.h
// Requirement: Need fast and reliable independent hash functions.
uint64_t hash = XXH3_64bits_withSeed(value.c_str(), value.size(), seed);
return hash;
}
void update(std::string value, T count)
{
if (value.empty())
{
return;
}
// Update counts for each hash function.
// Note: d is typically very small (e.g. < 10)
for (uint64_t seed = 0; seed < d_; ++seed)
{
// Map the hash value to an index of the current sketch Row by taking the modulo of the hash value, where w is the number of buckets.
// Simply loop over d, which is the number of hash functions, to obtain a seed in order to use independent hash functions for each Row.
sketch[seed][hash_XXH3_seed(value, seed) % w_] += count;
}
}
T update_estimate(std::string value, T count) const
{
if (value.empty())
{
return T();
}
std::vector<T> estimates;
// Same as the update function, but also returns the minimum count as an estimate.
// Note: d is typically very small (e.g. < 10)
for (uint64_t seed = 0; seed < d_; ++seed)
{
uint64_t index = hash_XXH3_seed(value, seed) % w_;
sketch[seed][index] += count;
estimates.push_back(sketch[seed][index]);
}
auto min_element = std::min_element(estimates.begin(), estimates.end());
return min_element != estimates.end() ? *min_element : T();
}
T estimate(std::string value) const
{
if (value.empty())
{
return T();
}
std::vector<T> estimates;
// Return the minimum count across hash functions as an estimate.
// Note: d is typically very small (e.g. < 10)
for (uint64_t seed = 0; seed < d_; ++seed)
{
uint64_t index = hash_XXH3_seed(value, seed) % w_;
estimates.push_back(sketch[seed][index]);
}
auto min_element = std::min_element(estimates.begin(), estimates.end());
return min_element != estimates.end() ? *min_element : T();
}
T get_item(uint64_t row, uint64_t col) const
{
if (row >= 0 && row < d_ && col >= 0 && col < w_)
{
return sketch[row][col];
} else
{
return T();
}
}
size_t get_size_bytes() const
{
return d_ * w_ * sizeof(T);
}
static size_t get_size_bytes(uint64_t d, uint64_t w)
{
return d * w * sizeof(T);
}
std::pair<uint64_t, uint64_t> get_dimensions() const
{
return std::make_pair(d_, w_);
}
// Return Rows / number of hash functions
uint64_t get_d() const
{
return d_;
}
// Return Cols / number of buckets
uint64_t get_w() const
{
return w_;
}
// Return error probability
double get_gamma() const
{
return gamma_;
}
// Return relative error
double get_eps() const
{
return eps_;
}
cms(cms&&) noexcept = default;
cms(const cms&) = default;
cms& operator=(cms&&) noexcept = default;
cms& operator=(const cms&) = default;
cms() = delete;
};
} // namespace plugin::anomalydetection::num

View File

@ -0,0 +1,19 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2024 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#define XXH_INLINE_ALL
#include <xxhash.h>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,228 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright (C) 2024 The Falco Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#pragma once
#include "num/cms.h"
#include "plugin_consts.h"
#include "plugin_utils.h"
#include "plugin_mutex.h"
#include "plugin_thread_manager.h"
#include "plugin_sinsp_filterchecks.h"
#include <falcosecurity/sdk.h>
#include <driver/ppm_events_public.h> // Temporary workaround to avoid redefining syscalls PPME events and risking being out of sync
#include <thread>
#include <atomic>
#include <chrono>
#include <unordered_map>
#include <unordered_set>
#include <sstream>
#define UINT32_MAX (4294967295U)
#define PPM_AT_FDCWD -100
#define SECOND_TO_NS 1000000000ULL
struct sinsp_param
{
uint16_t param_len;
uint8_t* param_pointer;
};
class anomalydetection
{
public:
anomalydetection() : m_thread_manager() {}
// Keep this aligned with `get_fields`
enum anomalydetection_fields
{
ANOMALYDETECTION_COUNT_MIN_SKETCH_COUNT = 0,
ANOMALYDETECTION_COUNT_MIN_SKETCH_BEHAVIOR_PROFILE_CONCAT_STR,
ANOMALYDETECTION_FALCO_DURATION_NS,
ANOMALYDETECTION_FIELD_MAX
};
//////////////////////////
// General plugin API
//////////////////////////
virtual ~anomalydetection() = default;
std::string get_name() { return PLUGIN_NAME; }
std::string get_version() { return PLUGIN_VERSION; }
std::string get_description() { return PLUGIN_DESCRIPTION; }
std::string get_contact() { return PLUGIN_CONTACT; }
std::string get_required_api_version()
{
return PLUGIN_REQUIRED_API_VERSION;
}
falcosecurity::init_schema get_init_schema();
void parse_init_config(nlohmann::json& config_json);
bool init(falcosecurity::init_input& in);
// todo
// void destroy();
std::string get_last_error() { return m_lasterr; }
static void log_error(std::string err_mess);
//////////////////////////
// Extract capability
//////////////////////////
// required; standard plugin API
std::vector<std::string> get_extract_event_sources()
{
return {"syscall"};
}
// required; standard plugin API
std::vector<falcosecurity::field_info> get_fields();
// required; standard plugin API
bool extract(const falcosecurity::extract_fields_input& in);
//////////////////////////
// Parse capability
//////////////////////////
// required; standard plugin API
std::vector<std::string> get_parse_event_sources()
{
return {"syscall"};
}
// required; standard plugin API
std::vector<falcosecurity::event_type> get_parse_event_types()
{
std::vector<falcosecurity::event_type> event_types;
// Temporary workaround
for (int i = PPME_GENERIC_E; i <= PPM_EVENT_MAX; ++i)
{
event_types.push_back(static_cast<falcosecurity::event_type>(i));
}
return event_types;
}
// required; standard plugin API
bool parse_event(const falcosecurity::parse_event_input& in);
// Custom helper functions within event parsing
bool extract_filterchecks_concat_profile(const falcosecurity::event_reader &evt, const falcosecurity::table_reader &tr, const std::vector<plugin_sinsp_filterchecks_field>& fields, std::string& behavior_profile_concat_str);
std::string extract_filterchecks_evt_params_fallbacks(const falcosecurity::event_reader &evt, const plugin_sinsp_filterchecks_field& field, const std::string& cwd = "");
private:
// Manages plugin side threads, such as resetting the count min sketch data structures
ThreadManager m_thread_manager;
// Epoch of Falco agent run start, re-creates libs agent_info->start_ts_epoch info
uint64_t m_falco_start_ts_epoch_ns;
/* Note: While we have set the stage for supporting multiple algorithms in this plugin,
the class is currently designed with direct members specific to the count_min_sketch use case.
This will be refactored and refined in the future.
*/
bool m_count_min_sketch_enabled = false;
uint32_t m_n_sketches = 0;
std::vector<std::vector<double>> m_gamma_eps;
std::vector<std::vector<uint64_t>> m_rows_cols; // If set supersedes m_gamma_eps
std::vector<std::vector<plugin_sinsp_filterchecks_field>> m_behavior_profiles_fields;
std::vector<std::unordered_set<ppm_event_code>> m_behavior_profiles_event_codes;
std::vector<uint64_t> m_reset_timers;
// Plugin managed state table specific to the count_min_sketch use case
plugin_anomalydetection::Mutex<std::vector<std::shared_ptr<plugin::anomalydetection::num::cms<uint64_t>>>> m_count_min_sketches;
// required; standard plugin API
std::string m_lasterr;
// required; standard plugin API; accessor to falcosecurity/libs' thread table
falcosecurity::table m_thread_table;
/* Subtables */
falcosecurity::table_field m_args; ///< args subtable
falcosecurity::table_field m_env; ///< env variables subtable
falcosecurity::table_field m_fds; ///< fd subtable
/* proc related */
falcosecurity::table_field m_tid; ///< The id of this thread
falcosecurity::table_field m_pid; ///< The id of the process containing this thread. In single thread threads, this is equal to tid.
falcosecurity::table_field m_ptid; ///< The id of the process that started this thread.
falcosecurity::table_field m_sid; ///< The session id of the process containing this thread.
falcosecurity::table_field m_comm; ///< Command name (e.g. "top")
falcosecurity::table_field m_exe; ///< argv[0] (e.g. "sshd: user@pts/4")
falcosecurity::table_field m_exepath; ///< full executable path
falcosecurity::table_field m_exe_writable;
falcosecurity::table_field m_exe_upper_layer; ///< True if the executable file belongs to upper layer in overlayfs
falcosecurity::table_field m_exe_from_memfd; ///< True if the executable is stored in fileless memory referenced by memfd
falcosecurity::table_field m_exe_ino;
falcosecurity::table_field m_exe_ino_ctime;
falcosecurity::table_field m_exe_ino_mtime;
// falcosecurity::table_field m_cap_permitted; // todo fix/expose via plugin API
// falcosecurity::table_field m_cap_inheritable; // todo fix/expose via plugin API
// falcosecurity::table_field m_cap_effective; // todo fix/expose via plugin API
falcosecurity::table_field m_args_value; ///< Value entry to command line arguments (e.g. "-d1") from the args array
falcosecurity::table_field m_env_value; ///< Value entry
falcosecurity::table_field m_group; ///< group infos
falcosecurity::table_field m_vtid; ///< The virtual id of this thread.
falcosecurity::table_field m_vpid; ///< The virtual id of the process containing this thread. In single thread threads, this is equal to vtid.
falcosecurity::table_field m_vpgid; // The virtual process group id, as seen from its pid namespace
falcosecurity::table_field m_tty; ///< Number of controlling terminal
falcosecurity::table_field m_cwd; ///< current working directory
/* user related */
// Not available until the next libs plugins API expansion
// falcosecurity::table_field m_uid; ///< user uid
// falcosecurity::table_field m_user; ///< user infos
// falcosecurity::table_field m_loginuid; ///< auid
// falcosecurity::table_field m_loginuser; ///< loginuser infos (auid)
/* fd related */
// falcosecurity::table_field m_fd_type_value; // todo fix/expose via plugin API
falcosecurity::table_field m_fd_openflags_value;
// falcosecurity::table_field m_fd_sockinfo_value; // todo fix/expose via plugin API
falcosecurity::table_field m_fd_name_value;
falcosecurity::table_field m_fd_nameraw_value;
falcosecurity::table_field m_fd_oldname_value;
falcosecurity::table_field m_fd_flags_value;
falcosecurity::table_field m_fd_dev_value;
falcosecurity::table_field m_fd_mount_id_value;
falcosecurity::table_field m_fd_ino_value;
falcosecurity::table_field m_fd_pid_value;
// falcosecurity::table_field m_fd_fd_value; // todo fix/expose via plugin API
/* container related */
falcosecurity::table_field m_container_id; ///< heuristic-based container id
/* Custom write/read fields*/
falcosecurity::table_field m_lastevent_fd_field; // todo fix/expose via plugin API
};
// required; standard plugin API
FALCOSECURITY_PLUGIN(anomalydetection);
FALCOSECURITY_PLUGIN_FIELD_EXTRACTION(anomalydetection);
FALCOSECURITY_PLUGIN_EVENT_PARSING(anomalydetection);

Some files were not shown because too many files have changed in this diff Show More