Skip to content
Open
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
10 changes: 8 additions & 2 deletions content/bundles_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,16 @@ func runBundle(policyBundlePath string, policyMrn string, asset *inventory.Asset
if len(fullResult.Errors) > 0 {
msg := ""
for _, e := range fullResult.Errors {
// When discovering multiple assets (e.g. pods + namespaces), some may
// not match any policies. Only fail on unexpected errors.
if strings.Contains(e, "asset doesn't support any policies") {
continue
}
msg += e + "; "
}

return nil, errors.New("errors during scan: " + msg)
if msg != "" {
return nil, errors.New("errors during scan: " + msg)
Comment thread
mondoo-code-review[bot] marked this conversation as resolved.
}
}

reports := fullResult.Reports
Expand Down
26 changes: 26 additions & 0 deletions content/mondoo-linux-security.mql.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5691,6 +5691,7 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists
Comment thread
mondoo-code-review[bot] marked this conversation as resolved.
paths = ["/etc/sudoers", "/etc/sudoers.d"]
paths.all(p:
auditd.rules.files.contains( f:
Expand Down Expand Up @@ -5979,6 +5980,7 @@ queries:
- uid: mondoo-linux-security-login-and-logout-events-are-collected-debian
filters: asset.family.contains("debian")
mql: |
file("/etc/audit/auditd.conf").exists
paths = ["/var/log/lastlog", "/var/log/faillog", "/var/log/tallylog"]
paths.all(p:
auditd.rules.files.contains( f:
Expand All @@ -5989,6 +5991,7 @@ queries:
- uid: mondoo-linux-security-login-and-logout-events-are-collected-rhel
filters: asset.family.contains("redhat") || asset.platform == "amazonlinux"
mql: |
file("/etc/audit/auditd.conf").exists
paths = ["/var/run/faillock", "/var/log/lastlog", "/var/log/tallylog"]
paths.all(p:
auditd.rules.files.contains( f:
Expand All @@ -5999,6 +6002,7 @@ queries:
- uid: mondoo-linux-security-login-and-logout-events-are-collected-other
filters: asset.family.contains(/redhat|debian/) == false && asset.platform != "amazonlinux"
mql: |
file("/etc/audit/auditd.conf").exists
paths = ["/var/log/lastlog", "/var/log/tallylog"]
paths.all(p:
auditd.rules.files.contains( f:
Expand All @@ -6018,6 +6022,7 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists
// Check utmp with session key
auditd.rules.files.contains( f:
f.path == "/var/run/utmp" && f.permissions == "wa"
Expand Down Expand Up @@ -6154,6 +6159,8 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists

// 64-bit syscall rules for time modification
syscalls_64bit = ["adjtimex", "settimeofday", "clock_settime"]
desiredRules64 = auditd.rules.syscalls.where(
Expand Down Expand Up @@ -6633,6 +6640,8 @@ queries:
- uid: mondoo-linux-security-events-that-modify-the-systems-network-environment-are-collected-debian-rhel
filters: asset.family.contains(/redhat|debian/) == true
mql: |
file("/etc/audit/auditd.conf").exists

// Syscall rules for network changes (64-bit)
syscalls_64bit = ["sethostname", "setdomainname"]
desiredRules64 = auditd.rules.syscalls.where(
Expand Down Expand Up @@ -6671,6 +6680,8 @@ queries:
- uid: mondoo-linux-security-events-that-modify-the-systems-network-environment-are-collected-other
filters: asset.family.contains(/redhat|debian/) == false
mql: |
file("/etc/audit/auditd.conf").exists

// Syscall rules for network changes (64-bit)
syscalls_64bit = ["sethostname", "setdomainname"]
desiredRules64 = auditd.rules.syscalls.where(
Expand Down Expand Up @@ -6709,6 +6720,8 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists

// Syscalls for DAC permission modification (64-bit)
syscalls_64bit = ["chmod", "fchmod", "fchmodat", "chown", "fchown", "fchownat", "lchown", "setxattr", "lsetxattr", "fsetxattr", "removexattr", "lremovexattr", "fremovexattr"]
desiredRules64 = auditd.rules.syscalls.where(
Expand Down Expand Up @@ -6919,6 +6932,8 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists

syscalls_64bit = ["creat", "open", "openat", "truncate", "ftruncate"]

// Check for EPERM exit code rules (64-bit)
Expand Down Expand Up @@ -7137,6 +7152,7 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists
paths = ["/etc/group", "/etc/passwd", "/etc/gshadow", "/etc/shadow", "/etc/security/opasswd"]
paths.all(p:
auditd.rules.files.contains( f:
Expand Down Expand Up @@ -7277,6 +7293,8 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists

// Check for 64-bit or 32-bit mount syscall audit rule
auditd.rules.syscalls.contains(
syscalls.contains("mount")
Expand Down Expand Up @@ -7413,6 +7431,8 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists

// Define syscalls based on architecture (ARM doesn't have unlink/rename)
syscalls_base = ["unlinkat", "renameat"]
syscalls_nonarm = ["unlink", "rename"]
Expand Down Expand Up @@ -7611,6 +7631,8 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-4-2
compliance/soc2-2017: soc2-control-cc7-1-1
mql: |
file("/etc/audit/auditd.conf").exists

// Watch rules for module tools
paths = ["/sbin/insmod", "/sbin/rmmod", "/sbin/modprobe"]
paths.all(p:
Expand Down Expand Up @@ -7749,6 +7771,8 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists

auditd.rules.files.contains( f:
f.path == "/var/log/sudo.log" && f.permissions == "wa"
&& keyname == "actions"
Expand Down Expand Up @@ -7868,6 +7892,8 @@ queries:
compliance/nist-sp-800-171: nist-sp-800-171--3-3-1
compliance/soc2-2017: soc2-control-cc7-2-1
mql: |
file("/etc/audit/auditd.conf").exists
Comment thread
mondoo-code-review[bot] marked this conversation as resolved.

auditd.rules.controls.any(flag == "-e" && value == "2")
docs:
desc: |
Expand Down
16 changes: 8 additions & 8 deletions policy/scan/local_scanner_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ func (s *LocalScannerSuite) TestRunIncognito_SharedQuery() {
full := res.GetFull()
s.Require().NotNil(full)

s.Equal(1, len(full.Reports))
s.GreaterOrEqual(len(full.Reports), 1)
Comment thread
mondoo-code-review[bot] marked this conversation as resolved.

for k, r := range full.Reports {
// Verify the score is 100
Expand Down Expand Up @@ -193,7 +193,7 @@ func (s *LocalScannerSuite) TestRunIncognito_ExceptionGroups() {
full := res.GetFull()
s.Require().NotNil(full)

s.Equal(1, len(full.Reports))
s.GreaterOrEqual(len(full.Reports), 1)

for k, r := range full.Reports {
// Verify the score is 100
Expand Down Expand Up @@ -259,7 +259,7 @@ func (s *LocalScannerSuite) TestRunIncognito_ExceptionGroups_RejectedReview() {
full := res.GetFull()
s.Require().NotNil(full)

s.Equal(1, len(full.Reports))
s.GreaterOrEqual(len(full.Reports), 1)

for k, r := range full.Reports {
// Verify the score is 33
Expand Down Expand Up @@ -323,7 +323,7 @@ func (s *LocalScannerSuite) TestRunIncognito_QueryExceptions() {
full := res.GetFull()
s.Require().NotNil(full)

s.Equal(1, len(full.Reports))
s.GreaterOrEqual(len(full.Reports), 1)

for k, r := range full.Reports {
// Verify the score is 100
Expand Down Expand Up @@ -372,7 +372,7 @@ func (s *LocalScannerSuite) TestRunIncognito_QueryExceptions_MultipleGroups() {
full := res.GetFull()
s.Require().NotNil(full)

s.Equal(1, len(full.Reports))
s.GreaterOrEqual(len(full.Reports), 1)

for k, r := range full.Reports {
// Verify the score is 100
Expand Down Expand Up @@ -433,7 +433,7 @@ func (s *LocalScannerSuite) TestRunIncognito_Frameworks() {
full := res.GetFull()
s.Require().NotNil(full)

s.Equal(1, len(full.Reports))
s.GreaterOrEqual(len(full.Reports), 1)

for _, r := range full.Reports {
s.Contains(r.Scores, "//local.cnspec.io/run/local-execution/controls/mondoo-test-01")
Expand Down Expand Up @@ -473,7 +473,7 @@ func (s *LocalScannerSuite) TestRunIncognito_Frameworks_Exceptions_Deactivate()
full := res.GetFull()
s.Require().NotNil(full)

s.Equal(1, len(full.Reports))
s.GreaterOrEqual(len(full.Reports), 1)

for _, r := range full.Reports {
s.NotContains(r.Scores, "//local.cnspec.io/run/local-execution/controls/mondoo-test-01")
Expand Down Expand Up @@ -513,7 +513,7 @@ func (s *LocalScannerSuite) TestRunIncognito_Frameworks_Exceptions_OutOfScope()
full := res.GetFull()
s.Require().NotNil(full)

s.Equal(1, len(full.Reports))
s.GreaterOrEqual(len(full.Reports), 1)

for _, r := range full.Reports {
s.NotContains(r.Scores, "//local.cnspec.io/run/local-execution/controls/mondoo-test-01")
Expand Down
Loading