|  | 
| 12 | 12 | 
 | 
| 13 | 13 | # Or override any rule, macro, or list from the Default Rules | 
| 14 | 14 | --- | 
| 15 |  | -- macro: "user_known_k8s_client_container" | 
| 16 |  | -  condition: "container.image.repository=\"k8s.gcr.io/fluentd-gcp-scaler\" or container.image.repository=\"\ | 
| 17 |  | -    fluxcd/flux\" or container.image.repository=\"sysdig/agent\" or container.image.repository=\"\ | 
| 18 |  | -    fluxcd/helm-operator\" or (container.image.repository=\"google/cloud-sdk\")" | 
| 19 |  | -  append: false | 
| 20 |  | - | 
| 21 |  | -- macro: "user_known_write_below_root_activities" | 
| 22 |  | -  condition: "(container.image.repository startswith \"bbcdocker/go-synapse\" and\ | 
| 23 |  | -    \ fd.name=\"/haproxy.conf\") or (container.image.repository=\"cassandra\" and\ | 
| 24 |  | -    \ fd.name startswith \"/root/.cassandra/\") or (container.id=host and fd.name\ | 
| 25 |  | -    \ startswith /root/.kube/) or (container.image.repository=\"mariadb\" and proc.name=\"\ | 
| 26 |  | -    mysqld\") or (container.image.repository=\"mariadb\" and proc.name=\"mysql\")" | 
| 27 |  | -  append: false | 
| 28 |  | - | 
| 29 | 15 | - macro: "user_known_network_tool_client_container" | 
| 30 | 16 |   condition: "container.image.repository=\"bbcdocker/go-synapse\" or container.image.repository=\"\ | 
| 31 | 17 |     strimzi/kafka\" or container.image.repository=\"landoop/fast-data-dev\"" | 
|  | 
| 50 | 36 |   source: "syscall" | 
| 51 | 37 |   append: false | 
| 52 | 38 | 
 | 
| 53 |  | -- macro: "user_known_write_below_etc_activities" | 
| 54 |  | -  condition: "(container.image.repository=\"quay.io/thanos/thanos\" and fd.name=\"\ | 
| 55 |  | -    /etc/prom/prometheus.yaml.tmp\" or (container.image.repository=\"eu.gcr.io/bbc-registry/comuto3\"\ | 
| 56 |  | -    \ and fd.name startswith \"/etc/nginx/\"))" | 
| 57 |  | -  append: false | 
| 58 |  | - | 
| 59 | 39 | - rule: "The docker client is executed in a container" | 
| 60 | 40 |   desc: "Detect a k8s client tool executed inside a container" | 
| 61 | 41 |   condition: "spawned_process and container and not user_known_k8s_client_container\ | 
|  | 
| 85 | 65 |   - "users" | 
| 86 | 66 |   append: false | 
| 87 | 67 | 
 | 
| 88 |  | -- macro: "user_known_write_etc_conditions" | 
| 89 |  | -  condition: "proc.name=confd or (container.image.repository=\"confluentinc/cp-schema-registry\"\ | 
| 90 |  | -    \ and fd.name startswith \"/etc/schema-registry/\") or (container.image.repository=\"\ | 
| 91 |  | -    eu.gcr.io/bbc-registry/communication\" and fd.name startswith \"/etc/nginx/\"\ | 
| 92 |  | -    ) or (container.image.repository=\"eu.gcr.io/bbc-registry/redirector\" and fd.name\ | 
| 93 |  | -    \ startswith \"/etc/nginx/\") or (container.image.repository=\"eu.gcr.io/bbc-registry/webhooks\"\ | 
| 94 |  | -    \ and fd.name startswith \"/etc/nginx/\")or (container.image.repository=\"thanosio/thanos\"\ | 
| 95 |  | -    \ and fd.name startswith \"/etc/prom/\") or (container.image.repository=\"eu.gcr.io/bbc-registry/insurance-backoffice\"\ | 
| 96 |  | -    \ and fd.name startswith \"/etc/nginx/\") or (container.id=\"host\" and proc.name=\"\ | 
| 97 |  | -    exe\" and proc.pname=\"dockerd\")" | 
| 98 |  | -  append: false | 
| 99 |  | - | 
| 100 |  | -- macro: "user_known_package_manager_in_container" | 
| 101 |  | -  condition: "(container.image.repository=\"confluentinc/cp-schema-registry\" and\ | 
| 102 |  | -    \ proc.name=\"pip\") or (container.image.repository=sysdig/node-image-analyzer\ | 
| 103 |  | -    \ and proc.name=rpm)" | 
| 104 |  | -  append: false | 
| 105 |  | - | 
| 106 |  | -- macro: "user_privileged_containers" | 
| 107 |  | -  condition: "(container.image.repository endswith sysdig/agent) or (container.image.repository=weaveworks/scope)\ | 
| 108 |  | -    \ or (container.image.repository=docker.io/weaveworks/scope) or (container.image.repository=gcr.io/google-containers/startup-script)\ | 
| 109 |  | -    \ or (container.image.repository=gke.gcr.io/kube-proxy) or (container.image.repository=sysdig/node-image-analyzer)" | 
| 110 |  | -  append: false | 
| 111 |  | - | 
| 112 |  | -- macro: "user_sensitive_mount_containers" | 
| 113 |  | -  condition: "(container.image.repository = docker.io/sysdig/agent) or (container.image.repository=quay.io/prometheus/node-exporter)\ | 
| 114 |  | -    \ or (container.image.repository=weaveworks/scope) or (container.image.repository=datadog/agent)" | 
| 115 |  | -  append: false | 
| 116 |  | - | 
| 117 |  | -- macro: "user_known_change_thread_namespace_activities" | 
| 118 |  | -  condition: "container.image.repository=gcr.io/google-containers/startup-script" | 
| 119 |  | -  append: false | 
| 120 |  | - | 
| 121 | 68 | - list: "user_known_hostnetwork_images" | 
| 122 | 69 |   items: | 
| 123 | 70 |   - "gke.gcr.io/kube-proxy" | 
|  | 
| 168 | 115 |   tags: [] | 
| 169 | 116 |   append: true | 
| 170 | 117 | 
 | 
| 171 |  | -- macro: "user_shell_container_exclusions" | 
| 172 |  | -  condition: "((container.image.repository=bitnami/rabbitmq and proc.pname=erl) or\ | 
| 173 |  | -    \ (container.image.repository=bitnami/rabbitmq and proc.pname=\"beam.smp\"))" | 
| 174 |  | -  append: false | 
| 175 |  | - | 
| 176 |  | -- macro: "user_known_write_root_conditions" | 
| 177 |  | -  condition: "(fd.name=/root/.bash_history) or (container.image.repository=\"cassandra\"\ | 
| 178 |  | -    \ and fd.name startswith \"/root/.cassandra/\") or (container.image.repository=\"\ | 
| 179 |  | -    bbcdocker/go-synapse\" and fd.name=\"/haproxy.conf\") or (container.id=\"host\"\ | 
| 180 |  | -    \ and proc.name=\"exe\" and proc.pname=\"dockerd\")" | 
| 181 |  | -  append: false | 
| 182 |  | - | 
| 183 |  | -- macro: "exe_running_docker_save" | 
| 184 |  | -  condition: "((proc.cmdline startswith \"exe /var/lib/docker\" or proc.cmdline startswith\ | 
| 185 |  | -    \ \"exe / /var/lib/docker\") and proc.pname in (dockerd, docker))" | 
| 186 |  | -  append: false | 
| 187 |  | - | 
| 188 | 118 | - rule: "Update Package Repository" | 
| 189 | 119 |   condition: "and not exe_running_docker_save" | 
| 190 | 120 |   tags: [] | 
|  | 
| 201 | 131 |   tags: [] | 
| 202 | 132 |   append: true | 
| 203 | 133 | 
 | 
| 204 |  | -- macro: "allowed_clear_log_files" | 
| 205 |  | -  condition: "(container.image.repository=\"landoop/fast-data-dev\" and fd.name=\"\ | 
| 206 |  | -    /var/log/broker.log\")" | 
| 207 |  | -  append: false | 
| 208 |  | - | 
| 209 | 134 | - list: "user_known_gke_metadata_images" | 
| 210 | 135 |   items: | 
| 211 | 136 |   - "gke.gcr.io/kube-proxy-amd64" | 
|  | 
| 225 | 150 | 
 | 
| 226 | 151 | - macro: "mariadb_snapshots_validator" | 
| 227 | 152 |   condition: "(container.image.repository=\"google/cloud-sdk\" and container.name\ | 
| 228 |  | -    \ contains\"snapshot-validator\")" | 
|  | 153 | +    \ contains \"snapshot-validator\")" | 
| 229 | 154 |   append: false | 
| 230 | 155 | 
 | 
| 231 | 156 | - macro: "bbc_java_app_proc" | 
|  | 
| 286 | 211 |   tags: [] | 
| 287 | 212 |   append: true | 
| 288 | 213 | 
 | 
| 289 |  | -- macro: "user_shell_container_exclusions" | 
| 290 |  | -  condition: "(container.image.repository=\"kong\" and proc.pname=\"nginx\")" | 
| 291 |  | -  append: false | 
| 292 |  | - | 
| 293 | 214 | - list: "user_known_privilged_k8s_roles" | 
| 294 | 215 |   items: | 
| 295 | 216 |   - "mariadb-moderation-snapshot-validated" | 
|  | 
| 319 | 240 |   tags: [] | 
| 320 | 241 |   append: true | 
| 321 | 242 | 
 | 
| 322 |  | -- macro: "user_known_network_tool_activities" | 
| 323 |  | -  condition: "(container.image.repository=\"mariadb\" and (proc.pname=\"wsrep_sst_maria\"\ | 
| 324 |  | -    \ or proc.pname=\"timeout\") and proc.name=\"socat\")" | 
| 325 |  | -  append: false | 
| 326 |  | - | 
| 327 |  | -- macro: "user_shell_container_exclusions" | 
| 328 |  | -  condition: "(container.image.repository=\"mariadb\" and proc.pname=\"mysqld\" and\ | 
| 329 |  | -    \ proc.name=\"sh\")" | 
| 330 |  | -  append: false | 
| 331 |  | - | 
| 332 |  | -- macro: "user_known_remote_file_copy_activities" | 
| 333 |  | -  condition: "(container.image.repository=\"eu.gcr.io/bbc-registry/command-export-russian-user\"\ | 
| 334 |  | -    \ and proc.name=\"sftp\")" | 
| 335 |  | -  append: false | 
| 336 |  | - | 
| 337 | 243 | - rule: "Launch Remote File Copy Tools in Container" | 
| 338 | 244 |   condition: "and not user_known_remote_file_copy_activities" | 
| 339 | 245 |   tags: [] | 
|  | 
| 349 | 255 |   tags: [] | 
| 350 | 256 |   append: true | 
| 351 | 257 | 
 | 
| 352 |  | -- macro: "user_known_container_drift_activities" | 
| 353 |  | -  condition: "((container.image.repository=\"fluxcd/helm-operator\" and proc.name=\"\ | 
| 354 |  | -    git\" and evt.arg.filename endswith \"/.git/config\") or (container.image.repository=\"\ | 
| 355 |  | -    fluxcd/flux\" and proc.name=\"git\" and evt.arg.filename endswith \"/.git/config\"\ | 
| 356 |  | -    ) or (container.image.repository=\"k8s.gcr.io/fluentd-gcp-scaler\" and proc.name=\"\ | 
| 357 |  | -    kubectl\" and evt.arg.filename startswith \"/root/.kube/cache/discovery/\") or\ | 
| 358 |  | -    \ (container.image.repository=\"eu.gcr.io/bbc-registry/command-bnp-payout-report\"\ | 
| 359 |  | -    \ and proc.name=\"gpg-agent\" and evt.arg.filename startswith \"/root/.gnupg/\"\ | 
| 360 |  | -    ) or (container.image.repository=\"gcr.io/stackdriver-agents/stackdriver-logging-agent\"\ | 
| 361 |  | -    \ and evt.arg.filename startswith \"/var/run/google-fluentd/\") or (container.image.repository=\"\ | 
| 362 |  | -    weaveworks/prom-aggregation-gateway\" and proc.name=\"prom-aggregatio\" and evt.arg.filename\ | 
| 363 |  | -    \ startswith \"/var/lib/docker/\") or (container.image.repository=\"datadog/agent\"\ | 
| 364 |  | -    \ and proc.name=\"system-probe\" and evt.arg.filename startswith \"/var/run/sysprobe/\"\ | 
| 365 |  | -    ) or (container.image.repository=\"docker.elastic.co/elasticsearch/elasticsearch\"\ | 
| 366 |  | -    \ and proc.name=\"java\" and evt.arg.filename startswith \"/usr/share/elasticsearch/plugins/\"\ | 
| 367 |  | -    ) or (container.image.repository=\"docker.elastic.co/elasticsearch/elasticsearch\"\ | 
| 368 |  | -    \ and proc.name=\"cp\" and evt.arg.filename startswith \"/mnt/elastic-internal/elasticsearch-config-local/\"\ | 
| 369 |  | -    ) or (container.image.repository=\"istio/proxyv2\" and proc.name=\"pilot-agent\"\ | 
| 370 |  | -    \ and evt.arg.filename startswith \"/var/lib/docker/overlay2/\"))" | 
| 371 |  | -  append: false | 
| 372 |  | - | 
| 373 | 258 | - macro: "test_foo_bar" | 
| 374 | 259 |   condition: "never_true" | 
| 375 | 260 |   append: false | 
0 commit comments