@bryan-thompson/inspector-assessment 1.19.0 → 1.19.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/client/dist/assets/{OAuthCallback-D_dKq_wM.js → OAuthCallback-BH_aUBF0.js} +1 -1
- package/client/dist/assets/{OAuthDebugCallback-UqARwe_4.js → OAuthDebugCallback-hhATDmh0.js} +1 -1
- package/client/dist/assets/{index-B5_VY0TC.js → index-O3f3KjpP.js} +58 -17
- package/client/dist/index.html +1 -1
- package/client/lib/services/assessment/modules/SecurityAssessor.d.ts +8 -0
- package/client/lib/services/assessment/modules/SecurityAssessor.d.ts.map +1 -1
- package/client/lib/services/assessment/modules/SecurityAssessor.js +48 -8
- package/client/lib/services/assessment/modules/ToolAnnotationAssessor.d.ts.map +1 -1
- package/client/lib/services/assessment/modules/ToolAnnotationAssessor.js +3 -1
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { u as useToast, r as reactExports, j as jsxRuntimeExports, p as parseOAuthCallbackParams, g as generateOAuthErrorDescription, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-
|
|
1
|
+
import { u as useToast, r as reactExports, j as jsxRuntimeExports, p as parseOAuthCallbackParams, g as generateOAuthErrorDescription, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-O3f3KjpP.js";
|
|
2
2
|
const OAuthCallback = ({ onConnect }) => {
|
|
3
3
|
const { toast } = useToast();
|
|
4
4
|
const hasProcessedRef = reactExports.useRef(false);
|
package/client/dist/assets/{OAuthDebugCallback-UqARwe_4.js → OAuthDebugCallback-hhATDmh0.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-
|
|
1
|
+
import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-O3f3KjpP.js";
|
|
2
2
|
const OAuthDebugCallback = ({ onConnect }) => {
|
|
3
3
|
reactExports.useEffect(() => {
|
|
4
4
|
let isProcessed = false;
|
|
@@ -16320,7 +16320,7 @@ object({
|
|
|
16320
16320
|
token_type_hint: string().optional()
|
|
16321
16321
|
}).strip();
|
|
16322
16322
|
const name = "@bryan-thompson/inspector-assessment-client";
|
|
16323
|
-
const version$1 = "1.19.
|
|
16323
|
+
const version$1 = "1.19.2";
|
|
16324
16324
|
const packageJson = {
|
|
16325
16325
|
name,
|
|
16326
16326
|
version: version$1
|
|
@@ -45337,7 +45337,7 @@ const useTheme = () => {
|
|
|
45337
45337
|
[theme, setThemeWithSideEffect]
|
|
45338
45338
|
);
|
|
45339
45339
|
};
|
|
45340
|
-
const version = "1.19.
|
|
45340
|
+
const version = "1.19.2";
|
|
45341
45341
|
var [createTooltipContext] = createContextScope("Tooltip", [
|
|
45342
45342
|
createPopperScope
|
|
45343
45343
|
]);
|
|
@@ -53110,11 +53110,7 @@ class SecurityAssessor extends BaseAssessor {
|
|
|
53110
53110
|
/gateway timeout/i,
|
|
53111
53111
|
// HTTP 504 (gateway timeout)
|
|
53112
53112
|
/unknown tool:/i,
|
|
53113
|
-
//
|
|
53114
|
-
/tool.*not found/i,
|
|
53115
|
-
// Alternative phrasing for missing tool
|
|
53116
|
-
/tool.*does not exist/i,
|
|
53117
|
-
// Alternative phrasing for missing tool
|
|
53113
|
+
// MCP spec format: "Unknown tool: <name>"
|
|
53118
53114
|
/no such tool/i
|
|
53119
53115
|
// Alternative phrasing for missing tool
|
|
53120
53116
|
];
|
|
@@ -53182,11 +53178,7 @@ class SecurityAssessor extends BaseAssessor {
|
|
|
53182
53178
|
/gateway timeout/i,
|
|
53183
53179
|
// HTTP 504 (gateway timeout)
|
|
53184
53180
|
/unknown tool:/i,
|
|
53185
|
-
//
|
|
53186
|
-
/tool.*not found/i,
|
|
53187
|
-
// Alternative phrasing for missing tool
|
|
53188
|
-
/tool.*does not exist/i,
|
|
53189
|
-
// Alternative phrasing for missing tool
|
|
53181
|
+
// MCP spec format: "Unknown tool: <name>"
|
|
53190
53182
|
/no such tool/i
|
|
53191
53183
|
// Alternative phrasing for missing tool
|
|
53192
53184
|
];
|
|
@@ -53840,8 +53832,12 @@ class SecurityAssessor extends BaseAssessor {
|
|
|
53840
53832
|
*
|
|
53841
53833
|
* HIGH confidence: System files, commands, directory listings
|
|
53842
53834
|
* MEDIUM confidence: Contextual patterns (root alone, paths)
|
|
53835
|
+
*
|
|
53836
|
+
* IMPORTANT: Excludes patterns that appear within echoed injection payloads
|
|
53837
|
+
* (e.g., /etc/passwd within an XXE entity definition is NOT execution evidence)
|
|
53843
53838
|
*/
|
|
53844
53839
|
detectExecutionArtifacts(responseText) {
|
|
53840
|
+
const containsEchoedPayload = this.containsEchoedInjectionPayload(responseText);
|
|
53845
53841
|
const executionIndicators = [
|
|
53846
53842
|
// HIGH CONFIDENCE - System files (requires format)
|
|
53847
53843
|
/[a-z]+:x:\d+:\d+:/i,
|
|
@@ -53868,13 +53864,58 @@ class SecurityAssessor extends BaseAssessor {
|
|
|
53868
53864
|
// "root" alone on line (whoami)
|
|
53869
53865
|
/\/root\//i,
|
|
53870
53866
|
// Path: "/root/"
|
|
53871
|
-
/\/etc\/passwd/i,
|
|
53872
|
-
// Sensitive file
|
|
53873
53867
|
// MEDIUM CONFIDENCE - Process info
|
|
53874
53868
|
/PID:\s*\d{3,}/i
|
|
53875
53869
|
// Process ID
|
|
53876
53870
|
];
|
|
53877
|
-
|
|
53871
|
+
const contextSensitiveIndicators = [
|
|
53872
|
+
/\/etc\/passwd/i,
|
|
53873
|
+
// Sensitive file - appears in XXE payloads
|
|
53874
|
+
/\/etc\/shadow/i,
|
|
53875
|
+
// Sensitive file - appears in XXE payloads
|
|
53876
|
+
/file:\/\/\//i
|
|
53877
|
+
// File protocol - appears in XXE/SSRF payloads
|
|
53878
|
+
];
|
|
53879
|
+
if (executionIndicators.some((pattern2) => pattern2.test(responseText))) {
|
|
53880
|
+
return true;
|
|
53881
|
+
}
|
|
53882
|
+
if (!containsEchoedPayload) {
|
|
53883
|
+
if (contextSensitiveIndicators.some((pattern2) => pattern2.test(responseText))) {
|
|
53884
|
+
return true;
|
|
53885
|
+
}
|
|
53886
|
+
}
|
|
53887
|
+
return false;
|
|
53888
|
+
}
|
|
53889
|
+
/**
|
|
53890
|
+
* Check if response contains echoed injection payload patterns
|
|
53891
|
+
* These indicate the tool is safely echoing/storing input rather than executing it
|
|
53892
|
+
*/
|
|
53893
|
+
containsEchoedInjectionPayload(responseText) {
|
|
53894
|
+
const echoedPayloadPatterns = [
|
|
53895
|
+
// XXE payload markers (echoed XML entity definitions)
|
|
53896
|
+
/<!DOCTYPE\s+\w+\s+\[/i,
|
|
53897
|
+
// DOCTYPE with internal subset
|
|
53898
|
+
/<!ENTITY\s+\w+\s+SYSTEM/i,
|
|
53899
|
+
// External entity definition
|
|
53900
|
+
/<!ENTITY\s+%\s*\w+/i,
|
|
53901
|
+
// Parameter entity
|
|
53902
|
+
// SSRF/URL payload markers (echoed in storage context)
|
|
53903
|
+
/stored.*http:\/\//i,
|
|
53904
|
+
// "Stored query: http://..."
|
|
53905
|
+
/saved.*http:\/\//i,
|
|
53906
|
+
// "Saved: http://..."
|
|
53907
|
+
// SQL injection payload markers (echoed)
|
|
53908
|
+
/stored.*union\s+select/i,
|
|
53909
|
+
// "Stored query: UNION SELECT..."
|
|
53910
|
+
/stored.*drop\s+table/i,
|
|
53911
|
+
// "Stored query: DROP TABLE..."
|
|
53912
|
+
// Common echo/storage patterns with payload content
|
|
53913
|
+
/stored\s+query:\s*[<'"]/i,
|
|
53914
|
+
// "Stored query: <xml..." or "Stored query: '..."
|
|
53915
|
+
/saved\s+data:\s*[<'"]/i
|
|
53916
|
+
// "Saved data: <xml..."
|
|
53917
|
+
];
|
|
53918
|
+
return echoedPayloadPatterns.some((pattern2) => pattern2.test(responseText));
|
|
53878
53919
|
}
|
|
53879
53920
|
/**
|
|
53880
53921
|
* Analyze injection response (existing logic)
|
|
@@ -59061,13 +59102,13 @@ const App = () => {
|
|
|
59061
59102
|
) });
|
|
59062
59103
|
if (window.location.pathname === "/oauth/callback") {
|
|
59063
59104
|
const OAuthCallback = React.lazy(
|
|
59064
|
-
() => __vitePreload(() => import("./OAuthCallback-
|
|
59105
|
+
() => __vitePreload(() => import("./OAuthCallback-BH_aUBF0.js"), true ? [] : void 0)
|
|
59065
59106
|
);
|
|
59066
59107
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthCallback, { onConnect: onOAuthConnect }) });
|
|
59067
59108
|
}
|
|
59068
59109
|
if (window.location.pathname === "/oauth/callback/debug") {
|
|
59069
59110
|
const OAuthDebugCallback = React.lazy(
|
|
59070
|
-
() => __vitePreload(() => import("./OAuthDebugCallback-
|
|
59111
|
+
() => __vitePreload(() => import("./OAuthDebugCallback-hhATDmh0.js"), true ? [] : void 0)
|
|
59071
59112
|
);
|
|
59072
59113
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthDebugCallback, { onConnect: onOAuthDebugConnect }) });
|
|
59073
59114
|
}
|
package/client/dist/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/mcp.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>MCP Inspector</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-O3f3KjpP.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-32-uLPhe.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
@@ -142,8 +142,16 @@ export declare class SecurityAssessor extends BaseAssessor {
|
|
|
142
142
|
*
|
|
143
143
|
* HIGH confidence: System files, commands, directory listings
|
|
144
144
|
* MEDIUM confidence: Contextual patterns (root alone, paths)
|
|
145
|
+
*
|
|
146
|
+
* IMPORTANT: Excludes patterns that appear within echoed injection payloads
|
|
147
|
+
* (e.g., /etc/passwd within an XXE entity definition is NOT execution evidence)
|
|
145
148
|
*/
|
|
146
149
|
private detectExecutionArtifacts;
|
|
150
|
+
/**
|
|
151
|
+
* Check if response contains echoed injection payload patterns
|
|
152
|
+
* These indicate the tool is safely echoing/storing input rather than executing it
|
|
153
|
+
*/
|
|
154
|
+
private containsEchoedInjectionPayload;
|
|
147
155
|
/**
|
|
148
156
|
* Analyze injection response (existing logic)
|
|
149
157
|
* Note: payload parameter unused after refactoring to two-layer defense
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecurityAssessor.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/modules/SecurityAssessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,kBAAkB,EAInB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAc9D,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,iBAAiB,CAAuC;IAC1D,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuFrE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;;;OAIG;YACW,yBAAyB;IAuKvC;;;;OAIG;YACW,qBAAqB;IA2JnC;;OAEG;YACW,WAAW;IA2HzB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"SecurityAssessor.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/modules/SecurityAssessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,kBAAkB,EAInB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAc9D,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,iBAAiB,CAAuC;IAC1D,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuFrE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;;;OAIG;YACW,yBAAyB;IAuKvC;;;;OAIG;YACW,qBAAqB;IA2JnC;;OAEG;YACW,WAAW;IA2HzB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAgDzB;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAiDtC;;OAEG;IACH,OAAO,CAAC,aAAa;IA+BrB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAgClC;;;OAGG;IACH,OAAO,CAAC,eAAe;IA6HvB;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAiE7B;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAqC5B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;OAEG;YACW,+BAA+B;IAiC7C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAkEnC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAuI3B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oBAAoB;IAuM5B;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IAwDhC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAuBtC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA8BhC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;IAoH5B;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;;OAGG;IACH,OAAO,CAAC,eAAe;IASvB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAmB3B"}
|
|
@@ -460,9 +460,7 @@ export class SecurityAssessor extends BaseAssessor {
|
|
|
460
460
|
/error GETting.*endpoint/i, // Transport layer GET errors (requires 'endpoint' to avoid false positives)
|
|
461
461
|
/service unavailable/i, // HTTP 503 (server down)
|
|
462
462
|
/gateway timeout/i, // HTTP 504 (gateway timeout)
|
|
463
|
-
/unknown tool:/i, //
|
|
464
|
-
/tool.*not found/i, // Alternative phrasing for missing tool
|
|
465
|
-
/tool.*does not exist/i, // Alternative phrasing for missing tool
|
|
463
|
+
/unknown tool:/i, // MCP spec format: "Unknown tool: <name>"
|
|
466
464
|
/no such tool/i, // Alternative phrasing for missing tool
|
|
467
465
|
];
|
|
468
466
|
// Check unambiguous patterns first
|
|
@@ -510,9 +508,7 @@ export class SecurityAssessor extends BaseAssessor {
|
|
|
510
508
|
/error GETting/i, // Transport layer GET errors
|
|
511
509
|
/service unavailable/i, // HTTP 503 (server down)
|
|
512
510
|
/gateway timeout/i, // HTTP 504 (gateway timeout)
|
|
513
|
-
/unknown tool:/i, //
|
|
514
|
-
/tool.*not found/i, // Alternative phrasing for missing tool
|
|
515
|
-
/tool.*does not exist/i, // Alternative phrasing for missing tool
|
|
511
|
+
/unknown tool:/i, // MCP spec format: "Unknown tool: <name>"
|
|
516
512
|
/no such tool/i, // Alternative phrasing for missing tool
|
|
517
513
|
];
|
|
518
514
|
// Check unambiguous patterns first
|
|
@@ -1259,8 +1255,14 @@ export class SecurityAssessor extends BaseAssessor {
|
|
|
1259
1255
|
*
|
|
1260
1256
|
* HIGH confidence: System files, commands, directory listings
|
|
1261
1257
|
* MEDIUM confidence: Contextual patterns (root alone, paths)
|
|
1258
|
+
*
|
|
1259
|
+
* IMPORTANT: Excludes patterns that appear within echoed injection payloads
|
|
1260
|
+
* (e.g., /etc/passwd within an XXE entity definition is NOT execution evidence)
|
|
1262
1261
|
*/
|
|
1263
1262
|
detectExecutionArtifacts(responseText) {
|
|
1263
|
+
// First, check if this response contains echoed injection payload patterns
|
|
1264
|
+
// If so, we need to be more careful about what we consider "execution evidence"
|
|
1265
|
+
const containsEchoedPayload = this.containsEchoedInjectionPayload(responseText);
|
|
1264
1266
|
const executionIndicators = [
|
|
1265
1267
|
// HIGH CONFIDENCE - System files (requires format)
|
|
1266
1268
|
/[a-z]+:x:\d+:\d+:/i, // passwd: "root:x:0:0:"
|
|
@@ -1277,11 +1279,49 @@ export class SecurityAssessor extends BaseAssessor {
|
|
|
1277
1279
|
// MEDIUM CONFIDENCE - System identity (contextual only)
|
|
1278
1280
|
/\b(root|administrator)\s*$/im, // "root" alone on line (whoami)
|
|
1279
1281
|
/\/root\//i, // Path: "/root/"
|
|
1280
|
-
/\/etc\/passwd/i, // Sensitive file
|
|
1281
1282
|
// MEDIUM CONFIDENCE - Process info
|
|
1282
1283
|
/PID:\s*\d{3,}/i, // Process ID
|
|
1283
1284
|
];
|
|
1284
|
-
|
|
1285
|
+
// Patterns that indicate execution ONLY if NOT in an echoed payload context
|
|
1286
|
+
// These patterns can appear in injection payloads (XXE, SSRF, etc.)
|
|
1287
|
+
const contextSensitiveIndicators = [
|
|
1288
|
+
/\/etc\/passwd/i, // Sensitive file - appears in XXE payloads
|
|
1289
|
+
/\/etc\/shadow/i, // Sensitive file - appears in XXE payloads
|
|
1290
|
+
/file:\/\/\//i, // File protocol - appears in XXE/SSRF payloads
|
|
1291
|
+
];
|
|
1292
|
+
// Check high-confidence indicators first (always count as execution)
|
|
1293
|
+
if (executionIndicators.some((pattern) => pattern.test(responseText))) {
|
|
1294
|
+
return true;
|
|
1295
|
+
}
|
|
1296
|
+
// Check context-sensitive indicators only if NOT in echoed payload context
|
|
1297
|
+
if (!containsEchoedPayload) {
|
|
1298
|
+
if (contextSensitiveIndicators.some((pattern) => pattern.test(responseText))) {
|
|
1299
|
+
return true;
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
return false;
|
|
1303
|
+
}
|
|
1304
|
+
/**
|
|
1305
|
+
* Check if response contains echoed injection payload patterns
|
|
1306
|
+
* These indicate the tool is safely echoing/storing input rather than executing it
|
|
1307
|
+
*/
|
|
1308
|
+
containsEchoedInjectionPayload(responseText) {
|
|
1309
|
+
const echoedPayloadPatterns = [
|
|
1310
|
+
// XXE payload markers (echoed XML entity definitions)
|
|
1311
|
+
/<!DOCTYPE\s+\w+\s+\[/i, // DOCTYPE with internal subset
|
|
1312
|
+
/<!ENTITY\s+\w+\s+SYSTEM/i, // External entity definition
|
|
1313
|
+
/<!ENTITY\s+%\s*\w+/i, // Parameter entity
|
|
1314
|
+
// SSRF/URL payload markers (echoed in storage context)
|
|
1315
|
+
/stored.*http:\/\//i, // "Stored query: http://..."
|
|
1316
|
+
/saved.*http:\/\//i, // "Saved: http://..."
|
|
1317
|
+
// SQL injection payload markers (echoed)
|
|
1318
|
+
/stored.*union\s+select/i, // "Stored query: UNION SELECT..."
|
|
1319
|
+
/stored.*drop\s+table/i, // "Stored query: DROP TABLE..."
|
|
1320
|
+
// Common echo/storage patterns with payload content
|
|
1321
|
+
/stored\s+query:\s*[<'"]/i, // "Stored query: <xml..." or "Stored query: '..."
|
|
1322
|
+
/saved\s+data:\s*[<'"]/i, // "Saved data: <xml..."
|
|
1323
|
+
];
|
|
1324
|
+
return echoedPayloadPatterns.some((pattern) => pattern.test(responseText));
|
|
1285
1325
|
}
|
|
1286
1326
|
/**
|
|
1287
1327
|
* Analyze injection response (existing logic)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolAnnotationAssessor.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/modules/ToolAnnotationAssessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EAKpB,uBAAuB,EAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolAnnotationAssessor.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/modules/ToolAnnotationAssessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EAKpB,uBAAuB,EAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,8BAA8B,CAAC;AAmNtC;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACxE,eAAe,CAAC,EAAE;QAChB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE;YACpB,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;SAC1B,CAAC;QACF,oBAAoB,EAAE,OAAO,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;KAC7C,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gCAAiC,SAAQ,wBAAwB;IAChF,WAAW,EAAE,4BAA4B,EAAE,CAAC;IAC5C,cAAc,EAAE,OAAO,CAAC;IACxB,2BAA2B,EAAE,4BAA4B,EAAE,CAAC;CAC7D;AAKD,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,MAAM,EAAE,uBAAuB;IAM3C;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAK7C;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAK/C;;OAEG;IACH,eAAe,IAAI,OAAO;IAO1B;;OAEG;IACG,MAAM,CACV,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,wBAAwB,GAAG,gCAAgC,CAAC;IAkSvE;;OAEG;YACW,0BAA0B;IA+IxC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiCnC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAoFvC;;;OAGG;IACH,OAAO,CAAC,UAAU;IA2HlB;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IA2DnC;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAyE1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAgGrB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA0DjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiDxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmC3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA2ChC"}
|
|
@@ -91,7 +91,9 @@ const DESCRIPTION_POISONING_PATTERNS = [
|
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
name: "include_credentials",
|
|
94
|
-
|
|
94
|
+
// More specific: requires directive context (in/with/when/to) to reduce false positives
|
|
95
|
+
// from legitimate documentation like "does not include credential storage"
|
|
96
|
+
pattern: /include\s+(the\s+|all\s+|your\s+)?(api.?key|credential|password|secret)s?\s*(in|with|when|to)/i,
|
|
95
97
|
severity: "HIGH",
|
|
96
98
|
category: "exfiltration",
|
|
97
99
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bryan-thompson/inspector-assessment",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.2",
|
|
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>",
|
|
@@ -79,9 +79,9 @@
|
|
|
79
79
|
"access": "public"
|
|
80
80
|
},
|
|
81
81
|
"dependencies": {
|
|
82
|
-
"@bryan-thompson/inspector-assessment-cli": "^1.19.
|
|
83
|
-
"@bryan-thompson/inspector-assessment-client": "^1.19.
|
|
84
|
-
"@bryan-thompson/inspector-assessment-server": "^1.19.
|
|
82
|
+
"@bryan-thompson/inspector-assessment-cli": "^1.19.2",
|
|
83
|
+
"@bryan-thompson/inspector-assessment-client": "^1.19.2",
|
|
84
|
+
"@bryan-thompson/inspector-assessment-server": "^1.19.2",
|
|
85
85
|
"@modelcontextprotocol/sdk": "^1.24.3",
|
|
86
86
|
"concurrently": "^9.2.0",
|
|
87
87
|
"node-fetch": "^3.3.2",
|