@bryan-thompson/inspector-assessment 1.26.2 → 1.26.4

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.
Files changed (28) hide show
  1. package/cli/package.json +2 -2
  2. package/client/dist/assets/{OAuthCallback-SCHNovei.js → OAuthCallback-DRmaIku9.js} +1 -1
  3. package/client/dist/assets/{OAuthDebugCallback-HE-0Fvvk.js → OAuthDebugCallback-BU8UZdx8.js} +1 -1
  4. package/client/dist/assets/{index-Cdl4SWmV.js → index-Dd4pL57l.js} +439 -368
  5. package/client/dist/index.html +1 -1
  6. package/client/lib/lib/assessment/extendedTypes.d.ts +2 -1
  7. package/client/lib/lib/assessment/extendedTypes.d.ts.map +1 -1
  8. package/client/lib/lib/assessment/resultTypes.d.ts +9 -0
  9. package/client/lib/lib/assessment/resultTypes.d.ts.map +1 -1
  10. package/client/lib/lib/securityPatterns.d.ts +2 -1
  11. package/client/lib/lib/securityPatterns.d.ts.map +1 -1
  12. package/client/lib/lib/securityPatterns.js +83 -1
  13. package/client/lib/services/assessment/AssessmentOrchestrator.d.ts +1 -0
  14. package/client/lib/services/assessment/AssessmentOrchestrator.d.ts.map +1 -1
  15. package/client/lib/services/assessment/AssessmentOrchestrator.js +26 -0
  16. package/client/lib/services/assessment/modules/AuthenticationAssessor.d.ts.map +1 -1
  17. package/client/lib/services/assessment/modules/AuthenticationAssessor.js +94 -0
  18. package/client/lib/services/assessment/modules/SecurityAssessor.d.ts +5 -0
  19. package/client/lib/services/assessment/modules/SecurityAssessor.d.ts.map +1 -1
  20. package/client/lib/services/assessment/modules/SecurityAssessor.js +42 -0
  21. package/client/lib/services/assessment/modules/securityTests/SecurityPayloadTester.d.ts.map +1 -1
  22. package/client/lib/services/assessment/modules/securityTests/SecurityPayloadTester.js +12 -0
  23. package/client/lib/services/assessment/modules/securityTests/SecurityResponseAnalyzer.d.ts +17 -0
  24. package/client/lib/services/assessment/modules/securityTests/SecurityResponseAnalyzer.d.ts.map +1 -1
  25. package/client/lib/services/assessment/modules/securityTests/SecurityResponseAnalyzer.js +90 -0
  26. package/client/package.json +2 -2
  27. package/package.json +1 -1
  28. package/server/package.json +2 -2
@@ -175,12 +175,15 @@ export class SecurityAssessor extends BaseAssessor {
175
175
  const status = this.determineSecurityStatus(validTests, vulnerabilities.length, validTests.length, connectionErrors.length);
176
176
  // Generate explanation (pass both validTests and connectionErrors)
177
177
  const explanation = this.generateSecurityExplanation(validTests, connectionErrors, vulnerabilities, overallRiskLevel);
178
+ // Issue #75: Aggregate auth bypass detection results
179
+ const authBypassSummary = this.aggregateAuthBypassResults(allTests);
178
180
  return {
179
181
  promptInjectionTests: allTests,
180
182
  vulnerabilities,
181
183
  overallRiskLevel,
182
184
  status,
183
185
  explanation,
186
+ authBypassSummary,
184
187
  };
185
188
  }
186
189
  /**
@@ -308,4 +311,43 @@ export class SecurityAssessor extends BaseAssessor {
308
311
  `Flagged ${lowConfidenceCount} uncertain detection${lowConfidenceCount !== 1 ? "s" : ""} across ${testCount} security tests. Manual verification needed to confirm if these are actual vulnerabilities or false positives.`);
309
312
  }
310
313
  }
314
+ /**
315
+ * Aggregate auth bypass detection results from security tests (Issue #75)
316
+ * Summarizes fail-open/fail-closed patterns across all tested tools
317
+ */
318
+ aggregateAuthBypassResults(tests) {
319
+ const toolsWithAuthBypass = [];
320
+ let failOpenCount = 0;
321
+ let failClosedCount = 0;
322
+ let unknownCount = 0;
323
+ // Filter to Auth Bypass tests only
324
+ const authBypassTests = tests.filter((t) => t.testName === "Auth Bypass" && t.authFailureMode);
325
+ // Track unique tools with auth bypass detected
326
+ const seenTools = new Set();
327
+ for (const test of authBypassTests) {
328
+ const toolName = test.toolName || "unknown";
329
+ if (test.authBypassDetected && !seenTools.has(toolName)) {
330
+ toolsWithAuthBypass.push(toolName);
331
+ seenTools.add(toolName);
332
+ }
333
+ // Count failure modes
334
+ switch (test.authFailureMode) {
335
+ case "FAIL_OPEN":
336
+ failOpenCount++;
337
+ break;
338
+ case "FAIL_CLOSED":
339
+ failClosedCount++;
340
+ break;
341
+ case "UNKNOWN":
342
+ unknownCount++;
343
+ break;
344
+ }
345
+ }
346
+ return {
347
+ toolsWithAuthBypass,
348
+ failOpenCount,
349
+ failClosedCount,
350
+ unknownCount,
351
+ };
352
+ }
311
353
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SecurityPayloadTester.d.ts","sourceRoot":"","sources":["../../../../../src/services/assessment/modules/securityTests/SecurityPayloadTester.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAGjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,2BAA2B,EAC3B,IAAI,EACL,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAGL,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAOhC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAO9B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,kBAAkB;IAR5B,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,SAAS,CAAK;gBAGZ,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,UAAU,EAClB,kBAAkB,EAAE,CAAC,CAAC,EAC5B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,CAAC,CAAC;IAOjB;;;OAGG;IACG,yBAAyB,CAC7B,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,EACzC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA2JhC;;;OAGG;IACG,qBAAqB,CACzB,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,EACzC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA8IhC;;OAEG;IACG,WAAW,CACf,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,GACxC,OAAO,CAAC,kBAAkB,CAAC;IAuI9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
1
+ {"version":3,"file":"SecurityPayloadTester.d.ts","sourceRoot":"","sources":["../../../../../src/services/assessment/modules/securityTests/SecurityPayloadTester.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAGjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,2BAA2B,EAC3B,IAAI,EACL,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAGL,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAOhC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAO9B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,kBAAkB;IAR5B,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,SAAS,CAAK;gBAGZ,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,UAAU,EAClB,kBAAkB,EAAE,CAAC,CAAC,EAC5B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,CAAC,CAAC;IAOjB;;;OAGG;IACG,yBAAyB,CAC7B,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,EACzC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA2JhC;;;OAGG;IACG,qBAAqB,CACzB,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,EACzC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA8IhC;;OAEG;IACG,WAAW,CACf,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,GACxC,OAAO,CAAC,kBAAkB,CAAC;IAyJ9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
@@ -309,6 +309,16 @@ export class SecurityPayloadTester {
309
309
  const combinedSanitization = this.sanitizationDetector.mergeResults(toolSanitization, responseSanitization);
310
310
  // Calculate confidence with sanitization awareness
311
311
  const confidenceResult = this.responseAnalyzer.calculateConfidence(tool, isVulnerable, evidence || "", responseText, payload, combinedSanitization);
312
+ // Issue #75: Analyze auth bypass patterns for "Auth Bypass" attack type
313
+ let authBypassFields = {};
314
+ if (attackName === "Auth Bypass") {
315
+ const authResult = this.responseAnalyzer.analyzeAuthBypassResponse(response);
316
+ authBypassFields = {
317
+ authBypassDetected: authResult.detected,
318
+ authFailureMode: authResult.failureMode,
319
+ authBypassEvidence: authResult.evidence,
320
+ };
321
+ }
312
322
  return {
313
323
  testName: attackName,
314
324
  description: payload.description,
@@ -321,6 +331,8 @@ export class SecurityPayloadTester {
321
331
  // Issue #56: Include sanitization info for transparency
322
332
  sanitizationDetected: combinedSanitization.detected,
323
333
  sanitizationLibraries: combinedSanitization.libraries,
334
+ // Issue #75: Auth bypass detection fields
335
+ ...authBypassFields,
324
336
  ...confidenceResult,
325
337
  };
326
338
  }
@@ -32,6 +32,15 @@ export interface MathResultAnalysis {
32
32
  confidence: "high" | "medium" | "low";
33
33
  reason?: string;
34
34
  }
35
+ /**
36
+ * Result of auth bypass response analysis (Issue #75)
37
+ * Detects fail-open authentication vulnerabilities (CVE-2025-52882)
38
+ */
39
+ export interface AuthBypassResult {
40
+ detected: boolean;
41
+ failureMode: "FAIL_OPEN" | "FAIL_CLOSED" | "UNKNOWN";
42
+ evidence?: string;
43
+ }
35
44
  /**
36
45
  * Error classification types
37
46
  */
@@ -162,6 +171,14 @@ export declare class SecurityResponseAnalyzer {
162
171
  * Check if response is returning search results
163
172
  */
164
173
  isSearchResultResponse(responseText: string): boolean;
174
+ /**
175
+ * Analyze response for auth bypass patterns (Issue #75)
176
+ * Detects fail-open authentication vulnerabilities (CVE-2025-52882)
177
+ *
178
+ * @param response The tool response to analyze
179
+ * @returns AuthBypassResult with detection status and failure mode classification
180
+ */
181
+ analyzeAuthBypassResponse(response: CompatibilityCallToolResult): AuthBypassResult;
165
182
  /**
166
183
  * Check if response is from a creation/modification operation
167
184
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SecurityResponseAnalyzer.d.ts","sourceRoot":"","sources":["../../../../../src/services/assessment/modules/securityTests/SecurityResponseAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SecurityResponseAnalyzer.d.ts","sourceRoot":"","sources":["../../../../../src/services/assessment/modules/securityTests/SecurityResponseAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -1148,6 +1148,96 @@ export class SecurityResponseAnalyzer {
1148
1148
  ];
1149
1149
  return searchResultPatterns.some((pattern) => pattern.test(responseText));
1150
1150
  }
1151
+ /**
1152
+ * Analyze response for auth bypass patterns (Issue #75)
1153
+ * Detects fail-open authentication vulnerabilities (CVE-2025-52882)
1154
+ *
1155
+ * @param response The tool response to analyze
1156
+ * @returns AuthBypassResult with detection status and failure mode classification
1157
+ */
1158
+ analyzeAuthBypassResponse(response) {
1159
+ const responseText = this.extractResponseContent(response);
1160
+ // Fail-open indicators (VULNERABLE - CVE-2025-52882 pattern)
1161
+ const failOpenPatterns = [
1162
+ {
1163
+ pattern: /"auth_status"\s*:\s*"bypassed"/i,
1164
+ evidence: "auth_status: bypassed",
1165
+ },
1166
+ {
1167
+ pattern: /access.*granted.*despite/i,
1168
+ evidence: "access granted despite failure",
1169
+ },
1170
+ {
1171
+ pattern: /authentication.*skipped/i,
1172
+ evidence: "authentication skipped",
1173
+ },
1174
+ { pattern: /fail[\s-]?open/i, evidence: "fail-open pattern detected" },
1175
+ { pattern: /bypassed.*auth/i, evidence: "auth bypassed" },
1176
+ {
1177
+ pattern: /authentication.*bypassed/i,
1178
+ evidence: "authentication bypassed",
1179
+ },
1180
+ {
1181
+ pattern: /"vulnerable"\s*:\s*true/i,
1182
+ evidence: "vulnerable: true flag",
1183
+ },
1184
+ {
1185
+ pattern: /auth.*succeeded.*null/i,
1186
+ evidence: "auth succeeded with null token",
1187
+ },
1188
+ {
1189
+ pattern: /granted.*without.*valid/i,
1190
+ evidence: "granted without valid token",
1191
+ },
1192
+ {
1193
+ pattern: /"action_performed"/i,
1194
+ evidence: "action performed indicator",
1195
+ },
1196
+ ];
1197
+ // Fail-closed indicators (SAFE - proper auth handling)
1198
+ const failClosedPatterns = [
1199
+ {
1200
+ pattern: /"auth_status"\s*:\s*"denied"/i,
1201
+ evidence: "auth_status: denied",
1202
+ },
1203
+ { pattern: /access.*denied/i, evidence: "access denied" },
1204
+ { pattern: /authentication.*failed/i, evidence: "authentication failed" },
1205
+ {
1206
+ pattern: /fail[\s-]?closed/i,
1207
+ evidence: "fail-closed pattern detected",
1208
+ },
1209
+ { pattern: /"status"\s*:\s*"blocked"/i, evidence: "status: blocked" },
1210
+ {
1211
+ pattern: /invalid.*token/i,
1212
+ evidence: "invalid token rejection",
1213
+ },
1214
+ {
1215
+ pattern: /token.*required/i,
1216
+ evidence: "token required",
1217
+ },
1218
+ {
1219
+ pattern: /unauthorized/i,
1220
+ evidence: "unauthorized response",
1221
+ },
1222
+ {
1223
+ pattern: /"denial_reason"/i,
1224
+ evidence: "denial reason provided",
1225
+ },
1226
+ ];
1227
+ // Check for fail-open (vulnerable) patterns first
1228
+ for (const { pattern, evidence } of failOpenPatterns) {
1229
+ if (pattern.test(responseText)) {
1230
+ return { detected: true, failureMode: "FAIL_OPEN", evidence };
1231
+ }
1232
+ }
1233
+ // Check for fail-closed (safe) patterns
1234
+ for (const { pattern, evidence } of failClosedPatterns) {
1235
+ if (pattern.test(responseText)) {
1236
+ return { detected: false, failureMode: "FAIL_CLOSED", evidence };
1237
+ }
1238
+ }
1239
+ return { detected: false, failureMode: "UNKNOWN" };
1240
+ }
1151
1241
  /**
1152
1242
  * Check if response is from a creation/modification operation
1153
1243
  */
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bryan-thompson/inspector-assessment-client",
3
- "version": "1.26.2",
3
+ "version": "1.26.4",
4
4
  "description": "Client-side application for the Enhanced MCP Inspector with assessment capabilities",
5
5
  "license": "MIT",
6
6
  "author": "Bryan Thompson <bryan@triepod.ai>",
@@ -46,7 +46,7 @@
46
46
  "cleanup:e2e": "node e2e/global-teardown.js"
47
47
  },
48
48
  "dependencies": {
49
- "@modelcontextprotocol/sdk": "^1.24.3",
49
+ "@modelcontextprotocol/sdk": "^1.25.2",
50
50
  "@radix-ui/react-checkbox": "^1.1.4",
51
51
  "@radix-ui/react-dialog": "^1.1.3",
52
52
  "@radix-ui/react-icons": "^1.3.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bryan-thompson/inspector-assessment",
3
- "version": "1.26.2",
3
+ "version": "1.26.4",
4
4
  "description": "Enhanced MCP Inspector with comprehensive assessment capabilities for server validation",
5
5
  "license": "MIT",
6
6
  "author": "Bryan Thompson <bryan@triepod.ai>",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bryan-thompson/inspector-assessment-server",
3
- "version": "1.26.2",
3
+ "version": "1.26.4",
4
4
  "description": "Server-side application for the Enhanced MCP Inspector with assessment capabilities",
5
5
  "license": "MIT",
6
6
  "author": "Bryan Thompson <bryan@triepod.ai>",
@@ -44,7 +44,7 @@
44
44
  "typescript": "^5.6.2"
45
45
  },
46
46
  "dependencies": {
47
- "@modelcontextprotocol/sdk": "^1.24.3",
47
+ "@modelcontextprotocol/sdk": "^1.25.2",
48
48
  "cors": "^2.8.5",
49
49
  "express": "^5.1.0",
50
50
  "express-rate-limit": "^8.2.1",