@zivis/mcp 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +19 -0
- package/dist/api-client.d.ts +2 -24
- package/dist/api-client.js +32 -52
- package/dist/auth/index.d.ts +1 -22
- package/dist/auth/index.js +17 -38
- package/dist/auth/jwt.d.ts +0 -16
- package/dist/auth/jwt.js +0 -13
- package/dist/auth/keychain.d.ts +6 -32
- package/dist/auth/keychain.js +83 -114
- package/dist/auth/oauth.d.ts +3 -32
- package/dist/auth/oauth.js +67 -61
- package/dist/auth/sessions.d.ts +5 -25
- package/dist/auth/sessions.js +20 -39
- package/dist/auth/token-refresh.d.ts +2 -22
- package/dist/auth/token-refresh.js +33 -36
- package/dist/cli.d.ts +1 -18
- package/dist/cli.js +30 -908
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -7
- package/dist/lib/inspect-cache.d.ts +10 -0
- package/dist/lib/inspect-cache.js +75 -0
- package/dist/lib/next-steps.d.ts +27 -0
- package/dist/lib/next-steps.js +21 -0
- package/dist/matcher/ast-eval.d.ts +8 -0
- package/dist/matcher/ast-eval.js +95 -0
- package/dist/matcher/finding.d.ts +55 -0
- package/dist/matcher/finding.js +1 -0
- package/dist/matcher/index.d.ts +8 -0
- package/dist/matcher/index.js +202 -0
- package/dist/matcher/inference-candidates.d.ts +26 -0
- package/dist/matcher/inference-candidates.js +81 -0
- package/dist/matcher/walker.d.ts +7 -0
- package/dist/matcher/walker.js +71 -0
- package/dist/pattern-pack/index.d.ts +125 -0
- package/dist/pattern-pack/index.js +189 -0
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/agents/privilege-separation.yaml +224 -0
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/prompting/self-consistency-no-isolation.yaml +237 -0
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/retrieval/context-injection-no-validator.yaml +348 -0
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/security/late-org-filter.yaml +266 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/external_validator_on_facts.yaml +37 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/fact_validator_present.yaml +68 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/human_approval_gate.yaml +44 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/langgraph_state_machine_with_per_node_tools.yaml +35 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/per_sample_retrieval_diversification.yaml +38 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/prisma_extension_or_middleware_attaching_org_filter.yaml +31 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/row_level_security_policy.yaml +37 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/source_attribution_present.yaml +58 -0
- package/dist/pattern-packs/zivis-public-0.2.0/manifest.json +167 -0
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/agents/privilege-separation/identify.md +54 -0
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/prompting/self-consistency-no-isolation/identify.md +60 -0
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/retrieval/context-injection-no-validator/identify.md +109 -0
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/security/late-org-filter/identify.md +78 -0
- package/dist/project-binding.d.ts +2 -19
- package/dist/project-binding.js +38 -21
- package/dist/prompts/audit-dependencies.d.ts +2 -0
- package/dist/prompts/audit-dependencies.js +47 -0
- package/dist/prompts/getting-started.d.ts +2 -0
- package/dist/prompts/getting-started.js +37 -0
- package/dist/prompts/index.d.ts +2 -0
- package/dist/prompts/index.js +6 -0
- package/dist/resolve-application-id.d.ts +0 -4
- package/dist/resolve-application-id.js +0 -5
- package/dist/sanitize.d.ts +1 -21
- package/dist/sanitize.js +7 -41
- package/dist/server.d.ts +1 -13
- package/dist/server.js +142 -265
- package/dist/tools/artifacts.d.ts +76 -0
- package/dist/tools/artifacts.js +178 -0
- package/dist/tools/check-project.d.ts +5 -18
- package/dist/tools/check-project.js +122 -110
- package/dist/tools/check-repo-trust.d.ts +4 -19
- package/dist/tools/check-repo-trust.js +56 -47
- package/dist/tools/create-diagram.d.ts +0 -5
- package/dist/tools/create-diagram.js +0 -10
- package/dist/tools/create-document.d.ts +0 -5
- package/dist/tools/create-document.js +3 -9
- package/dist/tools/create-finding.d.ts +85 -0
- package/dist/tools/create-finding.js +136 -0
- package/dist/tools/delete-finding.d.ts +19 -0
- package/dist/tools/delete-finding.js +36 -0
- package/dist/tools/devx-run.d.ts +88 -0
- package/dist/tools/devx-run.js +175 -0
- package/dist/tools/discover-local-infra.d.ts +0 -10
- package/dist/tools/discover-local-infra.js +3 -73
- package/dist/tools/enterprise/get-org-zat.d.ts +0 -5
- package/dist/tools/enterprise/get-org-zat.js +0 -6
- package/dist/tools/explain-signal-for-diff.d.ts +34 -0
- package/dist/tools/explain-signal-for-diff.js +75 -0
- package/dist/tools/generate-diagram.d.ts +0 -6
- package/dist/tools/generate-diagram.js +21 -13
- package/dist/tools/get-application-overview.d.ts +0 -5
- package/dist/tools/get-application-overview.js +0 -6
- package/dist/tools/get-application.d.ts +0 -5
- package/dist/tools/get-application.js +0 -6
- package/dist/tools/get-diagram.d.ts +0 -5
- package/dist/tools/get-diagram.js +1 -11
- package/dist/tools/get-document.d.ts +0 -5
- package/dist/tools/get-document.js +0 -6
- package/dist/tools/get-oss-zat.d.ts +0 -5
- package/dist/tools/get-oss-zat.js +0 -7
- package/dist/tools/get-signal.d.ts +24 -0
- package/dist/tools/get-signal.js +75 -0
- package/dist/tools/get-started.d.ts +18 -0
- package/dist/tools/get-started.js +470 -0
- package/dist/tools/get-trust-keys.d.ts +0 -5
- package/dist/tools/get-trust-keys.js +0 -6
- package/dist/tools/import-openapi-endpoints.d.ts +0 -5
- package/dist/tools/import-openapi-endpoints.js +0 -6
- package/dist/tools/inspect-zat.d.ts +0 -5
- package/dist/tools/inspect-zat.js +0 -19
- package/dist/tools/inspect.d.ts +21 -0
- package/dist/tools/inspect.js +222 -0
- package/dist/tools/list-applications.d.ts +1 -6
- package/dist/tools/list-applications.js +0 -6
- package/dist/tools/list-diagrams.d.ts +0 -5
- package/dist/tools/list-diagrams.js +0 -6
- package/dist/tools/list-documents.d.ts +0 -5
- package/dist/tools/list-documents.js +0 -6
- package/dist/tools/list-endpoints.d.ts +1 -6
- package/dist/tools/list-endpoints.js +0 -6
- package/dist/tools/list-signals.d.ts +37 -0
- package/dist/tools/list-signals.js +83 -0
- package/dist/tools/manage-application.d.ts +64 -0
- package/dist/tools/manage-application.js +129 -0
- package/dist/tools/manage-diagram.d.ts +0 -5
- package/dist/tools/manage-diagram.js +0 -16
- package/dist/tools/manage-endpoint-lifecycle.d.ts +80 -0
- package/dist/tools/manage-endpoint-lifecycle.js +180 -0
- package/dist/tools/open-in-ide.d.ts +2 -14
- package/dist/tools/open-in-ide.js +0 -13
- package/dist/tools/review-change.d.ts +34 -0
- package/dist/tools/review-change.js +93 -0
- package/dist/tools/security-memory.d.ts +76 -0
- package/dist/tools/security-memory.js +202 -0
- package/dist/tools/security-review.d.ts +1 -21
- package/dist/tools/security-review.js +8 -108
- package/dist/tools/threat-get-capsule.d.ts +15 -0
- package/dist/tools/threat-get-capsule.js +53 -0
- package/dist/tools/threat-get-inference-prompt.d.ts +15 -0
- package/dist/tools/threat-get-inference-prompt.js +73 -0
- package/dist/tools/threat-list-relevant-capsules.d.ts +17 -0
- package/dist/tools/threat-list-relevant-capsules.js +158 -0
- package/dist/tools/threat-run-matcher.d.ts +17 -0
- package/dist/tools/threat-run-matcher.js +145 -0
- package/dist/tools/update-document.d.ts +0 -5
- package/dist/tools/update-document.js +3 -9
- package/dist/tools/update-endpoint.d.ts +1 -6
- package/dist/tools/update-endpoint.js +0 -7
- package/dist/tools/update-finding.d.ts +61 -0
- package/dist/tools/update-finding.js +80 -0
- package/dist/tools/update-mermaid-source.d.ts +0 -13
- package/dist/tools/update-mermaid-source.js +0 -14
- package/dist/tools/verify-trust-mark.d.ts +0 -5
- package/dist/tools/verify-trust-mark.js +0 -6
- package/dist/types.d.ts +14 -14
- package/dist/types.js +22 -28
- package/package.json +38 -15
- package/dist/api-client.js.map +0 -1
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/jwt.js.map +0 -1
- package/dist/auth/keychain.js.map +0 -1
- package/dist/auth/oauth.js.map +0 -1
- package/dist/auth/sessions.js.map +0 -1
- package/dist/auth/token-refresh.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/project-binding.js.map +0 -1
- package/dist/resolve-application-id.js.map +0 -1
- package/dist/sanitize.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/tools/check-project.js.map +0 -1
- package/dist/tools/check-repo-trust.js.map +0 -1
- package/dist/tools/create-diagram.js.map +0 -1
- package/dist/tools/create-document.js.map +0 -1
- package/dist/tools/discover-local-infra.js.map +0 -1
- package/dist/tools/enterprise/capture-evidence.d.ts +0 -54
- package/dist/tools/enterprise/capture-evidence.js +0 -72
- package/dist/tools/enterprise/capture-evidence.js.map +0 -1
- package/dist/tools/enterprise/create-report-ticket.d.ts +0 -34
- package/dist/tools/enterprise/create-report-ticket.js +0 -44
- package/dist/tools/enterprise/create-report-ticket.js.map +0 -1
- package/dist/tools/enterprise/end-pentest-session.d.ts +0 -33
- package/dist/tools/enterprise/end-pentest-session.js +0 -42
- package/dist/tools/enterprise/end-pentest-session.js.map +0 -1
- package/dist/tools/enterprise/generate-report.d.ts +0 -55
- package/dist/tools/enterprise/generate-report.js +0 -111
- package/dist/tools/enterprise/generate-report.js.map +0 -1
- package/dist/tools/enterprise/get-org-zat.js.map +0 -1
- package/dist/tools/enterprise/get-report-status.d.ts +0 -27
- package/dist/tools/enterprise/get-report-status.js +0 -38
- package/dist/tools/enterprise/get-report-status.js.map +0 -1
- package/dist/tools/enterprise/get-threat-model.d.ts +0 -29
- package/dist/tools/enterprise/get-threat-model.js +0 -83
- package/dist/tools/enterprise/get-threat-model.js.map +0 -1
- package/dist/tools/enterprise/list-agents.d.ts +0 -42
- package/dist/tools/enterprise/list-agents.js +0 -95
- package/dist/tools/enterprise/list-agents.js.map +0 -1
- package/dist/tools/enterprise/list-report-issues.d.ts +0 -36
- package/dist/tools/enterprise/list-report-issues.js +0 -50
- package/dist/tools/enterprise/list-report-issues.js.map +0 -1
- package/dist/tools/enterprise/list-threat-models.d.ts +0 -36
- package/dist/tools/enterprise/list-threat-models.js +0 -82
- package/dist/tools/enterprise/list-threat-models.js.map +0 -1
- package/dist/tools/enterprise/manage-actor.d.ts +0 -58
- package/dist/tools/enterprise/manage-actor.js +0 -99
- package/dist/tools/enterprise/manage-actor.js.map +0 -1
- package/dist/tools/enterprise/manage-attack-scenario.d.ts +0 -70
- package/dist/tools/enterprise/manage-attack-scenario.js +0 -89
- package/dist/tools/enterprise/manage-attack-scenario.js.map +0 -1
- package/dist/tools/enterprise/manage-component.d.ts +0 -58
- package/dist/tools/enterprise/manage-component.js +0 -90
- package/dist/tools/enterprise/manage-component.js.map +0 -1
- package/dist/tools/enterprise/manage-data-asset.d.ts +0 -53
- package/dist/tools/enterprise/manage-data-asset.js +0 -90
- package/dist/tools/enterprise/manage-data-asset.js.map +0 -1
- package/dist/tools/enterprise/manage-data-flow.d.ts +0 -57
- package/dist/tools/enterprise/manage-data-flow.js +0 -98
- package/dist/tools/enterprise/manage-data-flow.js.map +0 -1
- package/dist/tools/enterprise/manage-finding.d.ts +0 -69
- package/dist/tools/enterprise/manage-finding.js +0 -106
- package/dist/tools/enterprise/manage-finding.js.map +0 -1
- package/dist/tools/enterprise/manage-security-control.d.ts +0 -59
- package/dist/tools/enterprise/manage-security-control.js +0 -96
- package/dist/tools/enterprise/manage-security-control.js.map +0 -1
- package/dist/tools/enterprise/manage-test-case.d.ts +0 -88
- package/dist/tools/enterprise/manage-test-case.js +0 -119
- package/dist/tools/enterprise/manage-test-case.js.map +0 -1
- package/dist/tools/enterprise/promote-finding-to-issue.d.ts +0 -36
- package/dist/tools/enterprise/promote-finding-to-issue.js +0 -65
- package/dist/tools/enterprise/promote-finding-to-issue.js.map +0 -1
- package/dist/tools/enterprise/publish-report-version.d.ts +0 -34
- package/dist/tools/enterprise/publish-report-version.js +0 -75
- package/dist/tools/enterprise/publish-report-version.js.map +0 -1
- package/dist/tools/enterprise/publish-test-to-library.d.ts +0 -31
- package/dist/tools/enterprise/publish-test-to-library.js +0 -40
- package/dist/tools/enterprise/publish-test-to-library.js.map +0 -1
- package/dist/tools/enterprise/record-test-result.d.ts +0 -67
- package/dist/tools/enterprise/record-test-result.js +0 -75
- package/dist/tools/enterprise/record-test-result.js.map +0 -1
- package/dist/tools/enterprise/start-pentest-session.d.ts +0 -35
- package/dist/tools/enterprise/start-pentest-session.js +0 -50
- package/dist/tools/enterprise/start-pentest-session.js.map +0 -1
- package/dist/tools/enterprise/sync-report-section.d.ts +0 -41
- package/dist/tools/enterprise/sync-report-section.js +0 -79
- package/dist/tools/enterprise/sync-report-section.js.map +0 -1
- package/dist/tools/enterprise/update-report-issue.d.ts +0 -55
- package/dist/tools/enterprise/update-report-issue.js +0 -69
- package/dist/tools/enterprise/update-report-issue.js.map +0 -1
- package/dist/tools/generate-diagram.js.map +0 -1
- package/dist/tools/get-agent-test-results.d.ts +0 -41
- package/dist/tools/get-agent-test-results.js +0 -86
- package/dist/tools/get-agent-test-results.js.map +0 -1
- package/dist/tools/get-application-overview.js.map +0 -1
- package/dist/tools/get-application.js.map +0 -1
- package/dist/tools/get-artifact-content.d.ts +0 -29
- package/dist/tools/get-artifact-content.js +0 -86
- package/dist/tools/get-artifact-content.js.map +0 -1
- package/dist/tools/get-diagram.js.map +0 -1
- package/dist/tools/get-document.js.map +0 -1
- package/dist/tools/get-finding-details.d.ts +0 -28
- package/dist/tools/get-finding-details.js +0 -43
- package/dist/tools/get-finding-details.js.map +0 -1
- package/dist/tools/get-findings.d.ts +0 -57
- package/dist/tools/get-findings.js +0 -103
- package/dist/tools/get-findings.js.map +0 -1
- package/dist/tools/get-oss-zat.js.map +0 -1
- package/dist/tools/get-recon-scan.d.ts +0 -27
- package/dist/tools/get-recon-scan.js +0 -46
- package/dist/tools/get-recon-scan.js.map +0 -1
- package/dist/tools/get-scan-output.d.ts +0 -27
- package/dist/tools/get-scan-output.js +0 -64
- package/dist/tools/get-scan-output.js.map +0 -1
- package/dist/tools/get-scenario-details.d.ts +0 -27
- package/dist/tools/get-scenario-details.js +0 -46
- package/dist/tools/get-scenario-details.js.map +0 -1
- package/dist/tools/get-test-case-results.d.ts +0 -37
- package/dist/tools/get-test-case-results.js +0 -66
- package/dist/tools/get-test-case-results.js.map +0 -1
- package/dist/tools/get-test-details.d.ts +0 -29
- package/dist/tools/get-test-details.js +0 -49
- package/dist/tools/get-test-details.js.map +0 -1
- package/dist/tools/get-trust-keys.js.map +0 -1
- package/dist/tools/import-openapi-endpoints.js.map +0 -1
- package/dist/tools/inspect-zat.js.map +0 -1
- package/dist/tools/list-agent-test-cases.d.ts +0 -41
- package/dist/tools/list-agent-test-cases.js +0 -73
- package/dist/tools/list-agent-test-cases.js.map +0 -1
- package/dist/tools/list-applications.js.map +0 -1
- package/dist/tools/list-diagrams.js.map +0 -1
- package/dist/tools/list-documents.js.map +0 -1
- package/dist/tools/list-endpoints.js.map +0 -1
- package/dist/tools/list-recon-scans.d.ts +0 -36
- package/dist/tools/list-recon-scans.js +0 -74
- package/dist/tools/list-recon-scans.js.map +0 -1
- package/dist/tools/list-scan-artifacts.d.ts +0 -41
- package/dist/tools/list-scan-artifacts.js +0 -63
- package/dist/tools/list-scan-artifacts.js.map +0 -1
- package/dist/tools/list-scans.d.ts +0 -44
- package/dist/tools/list-scans.js +0 -91
- package/dist/tools/list-scans.js.map +0 -1
- package/dist/tools/list-test-library.d.ts +0 -44
- package/dist/tools/list-test-library.js +0 -83
- package/dist/tools/list-test-library.js.map +0 -1
- package/dist/tools/list-test-scenarios.d.ts +0 -31
- package/dist/tools/list-test-scenarios.js +0 -66
- package/dist/tools/list-test-scenarios.js.map +0 -1
- package/dist/tools/local-scan.d.ts +0 -40
- package/dist/tools/local-scan.js +0 -261
- package/dist/tools/local-scan.js.map +0 -1
- package/dist/tools/manage-diagram.js.map +0 -1
- package/dist/tools/open-in-ide.js.map +0 -1
- package/dist/tools/run-test-scenario.d.ts +0 -37
- package/dist/tools/run-test-scenario.js +0 -70
- package/dist/tools/run-test-scenario.js.map +0 -1
- package/dist/tools/scan-pr.d.ts +0 -27
- package/dist/tools/scan-pr.js +0 -51
- package/dist/tools/scan-pr.js.map +0 -1
- package/dist/tools/security-review.js.map +0 -1
- package/dist/tools/setup-red-team-target.d.ts +0 -79
- package/dist/tools/setup-red-team-target.js +0 -430
- package/dist/tools/setup-red-team-target.js.map +0 -1
- package/dist/tools/triage-finding.d.ts +0 -47
- package/dist/tools/triage-finding.js +0 -116
- package/dist/tools/triage-finding.js.map +0 -1
- package/dist/tools/update-document.js.map +0 -1
- package/dist/tools/update-endpoint.js.map +0 -1
- package/dist/tools/update-mermaid-source.js.map +0 -1
- package/dist/tools/verify-trust-mark.js.map +0 -1
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { registerGettingStartedPrompt } from "./getting-started.js";
|
|
2
|
+
import { registerAuditDependenciesPrompt } from "./audit-dependencies.js";
|
|
3
|
+
export function registerAllPrompts(server) {
|
|
4
|
+
registerGettingStartedPrompt(server);
|
|
5
|
+
registerAuditDependenciesPrompt(server);
|
|
6
|
+
}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default `application_id` tool arguments from `.zivis/project.json` when the
|
|
3
|
-
* user omits the parameter (optional `applicationId` on ProjectBinding).
|
|
4
|
-
*/
|
|
5
1
|
export declare function resolveApplicationId(explicit: string | undefined, cwd?: string): string | undefined;
|
|
6
2
|
export declare function requireApplicationId(explicit: string | undefined, cwd?: string): {
|
|
7
3
|
ok: true;
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default `application_id` tool arguments from `.zivis/project.json` when the
|
|
3
|
-
* user omits the parameter (optional `applicationId` on ProjectBinding).
|
|
4
|
-
*/
|
|
5
1
|
import { detectProjectBinding } from "./project-binding.js";
|
|
6
2
|
export function resolveApplicationId(explicit, cwd = process.cwd()) {
|
|
7
3
|
const t = explicit?.trim();
|
|
@@ -18,4 +14,3 @@ export function requireApplicationId(explicit, cwd = process.cwd()) {
|
|
|
18
14
|
message: "application_id is required, or set applicationId in .zivis/project.json for this workspace.",
|
|
19
15
|
};
|
|
20
16
|
}
|
|
21
|
-
//# sourceMappingURL=resolve-application-id.js.map
|
package/dist/sanitize.d.ts
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
* Response Sanitization — Prompt Injection Defense
|
|
3
|
-
*
|
|
4
|
-
* Sanitizes API response data before returning it to the AI assistant.
|
|
5
|
-
* Finding content (titles, descriptions, code snippets, remediation text)
|
|
6
|
-
* is untrusted data from automated scanners and external vulnerability
|
|
7
|
-
* databases. This layer strips common injection patterns.
|
|
8
|
-
*
|
|
9
|
-
* Defense layers:
|
|
10
|
-
* 1. Strip non-printable / control characters
|
|
11
|
-
* 2. Truncate field lengths
|
|
12
|
-
* 3. Strip common LLM prompt injection patterns
|
|
13
|
-
* 4. Encode suspicious formatting
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* Sanitize a single string field
|
|
17
|
-
*/
|
|
1
|
+
export declare function sanitizeInboundText(value: string | undefined, maxLength: number): string | undefined;
|
|
18
2
|
export declare function sanitizeField(value: string, fieldName?: string): string;
|
|
19
|
-
/**
|
|
20
|
-
* Recursively sanitize all string fields in an object.
|
|
21
|
-
* Handles nested objects and arrays.
|
|
22
|
-
*/
|
|
23
3
|
export declare function sanitizeResponse<T>(data: T): T;
|
package/dist/sanitize.js
CHANGED
|
@@ -1,37 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Response Sanitization — Prompt Injection Defense
|
|
3
|
-
*
|
|
4
|
-
* Sanitizes API response data before returning it to the AI assistant.
|
|
5
|
-
* Finding content (titles, descriptions, code snippets, remediation text)
|
|
6
|
-
* is untrusted data from automated scanners and external vulnerability
|
|
7
|
-
* databases. This layer strips common injection patterns.
|
|
8
|
-
*
|
|
9
|
-
* Defense layers:
|
|
10
|
-
* 1. Strip non-printable / control characters
|
|
11
|
-
* 2. Truncate field lengths
|
|
12
|
-
* 3. Strip common LLM prompt injection patterns
|
|
13
|
-
* 4. Encode suspicious formatting
|
|
14
|
-
*/
|
|
15
|
-
// Maximum field lengths (characters)
|
|
16
1
|
const MAX_LENGTHS = {
|
|
17
2
|
title: 500,
|
|
18
3
|
description: 2000,
|
|
19
4
|
codeSnippet: 500,
|
|
20
5
|
code_snippet: 500,
|
|
21
6
|
remediation: 1000,
|
|
22
|
-
// Scan & test case result fields
|
|
23
7
|
attackPayload: 500,
|
|
24
8
|
targetResponse: 500,
|
|
25
9
|
analysisNarrative: 1000,
|
|
26
10
|
remediationGuidance: 1000,
|
|
27
11
|
failureRationale: 1000,
|
|
28
|
-
// Scan output fields (allow longer for narrative content)
|
|
29
12
|
reconMarkdown: 50000,
|
|
30
13
|
attackSurfaceBrief: 5000,
|
|
31
14
|
};
|
|
32
|
-
// Patterns that look like LLM prompt injection attempts
|
|
33
15
|
const INJECTION_PATTERNS = [
|
|
34
|
-
// Common LLM instruction delimiters
|
|
35
16
|
/\[INST\]/gi,
|
|
36
17
|
/\[\/INST\]/gi,
|
|
37
18
|
/<\|system\|>/gi,
|
|
@@ -40,16 +21,13 @@ const INJECTION_PATTERNS = [
|
|
|
40
21
|
/<\|im_start\|>/gi,
|
|
41
22
|
/<\|im_end\|>/gi,
|
|
42
23
|
/<\|endoftext\|>/gi,
|
|
43
|
-
// Role injection attempts
|
|
44
24
|
/^Human:/gim,
|
|
45
25
|
/^Assistant:/gim,
|
|
46
26
|
/^System:/gim,
|
|
47
|
-
// XML-like tags that mimic prompt formatting
|
|
48
27
|
/<system>/gi,
|
|
49
28
|
/<\/system>/gi,
|
|
50
29
|
/<instruction>/gi,
|
|
51
30
|
/<\/instruction>/gi,
|
|
52
|
-
// Common injection prefixes
|
|
53
31
|
/ignore (?:all )?previous instructions/gi,
|
|
54
32
|
/disregard (?:all )?(?:previous |above )?instructions/gi,
|
|
55
33
|
/you are now/gi,
|
|
@@ -57,17 +35,16 @@ const INJECTION_PATTERNS = [
|
|
|
57
35
|
/override:/gi,
|
|
58
36
|
/IMPORTANT: from now on/gi,
|
|
59
37
|
];
|
|
60
|
-
/**
|
|
61
|
-
* Strip non-printable and control characters, preserving newlines and tabs
|
|
62
|
-
*/
|
|
63
38
|
function stripControlChars(text) {
|
|
64
|
-
// Allow printable ASCII, newlines, tabs, and common Unicode
|
|
65
|
-
// Strip C0 controls except \t \n \r, and C1 controls
|
|
66
39
|
return text.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, "");
|
|
67
40
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
41
|
+
const INVISIBLE_UNICODE = /[\u200B-\u200F\u202A-\u202E\u2066-\u2069\uFEFF]/g;
|
|
42
|
+
export function sanitizeInboundText(value, maxLength) {
|
|
43
|
+
if (value === undefined || value === null)
|
|
44
|
+
return value;
|
|
45
|
+
const cleaned = stripControlChars(value).replace(INVISIBLE_UNICODE, "");
|
|
46
|
+
return truncate(cleaned, maxLength);
|
|
47
|
+
}
|
|
71
48
|
function stripInjectionPatterns(text) {
|
|
72
49
|
let result = text;
|
|
73
50
|
for (const pattern of INJECTION_PATTERNS) {
|
|
@@ -75,17 +52,11 @@ function stripInjectionPatterns(text) {
|
|
|
75
52
|
}
|
|
76
53
|
return result;
|
|
77
54
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Truncate a string to max length with ellipsis
|
|
80
|
-
*/
|
|
81
55
|
function truncate(text, maxLength) {
|
|
82
56
|
if (text.length <= maxLength)
|
|
83
57
|
return text;
|
|
84
58
|
return text.slice(0, maxLength - 3) + "...";
|
|
85
59
|
}
|
|
86
|
-
/**
|
|
87
|
-
* Sanitize a single string field
|
|
88
|
-
*/
|
|
89
60
|
export function sanitizeField(value, fieldName) {
|
|
90
61
|
let result = stripControlChars(value);
|
|
91
62
|
result = stripInjectionPatterns(result);
|
|
@@ -95,10 +66,6 @@ export function sanitizeField(value, fieldName) {
|
|
|
95
66
|
}
|
|
96
67
|
return result;
|
|
97
68
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Recursively sanitize all string fields in an object.
|
|
100
|
-
* Handles nested objects and arrays.
|
|
101
|
-
*/
|
|
102
69
|
export function sanitizeResponse(data) {
|
|
103
70
|
if (data === null || data === undefined)
|
|
104
71
|
return data;
|
|
@@ -122,4 +89,3 @@ export function sanitizeResponse(data) {
|
|
|
122
89
|
}
|
|
123
90
|
return data;
|
|
124
91
|
}
|
|
125
|
-
//# sourceMappingURL=sanitize.js.map
|
package/dist/server.d.ts
CHANGED
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server
|
|
3
|
-
*
|
|
4
|
-
* Sets up the Model Context Protocol server using the official SDK
|
|
5
|
-
* with stdio transport. Registers all ZIVIS security tools.
|
|
6
|
-
*
|
|
7
|
-
* IMPORTANT: This server communicates over stdout (JSON-RPC 2.0).
|
|
8
|
-
* Never use console.log() — use console.error() for all logging.
|
|
9
|
-
*/
|
|
10
1
|
import type { ZivisConfig } from "./types.js";
|
|
11
|
-
|
|
12
|
-
* Create and start the MCP server with all tools registered
|
|
13
|
-
*/
|
|
14
|
-
export declare function startServer(config?: ZivisConfig): Promise<void>;
|
|
2
|
+
export declare function startServer(incoming?: ZivisConfig): Promise<void>;
|