@surfinguard/core-engine 0.1.0 → 1.0.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/LICENSE +21 -0
- package/dist/analyzers/agent-comm.d.ts +22 -0
- package/dist/analyzers/agent-comm.d.ts.map +1 -0
- package/dist/analyzers/agent-comm.js +79 -0
- package/dist/analyzers/agent-comm.js.map +1 -0
- package/dist/analyzers/api-call.d.ts +21 -0
- package/dist/analyzers/api-call.d.ts.map +1 -0
- package/dist/analyzers/api-call.js +134 -0
- package/dist/analyzers/api-call.js.map +1 -0
- package/dist/analyzers/auth.d.ts +22 -0
- package/dist/analyzers/auth.d.ts.map +1 -0
- package/dist/analyzers/auth.js +97 -0
- package/dist/analyzers/auth.js.map +1 -0
- package/dist/analyzers/code.d.ts +32 -0
- package/dist/analyzers/code.d.ts.map +1 -0
- package/dist/analyzers/code.js +310 -0
- package/dist/analyzers/code.js.map +1 -0
- package/dist/analyzers/command.d.ts.map +1 -1
- package/dist/analyzers/command.js +91 -39
- package/dist/analyzers/command.js.map +1 -1
- package/dist/analyzers/data-pipeline.d.ts +23 -0
- package/dist/analyzers/data-pipeline.d.ts.map +1 -0
- package/dist/analyzers/data-pipeline.js +86 -0
- package/dist/analyzers/data-pipeline.js.map +1 -0
- package/dist/analyzers/document.d.ts +22 -0
- package/dist/analyzers/document.d.ts.map +1 -0
- package/dist/analyzers/document.js +77 -0
- package/dist/analyzers/document.js.map +1 -0
- package/dist/analyzers/file-read.d.ts.map +1 -1
- package/dist/analyzers/file-read.js +12 -3
- package/dist/analyzers/file-read.js.map +1 -1
- package/dist/analyzers/file-write.d.ts.map +1 -1
- package/dist/analyzers/file-write.js +12 -3
- package/dist/analyzers/file-write.js.map +1 -1
- package/dist/analyzers/git.d.ts +25 -0
- package/dist/analyzers/git.d.ts.map +1 -0
- package/dist/analyzers/git.js +126 -0
- package/dist/analyzers/git.js.map +1 -0
- package/dist/analyzers/index.d.ts +3 -0
- package/dist/analyzers/index.d.ts.map +1 -1
- package/dist/analyzers/index.js +3 -0
- package/dist/analyzers/index.js.map +1 -1
- package/dist/analyzers/infra.d.ts +30 -0
- package/dist/analyzers/infra.d.ts.map +1 -0
- package/dist/analyzers/infra.js +134 -0
- package/dist/analyzers/infra.js.map +1 -0
- package/dist/analyzers/iot.d.ts +22 -0
- package/dist/analyzers/iot.d.ts.map +1 -0
- package/dist/analyzers/iot.js +78 -0
- package/dist/analyzers/iot.js.map +1 -0
- package/dist/analyzers/message.d.ts +22 -0
- package/dist/analyzers/message.d.ts.map +1 -0
- package/dist/analyzers/message.js +106 -0
- package/dist/analyzers/message.js.map +1 -0
- package/dist/analyzers/query.d.ts +23 -0
- package/dist/analyzers/query.d.ts.map +1 -0
- package/dist/analyzers/query.js +183 -0
- package/dist/analyzers/query.js.map +1 -0
- package/dist/analyzers/text.d.ts.map +1 -1
- package/dist/analyzers/text.js +20 -3
- package/dist/analyzers/text.js.map +1 -1
- package/dist/analyzers/transaction.d.ts +23 -0
- package/dist/analyzers/transaction.d.ts.map +1 -0
- package/dist/analyzers/transaction.js +100 -0
- package/dist/analyzers/transaction.js.map +1 -0
- package/dist/analyzers/ui-action.d.ts +23 -0
- package/dist/analyzers/ui-action.d.ts.map +1 -0
- package/dist/analyzers/ui-action.js +92 -0
- package/dist/analyzers/ui-action.js.map +1 -0
- package/dist/analyzers/url.d.ts.map +1 -1
- package/dist/analyzers/url.js +6 -2
- package/dist/analyzers/url.js.map +1 -1
- package/dist/classifier.d.ts.map +1 -1
- package/dist/classifier.js +20 -1
- package/dist/classifier.js.map +1 -1
- package/dist/context.d.ts +6 -4
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +34 -5
- package/dist/context.js.map +1 -1
- package/dist/engine.d.ts +72 -3
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +313 -9
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +18 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/patterns.d.ts +15 -1
- package/dist/patterns.d.ts.map +1 -1
- package/dist/patterns.js +70 -53
- package/dist/patterns.js.map +1 -1
- package/dist/policy-engine.d.ts +44 -0
- package/dist/policy-engine.d.ts.map +1 -0
- package/dist/policy-engine.js +225 -0
- package/dist/policy-engine.js.map +1 -0
- package/dist/session-tracker.d.ts +50 -0
- package/dist/session-tracker.d.ts.map +1 -0
- package/dist/session-tracker.js +286 -0
- package/dist/session-tracker.js.map +1 -0
- package/package.json +15 -12
- package/patterns/agent-comm.json +97 -0
- package/patterns/api-call.json +175 -0
- package/patterns/auth.json +116 -0
- package/patterns/chains.json +171 -0
- package/patterns/code.json +204 -0
- package/patterns/data-pipeline.json +116 -0
- package/patterns/document.json +110 -0
- package/patterns/git.json +118 -0
- package/patterns/infra.json +207 -0
- package/patterns/iot.json +105 -0
- package/patterns/message.json +122 -0
- package/patterns/query.json +134 -0
- package/patterns/transaction.json +120 -0
- package/patterns/ui-action.json +137 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"threats": [
|
|
4
|
+
{
|
|
5
|
+
"id": "D01",
|
|
6
|
+
"name": "Destructive DDL",
|
|
7
|
+
"primitive": "DESTRUCTION",
|
|
8
|
+
"severity": 10,
|
|
9
|
+
"description": "DROP TABLE, DROP DATABASE, TRUNCATE TABLE — irreversible schema destruction"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "D02",
|
|
13
|
+
"name": "Mass data deletion",
|
|
14
|
+
"primitive": "DESTRUCTION",
|
|
15
|
+
"severity": 9,
|
|
16
|
+
"description": "DELETE FROM without WHERE clause — deletes all rows"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "D03",
|
|
20
|
+
"name": "Schema modification",
|
|
21
|
+
"primitive": "DESTRUCTION",
|
|
22
|
+
"severity": 7,
|
|
23
|
+
"description": "ALTER TABLE, DROP COLUMN/INDEX — modifies schema potentially breaking applications"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "D04",
|
|
27
|
+
"name": "Data exfiltration",
|
|
28
|
+
"primitive": "EXFILTRATION",
|
|
29
|
+
"severity": 9,
|
|
30
|
+
"description": "INTO OUTFILE, COPY TO, UNION SELECT — extracts data outside the database"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "D05",
|
|
34
|
+
"name": "Privilege escalation",
|
|
35
|
+
"primitive": "ESCALATION",
|
|
36
|
+
"severity": 9,
|
|
37
|
+
"description": "GRANT ALL, CREATE USER, ALTER USER — modifies database permissions"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "D06",
|
|
41
|
+
"name": "Stored procedure injection",
|
|
42
|
+
"primitive": "PERSISTENCE",
|
|
43
|
+
"severity": 8,
|
|
44
|
+
"description": "CREATE TRIGGER/FUNCTION with exec/system — persists malicious code"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "D07",
|
|
48
|
+
"name": "Mass data update",
|
|
49
|
+
"primitive": "DESTRUCTION",
|
|
50
|
+
"severity": 9,
|
|
51
|
+
"description": "UPDATE SET without WHERE clause — modifies all rows"
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"destructiveDdl": [
|
|
55
|
+
"drop table",
|
|
56
|
+
"drop database",
|
|
57
|
+
"drop schema",
|
|
58
|
+
"truncate table",
|
|
59
|
+
"truncate",
|
|
60
|
+
"drop view",
|
|
61
|
+
"drop index",
|
|
62
|
+
"drop trigger",
|
|
63
|
+
"drop function",
|
|
64
|
+
"drop procedure"
|
|
65
|
+
],
|
|
66
|
+
"destructiveDml": [
|
|
67
|
+
"delete from",
|
|
68
|
+
"update"
|
|
69
|
+
],
|
|
70
|
+
"exfiltrationPatterns": [
|
|
71
|
+
"into outfile",
|
|
72
|
+
"into dumpfile",
|
|
73
|
+
"copy\\s+\\w+\\s+to\\b",
|
|
74
|
+
"union select",
|
|
75
|
+
"union all select",
|
|
76
|
+
"load_file(",
|
|
77
|
+
"pg_read_file(",
|
|
78
|
+
"dblink(",
|
|
79
|
+
"openrowset(",
|
|
80
|
+
"xp_cmdshell"
|
|
81
|
+
],
|
|
82
|
+
"escalationPatterns": [
|
|
83
|
+
"grant all",
|
|
84
|
+
"grant select",
|
|
85
|
+
"grant insert",
|
|
86
|
+
"grant update",
|
|
87
|
+
"grant delete",
|
|
88
|
+
"grant execute",
|
|
89
|
+
"grant usage",
|
|
90
|
+
"create user",
|
|
91
|
+
"alter user",
|
|
92
|
+
"drop user",
|
|
93
|
+
"create role",
|
|
94
|
+
"alter role",
|
|
95
|
+
"set role",
|
|
96
|
+
"superuser",
|
|
97
|
+
"with grant option"
|
|
98
|
+
],
|
|
99
|
+
"persistencePatterns": [
|
|
100
|
+
"create trigger",
|
|
101
|
+
"create function",
|
|
102
|
+
"create procedure",
|
|
103
|
+
"create or replace function",
|
|
104
|
+
"create or replace procedure",
|
|
105
|
+
"create event",
|
|
106
|
+
"alter event"
|
|
107
|
+
],
|
|
108
|
+
"obfuscationPatterns": [
|
|
109
|
+
"/**/",
|
|
110
|
+
"/*!",
|
|
111
|
+
"char(",
|
|
112
|
+
"concat(",
|
|
113
|
+
"0x",
|
|
114
|
+
"unhex(",
|
|
115
|
+
"conv(",
|
|
116
|
+
"ascii(",
|
|
117
|
+
"benchmark("
|
|
118
|
+
],
|
|
119
|
+
"safePatterns": [
|
|
120
|
+
"select.*from.*where",
|
|
121
|
+
"insert into.*values",
|
|
122
|
+
"select count",
|
|
123
|
+
"select \\*.*from.*where",
|
|
124
|
+
"select.*limit",
|
|
125
|
+
"begin transaction",
|
|
126
|
+
"commit",
|
|
127
|
+
"rollback",
|
|
128
|
+
"explain",
|
|
129
|
+
"describe",
|
|
130
|
+
"show tables",
|
|
131
|
+
"show databases",
|
|
132
|
+
"show columns"
|
|
133
|
+
]
|
|
134
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"threats": [
|
|
4
|
+
{
|
|
5
|
+
"id": "T01",
|
|
6
|
+
"name": "Unauthorized purchase",
|
|
7
|
+
"primitive": "DESTRUCTION",
|
|
8
|
+
"severity": 8,
|
|
9
|
+
"description": "Agent attempts to create a charge or payment without explicit authorization"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "T02",
|
|
13
|
+
"name": "Money transfer",
|
|
14
|
+
"primitive": "EXFILTRATION",
|
|
15
|
+
"severity": 9,
|
|
16
|
+
"description": "Agent attempts to transfer funds, withdraw money, or send cryptocurrency"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "T03",
|
|
20
|
+
"name": "Invoice approval",
|
|
21
|
+
"primitive": "MANIPULATION",
|
|
22
|
+
"severity": 7,
|
|
23
|
+
"description": "Agent attempts to approve invoices or confirm payments"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "T04",
|
|
27
|
+
"name": "Service subscription",
|
|
28
|
+
"primitive": "DESTRUCTION",
|
|
29
|
+
"severity": 6,
|
|
30
|
+
"description": "Agent attempts to create recurring subscriptions or enable auto-renewal"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "T05",
|
|
34
|
+
"name": "Stock/crypto trading",
|
|
35
|
+
"primitive": "DESTRUCTION",
|
|
36
|
+
"severity": 9,
|
|
37
|
+
"description": "Agent attempts to execute stock trades or cryptocurrency swaps"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "T06",
|
|
41
|
+
"name": "Pricing/billing modification",
|
|
42
|
+
"primitive": "DESTRUCTION",
|
|
43
|
+
"severity": 8,
|
|
44
|
+
"description": "Agent attempts to modify pricing, billing plans, or create discount codes"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"paymentEndpoints": [
|
|
48
|
+
"stripe\\.com/v1/charges",
|
|
49
|
+
"stripe\\.com/v1/payment_intents",
|
|
50
|
+
"paypal\\.com/v2/payments",
|
|
51
|
+
"paypal\\.com/v1/payments",
|
|
52
|
+
"square\\.com/v2/payments",
|
|
53
|
+
"braintree",
|
|
54
|
+
"adyen",
|
|
55
|
+
"checkout\\.com/payments"
|
|
56
|
+
],
|
|
57
|
+
"transferPatterns": [
|
|
58
|
+
"transfer.*funds",
|
|
59
|
+
"send.*money",
|
|
60
|
+
"wire.*transfer",
|
|
61
|
+
"bank.*transfer",
|
|
62
|
+
"withdraw",
|
|
63
|
+
"payout",
|
|
64
|
+
"remittance",
|
|
65
|
+
"disburs"
|
|
66
|
+
],
|
|
67
|
+
"cryptoPatterns": [
|
|
68
|
+
"eth_sendtransaction",
|
|
69
|
+
"bitcoin.*send",
|
|
70
|
+
"transfer.*token",
|
|
71
|
+
"swap.*token",
|
|
72
|
+
"coinbase\\.com/api",
|
|
73
|
+
"binance\\.com/api",
|
|
74
|
+
"crypto.*transfer",
|
|
75
|
+
"wallet.*send"
|
|
76
|
+
],
|
|
77
|
+
"tradingPatterns": [
|
|
78
|
+
"place.*order",
|
|
79
|
+
"buy.*stock",
|
|
80
|
+
"sell.*stock",
|
|
81
|
+
"execute.*trade",
|
|
82
|
+
"market.*order",
|
|
83
|
+
"limit.*order",
|
|
84
|
+
"trading.*execute",
|
|
85
|
+
"buy.*crypto",
|
|
86
|
+
"sell.*crypto"
|
|
87
|
+
],
|
|
88
|
+
"subscriptionPatterns": [
|
|
89
|
+
"create.*subscription",
|
|
90
|
+
"subscribe",
|
|
91
|
+
"recurring.*payment",
|
|
92
|
+
"auto.*renew",
|
|
93
|
+
"billing.*cycle",
|
|
94
|
+
"setup.*autopay"
|
|
95
|
+
],
|
|
96
|
+
"pricingPatterns": [
|
|
97
|
+
"update.*price",
|
|
98
|
+
"set.*billing",
|
|
99
|
+
"change.*plan",
|
|
100
|
+
"modify.*pricing",
|
|
101
|
+
"discount.*code",
|
|
102
|
+
"create.*coupon",
|
|
103
|
+
"adjust.*rate"
|
|
104
|
+
],
|
|
105
|
+
"highRiskAmountThreshold": 100,
|
|
106
|
+
"safePatterns": [
|
|
107
|
+
"balance",
|
|
108
|
+
"status",
|
|
109
|
+
"history",
|
|
110
|
+
"receipt",
|
|
111
|
+
"invoice\\.get",
|
|
112
|
+
"invoice\\.list",
|
|
113
|
+
"list",
|
|
114
|
+
"read",
|
|
115
|
+
"view",
|
|
116
|
+
"check.*balance",
|
|
117
|
+
"get.*receipt",
|
|
118
|
+
"transaction.*history"
|
|
119
|
+
]
|
|
120
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"threats": [
|
|
4
|
+
{
|
|
5
|
+
"id": "UI01",
|
|
6
|
+
"name": "Destructive button click",
|
|
7
|
+
"primitive": "DESTRUCTION",
|
|
8
|
+
"severity": 8,
|
|
9
|
+
"description": "Agent clicks destructive buttons like delete account, wipe data, or terminate services"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "UI02",
|
|
13
|
+
"name": "Form data corruption",
|
|
14
|
+
"primitive": "MANIPULATION",
|
|
15
|
+
"severity": 7,
|
|
16
|
+
"description": "Agent manipulates form data by filling incorrect fields or overwriting values"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "UI03",
|
|
20
|
+
"name": "Dialog auto-acceptance",
|
|
21
|
+
"primitive": "DESTRUCTION",
|
|
22
|
+
"severity": 8,
|
|
23
|
+
"description": "Agent automatically accepts destructive confirmation dialogs or dismisses warnings"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "UI04",
|
|
27
|
+
"name": "Payment form submission",
|
|
28
|
+
"primitive": "DESTRUCTION",
|
|
29
|
+
"severity": 8,
|
|
30
|
+
"description": "Agent interacts with payment forms, entering credit card details or completing purchases"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "UI05",
|
|
34
|
+
"name": "Malicious file download+open",
|
|
35
|
+
"primitive": "DESTRUCTION",
|
|
36
|
+
"severity": 8,
|
|
37
|
+
"description": "Agent downloads and opens/executes files from untrusted sources"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "UI06",
|
|
41
|
+
"name": "Screen/clipboard capture",
|
|
42
|
+
"primitive": "EXFILTRATION",
|
|
43
|
+
"severity": 8,
|
|
44
|
+
"description": "Agent captures screen content or copies sensitive data to clipboard"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"destructiveButtonPatterns": [
|
|
48
|
+
"delete.*account",
|
|
49
|
+
"confirm.*wipe",
|
|
50
|
+
"erase.*all",
|
|
51
|
+
"remove.*all.*data",
|
|
52
|
+
"destroy.*instance",
|
|
53
|
+
"terminate.*server",
|
|
54
|
+
"click.*delete",
|
|
55
|
+
"press.*remove",
|
|
56
|
+
"confirm.*destruct",
|
|
57
|
+
"deactivate.*account",
|
|
58
|
+
"close.*account"
|
|
59
|
+
],
|
|
60
|
+
"formCorruptionPatterns": [
|
|
61
|
+
"fill.*wrong.*field",
|
|
62
|
+
"enter.*data.*incorrect",
|
|
63
|
+
"submit.*form.*with",
|
|
64
|
+
"type.*into.*wrong",
|
|
65
|
+
"overwrite.*field",
|
|
66
|
+
"clear.*form.*data",
|
|
67
|
+
"modify.*input"
|
|
68
|
+
],
|
|
69
|
+
"dialogAcceptancePatterns": [
|
|
70
|
+
"click.*ok.*dialog",
|
|
71
|
+
"confirm.*dialog",
|
|
72
|
+
"accept.*prompt",
|
|
73
|
+
"dismiss.*warning",
|
|
74
|
+
"click.*yes.*confirm",
|
|
75
|
+
"auto.*accept",
|
|
76
|
+
"approve.*dialog",
|
|
77
|
+
"click.*allow",
|
|
78
|
+
"click.*confirm.*delete"
|
|
79
|
+
],
|
|
80
|
+
"paymentFormPatterns": [
|
|
81
|
+
"credit.*card",
|
|
82
|
+
"card.*number",
|
|
83
|
+
"enter.*cvv",
|
|
84
|
+
"checkout",
|
|
85
|
+
"complete.*purchase",
|
|
86
|
+
"payment.*form",
|
|
87
|
+
"submit.*payment",
|
|
88
|
+
"pay.*now",
|
|
89
|
+
"billing.*info"
|
|
90
|
+
],
|
|
91
|
+
"maliciousDownloadPatterns": [
|
|
92
|
+
"download.*and.*open",
|
|
93
|
+
"download.*and.*run",
|
|
94
|
+
"save.*and.*execute",
|
|
95
|
+
"download.*exe",
|
|
96
|
+
"download.*dmg.*open",
|
|
97
|
+
"download.*apk.*install",
|
|
98
|
+
"open.*downloaded",
|
|
99
|
+
"run.*downloaded"
|
|
100
|
+
],
|
|
101
|
+
"screenCapturePatterns": [
|
|
102
|
+
"screenshot.*password",
|
|
103
|
+
"capture.*screen",
|
|
104
|
+
"copy.*password",
|
|
105
|
+
"clipboard.*credential",
|
|
106
|
+
"screenshot.*private",
|
|
107
|
+
"screen.*record",
|
|
108
|
+
"copy.*sensitive",
|
|
109
|
+
"clipboard.*secret",
|
|
110
|
+
"capture.*login"
|
|
111
|
+
],
|
|
112
|
+
"sensitiveElements": [
|
|
113
|
+
"password",
|
|
114
|
+
"credit.card",
|
|
115
|
+
"ssn",
|
|
116
|
+
"social.security",
|
|
117
|
+
"private.key",
|
|
118
|
+
"secret.key",
|
|
119
|
+
"api.key",
|
|
120
|
+
"bank.account"
|
|
121
|
+
],
|
|
122
|
+
"safePatterns": [
|
|
123
|
+
"navigate.*to",
|
|
124
|
+
"scroll",
|
|
125
|
+
"read.*text",
|
|
126
|
+
"view.*page",
|
|
127
|
+
"hover",
|
|
128
|
+
"inspect.*element",
|
|
129
|
+
"open.*link",
|
|
130
|
+
"click.*navigation",
|
|
131
|
+
"browse.*to",
|
|
132
|
+
"select.*tab",
|
|
133
|
+
"resize",
|
|
134
|
+
"minimize",
|
|
135
|
+
"maximize"
|
|
136
|
+
]
|
|
137
|
+
}
|