Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle multi doc rules files #760

Merged
merged 2 commits into from
Aug 2, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions test/falco_tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,18 @@ trace_files: !mux
trace_file: trace_files/cat_write.scap
all_events: True

multiple_docs:
detect: True
detect_level:
- WARNING
- INFO
- ERROR
rules_file:
- rules/single_rule.yaml
- rules/double_rule.yaml
trace_file: trace_files/cat_write.scap
all_events: True

rules_directory:
detect: True
detect_level:
Expand Down Expand Up @@ -435,6 +447,35 @@ trace_files: !mux
- rules/invalid_append_macro.yaml
trace_file: trace_files/cat_write.scap

invalid_overwrite_macro_multiple_docs:
exit_status: 1
stdout_is: |+
Compilation error when compiling "foo": Undefined macro 'foo' used in filter.
---
- macro: some macro
condition: foo
append: false
---
validate_rules_file:
- rules/invalid_overwrite_macro_multiple_docs.yaml
trace_file: trace_files/cat_write.scap

invalid_append_macro_multiple_docs:
exit_status: 1
stdout_is: |+
Compilation error when compiling "evt.type=execve foo": 17: syntax error, unexpected 'foo', expecting 'or', 'and'
---
- macro: some macro
condition: evt.type=execve

- macro: some macro
condition: foo
append: true
---
validate_rules_file:
- rules/invalid_append_macro_multiple_docs.yaml
trace_file: trace_files/cat_write.scap

invalid_overwrite_rule:
exit_status: 1
stdout_contains: |+
Expand Down Expand Up @@ -477,6 +518,44 @@ trace_files: !mux
- rules/invalid_append_rule.yaml
trace_file: trace_files/cat_write.scap

invalid_overwrite_rule_multiple_docs:
exit_status: 1
stdout_is: |+
Undefined macro 'bar' used in filter.
---
- rule: some rule
desc: some desc
condition: bar
output: some output
priority: INFO
append: false
---
validate_rules_file:
- rules/invalid_overwrite_rule_multiple_docs.yaml
trace_file: trace_files/cat_write.scap

invalid_append_rule_multiple_docs:
exit_status: 1
stdout_contains: |+
Compilation error when compiling "evt.type=open bar": 15: syntax error, unexpected 'bar', expecting 'or', 'and'
---
- rule: some rule
desc: some desc
condition: evt.type=open
output: some output
priority: INFO

- rule: some rule
desc: some desc
condition: bar
output: some output
priority: INFO
append: true
---
validate_rules_file:
- rules/invalid_append_rule_multiple_docs.yaml
trace_file: trace_files/cat_write.scap

invalid_missing_rule_name:
exit_status: 1
stdout_is: |+
Expand Down
8 changes: 8 additions & 0 deletions test/rules/invalid_append_macro_multiple_docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
- macro: some macro
condition: evt.type=execve
---
- macro: some macro
condition: foo
append: true

13 changes: 13 additions & 0 deletions test/rules/invalid_append_rule_multiple_docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
- rule: some rule
desc: some desc
condition: evt.type=open
output: some output
priority: INFO
---
- rule: some rule
desc: some desc
condition: bar
output: some output
priority: INFO
append: true
8 changes: 8 additions & 0 deletions test/rules/invalid_overwrite_macro_multiple_docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
- macro: some macro
condition: evt.type=execve
---
- macro: some macro
condition: foo
append: false

13 changes: 13 additions & 0 deletions test/rules/invalid_overwrite_rule_multiple_docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
- rule: some rule
desc: some desc
condition: evt.type=open
output: some output
priority: INFO
---
- rule: some rule
desc: some desc
condition: bar
output: some output
priority: INFO
append: false
66 changes: 66 additions & 0 deletions test/rules/multiple_docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
#
# Copyright (C) 2016-2018 Draios Inc dba Sysdig.
#
# This file is part of falco.
#
# 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.
#

- required_engine_version: 2

- list: cat_binaries
items: [cat]

- list: cat_capable_binaries
items: [cat_binaries]

- macro: is_cat
condition: proc.name in (cat_capable_binaries)

- rule: open_from_cat
desc: A process named cat does an open
condition: evt.type=open and is_cat
output: "An open was seen (command=%proc.cmdline)"
priority: WARNING
---
#
# Copyright (C) 2016-2018 Draios Inc dba Sysdig.
#
# This file is part of falco.
#
# 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.
#
# This ruleset depends on the is_cat macro defined in single_rule.yaml

- rule: exec_from_cat
desc: A process named cat does execve
condition: evt.type=execve and is_cat
output: "An exec was seen (command=%proc.cmdline)"
priority: ERROR

- rule: access_from_cat
desc: A process named cat does an access
condition: evt.type=access and is_cat
output: "An access was seen (command=%proc.cmdline)"
priority: INFO
Loading