Skip to content

Nova ruleset evaluation in bpf probes#309

Merged
haesbaert merged 1 commit into
mainfrom
nova-loader
Apr 16, 2026
Merged

Nova ruleset evaluation in bpf probes#309
haesbaert merged 1 commit into
mainfrom
nova-loader

Conversation

@haesbaert
Copy link
Copy Markdown
Collaborator

This implements the basic rule matching for nova probes, this diff does
basically two things:

o - Actually load QQ_NOVA probes
o - Installs the quark_ruleset into the BPF probes so we can evaluate rules in
kernel land. Path matching is still missing but this is a good start.

We support 1024 rules, and for the first version we will require 5.17 so we have
bpf_loop(). We do some slightly smart things like diminishing the amount of
branches the verifier has to calculate by doing branchless comparisons in the
evaluation loop, this is likely not necessary for 5.17 as bpf_loop() saves a lot
of budget.

Next step is implementing path matching via bpf_strncmp() or manually, since we
likely don't need TRIE for this.

@haesbaert haesbaert requested a review from a team as a code owner April 16, 2026 13:30
Comment thread nova.bpf.c Outdated
Comment thread nova_queue.c Outdated
Comment thread nova_queue.c Outdated
Comment thread nova.bpf.c
Comment thread nova.bpf.c
Comment thread nova.bpf.c
Comment thread nova_queue.c Outdated
@haesbaert
Copy link
Copy Markdown
Collaborator Author

so canonical is robbing us of our productivity, there's something going on with the apt repositories, that's why CI is failing

@haesbaert haesbaert force-pushed the nova-loader branch 2 times, most recently from 23b6b9b to aa38a6c Compare April 16, 2026 17:17
This implements the basic rule matching for nova probes, this diff does
basically two things:

o - Actually load QQ_NOVA probes
o - Installs the quark_ruleset into the BPF probes so we can evaluate rules in
    kernel land. Path matching is still missing but this is a good start.

We support 1024 rules, and for the first version we will require 5.17 so we have
bpf_loop(). We do some slightly smart things like diminishing the amount of
branches the verifier has to calculate by doing branchless comparisons in the
evaluation loop, this is likely not necessary for 5.17 as bpf_loop() saves a lot
of budget.

Next step is implementing path matching via bpf_strncmp() or manually, since we
likely don't need TRIE for this.
@haesbaert haesbaert merged commit a0fa0b8 into main Apr 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants