@securecode-ai/mcp 0.5.5 → 0.5.7

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 (186) hide show
  1. package/README.md +52 -12
  2. package/dist/api/types.d.ts +7 -0
  3. package/dist/approval/auditLog.d.ts +1 -1
  4. package/dist/approval/auditLog.js +11 -3
  5. package/dist/approval/auditLog.js.map +1 -1
  6. package/dist/approval/broker.d.ts +7 -2
  7. package/dist/approval/broker.js +239 -110
  8. package/dist/approval/broker.js.map +1 -1
  9. package/dist/approval/policy.d.ts +10 -0
  10. package/dist/approval/policy.js +104 -0
  11. package/dist/approval/policy.js.map +1 -0
  12. package/dist/approval/types.d.ts +11 -2
  13. package/dist/approval/types.js +10 -1
  14. package/dist/approval/types.js.map +1 -1
  15. package/dist/attack/agentScanExecutor.d.ts +35 -1
  16. package/dist/attack/agentScanExecutor.js +405 -76
  17. package/dist/attack/agentScanExecutor.js.map +1 -1
  18. package/dist/attack/agentScanLoop.d.ts +20 -0
  19. package/dist/attack/agentScanLoop.js +1264 -60
  20. package/dist/attack/agentScanLoop.js.map +1 -1
  21. package/dist/attack/agentScanProtocol.d.ts +382 -6
  22. package/dist/attack/agentScanProtocol.js +110 -4
  23. package/dist/attack/agentScanProtocol.js.map +1 -1
  24. package/dist/attack/agentTrace.d.ts +73 -0
  25. package/dist/attack/agentTrace.js +228 -0
  26. package/dist/attack/agentTrace.js.map +1 -0
  27. package/dist/attack/architectureScoutExecutor.d.ts +18 -0
  28. package/dist/attack/architectureScoutExecutor.js +211 -0
  29. package/dist/attack/architectureScoutExecutor.js.map +1 -0
  30. package/dist/attack/architectureScoutLoop.d.ts +36 -0
  31. package/dist/attack/architectureScoutLoop.js +403 -0
  32. package/dist/attack/architectureScoutLoop.js.map +1 -0
  33. package/dist/attack/architectureScoutProtocol.d.ts +209 -0
  34. package/dist/attack/architectureScoutProtocol.js +47 -0
  35. package/dist/attack/architectureScoutProtocol.js.map +1 -0
  36. package/dist/attack/candidateStore.d.ts +95 -0
  37. package/dist/attack/candidateStore.js +231 -0
  38. package/dist/attack/candidateStore.js.map +1 -0
  39. package/dist/attack/evidenceLedger.d.ts +67 -0
  40. package/dist/attack/evidenceLedger.js +192 -0
  41. package/dist/attack/evidenceLedger.js.map +1 -0
  42. package/dist/attack/finishGate.d.ts +62 -0
  43. package/dist/attack/finishGate.js +209 -0
  44. package/dist/attack/finishGate.js.map +1 -0
  45. package/dist/attack/fixCodeMerge.d.ts +27 -0
  46. package/dist/attack/fixCodeMerge.js +42 -0
  47. package/dist/attack/fixCodeMerge.js.map +1 -0
  48. package/dist/attack/fixVerifyLoop.d.ts +55 -0
  49. package/dist/attack/fixVerifyLoop.js +187 -0
  50. package/dist/attack/fixVerifyLoop.js.map +1 -0
  51. package/dist/attack/investigationProfiles.d.ts +36 -0
  52. package/dist/attack/investigationProfiles.js +144 -0
  53. package/dist/attack/investigationProfiles.js.map +1 -0
  54. package/dist/attack/investigationState.d.ts +227 -0
  55. package/dist/attack/investigationState.js +666 -0
  56. package/dist/attack/investigationState.js.map +1 -0
  57. package/dist/attack/mutationOperators.d.ts +22 -0
  58. package/dist/attack/mutationOperators.js +170 -0
  59. package/dist/attack/mutationOperators.js.map +1 -0
  60. package/dist/attack/mutationTest.d.ts +33 -0
  61. package/dist/attack/mutationTest.js +110 -0
  62. package/dist/attack/mutationTest.js.map +1 -0
  63. package/dist/attack/proofGate.d.ts +20 -0
  64. package/dist/attack/proofGate.js +104 -0
  65. package/dist/attack/proofGate.js.map +1 -0
  66. package/dist/attack/proofTypes.d.ts +57 -0
  67. package/dist/attack/proofTypes.js +32 -0
  68. package/dist/attack/proofTypes.js.map +1 -0
  69. package/dist/attack/protocolValidator.d.ts +50 -0
  70. package/dist/attack/protocolValidator.js +427 -0
  71. package/dist/attack/protocolValidator.js.map +1 -0
  72. package/dist/attack/qualityMetrics.d.ts +133 -0
  73. package/dist/attack/qualityMetrics.js +226 -0
  74. package/dist/attack/qualityMetrics.js.map +1 -0
  75. package/dist/attack/scanScheduler.d.ts +52 -0
  76. package/dist/attack/scanScheduler.js +265 -0
  77. package/dist/attack/scanScheduler.js.map +1 -0
  78. package/dist/attack/scanState.d.ts +58 -0
  79. package/dist/attack/scanState.js +102 -0
  80. package/dist/attack/scanState.js.map +1 -0
  81. package/dist/attack/searchIntent.d.ts +16 -0
  82. package/dist/attack/searchIntent.js +57 -0
  83. package/dist/attack/searchIntent.js.map +1 -0
  84. package/dist/attack/verifyLoop.d.ts +43 -0
  85. package/dist/attack/verifyLoop.js +314 -14
  86. package/dist/attack/verifyLoop.js.map +1 -1
  87. package/dist/attack/workItem.d.ts +57 -0
  88. package/dist/attack/workItem.js +225 -0
  89. package/dist/attack/workItem.js.map +1 -0
  90. package/dist/audit/findingReviewQueue.d.ts +109 -0
  91. package/dist/audit/findingReviewQueue.js +335 -0
  92. package/dist/audit/findingReviewQueue.js.map +1 -0
  93. package/dist/audit/scanAuditLog.d.ts +160 -0
  94. package/dist/audit/scanAuditLog.js +404 -0
  95. package/dist/audit/scanAuditLog.js.map +1 -0
  96. package/dist/dependency/dependencyChecker.js +35 -9
  97. package/dist/dependency/dependencyChecker.js.map +1 -1
  98. package/dist/dependency/exploitPriority.d.ts +33 -0
  99. package/dist/dependency/exploitPriority.js +78 -0
  100. package/dist/dependency/exploitPriority.js.map +1 -0
  101. package/dist/dependency/finding.d.ts +16 -0
  102. package/dist/dependency/osvClient.js +2 -0
  103. package/dist/dependency/osvClient.js.map +1 -1
  104. package/dist/dependency/types.d.ts +12 -1
  105. package/dist/mcp/server.js +13 -2
  106. package/dist/mcp/server.js.map +1 -1
  107. package/dist/mcp/tools.d.ts +1 -0
  108. package/dist/mcp/tools.js +127 -6
  109. package/dist/mcp/tools.js.map +1 -1
  110. package/dist/project-map/agentMemory.d.ts +83 -1
  111. package/dist/project-map/agentMemory.js +197 -7
  112. package/dist/project-map/agentMemory.js.map +1 -1
  113. package/dist/project-map/architectureContext.d.ts +202 -0
  114. package/dist/project-map/architectureContext.js +421 -0
  115. package/dist/project-map/architectureContext.js.map +1 -0
  116. package/dist/project-map/blastRadius.d.ts +54 -0
  117. package/dist/project-map/blastRadius.js +196 -0
  118. package/dist/project-map/blastRadius.js.map +1 -0
  119. package/dist/project-map/callGraphExtractor.d.ts +13 -0
  120. package/dist/project-map/callGraphExtractor.js +222 -0
  121. package/dist/project-map/callGraphExtractor.js.map +1 -0
  122. package/dist/project-map/capabilityRegistry.d.ts +46 -0
  123. package/dist/project-map/capabilityRegistry.js +91 -0
  124. package/dist/project-map/capabilityRegistry.js.map +1 -0
  125. package/dist/project-map/findTests.d.ts +29 -0
  126. package/dist/project-map/findTests.js +236 -0
  127. package/dist/project-map/findTests.js.map +1 -0
  128. package/dist/project-map/handlerInventory.d.ts +112 -0
  129. package/dist/project-map/handlerInventory.js +184 -0
  130. package/dist/project-map/handlerInventory.js.map +1 -0
  131. package/dist/project-map/implementationResolver.d.ts +43 -0
  132. package/dist/project-map/implementationResolver.js +217 -0
  133. package/dist/project-map/implementationResolver.js.map +1 -0
  134. package/dist/project-map/mapContext.d.ts +6 -1
  135. package/dist/project-map/mapContext.js +1 -0
  136. package/dist/project-map/mapContext.js.map +1 -1
  137. package/dist/project-map/scanCache.d.ts +57 -3
  138. package/dist/project-map/scanCache.js +61 -2
  139. package/dist/project-map/scanCache.js.map +1 -1
  140. package/dist/project-map/symbolIndex.d.ts +39 -0
  141. package/dist/project-map/symbolIndex.js +385 -0
  142. package/dist/project-map/symbolIndex.js.map +1 -0
  143. package/dist/tooling/agentEvalScoring.d.ts +77 -0
  144. package/dist/tooling/agentEvalScoring.js +140 -0
  145. package/dist/tooling/agentEvalScoring.js.map +1 -0
  146. package/dist/tooling/agentRegression.d.ts +53 -0
  147. package/dist/tooling/agentRegression.js +99 -0
  148. package/dist/tooling/agentRegression.js.map +1 -0
  149. package/dist/tools/agentScan.d.ts +69 -0
  150. package/dist/tools/agentScan.js +702 -43
  151. package/dist/tools/agentScan.js.map +1 -1
  152. package/dist/tools/findingReviewTools.d.ts +22 -0
  153. package/dist/tools/findingReviewTools.js +121 -0
  154. package/dist/tools/findingReviewTools.js.map +1 -0
  155. package/dist/tools/fix.js +1 -1
  156. package/dist/tools/fix.js.map +1 -1
  157. package/dist/tools/map.js +191 -1
  158. package/dist/tools/map.js.map +1 -1
  159. package/dist/tools/runTests.d.ts +2 -0
  160. package/dist/tools/runTests.js +29 -0
  161. package/dist/tools/runTests.js.map +1 -0
  162. package/dist/utils/effectMock.d.ts +1 -0
  163. package/dist/utils/effectMock.js +162 -0
  164. package/dist/utils/effectMock.js.map +1 -0
  165. package/dist/utils/gitContext.d.ts +26 -0
  166. package/dist/utils/gitContext.js +317 -0
  167. package/dist/utils/gitContext.js.map +1 -0
  168. package/dist/utils/localTestRunner.d.ts +57 -2
  169. package/dist/utils/localTestRunner.js +122 -115
  170. package/dist/utils/localTestRunner.js.map +1 -1
  171. package/dist/utils/securityConfig.d.ts +17 -0
  172. package/dist/utils/securityConfig.js +192 -0
  173. package/dist/utils/securityConfig.js.map +1 -0
  174. package/dist/utils/testCommandPolicy.d.ts +36 -0
  175. package/dist/utils/testCommandPolicy.js +252 -0
  176. package/dist/utils/testCommandPolicy.js.map +1 -0
  177. package/dist/utils/testRunner.d.ts +56 -0
  178. package/dist/utils/testRunner.js +246 -0
  179. package/dist/utils/testRunner.js.map +1 -0
  180. package/dist/utils/testSafety.d.ts +40 -2
  181. package/dist/utils/testSafety.js +205 -26
  182. package/dist/utils/testSafety.js.map +1 -1
  183. package/dist/utils/verificationSandbox.d.ts +113 -0
  184. package/dist/utils/verificationSandbox.js +656 -0
  185. package/dist/utils/verificationSandbox.js.map +1 -0
  186. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"investigationState.js","sourceRoot":"","sources":["../../src/attack/investigationState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Mutation operators — apply security fixes to vulnerable code to create
3
+ * a "secure mutation." The mutation test then checks whether the test
4
+ * script can distinguish between the original (vulnerable) code and the
5
+ * mutated (secure) code.
6
+ *
7
+ * A discriminating test PASSES on the vulnerable code and FAILS on the
8
+ * secure mutation. This proves the test is actually testing the security
9
+ * property, not just exercising the code path.
10
+ */
11
+ export type VulnerabilityType = 'broken_access_control' | 'missing_auth' | 'missing_ownership' | 'sql_injection' | 'path_traversal' | 'command_injection' | 'xss' | 'ssrf' | 'ssti' | 'missing_input_validation' | 'secrets_in_source' | 'generic';
12
+ export interface MutationResult {
13
+ mutated: boolean;
14
+ mutatedCode: string;
15
+ description: string;
16
+ }
17
+ /**
18
+ * Apply a mutation operator for the given vulnerability type to the
19
+ * vulnerable code. Returns the mutated (secure) code or `mutated: false`
20
+ * if no operator is available.
21
+ */
22
+ export declare function applyMutation(code: string, vulnerabilityType: string, line: number): MutationResult;
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /**
3
+ * Mutation operators — apply security fixes to vulnerable code to create
4
+ * a "secure mutation." The mutation test then checks whether the test
5
+ * script can distinguish between the original (vulnerable) code and the
6
+ * mutated (secure) code.
7
+ *
8
+ * A discriminating test PASSES on the vulnerable code and FAILS on the
9
+ * secure mutation. This proves the test is actually testing the security
10
+ * property, not just exercising the code path.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.applyMutation = applyMutation;
14
+ /**
15
+ * Apply a mutation operator for the given vulnerability type to the
16
+ * vulnerable code. Returns the mutated (secure) code or `mutated: false`
17
+ * if no operator is available.
18
+ */
19
+ function applyMutation(code, vulnerabilityType, line) {
20
+ const lines = code.split('\n');
21
+ const lineIdx = Math.max(0, Math.min(line - 1, lines.length - 1));
22
+ const targetLine = lines[lineIdx];
23
+ switch (vulnerabilityType) {
24
+ case 'broken_access_control':
25
+ case 'missing_auth': {
26
+ // Insert a 401/403 rejection before the target line
27
+ const indent = (targetLine.match(/^\s*/) || [''])[0];
28
+ const guard = `${indent}if (!isAuthenticated || !hasPermission) { return res ? res.status(403).json({ error: 'forbidden' }) : null; }`;
29
+ const mutated = [...lines];
30
+ mutated.splice(lineIdx, 0, guard);
31
+ return {
32
+ mutated: true,
33
+ mutatedCode: mutated.join('\n'),
34
+ description: 'Added authentication/authorization guard before the vulnerable line',
35
+ };
36
+ }
37
+ case 'missing_ownership': {
38
+ // Insert an ownership check before the target line
39
+ const indent = (targetLine.match(/^\s*/) || [''])[0];
40
+ const guard = `${indent}if (resource.ownerId !== requesterId) { throw new Error('not owner'); }`;
41
+ const mutated = [...lines];
42
+ mutated.splice(lineIdx, 0, guard);
43
+ return {
44
+ mutated: true,
45
+ mutatedCode: mutated.join('\n'),
46
+ description: 'Added ownership check before the vulnerable line',
47
+ };
48
+ }
49
+ case 'sql_injection': {
50
+ // Replace string interpolation in SQL queries with parameter placeholders
51
+ const mutatedLine = targetLine
52
+ .replace(/`([^`]*\$\{[^}]+\}[^`]*)`/g, '?')
53
+ .replace(/'([^']*\+[^']*)'/g, '?')
54
+ .replace(/"\s*\+\s*\w+\s*\+"/g, '?');
55
+ if (mutatedLine === targetLine) {
56
+ return { mutated: false, mutatedCode: code, description: 'No SQL interpolation found to mutate' };
57
+ }
58
+ const mutated = [...lines];
59
+ mutated[lineIdx] = mutatedLine;
60
+ return {
61
+ mutated: true,
62
+ mutatedCode: mutated.join('\n'),
63
+ description: 'Replaced SQL string interpolation with parameter placeholders',
64
+ };
65
+ }
66
+ case 'path_traversal': {
67
+ // Add path containment validation
68
+ const indent = (targetLine.match(/^\s*/) || [''])[0];
69
+ const guard = `${indent}const safePath = path.resolve(baseDir, userInput).replace(/\\.\\.\\//g, ''); if (!safePath.startsWith(baseDir)) { throw new Error('path traversal blocked'); }`;
70
+ const mutated = [...lines];
71
+ mutated.splice(lineIdx, 0, guard);
72
+ return {
73
+ mutated: true,
74
+ mutatedCode: mutated.join('\n'),
75
+ description: 'Added path containment validation before file access',
76
+ };
77
+ }
78
+ case 'command_injection': {
79
+ // Replace shell string execution with argument-array execution
80
+ const mutatedLine = targetLine
81
+ .replace(/exec\(\s*`([^`]*)`\s*\)/g, 'execFile($1.split(" "))')
82
+ .replace(/exec\(\s*([^`]+)\s*\+\s*([^)]+)\)/g, 'execFile([$1, $2])');
83
+ if (mutatedLine === targetLine) {
84
+ return { mutated: false, mutatedCode: code, description: 'No command injection pattern found to mutate' };
85
+ }
86
+ const mutated = [...lines];
87
+ mutated[lineIdx] = mutatedLine;
88
+ return {
89
+ mutated: true,
90
+ mutatedCode: mutated.join('\n'),
91
+ description: 'Replaced shell string execution with argument-array execution',
92
+ };
93
+ }
94
+ case 'xss': {
95
+ // Add HTML escaping before output
96
+ const indent = (targetLine.match(/^\s*/) || [''])[0];
97
+ const guard = `${indent}const safeOutput = userInput.replace(/<script>/gi, '&lt;script&gt;').replace(/on\\w+=/gi, '');`;
98
+ const mutated = [...lines];
99
+ mutated.splice(lineIdx, 0, guard);
100
+ return {
101
+ mutated: true,
102
+ mutatedCode: mutated.join('\n'),
103
+ description: 'Added HTML escaping before output',
104
+ };
105
+ }
106
+ case 'ssrf': {
107
+ // Add URL allowlist validation
108
+ const indent = (targetLine.match(/^\s*/) || [''])[0];
109
+ const guard = `${indent}const allowedHosts = ['localhost', '127.0.0.1']; const url = new URL(targetUrl); if (!allowedHosts.includes(url.hostname)) { throw new Error('SSRF blocked'); }`;
110
+ const mutated = [...lines];
111
+ mutated.splice(lineIdx, 0, guard);
112
+ return {
113
+ mutated: true,
114
+ mutatedCode: mutated.join('\n'),
115
+ description: 'Added URL allowlist validation before external request',
116
+ };
117
+ }
118
+ case 'ssti': {
119
+ // Replace template rendering with safe string output
120
+ const mutatedLine = targetLine
121
+ .replace(/render\(/g, 'renderText(')
122
+ .replace(/ejs\.render\(/g, 'String(');
123
+ if (mutatedLine === targetLine) {
124
+ return { mutated: false, mutatedCode: code, description: 'No SSTI pattern found to mutate' };
125
+ }
126
+ const mutated = [...lines];
127
+ mutated[lineIdx] = mutatedLine;
128
+ return {
129
+ mutated: true,
130
+ mutatedCode: mutated.join('\n'),
131
+ description: 'Replaced template rendering with safe string output',
132
+ };
133
+ }
134
+ case 'missing_input_validation': {
135
+ // Add input validation guard
136
+ const indent = (targetLine.match(/^\s*/) || [''])[0];
137
+ const guard = `${indent}if (!input || typeof input !== 'string' || input.length > 1000) { throw new Error('invalid input'); }`;
138
+ const mutated = [...lines];
139
+ mutated.splice(lineIdx, 0, guard);
140
+ return {
141
+ mutated: true,
142
+ mutatedCode: mutated.join('\n'),
143
+ description: 'Added input validation guard',
144
+ };
145
+ }
146
+ case 'secrets_in_source': {
147
+ // Replace hardcoded secret with environment variable reference
148
+ const mutatedLine = targetLine
149
+ .replace(/['"][^'"]*(?:sk-|ghp_|AKIA|password|secret|token|apiKey|api_key)[^'"]*['"]/gi, 'process.env.SECRET_KEY')
150
+ .replace(/=\s*['"][a-f0-9]{32,}['"]/gi, '= process.env.SECRET_KEY');
151
+ if (mutatedLine === targetLine) {
152
+ return { mutated: false, mutatedCode: code, description: 'No hardcoded secret found to mutate' };
153
+ }
154
+ const mutated = [...lines];
155
+ mutated[lineIdx] = mutatedLine;
156
+ return {
157
+ mutated: true,
158
+ mutatedCode: mutated.join('\n'),
159
+ description: 'Replaced hardcoded secret with environment variable reference',
160
+ };
161
+ }
162
+ default:
163
+ return {
164
+ mutated: false,
165
+ mutatedCode: code,
166
+ description: `No mutation operator available for vulnerability type: ${vulnerabilityType}`,
167
+ };
168
+ }
169
+ }
170
+ //# sourceMappingURL=mutationOperators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutationOperators.js","sourceRoot":"","sources":["../../src/attack/mutationOperators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface MutationTestOptions {
2
+ /** The original vulnerable code (the code being tested). */
3
+ vulnerableCode: string;
4
+ /** The test script that should catch the vulnerability. */
5
+ testScript: string;
6
+ /** The runner to use (node, python3, etc.). */
7
+ runner: string;
8
+ /** Workspace root for the sandbox. */
9
+ workspaceRoot: string;
10
+ /** File path of the vulnerable code (for error messages). */
11
+ filePath: string;
12
+ /** Vulnerability type (broken_access_control, sql_injection, etc.). */
13
+ vulnerabilityType: string;
14
+ /** Line number of the vulnerability. */
15
+ line: number;
16
+ }
17
+ export interface MutationTestResult {
18
+ discriminating: boolean;
19
+ mutatedVerdict: 'pass' | 'fail' | 'error' | 'timeout' | 'not-run';
20
+ reason: string;
21
+ }
22
+ /**
23
+ * Run a mutation test:
24
+ *
25
+ * 1. Apply a security mutation to the vulnerable code (e.g., add an auth guard).
26
+ * 2. Run the test script against the mutated (secure) code.
27
+ * 3. If the test PASSES on the original but FAILS on the mutation → discriminating.
28
+ * 4. If the test PASSES on both → non-discriminating (the test doesn't test security).
29
+ * 5. If the test ERRORS on the mutation → INCONCLUSIVE (not discriminating).
30
+ *
31
+ * Never label mutation errors as successful discrimination.
32
+ */
33
+ export declare function runMutationTest(opts: MutationTestOptions): Promise<MutationTestResult>;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runMutationTest = runMutationTest;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const localTestRunner_1 = require("../utils/localTestRunner");
40
+ const mutationOperators_1 = require("./mutationOperators");
41
+ /**
42
+ * Run a mutation test:
43
+ *
44
+ * 1. Apply a security mutation to the vulnerable code (e.g., add an auth guard).
45
+ * 2. Run the test script against the mutated (secure) code.
46
+ * 3. If the test PASSES on the original but FAILS on the mutation → discriminating.
47
+ * 4. If the test PASSES on both → non-discriminating (the test doesn't test security).
48
+ * 5. If the test ERRORS on the mutation → INCONCLUSIVE (not discriminating).
49
+ *
50
+ * Never label mutation errors as successful discrimination.
51
+ */
52
+ async function runMutationTest(opts) {
53
+ const mutation = (0, mutationOperators_1.applyMutation)(opts.vulnerableCode, opts.vulnerabilityType, opts.line);
54
+ if (!mutation.mutated) {
55
+ return {
56
+ discriminating: false,
57
+ mutatedVerdict: 'not-run',
58
+ reason: `Mutation test skipped: ${mutation.description}`,
59
+ };
60
+ }
61
+ const sandboxDir = path.join(opts.workspaceRoot, '.securecode');
62
+ if (!fs.existsSync(sandboxDir))
63
+ fs.mkdirSync(sandboxDir, { recursive: true });
64
+ const suffix = `${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
65
+ const ext = opts.runner === 'python3' ? 'py' : 'js';
66
+ const mutationFile = path.join(sandboxDir, `mutation-${suffix}.${ext}`);
67
+ try {
68
+ // Write the mutated code to the sandbox file
69
+ fs.writeFileSync(mutationFile, mutation.mutatedCode, 'utf8');
70
+ // Run the test script against the mutated code
71
+ const result = await (0, localTestRunner_1.runLocalTest)(mutation.mutatedCode, opts.runner, opts.workspaceRoot, {
72
+ setupScript: null,
73
+ timeoutMs: 30_000,
74
+ });
75
+ if (result.verdict === 'pass') {
76
+ return {
77
+ discriminating: false,
78
+ mutatedVerdict: 'pass',
79
+ reason: `Mutation test PASSED — the test does not discriminate between vulnerable and secure code. ${mutation.description}. ${result.output.slice(0, 200)}`,
80
+ };
81
+ }
82
+ if (result.verdict === 'fail') {
83
+ return {
84
+ discriminating: true,
85
+ mutatedVerdict: 'fail',
86
+ reason: `Mutation test FAILED — the test correctly discriminates: ${mutation.description}. ${result.output.slice(0, 200)}`,
87
+ };
88
+ }
89
+ // error or timeout → INCONCLUSIVE, not discriminating
90
+ return {
91
+ discriminating: false,
92
+ mutatedVerdict: result.verdict === 'timeout' ? 'timeout' : 'error',
93
+ reason: `Mutation test ${result.verdict === 'timeout' ? 'timed out' : 'errored'} — INCONCLUSIVE (not discriminating). ${mutation.description}. ${result.output.slice(0, 200)}`,
94
+ };
95
+ }
96
+ catch (err) {
97
+ return {
98
+ discriminating: false,
99
+ mutatedVerdict: 'error',
100
+ reason: `Mutation test failed to execute: ${err.message || err}`,
101
+ };
102
+ }
103
+ finally {
104
+ try {
105
+ fs.unlinkSync(mutationFile);
106
+ }
107
+ catch { /* best effort */ }
108
+ }
109
+ }
110
+ //# sourceMappingURL=mutationTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutationTest.js","sourceRoot":"","sources":["../../src/attack/mutationTest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,0CAgEC;AAvGD,uCAAyB;AACzB,2CAA6B;AAC7B,8DAAwD;AACxD,2DAAoD;AAyBpD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,eAAe,CAAC,IAAyB;IAC3D,MAAM,QAAQ,GAAG,IAAA,iCAAa,EAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACH,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,SAAS;YACzB,MAAM,EAAE,0BAA0B,QAAQ,CAAC,WAAW,EAAE;SAC3D,CAAC;IACN,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IAExE,IAAI,CAAC;QACD,6CAA6C;QAC7C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAE7D,+CAA+C;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAY,EAC7B,QAAQ,CAAC,WAAW,EACpB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB;YACI,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,MAAM;SACpB,CACJ,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO;gBACH,cAAc,EAAE,KAAK;gBACrB,cAAc,EAAE,MAAM;gBACtB,MAAM,EAAE,6FAA6F,QAAQ,CAAC,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;aAC9J,CAAC;QACN,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO;gBACH,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,MAAM;gBACtB,MAAM,EAAE,4DAA4D,QAAQ,CAAC,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;aAC7H,CAAC;QACN,CAAC;QAED,sDAAsD;QACtD,OAAO;YACH,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;YAClE,MAAM,EAAE,iBAAiB,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,yCAAyC,QAAQ,CAAC,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SACjL,CAAC;IACN,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO;YACH,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,OAAO;YACvB,MAAM,EAAE,oCAAoC,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE;SACnE,CAAC;IACN,CAAC;YAAS,CAAC;QACP,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACpE,CAAC;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { ProofEvidence, ProofGateResult, ParsedProofMarker, ProofSourceMode } from './proofTypes';
2
+ export declare function evaluateProofGate(marker: ParsedProofMarker, context: {
3
+ sandboxBackend: string;
4
+ targetFile: string;
5
+ targetLine: number;
6
+ repeatedRuns: number;
7
+ repeatPasses: number;
8
+ llmVerdict: 'PROVEN' | 'UNPROVEN' | 'INCONCLUSIVE';
9
+ sourceMode?: ProofSourceMode;
10
+ minimumRepeatRuns?: number;
11
+ }): ProofGateResult;
12
+ export declare function buildProofEvidence(marker: ParsedProofMarker, context: {
13
+ sandboxBackend: string;
14
+ targetFile: string;
15
+ targetLine: number;
16
+ targetSymbol?: string;
17
+ repeatedRuns: number;
18
+ repeatPasses: number;
19
+ assumptions?: string[];
20
+ }): ProofEvidence;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluateProofGate = evaluateProofGate;
4
+ exports.buildProofEvidence = buildProofEvidence;
5
+ const DEFAULT_MINIMUM_REPEAT_RUNS = 3;
6
+ function evaluateProofGate(marker, context) {
7
+ const failedGates = [];
8
+ const warnings = [];
9
+ if (!marker.found) {
10
+ failedGates.push('proof-marker-missing');
11
+ return {
12
+ eligibleForProven: false,
13
+ failedGates,
14
+ warnings,
15
+ downgradedVerdict: 'INCONCLUSIVE',
16
+ };
17
+ }
18
+ if (marker.sourceMode === 'synthetic') {
19
+ failedGates.push('synthetic-source');
20
+ warnings.push('Proof uses synthetic reproduction, not real production code');
21
+ }
22
+ if (marker.sourceMode === 'extracted-logic') {
23
+ failedGates.push('extracted-logic-source');
24
+ warnings.push('Proof uses extracted/reconstructed logic, not exact production import');
25
+ }
26
+ if (marker.mockedVulnerablePath === true) {
27
+ failedGates.push('mock-vulnerable-path');
28
+ warnings.push('Test mocks the vulnerable decision path');
29
+ }
30
+ if (marker.targetReached === false) {
31
+ failedGates.push('target-not-reached');
32
+ warnings.push('Test did not reach the reported vulnerability location');
33
+ }
34
+ if (marker.baseline !== 'pass') {
35
+ failedGates.push('baseline-failed');
36
+ warnings.push('Baseline secure case did not pass — cannot distinguish exploit from normal behavior');
37
+ }
38
+ if (marker.exploit !== 'pass') {
39
+ failedGates.push('exploit-failed');
40
+ warnings.push('Exploit case did not pass');
41
+ }
42
+ if (marker.impact !== 'observed') {
43
+ failedGates.push('impact-not-observed');
44
+ warnings.push('No measurable impact observed from the exploit');
45
+ }
46
+ if (marker.assertion !== 'deterministic') {
47
+ failedGates.push('non-deterministic-assertion');
48
+ warnings.push('Test uses LLM-only assertion, not deterministic code');
49
+ }
50
+ if (context.repeatedRuns < (context.minimumRepeatRuns ?? DEFAULT_MINIMUM_REPEAT_RUNS)) {
51
+ failedGates.push('insufficient-repeats');
52
+ warnings.push(`Only ${context.repeatedRuns} run(s), need ${context.minimumRepeatRuns ?? DEFAULT_MINIMUM_REPEAT_RUNS} for PROVEN`);
53
+ }
54
+ if (context.repeatPasses < context.repeatedRuns) {
55
+ failedGates.push('flaky-proof');
56
+ warnings.push(`${context.repeatPasses}/${context.repeatedRuns} runs passed — proof is flaky`);
57
+ }
58
+ if (context.llmVerdict !== 'PROVEN' && failedGates.length === 0) {
59
+ warnings.push('LLM verdict was not PROVEN but proof marker passed — overriding to PROVEN');
60
+ }
61
+ if (context.llmVerdict === 'PROVEN' && failedGates.length > 0) {
62
+ warnings.push('LLM said PROVEN but deterministic gates failed — downgrading');
63
+ }
64
+ const eligibleForProven = failedGates.length === 0;
65
+ let downgradedVerdict;
66
+ if (eligibleForProven) {
67
+ downgradedVerdict = 'PROVEN';
68
+ }
69
+ else if (failedGates.includes('exploit-failed') || failedGates.includes('impact-not-observed')) {
70
+ downgradedVerdict = 'UNPROVEN';
71
+ }
72
+ else if (failedGates.includes('synthetic-source') || failedGates.includes('extracted-logic-source')) {
73
+ downgradedVerdict = 'INCONCLUSIVE';
74
+ }
75
+ else {
76
+ downgradedVerdict = 'INCONCLUSIVE';
77
+ }
78
+ return {
79
+ eligibleForProven,
80
+ failedGates,
81
+ warnings,
82
+ downgradedVerdict,
83
+ };
84
+ }
85
+ function buildProofEvidence(marker, context) {
86
+ return {
87
+ proofId: `${Date.now()}-${Math.random().toString(36).slice(2, 10)}`,
88
+ sourceMode: marker.sourceMode ?? 'synthetic',
89
+ targetFile: context.targetFile,
90
+ targetLine: context.targetLine,
91
+ targetSymbol: context.targetSymbol,
92
+ reachedTarget: marker.targetReached ?? false,
93
+ baselinePassed: marker.baseline === 'pass',
94
+ exploitPassed: marker.exploit === 'pass',
95
+ impactObserved: marker.impact === 'observed',
96
+ deterministicAssertion: marker.assertion === 'deterministic',
97
+ mocksVulnerablePath: marker.mockedVulnerablePath ?? false,
98
+ repeatedRuns: context.repeatedRuns,
99
+ repeatPasses: context.repeatPasses,
100
+ sandboxBackend: context.sandboxBackend,
101
+ assumptions: context.assumptions ?? [],
102
+ };
103
+ }
104
+ //# sourceMappingURL=proofGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proofGate.js","sourceRoot":"","sources":["../../src/attack/proofGate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ export type ProofSourceMode = 'real-import' | 'real-server' | 'extracted-logic' | 'synthetic';
2
+ export interface ProofEvidence {
3
+ proofId: string;
4
+ sourceMode: ProofSourceMode;
5
+ targetFile: string;
6
+ targetLine: number;
7
+ targetSymbol?: string;
8
+ reachedTarget: boolean;
9
+ baselinePassed: boolean;
10
+ exploitPassed: boolean;
11
+ impactObserved: boolean;
12
+ deterministicAssertion: boolean;
13
+ mocksVulnerablePath: boolean;
14
+ repeatedRuns: number;
15
+ repeatPasses: number;
16
+ sandboxBackend: string;
17
+ environmentFingerprint?: string;
18
+ assumptions: string[];
19
+ }
20
+ export interface ProofGateResult {
21
+ eligibleForProven: boolean;
22
+ failedGates: string[];
23
+ warnings: string[];
24
+ downgradedVerdict: 'PROVEN' | 'UNPROVEN' | 'INCONCLUSIVE' | 'NOT_REPRODUCIBLE';
25
+ }
26
+ export type ProofSubVerdict = 'proof-marker-missing' | 'proof-assertion-failed' | 'flaky-proof' | 'mock-vulnerable-path' | 'target-not-reached' | 'baseline-failed' | 'impact-not-observed' | 'gate-passed' | 'gate-rejected';
27
+ export interface ParsedProofMarker {
28
+ found: boolean;
29
+ baseline?: 'pass' | 'fail';
30
+ exploit?: 'pass' | 'fail';
31
+ impact?: 'observed' | 'not-observed';
32
+ targetReached?: boolean;
33
+ assertion?: 'deterministic' | 'llm-only';
34
+ mockedVulnerablePath?: boolean;
35
+ sourceMode?: ProofSourceMode;
36
+ }
37
+ /**
38
+ * Per-run validation result for a single repeatability run. Each repeat
39
+ * must independently validate all proof properties — a run is only
40
+ * counted as "passed" if ALL of these are true:
41
+ * - verdict === 'pass'
42
+ * - markerValid (proof marker was found and parsed)
43
+ * - targetReached (the proof reached the target file/line)
44
+ * - impactObserved (the exploit produced an observable impact)
45
+ */
46
+ export interface ProofRunResult {
47
+ runIndex: number;
48
+ verdict: 'pass' | 'fail' | 'error' | 'timeout';
49
+ markerValid: boolean;
50
+ targetReached: boolean;
51
+ impactObserved: boolean;
52
+ baselineResult?: 'pass' | 'fail';
53
+ exploitResult?: 'pass' | 'fail';
54
+ }
55
+ export declare const PROOF_MARKER_START = "SECURECODE_PROOF_RESULT:";
56
+ export declare const PROOF_MARKER_END = ":SECURECODE_PROOF_END";
57
+ export declare function parseProofMarker(output: string): ParsedProofMarker;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROOF_MARKER_END = exports.PROOF_MARKER_START = void 0;
4
+ exports.parseProofMarker = parseProofMarker;
5
+ exports.PROOF_MARKER_START = 'SECURECODE_PROOF_RESULT:';
6
+ exports.PROOF_MARKER_END = ':SECURECODE_PROOF_END';
7
+ function parseProofMarker(output) {
8
+ const startIdx = output.indexOf(exports.PROOF_MARKER_START);
9
+ if (startIdx === -1)
10
+ return { found: false };
11
+ const endIdx = output.indexOf(exports.PROOF_MARKER_END, startIdx);
12
+ if (endIdx === -1)
13
+ return { found: false };
14
+ const jsonStr = output.slice(startIdx + exports.PROOF_MARKER_START.length, endIdx).trim();
15
+ try {
16
+ const parsed = JSON.parse(jsonStr);
17
+ return {
18
+ found: true,
19
+ baseline: parsed.baseline,
20
+ exploit: parsed.exploit,
21
+ impact: parsed.impact,
22
+ targetReached: parsed.targetReached,
23
+ assertion: parsed.assertion,
24
+ mockedVulnerablePath: parsed.mockedVulnerablePath,
25
+ sourceMode: parsed.sourceMode,
26
+ };
27
+ }
28
+ catch {
29
+ return { found: false };
30
+ }
31
+ }
32
+ //# sourceMappingURL=proofTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proofTypes.js","sourceRoot":"","sources":["../../src/attack/proofTypes.ts"],"names":[],"mappings":";;;AAwEA,4CAqBC;AAxBY,QAAA,kBAAkB,GAAG,0BAA0B,CAAC;AAChD,QAAA,gBAAgB,GAAG,uBAAuB,CAAC;AAExD,SAAgB,gBAAgB,CAAC,MAAc;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,0BAAkB,CAAC,CAAC;IACpD,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,0BAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAClF,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO;YACH,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,UAAU,EAAE,MAAM,CAAC,UAAU;SAChC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACL,CAAC"}