@skillsmith/core 2.1.0 → 2.1.2
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/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/types.d.ts +2 -0
- package/dist/src/analysis/types.d.ts.map +1 -1
- package/dist/src/analysis/types.js +13 -1
- package/dist/src/analysis/types.js.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.js +26 -44
- package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
- package/dist/src/analytics/schema.d.ts +1 -1
- package/dist/src/analytics/schema.d.ts.map +1 -1
- package/dist/src/analytics/schema.js +68 -0
- package/dist/src/analytics/schema.js.map +1 -1
- package/dist/src/api/client.d.ts +33 -29
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +15 -10
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/billing/BillingService.d.ts +139 -0
- package/dist/src/billing/BillingService.d.ts.map +1 -0
- package/dist/src/billing/BillingService.js +393 -0
- package/dist/src/billing/BillingService.js.map +1 -0
- package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
- package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
- package/dist/src/billing/GDPRComplianceService.js +361 -0
- package/dist/src/billing/GDPRComplianceService.js.map +1 -0
- package/dist/src/billing/StripeClient.d.ts +177 -0
- package/dist/src/billing/StripeClient.d.ts.map +1 -0
- package/dist/src/billing/StripeClient.js +462 -0
- package/dist/src/billing/StripeClient.js.map +1 -0
- package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
- package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
- package/dist/src/billing/StripeReconciliationJob.js +405 -0
- package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
- package/dist/src/billing/StripeWebhookHandler.js +409 -0
- package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
- package/dist/src/billing/index.d.ts +18 -0
- package/dist/src/billing/index.d.ts.map +1 -0
- package/dist/src/billing/index.js +19 -0
- package/dist/src/billing/index.js.map +1 -0
- package/dist/src/billing/types.d.ts +266 -0
- package/dist/src/billing/types.d.ts.map +1 -0
- package/dist/src/billing/types.js +23 -0
- package/dist/src/billing/types.js.map +1 -0
- package/dist/src/embeddings/hnsw-store.d.ts +568 -0
- package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
- package/dist/src/embeddings/hnsw-store.js +805 -0
- package/dist/src/embeddings/hnsw-store.js.map +1 -0
- package/dist/src/embeddings/index.d.ts +2 -0
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js +2 -0
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/learning/PatternStore.d.ts +457 -0
- package/dist/src/learning/PatternStore.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.js +893 -0
- package/dist/src/learning/PatternStore.js.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.js +627 -0
- package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
- package/dist/src/learning/index.d.ts +15 -0
- package/dist/src/learning/index.d.ts.map +1 -0
- package/dist/src/learning/index.js +15 -0
- package/dist/src/learning/index.js.map +1 -0
- package/dist/src/routing/SONARouter.d.ts +154 -0
- package/dist/src/routing/SONARouter.d.ts.map +1 -0
- package/dist/src/routing/SONARouter.js +679 -0
- package/dist/src/routing/SONARouter.js.map +1 -0
- package/dist/src/routing/index.d.ts +9 -0
- package/dist/src/routing/index.d.ts.map +1 -0
- package/dist/src/routing/index.js +10 -0
- package/dist/src/routing/index.js.map +1 -0
- package/dist/src/routing/types.d.ts +331 -0
- package/dist/src/routing/types.d.ts.map +1 -0
- package/dist/src/routing/types.js +203 -0
- package/dist/src/routing/types.js.map +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +5 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
- package/dist/src/security/SkillSandbox.d.ts +156 -0
- package/dist/src/security/SkillSandbox.d.ts.map +1 -0
- package/dist/src/security/SkillSandbox.js +303 -0
- package/dist/src/security/SkillSandbox.js.map +1 -0
- package/dist/src/security/index.d.ts +3 -1
- package/dist/src/security/index.d.ts.map +1 -1
- package/dist/src/security/index.js +5 -1
- package/dist/src/security/index.js.map +1 -1
- package/dist/src/security/rate-limiter/presets.d.ts +12 -0
- package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
- package/dist/src/security/rate-limiter/presets.js +12 -0
- package/dist/src/security/rate-limiter/presets.js.map +1 -1
- package/dist/src/security/sanitization.d.ts +85 -0
- package/dist/src/security/sanitization.d.ts.map +1 -1
- package/dist/src/security/sanitization.js +133 -0
- package/dist/src/security/sanitization.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.d.ts +23 -0
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.js +232 -28
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/security/scanner/patterns.d.ts +13 -0
- package/dist/src/security/scanner/patterns.d.ts.map +1 -1
- package/dist/src/security/scanner/patterns.js +51 -0
- package/dist/src/security/scanner/patterns.js.map +1 -1
- package/dist/src/security/scanner/types.d.ts +13 -1
- package/dist/src/security/scanner/types.d.ts.map +1 -1
- package/dist/src/security/scanner/weights.d.ts.map +1 -1
- package/dist/src/security/scanner/weights.js +1 -0
- package/dist/src/security/scanner/weights.js.map +1 -1
- package/dist/src/session/SessionManager.d.ts +7 -0
- package/dist/src/session/SessionManager.d.ts.map +1 -1
- package/dist/src/session/SessionManager.js +117 -10
- package/dist/src/session/SessionManager.js.map +1 -1
- package/dist/src/sync/SyncEngine.d.ts.map +1 -1
- package/dist/src/sync/SyncEngine.js +52 -32
- package/dist/src/sync/SyncEngine.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
- package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.js +720 -0
- package/dist/src/testing/MultiLLMProvider.js.map +1 -0
- package/dist/src/testing/index.d.ts +8 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +9 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/types.d.ts +3 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tests/SecurityScanner.test.js +337 -1
- package/dist/tests/SecurityScanner.test.js.map +1 -1
- package/dist/tests/billing/BillingService.test.d.ts +7 -0
- package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
- package/dist/tests/billing/BillingService.test.js +168 -0
- package/dist/tests/billing/BillingService.test.js.map +1 -0
- package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
- package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
- package/dist/tests/billing/GDPRCompliance.test.js +195 -0
- package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
- package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
- package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
- package/dist/tests/billing/StripeReconciliation.test.js +266 -0
- package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
- package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
- package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
- package/dist/tests/billing/stripe-validators.test.js +107 -0
- package/dist/tests/billing/stripe-validators.test.js.map +1 -0
- package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
- package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
- package/dist/tests/embeddings/hnsw-store.test.js +295 -0
- package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
- package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
- package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
- package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
- package/dist/tests/integration/neural/helpers.d.ts +132 -0
- package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
- package/dist/tests/integration/neural/helpers.js +287 -0
- package/dist/tests/integration/neural/helpers.js.map +1 -0
- package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
- package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/personalization.test.js +304 -0
- package/dist/tests/integration/neural/personalization.test.js.map +1 -0
- package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
- package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/preference-learner.test.js +289 -0
- package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
- package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
- package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/privacy.test.js +249 -0
- package/dist/tests/integration/neural/privacy.test.js.map +1 -0
- package/dist/tests/integration/neural/setup.d.ts +175 -0
- package/dist/tests/integration/neural/setup.d.ts.map +1 -0
- package/dist/tests/integration/neural/setup.js +487 -0
- package/dist/tests/integration/neural/setup.js.map +1 -0
- package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
- package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/signal-collection.test.js +232 -0
- package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
- package/dist/tests/learning/PatternStore.test.d.ts +8 -0
- package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
- package/dist/tests/learning/PatternStore.test.js +589 -0
- package/dist/tests/learning/PatternStore.test.js.map +1 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
- package/dist/tests/routing/SONARouter.test.d.ts +8 -0
- package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
- package/dist/tests/routing/SONARouter.test.js +400 -0
- package/dist/tests/routing/SONARouter.test.js.map +1 -0
- package/dist/tests/security/ContinuousSecurity.test.js +10 -12
- package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
- package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
- package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
- package/dist/tests/security/SkillSandbox.test.js +321 -0
- package/dist/tests/security/SkillSandbox.test.js.map +1 -0
- package/dist/tests/sync/SyncEngine.test.js +4 -2
- package/dist/tests/sync/SyncEngine.test.js.map +1 -1
- package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
- package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
- package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
- package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
- package/package.json +16 -3
|
@@ -3,9 +3,58 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Security scanning for skill content with advanced pattern detection.
|
|
5
5
|
*/
|
|
6
|
-
import { DEFAULT_ALLOWED_DOMAINS, SENSITIVE_PATH_PATTERNS, JAILBREAK_PATTERNS, SUSPICIOUS_PATTERNS, SOCIAL_ENGINEERING_PATTERNS, PROMPT_LEAKING_PATTERNS, DATA_EXFILTRATION_PATTERNS, PRIVILEGE_ESCALATION_PATTERNS, } from './patterns.js';
|
|
6
|
+
import { DEFAULT_ALLOWED_DOMAINS, SENSITIVE_PATH_PATTERNS, JAILBREAK_PATTERNS, SUSPICIOUS_PATTERNS, SOCIAL_ENGINEERING_PATTERNS, PROMPT_LEAKING_PATTERNS, DATA_EXFILTRATION_PATTERNS, PRIVILEGE_ESCALATION_PATTERNS, AI_DEFENCE_PATTERNS, } from './patterns.js';
|
|
7
7
|
import { SEVERITY_WEIGHTS, CATEGORY_WEIGHTS } from './weights.js';
|
|
8
8
|
import { safeRegexTest, safeRegexCheck } from './regex-utils.js';
|
|
9
|
+
/**
|
|
10
|
+
* SMI-1532: Check if a regex pattern requires multi-line matching
|
|
11
|
+
* Patterns that contain newline/carriage-return characters or start with
|
|
12
|
+
* multi-line anchors need to be tested against full content, not line-by-line.
|
|
13
|
+
*/
|
|
14
|
+
function isMultilinePattern(pattern) {
|
|
15
|
+
const patternStr = pattern.source;
|
|
16
|
+
return (patternStr.includes('\\r') || patternStr.includes('\\n') || patternStr.startsWith('(?:^|\\n)'));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Analyze markdown content and return context for each line
|
|
20
|
+
* Used to reduce false positives in documentation/examples
|
|
21
|
+
*/
|
|
22
|
+
function analyzeMarkdownContext(content) {
|
|
23
|
+
const lines = content.split('\n');
|
|
24
|
+
const contexts = [];
|
|
25
|
+
let inFencedCodeBlock = false;
|
|
26
|
+
for (let i = 0; i < lines.length; i++) {
|
|
27
|
+
const line = lines[i];
|
|
28
|
+
const trimmedLine = line.trim();
|
|
29
|
+
// Check for fenced code block boundaries (``` or ~~~)
|
|
30
|
+
if (/^(`{3,}|~{3,})/.test(trimmedLine)) {
|
|
31
|
+
inFencedCodeBlock = !inFencedCodeBlock;
|
|
32
|
+
}
|
|
33
|
+
// Check for table row (starts with |)
|
|
34
|
+
const inTable = trimmedLine.startsWith('|');
|
|
35
|
+
// Check for indented code block (4+ spaces or tab at start, not in list)
|
|
36
|
+
const isIndentedCode = /^( {4,}|\t)/.test(line) &&
|
|
37
|
+
!inFencedCodeBlock &&
|
|
38
|
+
!trimmedLine.startsWith('-') &&
|
|
39
|
+
!trimmedLine.startsWith('*');
|
|
40
|
+
// Check for inline code (content between backticks on same line)
|
|
41
|
+
const isInlineCode = /`[^`]+`/.test(line) && !inFencedCodeBlock;
|
|
42
|
+
contexts.push({
|
|
43
|
+
lineNumber: i + 1,
|
|
44
|
+
inCodeBlock: inFencedCodeBlock,
|
|
45
|
+
inTable,
|
|
46
|
+
isIndentedCode,
|
|
47
|
+
isInlineCode,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return contexts;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check if a line is in a documentation context (code block, table, example)
|
|
54
|
+
*/
|
|
55
|
+
function isDocumentationContext(ctx) {
|
|
56
|
+
return ctx.inCodeBlock || ctx.inTable || ctx.isIndentedCode;
|
|
57
|
+
}
|
|
9
58
|
export class SecurityScanner {
|
|
10
59
|
allowedDomains;
|
|
11
60
|
blockedPatterns;
|
|
@@ -68,20 +117,29 @@ export class SecurityScanner {
|
|
|
68
117
|
/**
|
|
69
118
|
* Scan for sensitive file path references
|
|
70
119
|
* SMI-882: Uses safeRegexCheck to prevent ReDoS
|
|
120
|
+
* SMI-1513: Mark findings in documentation context with lower confidence
|
|
71
121
|
*/
|
|
72
|
-
scanSensitivePaths(content) {
|
|
122
|
+
scanSensitivePaths(content, lineContexts) {
|
|
73
123
|
const findings = [];
|
|
74
124
|
const lines = content.split('\n');
|
|
125
|
+
const contexts = lineContexts ?? analyzeMarkdownContext(content);
|
|
75
126
|
lines.forEach((line, index) => {
|
|
127
|
+
const ctx = contexts[index];
|
|
128
|
+
const inDocContext = ctx ? isDocumentationContext(ctx) : false;
|
|
76
129
|
for (const pattern of SENSITIVE_PATH_PATTERNS) {
|
|
77
130
|
// SMI-882: Use safe regex check with length limit
|
|
78
131
|
if (safeRegexCheck(pattern, line)) {
|
|
132
|
+
// SMI-1513: Still report findings in documentation context but with lower confidence
|
|
133
|
+
const confidence = inDocContext ? 'low' : 'high';
|
|
134
|
+
const severity = inDocContext ? 'medium' : 'high'; // Reduce severity for examples
|
|
79
135
|
findings.push({
|
|
80
136
|
type: 'sensitive_path',
|
|
81
|
-
severity
|
|
137
|
+
severity,
|
|
82
138
|
message: `Reference to potentially sensitive path: ${pattern.source}`,
|
|
83
139
|
location: line.trim().slice(0, 100),
|
|
84
140
|
lineNumber: index + 1,
|
|
141
|
+
inDocumentationContext: inDocContext,
|
|
142
|
+
confidence,
|
|
85
143
|
});
|
|
86
144
|
break; // One finding per line
|
|
87
145
|
}
|
|
@@ -92,21 +150,30 @@ export class SecurityScanner {
|
|
|
92
150
|
/**
|
|
93
151
|
* Scan for jailbreak attempts
|
|
94
152
|
* SMI-882: Uses safeRegexTest to prevent ReDoS
|
|
153
|
+
* SMI-1513: Mark findings in documentation context with lower confidence
|
|
95
154
|
*/
|
|
96
|
-
scanJailbreakPatterns(content) {
|
|
155
|
+
scanJailbreakPatterns(content, lineContexts) {
|
|
97
156
|
const findings = [];
|
|
98
157
|
const lines = content.split('\n');
|
|
158
|
+
const contexts = lineContexts ?? analyzeMarkdownContext(content);
|
|
99
159
|
lines.forEach((line, index) => {
|
|
160
|
+
const ctx = contexts[index];
|
|
161
|
+
const inDocContext = ctx ? isDocumentationContext(ctx) : false;
|
|
100
162
|
for (const pattern of JAILBREAK_PATTERNS) {
|
|
101
163
|
// SMI-882: Use safe regex test with length limit
|
|
102
164
|
const match = safeRegexTest(pattern, line);
|
|
103
165
|
if (match) {
|
|
166
|
+
// SMI-1513: Documentation examples get reduced severity/confidence
|
|
167
|
+
const confidence = inDocContext ? 'low' : 'high';
|
|
168
|
+
const severity = inDocContext ? 'high' : 'critical'; // Still high even in docs
|
|
104
169
|
findings.push({
|
|
105
170
|
type: 'jailbreak',
|
|
106
|
-
severity
|
|
171
|
+
severity,
|
|
107
172
|
message: `Potential jailbreak pattern detected: "${match[0]}"`,
|
|
108
173
|
location: line.trim().slice(0, 100),
|
|
109
174
|
lineNumber: index + 1,
|
|
175
|
+
inDocumentationContext: inDocContext,
|
|
176
|
+
confidence,
|
|
110
177
|
});
|
|
111
178
|
break; // One finding per line
|
|
112
179
|
}
|
|
@@ -157,23 +224,31 @@ export class SecurityScanner {
|
|
|
157
224
|
/**
|
|
158
225
|
* SMI-685: Scan for social engineering attempts
|
|
159
226
|
* SMI-882: Uses safeRegexTest to prevent ReDoS
|
|
227
|
+
* SMI-1513: Mark findings in documentation context with lower confidence
|
|
160
228
|
* Detects patterns like "pretend to be", "roleplay as", "you are now"
|
|
161
229
|
*/
|
|
162
|
-
scanSocialEngineering(content) {
|
|
230
|
+
scanSocialEngineering(content, lineContexts) {
|
|
163
231
|
const findings = [];
|
|
164
232
|
const lines = content.split('\n');
|
|
233
|
+
const contexts = lineContexts ?? analyzeMarkdownContext(content);
|
|
165
234
|
lines.forEach((line, index) => {
|
|
235
|
+
const ctx = contexts[index];
|
|
236
|
+
const inDocContext = ctx ? isDocumentationContext(ctx) : false;
|
|
166
237
|
for (const pattern of SOCIAL_ENGINEERING_PATTERNS) {
|
|
167
238
|
// SMI-882: Use safe regex test with length limit
|
|
168
239
|
const match = safeRegexTest(pattern, line);
|
|
169
240
|
if (match) {
|
|
241
|
+
const confidence = inDocContext ? 'low' : 'high';
|
|
242
|
+
const severity = inDocContext ? 'medium' : 'high';
|
|
170
243
|
findings.push({
|
|
171
244
|
type: 'social_engineering',
|
|
172
|
-
severity
|
|
245
|
+
severity,
|
|
173
246
|
message: `Social engineering attempt detected: "${match[0]}"`,
|
|
174
247
|
location: line.trim().slice(0, 100),
|
|
175
248
|
lineNumber: index + 1,
|
|
176
249
|
category: 'social_engineering',
|
|
250
|
+
inDocumentationContext: inDocContext,
|
|
251
|
+
confidence,
|
|
177
252
|
});
|
|
178
253
|
break; // One finding per line
|
|
179
254
|
}
|
|
@@ -184,23 +259,31 @@ export class SecurityScanner {
|
|
|
184
259
|
/**
|
|
185
260
|
* SMI-685: Scan for prompt leaking attempts
|
|
186
261
|
* SMI-882: Uses safeRegexTest to prevent ReDoS
|
|
262
|
+
* SMI-1513: Mark findings in documentation context with lower confidence
|
|
187
263
|
* Detects patterns like "show me your instructions", "what are your rules"
|
|
188
264
|
*/
|
|
189
|
-
scanPromptLeaking(content) {
|
|
265
|
+
scanPromptLeaking(content, lineContexts) {
|
|
190
266
|
const findings = [];
|
|
191
267
|
const lines = content.split('\n');
|
|
268
|
+
const contexts = lineContexts ?? analyzeMarkdownContext(content);
|
|
192
269
|
lines.forEach((line, index) => {
|
|
270
|
+
const ctx = contexts[index];
|
|
271
|
+
const inDocContext = ctx ? isDocumentationContext(ctx) : false;
|
|
193
272
|
for (const pattern of PROMPT_LEAKING_PATTERNS) {
|
|
194
273
|
// SMI-882: Use safe regex test with length limit
|
|
195
274
|
const match = safeRegexTest(pattern, line);
|
|
196
275
|
if (match) {
|
|
276
|
+
const confidence = inDocContext ? 'low' : 'high';
|
|
277
|
+
const severity = inDocContext ? 'high' : 'critical';
|
|
197
278
|
findings.push({
|
|
198
279
|
type: 'prompt_leaking',
|
|
199
|
-
severity
|
|
280
|
+
severity,
|
|
200
281
|
message: `Prompt leaking attempt detected: "${match[0]}"`,
|
|
201
282
|
location: line.trim().slice(0, 100),
|
|
202
283
|
lineNumber: index + 1,
|
|
203
284
|
category: 'prompt_leaking',
|
|
285
|
+
inDocumentationContext: inDocContext,
|
|
286
|
+
confidence,
|
|
204
287
|
});
|
|
205
288
|
break; // One finding per line
|
|
206
289
|
}
|
|
@@ -211,23 +294,31 @@ export class SecurityScanner {
|
|
|
211
294
|
/**
|
|
212
295
|
* SMI-685: Scan for data exfiltration patterns
|
|
213
296
|
* SMI-882: Uses safeRegexTest to prevent ReDoS
|
|
297
|
+
* SMI-1513: Mark findings in documentation context with lower confidence
|
|
214
298
|
* Detects encoding to external URLs, file upload patterns
|
|
215
299
|
*/
|
|
216
|
-
scanDataExfiltration(content) {
|
|
300
|
+
scanDataExfiltration(content, lineContexts) {
|
|
217
301
|
const findings = [];
|
|
218
302
|
const lines = content.split('\n');
|
|
303
|
+
const contexts = lineContexts ?? analyzeMarkdownContext(content);
|
|
219
304
|
lines.forEach((line, index) => {
|
|
305
|
+
const ctx = contexts[index];
|
|
306
|
+
const inDocContext = ctx ? isDocumentationContext(ctx) : false;
|
|
220
307
|
for (const pattern of DATA_EXFILTRATION_PATTERNS) {
|
|
221
308
|
// SMI-882: Use safe regex test with length limit
|
|
222
309
|
const match = safeRegexTest(pattern, line);
|
|
223
310
|
if (match) {
|
|
311
|
+
const confidence = inDocContext ? 'low' : 'high';
|
|
312
|
+
const severity = inDocContext ? 'medium' : 'high';
|
|
224
313
|
findings.push({
|
|
225
314
|
type: 'data_exfiltration',
|
|
226
|
-
severity
|
|
315
|
+
severity,
|
|
227
316
|
message: `Potential data exfiltration pattern: "${match[0]}"`,
|
|
228
317
|
location: line.trim().slice(0, 100),
|
|
229
318
|
lineNumber: index + 1,
|
|
230
319
|
category: 'data_exfiltration',
|
|
320
|
+
inDocumentationContext: inDocContext,
|
|
321
|
+
confidence,
|
|
231
322
|
});
|
|
232
323
|
break; // One finding per line
|
|
233
324
|
}
|
|
@@ -238,23 +329,32 @@ export class SecurityScanner {
|
|
|
238
329
|
/**
|
|
239
330
|
* SMI-685: Scan for privilege escalation patterns
|
|
240
331
|
* SMI-882: Uses safeRegexTest to prevent ReDoS
|
|
332
|
+
* SMI-1513: Mark findings in documentation context with lower confidence
|
|
241
333
|
* Detects sudo with passwords, chmod patterns, root access attempts
|
|
242
334
|
*/
|
|
243
|
-
scanPrivilegeEscalation(content) {
|
|
335
|
+
scanPrivilegeEscalation(content, lineContexts) {
|
|
244
336
|
const findings = [];
|
|
245
337
|
const lines = content.split('\n');
|
|
338
|
+
const contexts = lineContexts ?? analyzeMarkdownContext(content);
|
|
246
339
|
lines.forEach((line, index) => {
|
|
340
|
+
const ctx = contexts[index];
|
|
341
|
+
const inDocContext = ctx ? isDocumentationContext(ctx) : false;
|
|
247
342
|
for (const pattern of PRIVILEGE_ESCALATION_PATTERNS) {
|
|
248
343
|
// SMI-882: Use safe regex test with length limit
|
|
249
344
|
const match = safeRegexTest(pattern, line);
|
|
250
345
|
if (match) {
|
|
346
|
+
// SMI-1513: Tutorials often show sudo examples - reduce severity in docs
|
|
347
|
+
const confidence = inDocContext ? 'low' : 'high';
|
|
348
|
+
const severity = inDocContext ? 'high' : 'critical';
|
|
251
349
|
findings.push({
|
|
252
350
|
type: 'privilege_escalation',
|
|
253
|
-
severity
|
|
351
|
+
severity,
|
|
254
352
|
message: `Privilege escalation pattern detected: "${match[0]}"`,
|
|
255
353
|
location: line.trim().slice(0, 100),
|
|
256
354
|
lineNumber: index + 1,
|
|
257
355
|
category: 'privilege_escalation',
|
|
356
|
+
inDocumentationContext: inDocContext,
|
|
357
|
+
confidence,
|
|
258
358
|
});
|
|
259
359
|
break; // One finding per line
|
|
260
360
|
}
|
|
@@ -262,8 +362,93 @@ export class SecurityScanner {
|
|
|
262
362
|
});
|
|
263
363
|
return findings;
|
|
264
364
|
}
|
|
365
|
+
/**
|
|
366
|
+
* SMI-1532: Scan for AI injection vulnerabilities (CVE-hardened)
|
|
367
|
+
* Optimized for sub-10ms scan time with compiled regex
|
|
368
|
+
* SMI-1513: Mark findings in documentation context with lower confidence
|
|
369
|
+
*
|
|
370
|
+
* Detects:
|
|
371
|
+
* - Role injection (system:/assistant:/user:)
|
|
372
|
+
* - Hidden instruction brackets [[...]]
|
|
373
|
+
* - HTML comment injection
|
|
374
|
+
* - Unicode homograph attacks
|
|
375
|
+
* - Prompt structure manipulation
|
|
376
|
+
* - Base64 encoded instructions
|
|
377
|
+
* - And more...
|
|
378
|
+
*/
|
|
379
|
+
scanAIDefenceVulnerabilities(content, lineContexts) {
|
|
380
|
+
const findings = [];
|
|
381
|
+
const lines = content.split('\n');
|
|
382
|
+
const contexts = lineContexts ?? analyzeMarkdownContext(content);
|
|
383
|
+
// Track which line ranges have been flagged to avoid duplicates
|
|
384
|
+
const flaggedLines = new Set();
|
|
385
|
+
// First pass: scan full content for multi-line patterns
|
|
386
|
+
// Patterns that require seeing multiple lines together (CRLF, delimiter injection)
|
|
387
|
+
for (const pattern of AI_DEFENCE_PATTERNS) {
|
|
388
|
+
if (isMultilinePattern(pattern)) {
|
|
389
|
+
const match = safeRegexTest(pattern, content);
|
|
390
|
+
if (match) {
|
|
391
|
+
// Find which line the match starts on
|
|
392
|
+
const matchIndex = content.indexOf(match[0]);
|
|
393
|
+
const lineNumber = content.slice(0, matchIndex).split('\n').length;
|
|
394
|
+
const lineIndex = lineNumber - 1;
|
|
395
|
+
// Check documentation context for this line
|
|
396
|
+
const ctx = contexts[lineIndex];
|
|
397
|
+
const inDocContext = ctx ? isDocumentationContext(ctx) : false;
|
|
398
|
+
// SMI-1513: Reduce severity/confidence for doc context
|
|
399
|
+
const confidence = inDocContext ? 'low' : 'high';
|
|
400
|
+
const severity = inDocContext ? 'high' : 'critical';
|
|
401
|
+
findings.push({
|
|
402
|
+
type: 'ai_defence',
|
|
403
|
+
severity,
|
|
404
|
+
message: `AI injection pattern detected: "${match[0].slice(0, 50)}${match[0].length > 50 ? '...' : ''}"`,
|
|
405
|
+
location: match[0].trim().slice(0, 100),
|
|
406
|
+
lineNumber,
|
|
407
|
+
category: 'ai_defence',
|
|
408
|
+
inDocumentationContext: inDocContext,
|
|
409
|
+
confidence,
|
|
410
|
+
});
|
|
411
|
+
flaggedLines.add(lineNumber);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
// Second pass: line-by-line scanning for single-line patterns
|
|
416
|
+
lines.forEach((line, index) => {
|
|
417
|
+
if (flaggedLines.has(index + 1)) {
|
|
418
|
+
return; // Skip lines already flagged by multi-line scan
|
|
419
|
+
}
|
|
420
|
+
const ctx = contexts[index];
|
|
421
|
+
const inDocContext = ctx ? isDocumentationContext(ctx) : false;
|
|
422
|
+
for (const pattern of AI_DEFENCE_PATTERNS) {
|
|
423
|
+
// Skip multi-line patterns in line-by-line scan
|
|
424
|
+
if (isMultilinePattern(pattern))
|
|
425
|
+
continue;
|
|
426
|
+
// SMI-882: Use safe regex test with length limit
|
|
427
|
+
const match = safeRegexTest(pattern, line);
|
|
428
|
+
if (match) {
|
|
429
|
+
// SMI-1513: Documentation examples get reduced severity/confidence
|
|
430
|
+
const confidence = inDocContext ? 'low' : 'high';
|
|
431
|
+
// AI injection is always critical, but reduce to high in docs
|
|
432
|
+
const severity = inDocContext ? 'high' : 'critical';
|
|
433
|
+
findings.push({
|
|
434
|
+
type: 'ai_defence',
|
|
435
|
+
severity,
|
|
436
|
+
message: `AI injection pattern detected: "${match[0].slice(0, 50)}${match[0].length > 50 ? '...' : ''}"`,
|
|
437
|
+
location: line.trim().slice(0, 100),
|
|
438
|
+
lineNumber: index + 1,
|
|
439
|
+
category: 'ai_defence',
|
|
440
|
+
inDocumentationContext: inDocContext,
|
|
441
|
+
confidence,
|
|
442
|
+
});
|
|
443
|
+
break; // One finding per line for performance
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
return findings;
|
|
448
|
+
}
|
|
265
449
|
/**
|
|
266
450
|
* SMI-685: Calculate risk score from findings
|
|
451
|
+
* SMI-1513: Accounts for confidence levels (low confidence = reduced weight)
|
|
267
452
|
* Aggregates multiple findings into a risk score from 0-100
|
|
268
453
|
* @param findings - Array of security findings
|
|
269
454
|
* @returns Risk score breakdown and total
|
|
@@ -278,12 +463,20 @@ export class SecurityScanner {
|
|
|
278
463
|
suspiciousCode: 0,
|
|
279
464
|
sensitivePaths: 0,
|
|
280
465
|
externalUrls: 0,
|
|
466
|
+
aiDefence: 0, // SMI-1532: AI injection detection score
|
|
467
|
+
};
|
|
468
|
+
// Confidence weights - low confidence findings contribute less to risk
|
|
469
|
+
const confidenceWeights = {
|
|
470
|
+
high: 1.0,
|
|
471
|
+
medium: 0.7,
|
|
472
|
+
low: 0.3, // Documentation context findings have reduced impact
|
|
281
473
|
};
|
|
282
474
|
// Calculate raw scores by category
|
|
283
475
|
for (const finding of findings) {
|
|
284
476
|
const severityWeight = SEVERITY_WEIGHTS[finding.severity];
|
|
285
477
|
const categoryWeight = CATEGORY_WEIGHTS[finding.type] ?? 1.0;
|
|
286
|
-
const
|
|
478
|
+
const confidenceWeight = confidenceWeights[finding.confidence ?? 'high'];
|
|
479
|
+
const score = severityWeight * categoryWeight * confidenceWeight;
|
|
287
480
|
switch (finding.type) {
|
|
288
481
|
case 'jailbreak':
|
|
289
482
|
breakdown.jailbreak += score;
|
|
@@ -309,6 +502,9 @@ export class SecurityScanner {
|
|
|
309
502
|
case 'url':
|
|
310
503
|
breakdown.externalUrls += score;
|
|
311
504
|
break;
|
|
505
|
+
case 'ai_defence':
|
|
506
|
+
breakdown.aiDefence += score;
|
|
507
|
+
break;
|
|
312
508
|
}
|
|
313
509
|
}
|
|
314
510
|
// Cap each category at 100
|
|
@@ -320,24 +516,30 @@ export class SecurityScanner {
|
|
|
320
516
|
breakdown.suspiciousCode = Math.min(100, breakdown.suspiciousCode);
|
|
321
517
|
breakdown.sensitivePaths = Math.min(100, breakdown.sensitivePaths);
|
|
322
518
|
breakdown.externalUrls = Math.min(100, breakdown.externalUrls);
|
|
519
|
+
breakdown.aiDefence = Math.min(100, breakdown.aiDefence); // SMI-1532
|
|
323
520
|
// Calculate total as weighted average, capped at 100
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
breakdown.
|
|
327
|
-
breakdown.
|
|
328
|
-
breakdown.
|
|
329
|
-
breakdown.
|
|
521
|
+
// SMI-1532: Added aiDefence with 0.15 weight (redistributed from others)
|
|
522
|
+
const total = Math.min(100, Math.round(breakdown.jailbreak * 0.22 +
|
|
523
|
+
breakdown.socialEngineering * 0.12 +
|
|
524
|
+
breakdown.promptLeaking * 0.12 +
|
|
525
|
+
breakdown.dataExfiltration * 0.1 +
|
|
526
|
+
breakdown.privilegeEscalation * 0.11 +
|
|
527
|
+
breakdown.suspiciousCode * 0.08 +
|
|
330
528
|
breakdown.sensitivePaths * 0.05 +
|
|
331
|
-
breakdown.externalUrls * 0.05
|
|
529
|
+
breakdown.externalUrls * 0.05 +
|
|
530
|
+
breakdown.aiDefence * 0.15));
|
|
332
531
|
return { total, breakdown };
|
|
333
532
|
}
|
|
334
533
|
/**
|
|
335
534
|
* Perform full security scan
|
|
336
535
|
* SMI-685: Enhanced with new pattern detection and risk scoring
|
|
536
|
+
* SMI-1513: Added markdown context awareness to reduce false positives
|
|
337
537
|
*/
|
|
338
538
|
scan(skillId, content) {
|
|
339
539
|
const startTime = performance.now();
|
|
340
540
|
const findings = [];
|
|
541
|
+
// SMI-1513: Analyze markdown context once for all scans
|
|
542
|
+
const lineContexts = analyzeMarkdownContext(content);
|
|
341
543
|
// Check content length
|
|
342
544
|
if (content.length > this.maxContentLength) {
|
|
343
545
|
findings.push({
|
|
@@ -348,14 +550,16 @@ export class SecurityScanner {
|
|
|
348
550
|
}
|
|
349
551
|
// Run all scans (original)
|
|
350
552
|
findings.push(...this.scanUrls(content));
|
|
351
|
-
findings.push(...this.scanSensitivePaths(content));
|
|
352
|
-
findings.push(...this.scanJailbreakPatterns(content));
|
|
553
|
+
findings.push(...this.scanSensitivePaths(content, lineContexts));
|
|
554
|
+
findings.push(...this.scanJailbreakPatterns(content, lineContexts));
|
|
353
555
|
findings.push(...this.scanSuspiciousPatterns(content));
|
|
354
|
-
// SMI-685: Run new scans
|
|
355
|
-
findings.push(...this.scanSocialEngineering(content));
|
|
356
|
-
findings.push(...this.scanPromptLeaking(content));
|
|
357
|
-
findings.push(...this.scanDataExfiltration(content));
|
|
358
|
-
findings.push(...this.scanPrivilegeEscalation(content));
|
|
556
|
+
// SMI-685: Run new scans with context awareness
|
|
557
|
+
findings.push(...this.scanSocialEngineering(content, lineContexts));
|
|
558
|
+
findings.push(...this.scanPromptLeaking(content, lineContexts));
|
|
559
|
+
findings.push(...this.scanDataExfiltration(content, lineContexts));
|
|
560
|
+
findings.push(...this.scanPrivilegeEscalation(content, lineContexts));
|
|
561
|
+
// SMI-1532: Run AI Defence CVE-hardened scanning
|
|
562
|
+
findings.push(...this.scanAIDefenceVulnerabilities(content, lineContexts));
|
|
359
563
|
const endTime = performance.now();
|
|
360
564
|
// SMI-685: Calculate risk score
|
|
361
565
|
const { total: riskScore, breakdown: riskBreakdown } = this.calculateRiskScore(findings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecurityScanner.js","sourceRoot":"","sources":["../../../../src/security/scanner/SecurityScanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SecurityScanner.js","sourceRoot":"","sources":["../../../../src/security/scanner/SecurityScanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,4 +11,17 @@ export declare const SOCIAL_ENGINEERING_PATTERNS: RegExp[];
|
|
|
11
11
|
export declare const PROMPT_LEAKING_PATTERNS: RegExp[];
|
|
12
12
|
export declare const DATA_EXFILTRATION_PATTERNS: RegExp[];
|
|
13
13
|
export declare const PRIVILEGE_ESCALATION_PATTERNS: RegExp[];
|
|
14
|
+
/**
|
|
15
|
+
* SMI-1532: AIDefence CVE-hardened injection patterns
|
|
16
|
+
* Optimized for sub-10ms scan time with compiled regex and no backtracking
|
|
17
|
+
*
|
|
18
|
+
* These patterns detect sophisticated prompt injection attacks based on
|
|
19
|
+
* known CVEs and security research findings.
|
|
20
|
+
*
|
|
21
|
+
* References:
|
|
22
|
+
* - OWASP LLM Top 10: LLM01 Prompt Injection
|
|
23
|
+
* - Anthropic Responsible Disclosure Program findings
|
|
24
|
+
* - Academic research on prompt injection attacks
|
|
25
|
+
*/
|
|
26
|
+
export declare const AI_DEFENCE_PATTERNS: RegExp[];
|
|
14
27
|
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../src/security/scanner/patterns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,eAAO,MAAM,uBAAuB,UAanC,CAAA;AAGD,eAAO,MAAM,uBAAuB,UAanC,CAAA;AAGD,eAAO,MAAM,kBAAkB,UAa9B,CAAA;AAGD,eAAO,MAAM,mBAAmB,UAY/B,CAAA;AAGD,eAAO,MAAM,2BAA2B,UAavC,CAAA;AAGD,eAAO,MAAM,uBAAuB,UAenC,CAAA;AAGD,eAAO,MAAM,0BAA0B,UAqBtC,CAAA;AAGD,eAAO,MAAM,6BAA6B,UAyBzC,CAAA"}
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../src/security/scanner/patterns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,eAAO,MAAM,uBAAuB,UAanC,CAAA;AAGD,eAAO,MAAM,uBAAuB,UAanC,CAAA;AAGD,eAAO,MAAM,kBAAkB,UAa9B,CAAA;AAGD,eAAO,MAAM,mBAAmB,UAY/B,CAAA;AAGD,eAAO,MAAM,2BAA2B,UAavC,CAAA;AAGD,eAAO,MAAM,uBAAuB,UAenC,CAAA;AAGD,eAAO,MAAM,0BAA0B,UAqBtC,CAAA;AAGD,eAAO,MAAM,6BAA6B,UAyBzC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,UAoD/B,CAAA"}
|
|
@@ -144,4 +144,55 @@ export const PRIVILEGE_ESCALATION_PATTERNS = [
|
|
|
144
144
|
/su\s+-\s+root/i,
|
|
145
145
|
/become\s+root/i,
|
|
146
146
|
];
|
|
147
|
+
/**
|
|
148
|
+
* SMI-1532: AIDefence CVE-hardened injection patterns
|
|
149
|
+
* Optimized for sub-10ms scan time with compiled regex and no backtracking
|
|
150
|
+
*
|
|
151
|
+
* These patterns detect sophisticated prompt injection attacks based on
|
|
152
|
+
* known CVEs and security research findings.
|
|
153
|
+
*
|
|
154
|
+
* References:
|
|
155
|
+
* - OWASP LLM Top 10: LLM01 Prompt Injection
|
|
156
|
+
* - Anthropic Responsible Disclosure Program findings
|
|
157
|
+
* - Academic research on prompt injection attacks
|
|
158
|
+
*/
|
|
159
|
+
export const AI_DEFENCE_PATTERNS = [
|
|
160
|
+
// Role injection patterns - attempts to inject system/assistant/user roles
|
|
161
|
+
// Pattern detects role markers that could manipulate conversation boundaries
|
|
162
|
+
// Covers: start of line, after whitespace, with various delimiters
|
|
163
|
+
/(?:^|\s)(?:system|assistant|user)\s*:\s*(?:\n|$)/i,
|
|
164
|
+
// Hidden instruction brackets - obfuscated commands
|
|
165
|
+
/\[\[\s*[^\]]{1,200}\s*\]\]/,
|
|
166
|
+
// HTML/XML comment injection - hiding malicious instructions
|
|
167
|
+
/<!--[\s\S]{0,100}?(?:ignore|override|bypass|system|instruction)[\s\S]{0,100}?-->/i,
|
|
168
|
+
// Unicode homograph attacks - visually similar characters
|
|
169
|
+
// Detects Cyrillic, Greek, or other homoglyphs mixed with Latin
|
|
170
|
+
/[\u0400-\u04FF\u0370-\u03FF]{2,}[\w\s]+(?:ignore|bypass|instruction)/i,
|
|
171
|
+
// Prompt structure manipulation - XML/markdown injection
|
|
172
|
+
/<\/?(?:system|prompt|instruction|context|message)(?:\s[^>]*)?>/i,
|
|
173
|
+
// Base64 encoded instructions (common evasion technique)
|
|
174
|
+
/(?:base64|b64)\s*[:=]\s*["']?[A-Za-z0-9+/]{20,}={0,2}["']?/i,
|
|
175
|
+
// Delimiter injection - breaking out of prompt boundaries
|
|
176
|
+
/(?:^|\n)(?:---|\*{3}|#{3,})\s*(?:system|prompt|instruction|override)/i,
|
|
177
|
+
// JSON structure injection in prompts
|
|
178
|
+
// SMI-1532: Refined to require suspicious values, not just field names
|
|
179
|
+
// Matches: "role": "system" or "instruction": "ignore" but not "content": "Hello"
|
|
180
|
+
/["']\s*(?:role|system|instruction)\s*["']\s*:\s*["'](?:system|assistant|user|ignore|override|bypass)/i,
|
|
181
|
+
// Nested instruction blocks
|
|
182
|
+
/<instruction[^>]*>[\s\S]{0,500}?<\/instruction>/i,
|
|
183
|
+
// CRLF injection for prompt manipulation
|
|
184
|
+
/(?:\r\n|\r|\n){2,}\s*(?:ignore|forget|override|bypass)\s+(?:all|previous|above)/i,
|
|
185
|
+
// Template literal injection
|
|
186
|
+
/\$\{\s*(?:system|prompt|instruction|config)/i,
|
|
187
|
+
// Zero-width character obfuscation detection
|
|
188
|
+
// SMI-1532: Enhanced to detect single zero-width chars near sensitive keywords
|
|
189
|
+
/[\u200B-\u200F\u2028-\u202F\uFEFF](?:[\s\S]{0,20}(?:ignore|bypass|system|instruction)|[\u200B-\u200F\u2028-\u202F\uFEFF])/i,
|
|
190
|
+
// Markdown link injection with suspicious targets
|
|
191
|
+
/\[(?:click|here|link|url)[^\]]*\]\([^)]*(?:javascript|data|vbscript):/i,
|
|
192
|
+
// Escape sequence abuse
|
|
193
|
+
/\\x[0-9a-fA-F]{2}(?:\\x[0-9a-fA-F]{2}){3,}/,
|
|
194
|
+
// Unicode normalization attacks - combining characters that render differently
|
|
195
|
+
// Detects combining diacritical marks used to obfuscate text
|
|
196
|
+
/[\u0300-\u036F]{2,}/,
|
|
197
|
+
];
|
|
147
198
|
//# sourceMappingURL=patterns.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../src/security/scanner/patterns.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../src/security/scanner/patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,18 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Types of security findings that can be detected
|
|
8
8
|
*/
|
|
9
|
-
export type SecurityFindingType = 'url' | 'sensitive_path' | 'jailbreak' | 'suspicious_pattern' | 'social_engineering' | 'prompt_leaking' | 'data_exfiltration' | 'privilege_escalation';
|
|
9
|
+
export type SecurityFindingType = 'url' | 'sensitive_path' | 'jailbreak' | 'suspicious_pattern' | 'social_engineering' | 'prompt_leaking' | 'data_exfiltration' | 'privilege_escalation' | 'ai_defence';
|
|
10
10
|
/**
|
|
11
11
|
* Severity levels for security findings
|
|
12
12
|
*/
|
|
13
13
|
export type SecuritySeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
14
|
+
/**
|
|
15
|
+
* Confidence level for a finding
|
|
16
|
+
* - high: Strong indicator of malicious intent
|
|
17
|
+
* - medium: Possible issue, context suggests caution
|
|
18
|
+
* - low: Likely false positive (e.g., in documentation/examples)
|
|
19
|
+
*/
|
|
20
|
+
export type FindingConfidence = 'high' | 'medium' | 'low';
|
|
14
21
|
/**
|
|
15
22
|
* Individual security finding from a scan
|
|
16
23
|
*/
|
|
@@ -22,6 +29,10 @@ export interface SecurityFinding {
|
|
|
22
29
|
lineNumber?: number;
|
|
23
30
|
/** Category for grouping related findings */
|
|
24
31
|
category?: string;
|
|
32
|
+
/** Whether finding is in a documentation context (code block, table, example) */
|
|
33
|
+
inDocumentationContext?: boolean;
|
|
34
|
+
/** Confidence level - lower for findings in documentation context */
|
|
35
|
+
confidence?: FindingConfidence;
|
|
25
36
|
}
|
|
26
37
|
/**
|
|
27
38
|
* Risk score breakdown by category
|
|
@@ -35,6 +46,7 @@ export interface RiskScoreBreakdown {
|
|
|
35
46
|
suspiciousCode: number;
|
|
36
47
|
sensitivePaths: number;
|
|
37
48
|
externalUrls: number;
|
|
49
|
+
aiDefence: number;
|
|
38
50
|
}
|
|
39
51
|
/**
|
|
40
52
|
* Comprehensive scan report with risk scoring
|