@gendigital/sage-opencode 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -71
- package/dist/bundled-dirs.d.ts +1 -1
- package/dist/bundled-dirs.d.ts.map +1 -1
- package/dist/bundled-dirs.js +1 -1
- package/dist/bundled-dirs.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83 -18
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.cjs +31776 -0
- package/dist/mcp-server.cjs.map +7 -0
- package/dist/plugin-discovery.js +1 -1
- package/dist/plugin-discovery.js.map +1 -1
- package/dist/startup-scan.d.ts.map +1 -1
- package/dist/startup-scan.js +3 -2
- package/dist/startup-scan.js.map +1 -1
- package/dist/tool-handler.d.ts +1 -1
- package/dist/tool-handler.d.ts.map +1 -1
- package/dist/tool-handler.js +61 -6
- package/dist/tool-handler.js.map +1 -1
- package/package.json +6 -4
- package/resources/threats/agent-layer.yaml +186 -0
- package/resources/threats/commands.yaml +24 -53
- package/resources/threats/credentials.yaml +12 -20
- package/resources/threats/dummy.yaml +22 -33
- package/resources/threats/files.yaml +34 -53
- package/resources/threats/mac-commands.yaml +20 -47
- package/resources/threats/mac-credentials.yaml +4 -12
- package/resources/threats/mac-files.yaml +5 -15
- package/resources/threats/mac-obfuscation.yaml +6 -13
- package/resources/threats/mac-persistence.yaml +11 -20
- package/resources/threats/mac-supply-chain.yaml +5 -8
- package/resources/threats/mitre.yaml +105 -167
- package/resources/threats/obfuscation.yaml +7 -15
- package/resources/threats/persistence.yaml +10 -17
- package/resources/threats/prompt-injection.yaml +94 -44
- package/resources/threats/self-defense.yaml +8 -12
- package/resources/threats/supply_chain.yaml +1 -2
- package/resources/threats/urls.yaml +9 -14
- package/resources/threats/win-commands.yaml +46 -106
- package/resources/threats/win-credentials.yaml +15 -25
- package/resources/threats/win-files.yaml +10 -20
- package/resources/threats/win-obfuscation.yaml +21 -37
- package/resources/threats/win-persistence.yaml +8 -16
- package/resources/threats/win-supply-chain.yaml +2 -3
- package/dist/logger-adaptor.d.ts +0 -15
- package/dist/logger-adaptor.d.ts.map +0 -1
- package/dist/logger-adaptor.js +0 -32
- package/dist/logger-adaptor.js.map +0 -1
- /package/resources/{allowlists → trusted-domains}/trusted-installer-domains.yaml +0 -0
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
category: secrets
|
|
9
9
|
severity: critical
|
|
10
10
|
confidence: 0.95
|
|
11
|
-
action: block
|
|
12
11
|
pattern: "(/etc/passwd|/etc/shadow|/etc/sudoers)"
|
|
13
12
|
match_on: file_path
|
|
14
13
|
title: "Access system authentication file"
|
|
@@ -20,7 +19,6 @@
|
|
|
20
19
|
category: secrets
|
|
21
20
|
severity: critical
|
|
22
21
|
confidence: 0.95
|
|
23
|
-
action: block
|
|
24
22
|
pattern: "\\.ssh/authorized_keys"
|
|
25
23
|
match_on: file_path
|
|
26
24
|
title: "Access SSH authorized_keys (unauthorized access persistence)"
|
|
@@ -30,9 +28,8 @@
|
|
|
30
28
|
# --- SSH private keys and config ---
|
|
31
29
|
- id: "CLT-FILE-003"
|
|
32
30
|
category: secrets
|
|
33
|
-
severity:
|
|
34
|
-
confidence: 0.
|
|
35
|
-
action: require_approval
|
|
31
|
+
severity: warning
|
|
32
|
+
confidence: 0.60
|
|
36
33
|
pattern: "\\.ssh/(id_rsa|id_ed25519|id_ecdsa|id_dsa|config)$"
|
|
37
34
|
match_on: file_path
|
|
38
35
|
title: "Access SSH key or config file"
|
|
@@ -42,9 +39,8 @@
|
|
|
42
39
|
# --- Shell RC files ---
|
|
43
40
|
- id: "CLT-FILE-004"
|
|
44
41
|
category: tool
|
|
45
|
-
severity:
|
|
46
|
-
confidence: 0.
|
|
47
|
-
action: require_approval
|
|
42
|
+
severity: warning
|
|
43
|
+
confidence: 0.60
|
|
48
44
|
pattern: "\\.(bashrc|zshrc|profile|bash_profile|zprofile|zshenv)$"
|
|
49
45
|
match_on: file_path
|
|
50
46
|
title: "Access shell RC file (persistence mechanism)"
|
|
@@ -54,9 +50,8 @@
|
|
|
54
50
|
# --- Cron directories ---
|
|
55
51
|
- id: "CLT-FILE-006"
|
|
56
52
|
category: tool
|
|
57
|
-
severity:
|
|
58
|
-
confidence: 0.
|
|
59
|
-
action: require_approval
|
|
53
|
+
severity: warning
|
|
54
|
+
confidence: 0.60
|
|
60
55
|
pattern: "(/etc/cron\\.(d|daily|hourly|weekly|monthly)/|/var/spool/cron/)"
|
|
61
56
|
match_on: file_path
|
|
62
57
|
title: "Access cron directory"
|
|
@@ -66,9 +61,8 @@
|
|
|
66
61
|
# --- systemd unit files ---
|
|
67
62
|
- id: "CLT-FILE-007"
|
|
68
63
|
category: tool
|
|
69
|
-
severity:
|
|
70
|
-
confidence: 0.
|
|
71
|
-
action: require_approval
|
|
64
|
+
severity: warning
|
|
65
|
+
confidence: 0.60
|
|
72
66
|
pattern: "/etc/systemd/system/"
|
|
73
67
|
match_on: file_path
|
|
74
68
|
title: "Access systemd service unit file"
|
|
@@ -82,9 +76,8 @@
|
|
|
82
76
|
# targeted than command-string matching.
|
|
83
77
|
- id: "CLT-FILE-008"
|
|
84
78
|
category: secrets
|
|
85
|
-
severity:
|
|
86
|
-
confidence: 0.
|
|
87
|
-
action: require_approval
|
|
79
|
+
severity: warning
|
|
80
|
+
confidence: 0.60
|
|
88
81
|
pattern: "((^|[\\/\\\\])\\.env(\\.local|\\.production|\\.prod|\\.staging|\\.stage|\\.development|\\.dev|\\.test)?|\\.aws/credentials|\\.netrc|\\.pgpass)$"
|
|
89
82
|
match_on: file_path
|
|
90
83
|
title: "Access credential or environment file"
|
|
@@ -94,9 +87,8 @@
|
|
|
94
87
|
# --- Git hooks ---
|
|
95
88
|
- id: "CLT-FILE-009"
|
|
96
89
|
category: tool
|
|
97
|
-
severity:
|
|
98
|
-
confidence: 0.
|
|
99
|
-
action: require_approval
|
|
90
|
+
severity: warning
|
|
91
|
+
confidence: 0.60
|
|
100
92
|
pattern: "\\.git/hooks/"
|
|
101
93
|
match_on: file_path
|
|
102
94
|
title: "Access git hook (potential code execution on git events)"
|
|
@@ -106,9 +98,8 @@
|
|
|
106
98
|
# --- Android signing files ---
|
|
107
99
|
- id: "CLT-FILE-010"
|
|
108
100
|
category: secrets
|
|
109
|
-
severity:
|
|
110
|
-
confidence: 0.
|
|
111
|
-
action: require_approval
|
|
101
|
+
severity: warning
|
|
102
|
+
confidence: 0.60
|
|
112
103
|
pattern: "(key\\.properties|release\\.keystore|\\.jks|\\.keystore)$"
|
|
113
104
|
match_on: file_path
|
|
114
105
|
title: "Access Android signing file"
|
|
@@ -118,9 +109,8 @@
|
|
|
118
109
|
# --- Firebase config files ---
|
|
119
110
|
- id: "CLT-FILE-011"
|
|
120
111
|
category: secrets
|
|
121
|
-
severity:
|
|
122
|
-
confidence: 0.
|
|
123
|
-
action: require_approval
|
|
112
|
+
severity: warning
|
|
113
|
+
confidence: 0.60
|
|
124
114
|
pattern: "(google-services\\.json|GoogleService-Info\\.plist)$"
|
|
125
115
|
match_on: file_path
|
|
126
116
|
title: "Access Firebase configuration file"
|
|
@@ -130,9 +120,8 @@
|
|
|
130
120
|
# --- Cloud provider credential files ---
|
|
131
121
|
- id: "CLT-FILE-012"
|
|
132
122
|
category: secrets
|
|
133
|
-
severity:
|
|
134
|
-
confidence: 0.
|
|
135
|
-
action: require_approval
|
|
123
|
+
severity: warning
|
|
124
|
+
confidence: 0.60
|
|
136
125
|
pattern: "(application_default_credentials\\.json|\\.azure/(accessTokens|msal_token_cache)\\.json|\\.config/doctl/config\\.yaml)$"
|
|
137
126
|
match_on: file_path
|
|
138
127
|
title: "Access cloud provider credential file"
|
|
@@ -142,9 +131,8 @@
|
|
|
142
131
|
# --- Package manager tokens ---
|
|
143
132
|
- id: "CLT-FILE-013"
|
|
144
133
|
category: secrets
|
|
145
|
-
severity:
|
|
146
|
-
confidence: 0.
|
|
147
|
-
action: require_approval
|
|
134
|
+
severity: warning
|
|
135
|
+
confidence: 0.60
|
|
148
136
|
pattern: "(\\.npmrc|\\.pypirc|\\.gem/credentials|\\.cargo/credentials\\.toml|\\.docker/config\\.json)$"
|
|
149
137
|
match_on: file_path
|
|
150
138
|
title: "Access package manager credential file"
|
|
@@ -154,9 +142,8 @@
|
|
|
154
142
|
# --- Terraform state files ---
|
|
155
143
|
- id: "CLT-FILE-014"
|
|
156
144
|
category: secrets
|
|
157
|
-
severity:
|
|
158
|
-
confidence: 0.
|
|
159
|
-
action: require_approval
|
|
145
|
+
severity: warning
|
|
146
|
+
confidence: 0.60
|
|
160
147
|
pattern: "\\.(tfstate(\\.backup)?|tfvars(\\.json)?)$"
|
|
161
148
|
match_on: file_path
|
|
162
149
|
title: "Access Terraform state or variables file"
|
|
@@ -166,9 +153,8 @@
|
|
|
166
153
|
# --- Secrets/vault files ---
|
|
167
154
|
- id: "CLT-FILE-015"
|
|
168
155
|
category: secrets
|
|
169
|
-
severity:
|
|
170
|
-
confidence: 0.
|
|
171
|
-
action: require_approval
|
|
156
|
+
severity: warning
|
|
157
|
+
confidence: 0.60
|
|
172
158
|
pattern: "(master\\.key|credentials\\.yml\\.enc|secrets\\.yml|vault\\.yml|\\.vault-pass|\\.vault-token)$"
|
|
173
159
|
match_on: file_path
|
|
174
160
|
title: "Access secrets or vault file"
|
|
@@ -181,9 +167,8 @@
|
|
|
181
167
|
# would miss private key exfiltration.
|
|
182
168
|
- id: "CLT-FILE-016"
|
|
183
169
|
category: secrets
|
|
184
|
-
severity:
|
|
185
|
-
confidence: 0.
|
|
186
|
-
action: require_approval
|
|
170
|
+
severity: warning
|
|
171
|
+
confidence: 0.60
|
|
187
172
|
pattern: "\\.(pem|p12|pfx|p8)$"
|
|
188
173
|
match_on: file_path
|
|
189
174
|
title: "Access private key or certificate file"
|
|
@@ -193,9 +178,8 @@
|
|
|
193
178
|
# --- Kubeconfig ---
|
|
194
179
|
- id: "CLT-FILE-017"
|
|
195
180
|
category: secrets
|
|
196
|
-
severity:
|
|
197
|
-
confidence: 0.
|
|
198
|
-
action: require_approval
|
|
181
|
+
severity: warning
|
|
182
|
+
confidence: 0.60
|
|
199
183
|
pattern: "(\\.kube/config|kubeconfig(\\.yaml|\\.yml)?)$"
|
|
200
184
|
match_on: file_path
|
|
201
185
|
title: "Access Kubernetes configuration file"
|
|
@@ -205,9 +189,8 @@
|
|
|
205
189
|
# --- Build system credential files ---
|
|
206
190
|
- id: "CLT-FILE-018"
|
|
207
191
|
category: secrets
|
|
208
|
-
severity:
|
|
209
|
-
confidence: 0.
|
|
210
|
-
action: require_approval
|
|
192
|
+
severity: warning
|
|
193
|
+
confidence: 0.60
|
|
211
194
|
pattern: "(\\.m2/settings\\.xml|gradle\\.properties)$"
|
|
212
195
|
match_on: file_path
|
|
213
196
|
title: "Access build system credential file"
|
|
@@ -217,9 +200,8 @@
|
|
|
217
200
|
# --- Shell/REPL history files ---
|
|
218
201
|
- id: "CLT-FILE-019"
|
|
219
202
|
category: secrets
|
|
220
|
-
severity:
|
|
221
|
-
confidence: 0.
|
|
222
|
-
action: require_approval
|
|
203
|
+
severity: warning
|
|
204
|
+
confidence: 0.60
|
|
223
205
|
pattern: "\\.(bash_history|zsh_history|mysql_history|python_history|node_repl_history|psql_history|irb_history)$"
|
|
224
206
|
match_on: file_path
|
|
225
207
|
title: "Access shell or REPL history file"
|
|
@@ -229,9 +211,8 @@
|
|
|
229
211
|
# --- JetBrains IDE database credentials ---
|
|
230
212
|
- id: "CLT-FILE-020"
|
|
231
213
|
category: secrets
|
|
232
|
-
severity:
|
|
233
|
-
confidence: 0.
|
|
234
|
-
action: require_approval
|
|
214
|
+
severity: warning
|
|
215
|
+
confidence: 0.60
|
|
235
216
|
pattern: "\\.idea/dataSources(\\.xml|/)"
|
|
236
217
|
match_on: file_path
|
|
237
218
|
title: "Access JetBrains IDE database credential file"
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
category: tool
|
|
11
11
|
severity: critical
|
|
12
12
|
confidence: 0.95
|
|
13
|
-
action: block
|
|
14
13
|
pattern: "\\bosascript\\b.*-e.*do shell script"
|
|
15
14
|
case_insensitive: true
|
|
16
15
|
match_on: command
|
|
@@ -23,7 +22,6 @@
|
|
|
23
22
|
category: tool
|
|
24
23
|
severity: critical
|
|
25
24
|
confidence: 0.90
|
|
26
|
-
action: block
|
|
27
25
|
pattern: "\\bosascript\\b.*-l\\s+JavaScript"
|
|
28
26
|
case_insensitive: true
|
|
29
27
|
match_on: command
|
|
@@ -36,7 +34,6 @@
|
|
|
36
34
|
category: tool
|
|
37
35
|
severity: critical
|
|
38
36
|
confidence: 0.90
|
|
39
|
-
action: block
|
|
40
37
|
pattern: "\\|\\s*osascript"
|
|
41
38
|
match_on: command
|
|
42
39
|
title: "Piped input to osascript (stdin AppleScript execution)"
|
|
@@ -48,7 +45,6 @@
|
|
|
48
45
|
category: tool
|
|
49
46
|
severity: critical
|
|
50
47
|
confidence: 0.90
|
|
51
|
-
action: block
|
|
52
48
|
pattern: "(curl|wget).*\\|.*osascript|osascript.*(curl|wget)"
|
|
53
49
|
case_insensitive: true
|
|
54
50
|
match_on: command
|
|
@@ -61,9 +57,8 @@
|
|
|
61
57
|
# open -a Terminal (launch Terminal with script)
|
|
62
58
|
- id: "CLT-MAC-CMD-005"
|
|
63
59
|
category: tool
|
|
64
|
-
severity:
|
|
65
|
-
confidence: 0.
|
|
66
|
-
action: require_approval
|
|
60
|
+
severity: warning
|
|
61
|
+
confidence: 0.60
|
|
67
62
|
pattern: "\\bopen\\s+-a\\s+Terminal"
|
|
68
63
|
match_on: command
|
|
69
64
|
title: "Launch Terminal application via open -a"
|
|
@@ -73,9 +68,8 @@
|
|
|
73
68
|
# open with hidden/background flags
|
|
74
69
|
- id: "CLT-MAC-CMD-006"
|
|
75
70
|
category: tool
|
|
76
|
-
severity:
|
|
77
|
-
confidence: 0.
|
|
78
|
-
action: require_approval
|
|
71
|
+
severity: warning
|
|
72
|
+
confidence: 0.60
|
|
79
73
|
pattern: "\\bopen\\s+(-[jg]|--hide|--background)"
|
|
80
74
|
match_on: command
|
|
81
75
|
title: "Launch application hidden/background via open"
|
|
@@ -87,9 +81,8 @@
|
|
|
87
81
|
# dscl user/group manipulation
|
|
88
82
|
- id: "CLT-MAC-CMD-007"
|
|
89
83
|
category: tool
|
|
90
|
-
severity:
|
|
91
|
-
confidence: 0.
|
|
92
|
-
action: require_approval
|
|
84
|
+
severity: warning
|
|
85
|
+
confidence: 0.60
|
|
93
86
|
pattern: "\\bdscl\\b.*(-create|-delete|-passwd|-append)"
|
|
94
87
|
match_on: command
|
|
95
88
|
title: "Directory Services user/group manipulation via dscl"
|
|
@@ -99,9 +92,8 @@
|
|
|
99
92
|
# networksetup proxy/DNS manipulation
|
|
100
93
|
- id: "CLT-MAC-CMD-008"
|
|
101
94
|
category: tool
|
|
102
|
-
severity:
|
|
103
|
-
confidence: 0.
|
|
104
|
-
action: require_approval
|
|
95
|
+
severity: warning
|
|
96
|
+
confidence: 0.60
|
|
105
97
|
pattern: "\\bnetworksetup\\b.*(-setwebproxy|-setsocksfirewallproxy|-setdnsservers|-setautoproxyurl)"
|
|
106
98
|
case_insensitive: true
|
|
107
99
|
match_on: command
|
|
@@ -114,7 +106,6 @@
|
|
|
114
106
|
category: tool
|
|
115
107
|
severity: critical
|
|
116
108
|
confidence: 0.90
|
|
117
|
-
action: block
|
|
118
109
|
pattern: "\\bsystemsetup\\b.*(-setremotelogin\\s+on|-setwakeonnetworkaccess\\s+on)"
|
|
119
110
|
case_insensitive: true
|
|
120
111
|
match_on: command
|
|
@@ -127,7 +118,6 @@
|
|
|
127
118
|
category: tool
|
|
128
119
|
severity: critical
|
|
129
120
|
confidence: 0.90
|
|
130
|
-
action: block
|
|
131
121
|
pattern: "kickstart.*-activate.*-configure"
|
|
132
122
|
case_insensitive: true
|
|
133
123
|
match_on: command
|
|
@@ -138,9 +128,8 @@
|
|
|
138
128
|
# installer -pkg -target / (silent package install)
|
|
139
129
|
- id: "CLT-MAC-CMD-011"
|
|
140
130
|
category: tool
|
|
141
|
-
severity:
|
|
142
|
-
confidence: 0.
|
|
143
|
-
action: require_approval
|
|
131
|
+
severity: warning
|
|
132
|
+
confidence: 0.60
|
|
144
133
|
pattern: "\\binstaller\\b.*-pkg.*-target"
|
|
145
134
|
case_insensitive: true
|
|
146
135
|
match_on: command
|
|
@@ -151,9 +140,8 @@
|
|
|
151
140
|
# hdiutil mount remote DMG
|
|
152
141
|
- id: "CLT-MAC-CMD-012"
|
|
153
142
|
category: tool
|
|
154
|
-
severity:
|
|
155
|
-
confidence: 0.
|
|
156
|
-
action: require_approval
|
|
143
|
+
severity: warning
|
|
144
|
+
confidence: 0.60
|
|
157
145
|
pattern: "\\bhdiutil\\b.*\\b(attach|mount)\\b.*https?://"
|
|
158
146
|
case_insensitive: true
|
|
159
147
|
match_on: command
|
|
@@ -164,9 +152,8 @@
|
|
|
164
152
|
# pkgutil --forget (package receipt manipulation)
|
|
165
153
|
- id: "CLT-MAC-CMD-013"
|
|
166
154
|
category: tool
|
|
167
|
-
severity:
|
|
168
|
-
confidence: 0.
|
|
169
|
-
action: require_approval
|
|
155
|
+
severity: warning
|
|
156
|
+
confidence: 0.60
|
|
170
157
|
pattern: "\\bpkgutil\\b.*--forget"
|
|
171
158
|
match_on: command
|
|
172
159
|
title: "Package receipt removal via pkgutil --forget"
|
|
@@ -180,7 +167,6 @@
|
|
|
180
167
|
category: tool
|
|
181
168
|
severity: critical
|
|
182
169
|
confidence: 0.95
|
|
183
|
-
action: block
|
|
184
170
|
pattern: "\\bdiskutil\\b.*\\b(eraseDisk|partitionDisk|secureErase)\\b"
|
|
185
171
|
match_on: command
|
|
186
172
|
title: "Disk erase/partition via diskutil"
|
|
@@ -192,7 +178,6 @@
|
|
|
192
178
|
category: tool
|
|
193
179
|
severity: critical
|
|
194
180
|
confidence: 0.95
|
|
195
|
-
action: block
|
|
196
181
|
pattern: "\\btmutil\\b.*\\b(delete|disable)\\b"
|
|
197
182
|
match_on: command
|
|
198
183
|
title: "Time Machine backup deletion/disable via tmutil (ransomware indicator)"
|
|
@@ -206,7 +191,6 @@
|
|
|
206
191
|
category: tool
|
|
207
192
|
severity: critical
|
|
208
193
|
confidence: 0.95
|
|
209
|
-
action: block
|
|
210
194
|
pattern: "\\bspctl\\b.*--master-disable"
|
|
211
195
|
match_on: command
|
|
212
196
|
title: "Gatekeeper disable via spctl --master-disable"
|
|
@@ -218,7 +202,6 @@
|
|
|
218
202
|
category: tool
|
|
219
203
|
severity: critical
|
|
220
204
|
confidence: 0.95
|
|
221
|
-
action: block
|
|
222
205
|
pattern: "\\bcsrutil\\b.*\\bdisable\\b"
|
|
223
206
|
match_on: command
|
|
224
207
|
title: "System Integrity Protection disable via csrutil"
|
|
@@ -230,7 +213,6 @@
|
|
|
230
213
|
category: tool
|
|
231
214
|
severity: critical
|
|
232
215
|
confidence: 0.90
|
|
233
|
-
action: block
|
|
234
216
|
pattern: "\\bdefaults\\b.*\\bwrite\\b.*LSQuarantine"
|
|
235
217
|
case_insensitive: true
|
|
236
218
|
match_on: command
|
|
@@ -241,9 +223,8 @@
|
|
|
241
223
|
# xattr -d com.apple.quarantine (quarantine removal)
|
|
242
224
|
- id: "CLT-MAC-CMD-019"
|
|
243
225
|
category: tool
|
|
244
|
-
severity:
|
|
245
|
-
confidence: 0.
|
|
246
|
-
action: require_approval
|
|
226
|
+
severity: warning
|
|
227
|
+
confidence: 0.60
|
|
247
228
|
pattern: "\\bxattr\\b.*-d.*com\\.apple\\.quarantine"
|
|
248
229
|
match_on: command
|
|
249
230
|
title: "Quarantine attribute removal via xattr"
|
|
@@ -255,7 +236,6 @@
|
|
|
255
236
|
category: tool
|
|
256
237
|
severity: critical
|
|
257
238
|
confidence: 0.90
|
|
258
|
-
action: block
|
|
259
239
|
pattern: "\\bpfctl\\b.*\\s-d\\b"
|
|
260
240
|
match_on: command
|
|
261
241
|
title: "Packet filter (firewall) disable via pfctl -d"
|
|
@@ -267,7 +247,6 @@
|
|
|
267
247
|
category: tool
|
|
268
248
|
severity: critical
|
|
269
249
|
confidence: 0.90
|
|
270
|
-
action: block
|
|
271
250
|
pattern: "\\btccutil\\b.*\\breset\\b"
|
|
272
251
|
match_on: command
|
|
273
252
|
title: "TCC privacy permissions reset via tccutil"
|
|
@@ -279,7 +258,6 @@
|
|
|
279
258
|
category: tool
|
|
280
259
|
severity: critical
|
|
281
260
|
confidence: 0.90
|
|
282
|
-
action: block
|
|
283
261
|
pattern: "\\blaunchctl\\b.*\\b(unload|bootout)\\b.*(com\\.apple\\.MRT|com\\.apple\\.XProtect|com\\.apple\\.security)"
|
|
284
262
|
case_insensitive: true
|
|
285
263
|
match_on: command
|
|
@@ -292,7 +270,6 @@
|
|
|
292
270
|
category: tool
|
|
293
271
|
severity: critical
|
|
294
272
|
confidence: 0.90
|
|
295
|
-
action: block
|
|
296
273
|
pattern: "\\bdefaults\\b.*\\bwrite\\b.*(com\\.apple\\.Finder\\s+AppleShowAllFiles|com\\.apple\\.LaunchServices\\s+LSQuarantine|com\\.apple\\.loginwindow)"
|
|
297
274
|
case_insensitive: true
|
|
298
275
|
match_on: command
|
|
@@ -307,7 +284,6 @@
|
|
|
307
284
|
category: tool
|
|
308
285
|
severity: critical
|
|
309
286
|
confidence: 0.90
|
|
310
|
-
action: block
|
|
311
287
|
pattern: "\\bdscl\\b.*\\s-passwd\\b"
|
|
312
288
|
match_on: command
|
|
313
289
|
title: "User password change via dscl"
|
|
@@ -319,7 +295,6 @@
|
|
|
319
295
|
category: tool
|
|
320
296
|
severity: critical
|
|
321
297
|
confidence: 0.95
|
|
322
|
-
action: block
|
|
323
298
|
pattern: "\\bdseditgroup\\b.*-o\\s+edit.*-a.*admin"
|
|
324
299
|
match_on: command
|
|
325
300
|
title: "Add user to admin group via dseditgroup"
|
|
@@ -329,9 +304,8 @@
|
|
|
329
304
|
# createhomedir — create home directory for arbitrary user
|
|
330
305
|
- id: "CLT-MAC-CMD-026"
|
|
331
306
|
category: tool
|
|
332
|
-
severity:
|
|
333
|
-
confidence: 0.
|
|
334
|
-
action: require_approval
|
|
307
|
+
severity: warning
|
|
308
|
+
confidence: 0.60
|
|
335
309
|
pattern: "\\bcreatehomedir\\b"
|
|
336
310
|
match_on: command
|
|
337
311
|
title: "Create home directory for user via createhomedir"
|
|
@@ -345,9 +319,8 @@
|
|
|
345
319
|
# screencapture to remote or hidden location
|
|
346
320
|
- id: "CLT-MAC-CMD-027"
|
|
347
321
|
category: tool
|
|
348
|
-
severity:
|
|
349
|
-
confidence: 0.
|
|
350
|
-
action: require_approval
|
|
322
|
+
severity: warning
|
|
323
|
+
confidence: 0.60
|
|
351
324
|
pattern: "\\bscreencapture\\b.*(-x|-C)"
|
|
352
325
|
match_on: command
|
|
353
326
|
title: "Silent screen capture via screencapture"
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
category: secrets
|
|
8
8
|
severity: critical
|
|
9
9
|
confidence: 0.95
|
|
10
|
-
action: block
|
|
11
10
|
pattern: "\\bsecurity\\b.*\\bfind-generic-password\\b.*-w"
|
|
12
11
|
match_on: command
|
|
13
12
|
title: "Keychain password extraction via security find-generic-password"
|
|
@@ -19,7 +18,6 @@
|
|
|
19
18
|
category: secrets
|
|
20
19
|
severity: critical
|
|
21
20
|
confidence: 0.95
|
|
22
|
-
action: block
|
|
23
21
|
pattern: "\\bsecurity\\b.*\\bfind-internet-password\\b.*-w"
|
|
24
22
|
match_on: command
|
|
25
23
|
title: "Keychain internet password extraction via security find-internet-password"
|
|
@@ -31,7 +29,6 @@
|
|
|
31
29
|
category: secrets
|
|
32
30
|
severity: critical
|
|
33
31
|
confidence: 0.95
|
|
34
|
-
action: block
|
|
35
32
|
pattern: "\\bsecurity\\b.*\\bdump-keychain\\b"
|
|
36
33
|
match_on: command
|
|
37
34
|
title: "Full keychain dump via security dump-keychain"
|
|
@@ -43,7 +40,6 @@
|
|
|
43
40
|
category: secrets
|
|
44
41
|
severity: critical
|
|
45
42
|
confidence: 0.90
|
|
46
|
-
action: block
|
|
47
43
|
pattern: "\\bsecurity\\b.*\\bunlock-keychain\\b.*-p"
|
|
48
44
|
match_on: command
|
|
49
45
|
title: "Keychain unlock with plaintext password"
|
|
@@ -53,9 +49,8 @@
|
|
|
53
49
|
# Keychain export
|
|
54
50
|
- id: "CLT-MAC-CRED-005"
|
|
55
51
|
category: secrets
|
|
56
|
-
severity:
|
|
57
|
-
confidence: 0.
|
|
58
|
-
action: require_approval
|
|
52
|
+
severity: warning
|
|
53
|
+
confidence: 0.60
|
|
59
54
|
pattern: "\\bsecurity\\b.*\\bexport\\b.*-k"
|
|
60
55
|
match_on: command
|
|
61
56
|
title: "Keychain item export via security export"
|
|
@@ -67,7 +62,6 @@
|
|
|
67
62
|
category: secrets
|
|
68
63
|
severity: critical
|
|
69
64
|
confidence: 0.90
|
|
70
|
-
action: block
|
|
71
65
|
pattern: "\\bsecurity\\b.*\\bdelete-keychain\\b"
|
|
72
66
|
match_on: command
|
|
73
67
|
title: "Keychain deletion via security delete-keychain"
|
|
@@ -77,9 +71,8 @@
|
|
|
77
71
|
# Directory Services auth data read
|
|
78
72
|
- id: "CLT-MAC-CRED-007"
|
|
79
73
|
category: secrets
|
|
80
|
-
severity:
|
|
81
|
-
confidence: 0.
|
|
82
|
-
action: require_approval
|
|
74
|
+
severity: warning
|
|
75
|
+
confidence: 0.60
|
|
83
76
|
pattern: "\\bdscl\\b.*-read.*(AuthenticationAuthority|Password|ShadowHash)"
|
|
84
77
|
match_on: command
|
|
85
78
|
title: "Read user authentication data via dscl"
|
|
@@ -91,7 +84,6 @@
|
|
|
91
84
|
category: secrets
|
|
92
85
|
severity: critical
|
|
93
86
|
confidence: 0.90
|
|
94
|
-
action: block
|
|
95
87
|
pattern: "\\bsqlite3\\b.*(/Library/Keychains/|login\\.keychain)"
|
|
96
88
|
match_on: command
|
|
97
89
|
title: "Direct Keychain database access via sqlite3"
|
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
# LaunchAgent/LaunchDaemon plist (migrated from files.yaml CLT-FILE-005)
|
|
7
7
|
- id: "CLT-MAC-FILE-001"
|
|
8
8
|
category: tool
|
|
9
|
-
severity:
|
|
9
|
+
severity: warning
|
|
10
10
|
confidence: 0.90
|
|
11
|
-
action: block
|
|
12
11
|
pattern: "(LaunchAgents|LaunchDaemons)/.*\\.plist$"
|
|
13
12
|
match_on: file_path
|
|
14
13
|
title: "Access macOS LaunchAgent/LaunchDaemon plist"
|
|
@@ -20,7 +19,6 @@
|
|
|
20
19
|
category: secrets
|
|
21
20
|
severity: critical
|
|
22
21
|
confidence: 0.95
|
|
23
|
-
action: block
|
|
24
22
|
pattern: "com\\.apple\\.TCC/TCC\\.db"
|
|
25
23
|
match_on: file_path
|
|
26
24
|
title: "Access TCC privacy permissions database"
|
|
@@ -32,7 +30,6 @@
|
|
|
32
30
|
category: secrets
|
|
33
31
|
severity: critical
|
|
34
32
|
confidence: 0.95
|
|
35
|
-
action: block
|
|
36
33
|
pattern: "(/etc/authorization|/var/db/auth\\.db)"
|
|
37
34
|
match_on: file_path
|
|
38
35
|
title: "Access macOS authorization database"
|
|
@@ -44,7 +41,6 @@
|
|
|
44
41
|
category: tool
|
|
45
42
|
severity: critical
|
|
46
43
|
confidence: 0.90
|
|
47
|
-
action: block
|
|
48
44
|
pattern: "(/Library/Extensions/|/System/Library/Extensions/).*\\.kext"
|
|
49
45
|
match_on: file_path
|
|
50
46
|
title: "Access kernel extension (.kext)"
|
|
@@ -56,7 +52,6 @@
|
|
|
56
52
|
category: tool
|
|
57
53
|
severity: critical
|
|
58
54
|
confidence: 0.90
|
|
59
|
-
action: block
|
|
60
55
|
pattern: "/Library/Security/SecurityAgentPlugins/"
|
|
61
56
|
match_on: file_path
|
|
62
57
|
title: "Access SecurityAgentPlugins directory"
|
|
@@ -66,9 +61,8 @@
|
|
|
66
61
|
# Periodic scripts directory
|
|
67
62
|
- id: "CLT-MAC-FILE-006"
|
|
68
63
|
category: tool
|
|
69
|
-
severity:
|
|
70
|
-
confidence: 0.
|
|
71
|
-
action: require_approval
|
|
64
|
+
severity: warning
|
|
65
|
+
confidence: 0.60
|
|
72
66
|
pattern: "/etc/periodic/(daily|weekly|monthly)/"
|
|
73
67
|
match_on: file_path
|
|
74
68
|
title: "Access macOS periodic scripts directory"
|
|
@@ -80,7 +74,6 @@
|
|
|
80
74
|
category: tool
|
|
81
75
|
severity: critical
|
|
82
76
|
confidence: 0.90
|
|
83
|
-
action: block
|
|
84
77
|
pattern: "/etc/emond\\.d/rules/"
|
|
85
78
|
match_on: file_path
|
|
86
79
|
title: "Access Event Monitor daemon rules directory"
|
|
@@ -92,7 +85,6 @@
|
|
|
92
85
|
category: secrets
|
|
93
86
|
severity: critical
|
|
94
87
|
confidence: 0.90
|
|
95
|
-
action: block
|
|
96
88
|
pattern: "/Safari/(Cookies\\.binarycookies|LastSession\\.plist|Databases|LocalStorage)"
|
|
97
89
|
match_on: file_path
|
|
98
90
|
title: "Access Safari credential/cookie store"
|
|
@@ -102,9 +94,8 @@
|
|
|
102
94
|
# Managed Preferences (MDM profiles)
|
|
103
95
|
- id: "CLT-MAC-FILE-009"
|
|
104
96
|
category: tool
|
|
105
|
-
severity:
|
|
106
|
-
confidence: 0.
|
|
107
|
-
action: require_approval
|
|
97
|
+
severity: warning
|
|
98
|
+
confidence: 0.60
|
|
108
99
|
pattern: "/Library/Managed Preferences/"
|
|
109
100
|
match_on: file_path
|
|
110
101
|
title: "Access Managed Preferences (MDM profile injection)"
|
|
@@ -116,7 +107,6 @@
|
|
|
116
107
|
category: secrets
|
|
117
108
|
severity: critical
|
|
118
109
|
confidence: 0.90
|
|
119
|
-
action: block
|
|
120
110
|
pattern: "/Library/Keychains/.*\\.keychain"
|
|
121
111
|
match_on: file_path
|
|
122
112
|
title: "Access system Keychain file"
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
category: tool
|
|
8
8
|
severity: critical
|
|
9
9
|
confidence: 0.90
|
|
10
|
-
action: block
|
|
11
10
|
pattern: "\\bosascript\\b.*do shell script"
|
|
12
11
|
case_insensitive: true
|
|
13
12
|
match_on: command
|
|
@@ -20,7 +19,6 @@
|
|
|
20
19
|
category: tool
|
|
21
20
|
severity: critical
|
|
22
21
|
confidence: 0.90
|
|
23
|
-
action: block
|
|
24
22
|
pattern: "\\bosascript\\b.*-l\\s+JavaScript.*-e"
|
|
25
23
|
case_insensitive: true
|
|
26
24
|
match_on: command
|
|
@@ -33,7 +31,6 @@
|
|
|
33
31
|
category: tool
|
|
34
32
|
severity: critical
|
|
35
33
|
confidence: 0.95
|
|
36
|
-
action: block
|
|
37
34
|
pattern: "base64\\s+(-d|-D|--decode).*\\|.*osascript"
|
|
38
35
|
match_on: command
|
|
39
36
|
title: "Base64 decode piped to osascript (encoded payload execution)"
|
|
@@ -45,7 +42,6 @@
|
|
|
45
42
|
category: tool
|
|
46
43
|
severity: critical
|
|
47
44
|
confidence: 0.90
|
|
48
|
-
action: block
|
|
49
45
|
pattern: "DYLD_INSERT_LIBRARIES=.*\\.(dylib|so)"
|
|
50
46
|
match_on: command
|
|
51
47
|
title: "Dynamic library injection via DYLD_INSERT_LIBRARIES"
|
|
@@ -55,9 +51,8 @@
|
|
|
55
51
|
# Quarantine attribute removal (evasion)
|
|
56
52
|
- id: "CLT-MAC-OBFUS-005"
|
|
57
53
|
category: tool
|
|
58
|
-
severity:
|
|
59
|
-
confidence: 0.
|
|
60
|
-
action: require_approval
|
|
54
|
+
severity: warning
|
|
55
|
+
confidence: 0.60
|
|
61
56
|
pattern: "\\bxattr\\b.*(-d|-c).*com\\.apple\\.quarantine"
|
|
62
57
|
match_on: command
|
|
63
58
|
title: "Quarantine attribute removal (Gatekeeper evasion)"
|
|
@@ -69,9 +64,8 @@
|
|
|
69
64
|
# plutil plist manipulation (payload hiding)
|
|
70
65
|
- id: "CLT-MAC-OBFUS-006"
|
|
71
66
|
category: tool
|
|
72
|
-
severity:
|
|
73
|
-
confidence: 0.
|
|
74
|
-
action: require_approval
|
|
67
|
+
severity: warning
|
|
68
|
+
confidence: 0.60
|
|
75
69
|
pattern: "\\bplutil\\b.*-convert\\s+(binary1|raw)"
|
|
76
70
|
match_on: command
|
|
77
71
|
title: "Plist conversion to binary (payload obfuscation)"
|
|
@@ -81,9 +75,8 @@
|
|
|
81
75
|
# Swift/swiftc inline execution
|
|
82
76
|
- id: "CLT-MAC-OBFUS-007"
|
|
83
77
|
category: tool
|
|
84
|
-
severity:
|
|
85
|
-
confidence: 0.
|
|
86
|
-
action: require_approval
|
|
78
|
+
severity: warning
|
|
79
|
+
confidence: 0.60
|
|
87
80
|
pattern: "\\bswift\\b\\s+-e\\s+[\"'].*\\b(Process|NSTask|URLSession|shell)\\b"
|
|
88
81
|
case_insensitive: true
|
|
89
82
|
match_on: command
|