shield360 1.0.1 → 1.2.0
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/README.md +392 -37
- package/dist/__tests__/build-info.test.d.ts +1 -0
- package/dist/__tests__/build-info.test.js +196 -0
- package/dist/__tests__/build-info.test.js.map +1 -0
- package/dist/__tests__/code-location.test.d.ts +1 -0
- package/dist/__tests__/code-location.test.js +180 -0
- package/dist/__tests__/code-location.test.js.map +1 -0
- package/dist/__tests__/masking.test.d.ts +1 -0
- package/dist/__tests__/masking.test.js +66 -0
- package/dist/__tests__/masking.test.js.map +1 -0
- package/dist/__tests__/pricing-claude-5.test.js +3 -0
- package/dist/__tests__/pricing-claude-5.test.js.map +1 -1
- package/dist/__tests__/register.e2e.test.d.ts +1 -0
- package/dist/__tests__/register.e2e.test.js +264 -0
- package/dist/__tests__/register.e2e.test.js.map +1 -0
- package/dist/__tests__/register.test.js +60 -0
- package/dist/__tests__/register.test.js.map +1 -1
- package/dist/agents/__tests__/agents.test.d.ts +1 -0
- package/dist/agents/__tests__/agents.test.js +529 -0
- package/dist/agents/__tests__/agents.test.js.map +1 -0
- package/dist/agents/index.d.ts +15 -0
- package/dist/agents/index.js +25 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/passport.d.ts +92 -0
- package/dist/agents/passport.js +301 -0
- package/dist/agents/passport.js.map +1 -0
- package/dist/agents/policy.d.ts +24 -0
- package/dist/agents/policy.js +93 -0
- package/dist/agents/policy.js.map +1 -0
- package/dist/agents/replay.d.ts +20 -0
- package/dist/agents/replay.js +47 -0
- package/dist/agents/replay.js.map +1 -0
- package/dist/agents/report.d.ts +30 -0
- package/dist/agents/report.js +93 -0
- package/dist/agents/report.js.map +1 -0
- package/dist/agents/types.d.ts +148 -0
- package/dist/agents/types.js +37 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/agents/verifier.d.ts +33 -0
- package/dist/agents/verifier.js +276 -0
- package/dist/agents/verifier.js.map +1 -0
- package/dist/ai-security/__tests__/bench.test.d.ts +1 -0
- package/dist/ai-security/__tests__/bench.test.js +50 -0
- package/dist/ai-security/__tests__/bench.test.js.map +1 -0
- package/dist/ai-security/__tests__/checks.test.d.ts +1 -0
- package/dist/ai-security/__tests__/checks.test.js +248 -0
- package/dist/ai-security/__tests__/checks.test.js.map +1 -0
- package/dist/ai-security/__tests__/config.test.d.ts +1 -0
- package/dist/ai-security/__tests__/config.test.js +164 -0
- package/dist/ai-security/__tests__/config.test.js.map +1 -0
- package/dist/ai-security/__tests__/detection.test.d.ts +1 -0
- package/dist/ai-security/__tests__/detection.test.js +114 -0
- package/dist/ai-security/__tests__/detection.test.js.map +1 -0
- package/dist/ai-security/__tests__/fixtures.d.ts +8 -0
- package/dist/ai-security/__tests__/fixtures.js +30 -0
- package/dist/ai-security/__tests__/fixtures.js.map +1 -0
- package/dist/ai-security/__tests__/hooks.test.d.ts +1 -0
- package/dist/ai-security/__tests__/hooks.test.js +174 -0
- package/dist/ai-security/__tests__/hooks.test.js.map +1 -0
- package/dist/ai-security/__tests__/stream.test.d.ts +1 -0
- package/dist/ai-security/__tests__/stream.test.js +85 -0
- package/dist/ai-security/__tests__/stream.test.js.map +1 -0
- package/dist/ai-security/config.d.ts +94 -0
- package/dist/ai-security/config.js +241 -0
- package/dist/ai-security/config.js.map +1 -0
- package/dist/ai-security/context.d.ts +45 -0
- package/dist/ai-security/context.js +108 -0
- package/dist/ai-security/context.js.map +1 -0
- package/dist/ai-security/custom-kinds.d.ts +23 -0
- package/dist/ai-security/custom-kinds.js +97 -0
- package/dist/ai-security/custom-kinds.js.map +1 -0
- package/dist/ai-security/events.d.ts +77 -0
- package/dist/ai-security/events.js +153 -0
- package/dist/ai-security/events.js.map +1 -0
- package/dist/ai-security/hooks.d.ts +48 -0
- package/dist/ai-security/hooks.js +461 -0
- package/dist/ai-security/hooks.js.map +1 -0
- package/dist/ai-security/index.d.ts +209 -0
- package/dist/ai-security/index.js +587 -0
- package/dist/ai-security/index.js.map +1 -0
- package/dist/ai-security/injection-rules.json +1024 -0
- package/dist/ai-security/injection.d.ts +46 -0
- package/dist/ai-security/injection.js +635 -0
- package/dist/ai-security/injection.js.map +1 -0
- package/dist/ai-security/jailbreak.d.ts +38 -0
- package/dist/ai-security/jailbreak.js +73 -0
- package/dist/ai-security/jailbreak.js.map +1 -0
- package/dist/ai-security/limits.d.ts +84 -0
- package/dist/ai-security/limits.js +195 -0
- package/dist/ai-security/limits.js.map +1 -0
- package/dist/ai-security/mcp.d.ts +82 -0
- package/dist/ai-security/mcp.js +150 -0
- package/dist/ai-security/mcp.js.map +1 -0
- package/dist/ai-security/output.d.ts +107 -0
- package/dist/ai-security/output.js +390 -0
- package/dist/ai-security/output.js.map +1 -0
- package/dist/ai-security/policy.d.ts +125 -0
- package/dist/ai-security/policy.js +196 -0
- package/dist/ai-security/policy.js.map +1 -0
- package/dist/ai-security/rag.d.ts +70 -0
- package/dist/ai-security/rag.js +174 -0
- package/dist/ai-security/rag.js.map +1 -0
- package/dist/ai-security/tool-rules.json +203 -0
- package/dist/ai-security/tools.d.ts +46 -0
- package/dist/ai-security/tools.js +62 -0
- package/dist/ai-security/tools.js.map +1 -0
- package/dist/budgets/__tests__/budgets.test.d.ts +1 -0
- package/dist/budgets/__tests__/budgets.test.js +134 -0
- package/dist/budgets/__tests__/budgets.test.js.map +1 -0
- package/dist/budgets/auto.d.ts +25 -0
- package/dist/budgets/auto.js +63 -0
- package/dist/budgets/auto.js.map +1 -0
- package/dist/budgets/index.d.ts +110 -0
- package/dist/budgets/index.js +239 -0
- package/dist/budgets/index.js.map +1 -0
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/customer/__tests__/customer.test.d.ts +1 -0
- package/dist/customer/__tests__/customer.test.js +155 -0
- package/dist/customer/__tests__/customer.test.js.map +1 -0
- package/dist/customer/index.d.ts +48 -0
- package/dist/customer/index.js +132 -0
- package/dist/customer/index.js.map +1 -0
- package/dist/feedback/__tests__/feedback.test.d.ts +1 -0
- package/dist/feedback/__tests__/feedback.test.js +80 -0
- package/dist/feedback/__tests__/feedback.test.js.map +1 -0
- package/dist/feedback/index.d.ts +48 -0
- package/dist/feedback/index.js +97 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/flags/__tests__/flags.test.d.ts +1 -0
- package/dist/flags/__tests__/flags.test.js +301 -0
- package/dist/flags/__tests__/flags.test.js.map +1 -0
- package/dist/flags/client.d.ts +131 -0
- package/dist/flags/client.js +301 -0
- package/dist/flags/client.js.map +1 -0
- package/dist/flags/engine.d.ts +200 -0
- package/dist/flags/engine.js +677 -0
- package/dist/flags/engine.js.map +1 -0
- package/dist/flags/index.d.ts +4 -0
- package/dist/flags/index.js +16 -0
- package/dist/flags/index.js.map +1 -0
- package/dist/guard/__tests__/findings.test.js +28 -9
- package/dist/guard/__tests__/findings.test.js.map +1 -1
- package/dist/guard/__tests__/report.test.js +67 -0
- package/dist/guard/__tests__/report.test.js.map +1 -1
- package/dist/guard/base.d.ts +2 -0
- package/dist/guard/base.js +4 -0
- package/dist/guard/base.js.map +1 -1
- package/dist/guard/findings.d.ts +12 -2
- package/dist/guard/findings.js +19 -49
- package/dist/guard/findings.js.map +1 -1
- package/dist/guard/heartbeat.d.ts +34 -0
- package/dist/guard/heartbeat.js +83 -0
- package/dist/guard/heartbeat.js.map +1 -0
- package/dist/guard/integration.d.ts +33 -3
- package/dist/guard/integration.js +106 -32
- package/dist/guard/integration.js.map +1 -1
- package/dist/guard/pipeline.d.ts +10 -1
- package/dist/guard/pipeline.js +14 -0
- package/dist/guard/pipeline.js.map +1 -1
- package/dist/guard/report.d.ts +24 -1
- package/dist/guard/report.js +67 -18
- package/dist/guard/report.js.map +1 -1
- package/dist/index.d.ts +90 -0
- package/dist/index.js +225 -3
- package/dist/index.js.map +1 -1
- package/dist/instrumentation/__tests__/langchain-wrapper.test.js +1 -1
- package/dist/instrumentation/__tests__/langchain-wrapper.test.js.map +1 -1
- package/dist/instrumentation/anthropic/wrapper.js +4 -0
- package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
- package/dist/instrumentation/mcp/wrapper.js +7 -1
- package/dist/instrumentation/mcp/wrapper.js.map +1 -1
- package/dist/instrumentation/openai/wrapper.js +6 -0
- package/dist/instrumentation/openai/wrapper.js.map +1 -1
- package/dist/masking.d.ts +42 -0
- package/dist/masking.js +197 -0
- package/dist/masking.js.map +1 -0
- package/dist/otel/__tests__/app-logs-safety.test.d.ts +1 -0
- package/dist/otel/__tests__/app-logs-safety.test.js +129 -0
- package/dist/otel/__tests__/app-logs-safety.test.js.map +1 -0
- package/dist/otel/__tests__/app-logs.test.d.ts +1 -0
- package/dist/otel/__tests__/app-logs.test.js +269 -0
- package/dist/otel/__tests__/app-logs.test.js.map +1 -0
- package/dist/otel/__tests__/log-auto.test.d.ts +1 -0
- package/dist/otel/__tests__/log-auto.test.js +125 -0
- package/dist/otel/__tests__/log-auto.test.js.map +1 -0
- package/dist/otel/__tests__/log-bridges.test.d.ts +1 -0
- package/dist/otel/__tests__/log-bridges.test.js +170 -0
- package/dist/otel/__tests__/log-bridges.test.js.map +1 -0
- package/dist/otel/__tests__/system-metrics.test.d.ts +1 -0
- package/dist/otel/__tests__/system-metrics.test.js +79 -0
- package/dist/otel/__tests__/system-metrics.test.js.map +1 -0
- package/dist/otel/app-logs.d.ts +80 -0
- package/dist/otel/app-logs.js +195 -0
- package/dist/otel/app-logs.js.map +1 -0
- package/dist/otel/build-info.d.ts +23 -0
- package/dist/otel/build-info.js +176 -0
- package/dist/otel/build-info.js.map +1 -0
- package/dist/otel/code-location.d.ts +49 -0
- package/dist/otel/code-location.js +233 -0
- package/dist/otel/code-location.js.map +1 -0
- package/dist/otel/events.d.ts +1 -0
- package/dist/otel/events.js +21 -12
- package/dist/otel/events.js.map +1 -1
- package/dist/otel/log-auto.d.ts +44 -0
- package/dist/otel/log-auto.js +200 -0
- package/dist/otel/log-auto.js.map +1 -0
- package/dist/otel/log-bridges.d.ts +54 -0
- package/dist/otel/log-bridges.js +307 -0
- package/dist/otel/log-bridges.js.map +1 -0
- package/dist/otel/system-metrics.d.ts +39 -0
- package/dist/otel/system-metrics.js +166 -0
- package/dist/otel/system-metrics.js.map +1 -0
- package/dist/otel/tracing.js +12 -1
- package/dist/otel/tracing.js.map +1 -1
- package/dist/pricing.json +100 -42
- package/dist/protect/__tests__/protect.test.d.ts +1 -0
- package/dist/protect/__tests__/protect.test.js +210 -0
- package/dist/protect/__tests__/protect.test.js.map +1 -0
- package/dist/protect/index.d.ts +103 -0
- package/dist/protect/index.js +196 -0
- package/dist/protect/index.js.map +1 -0
- package/dist/protect/mcp.d.ts +13 -0
- package/dist/protect/mcp.js +49 -0
- package/dist/protect/mcp.js.map +1 -0
- package/dist/protect/mode.d.ts +89 -0
- package/dist/protect/mode.js +134 -0
- package/dist/protect/mode.js.map +1 -0
- package/dist/rasp/__tests__/auto-http.test.d.ts +1 -0
- package/dist/rasp/__tests__/auto-http.test.js +136 -0
- package/dist/rasp/__tests__/auto-http.test.js.map +1 -0
- package/dist/rasp/__tests__/baseline.test.d.ts +1 -0
- package/dist/rasp/__tests__/baseline.test.js +86 -0
- package/dist/rasp/__tests__/baseline.test.js.map +1 -0
- package/dist/rasp/__tests__/benign-corpus.test.d.ts +1 -0
- package/dist/rasp/__tests__/benign-corpus.test.js +68 -0
- package/dist/rasp/__tests__/benign-corpus.test.js.map +1 -0
- package/dist/rasp/__tests__/capture-context.test.d.ts +1 -0
- package/dist/rasp/__tests__/capture-context.test.js +135 -0
- package/dist/rasp/__tests__/capture-context.test.js.map +1 -0
- package/dist/rasp/__tests__/code-hook.test.d.ts +1 -0
- package/dist/rasp/__tests__/code-hook.test.js +218 -0
- package/dist/rasp/__tests__/code-hook.test.js.map +1 -0
- package/dist/rasp/__tests__/config-client.test.d.ts +1 -0
- package/dist/rasp/__tests__/config-client.test.js +283 -0
- package/dist/rasp/__tests__/config-client.test.js.map +1 -0
- package/dist/rasp/__tests__/corpus.d.ts +13 -0
- package/dist/rasp/__tests__/corpus.js +111 -0
- package/dist/rasp/__tests__/corpus.js.map +1 -0
- package/dist/rasp/__tests__/custom-rules.test.d.ts +1 -0
- package/dist/rasp/__tests__/custom-rules.test.js +276 -0
- package/dist/rasp/__tests__/custom-rules.test.js.map +1 -0
- package/dist/rasp/__tests__/db-hook.test.d.ts +1 -0
- package/dist/rasp/__tests__/db-hook.test.js +438 -0
- package/dist/rasp/__tests__/db-hook.test.js.map +1 -0
- package/dist/rasp/__tests__/deception.test.d.ts +1 -0
- package/dist/rasp/__tests__/deception.test.js +567 -0
- package/dist/rasp/__tests__/deception.test.js.map +1 -0
- package/dist/rasp/__tests__/detect.test.d.ts +1 -0
- package/dist/rasp/__tests__/detect.test.js +276 -0
- package/dist/rasp/__tests__/detect.test.js.map +1 -0
- package/dist/rasp/__tests__/esm-exports.test.d.ts +1 -0
- package/dist/rasp/__tests__/esm-exports.test.js +20 -0
- package/dist/rasp/__tests__/esm-exports.test.js.map +1 -0
- package/dist/rasp/__tests__/fs-hook.test.d.ts +1 -0
- package/dist/rasp/__tests__/fs-hook.test.js +241 -0
- package/dist/rasp/__tests__/fs-hook.test.js.map +1 -0
- package/dist/rasp/__tests__/hook-contracts.test.d.ts +1 -0
- package/dist/rasp/__tests__/hook-contracts.test.js +201 -0
- package/dist/rasp/__tests__/hook-contracts.test.js.map +1 -0
- package/dist/rasp/__tests__/hook-kit.d.ts +42 -0
- package/dist/rasp/__tests__/hook-kit.js +139 -0
- package/dist/rasp/__tests__/hook-kit.js.map +1 -0
- package/dist/rasp/__tests__/http-hook.test.d.ts +1 -0
- package/dist/rasp/__tests__/http-hook.test.js +250 -0
- package/dist/rasp/__tests__/http-hook.test.js.map +1 -0
- package/dist/rasp/__tests__/iast.test.d.ts +1 -0
- package/dist/rasp/__tests__/iast.test.js +361 -0
- package/dist/rasp/__tests__/iast.test.js.map +1 -0
- package/dist/rasp/__tests__/include-hook.test.d.ts +1 -0
- package/dist/rasp/__tests__/include-hook.test.js +122 -0
- package/dist/rasp/__tests__/include-hook.test.js.map +1 -0
- package/dist/rasp/__tests__/middleware.test.d.ts +1 -0
- package/dist/rasp/__tests__/middleware.test.js +302 -0
- package/dist/rasp/__tests__/middleware.test.js.map +1 -0
- package/dist/rasp/__tests__/process-hook.test.d.ts +1 -0
- package/dist/rasp/__tests__/process-hook.test.js +238 -0
- package/dist/rasp/__tests__/process-hook.test.js.map +1 -0
- package/dist/rasp/__tests__/reporter.test.d.ts +1 -0
- package/dist/rasp/__tests__/reporter.test.js +114 -0
- package/dist/rasp/__tests__/reporter.test.js.map +1 -0
- package/dist/rasp/__tests__/route.test.d.ts +1 -0
- package/dist/rasp/__tests__/route.test.js +46 -0
- package/dist/rasp/__tests__/route.test.js.map +1 -0
- package/dist/rasp/__tests__/rule-expr.test.d.ts +1 -0
- package/dist/rasp/__tests__/rule-expr.test.js +151 -0
- package/dist/rasp/__tests__/rule-expr.test.js.map +1 -0
- package/dist/rasp/__tests__/rule-phases.test.d.ts +1 -0
- package/dist/rasp/__tests__/rule-phases.test.js +271 -0
- package/dist/rasp/__tests__/rule-phases.test.js.map +1 -0
- package/dist/rasp/__tests__/sinks-hook.test.d.ts +1 -0
- package/dist/rasp/__tests__/sinks-hook.test.js +177 -0
- package/dist/rasp/__tests__/sinks-hook.test.js.map +1 -0
- package/dist/rasp/__tests__/targets.test.d.ts +1 -0
- package/dist/rasp/__tests__/targets.test.js +82 -0
- package/dist/rasp/__tests__/targets.test.js.map +1 -0
- package/dist/rasp/__tests__/template-hook.test.d.ts +1 -0
- package/dist/rasp/__tests__/template-hook.test.js +254 -0
- package/dist/rasp/__tests__/template-hook.test.js.map +1 -0
- package/dist/rasp/__tests__/upload.test.d.ts +1 -0
- package/dist/rasp/__tests__/upload.test.js +81 -0
- package/dist/rasp/__tests__/upload.test.js.map +1 -0
- package/dist/rasp/__tests__/vpatch-engine.test.d.ts +1 -0
- package/dist/rasp/__tests__/vpatch-engine.test.js +177 -0
- package/dist/rasp/__tests__/vpatch-engine.test.js.map +1 -0
- package/dist/rasp/auto-http.d.ts +6 -0
- package/dist/rasp/auto-http.js +194 -0
- package/dist/rasp/auto-http.js.map +1 -0
- package/dist/rasp/baseline.d.ts +35 -0
- package/dist/rasp/baseline.js +91 -0
- package/dist/rasp/baseline.js.map +1 -0
- package/dist/rasp/capture.d.ts +76 -0
- package/dist/rasp/capture.js +304 -0
- package/dist/rasp/capture.js.map +1 -0
- package/dist/rasp/config-client.d.ts +122 -0
- package/dist/rasp/config-client.js +337 -0
- package/dist/rasp/config-client.js.map +1 -0
- package/dist/rasp/context.d.ts +65 -0
- package/dist/rasp/context.js +68 -0
- package/dist/rasp/context.js.map +1 -0
- package/dist/rasp/custom-rules.d.ts +68 -0
- package/dist/rasp/custom-rules.js +222 -0
- package/dist/rasp/custom-rules.js.map +1 -0
- package/dist/rasp/data/default-rules.json +199 -0
- package/dist/rasp/data/default-sinks.json +4 -0
- package/dist/rasp/data/dnslog-domains.json +11 -0
- package/dist/rasp/deception.d.ts +70 -0
- package/dist/rasp/deception.js +220 -0
- package/dist/rasp/deception.js.map +1 -0
- package/dist/rasp/detect.d.ts +68 -0
- package/dist/rasp/detect.js +671 -0
- package/dist/rasp/detect.js.map +1 -0
- package/dist/rasp/engine.d.ts +107 -0
- package/dist/rasp/engine.js +330 -0
- package/dist/rasp/engine.js.map +1 -0
- package/dist/rasp/hooks/code.d.ts +20 -0
- package/dist/rasp/hooks/code.js +334 -0
- package/dist/rasp/hooks/code.js.map +1 -0
- package/dist/rasp/hooks/db.d.ts +48 -0
- package/dist/rasp/hooks/db.js +322 -0
- package/dist/rasp/hooks/db.js.map +1 -0
- package/dist/rasp/hooks/esm.d.ts +7 -0
- package/dist/rasp/hooks/esm.js +18 -0
- package/dist/rasp/hooks/esm.js.map +1 -0
- package/dist/rasp/hooks/fs.d.ts +3 -0
- package/dist/rasp/hooks/fs.js +206 -0
- package/dist/rasp/hooks/fs.js.map +1 -0
- package/dist/rasp/hooks/http.d.ts +4 -0
- package/dist/rasp/hooks/http.js +213 -0
- package/dist/rasp/hooks/http.js.map +1 -0
- package/dist/rasp/hooks/include.d.ts +9 -0
- package/dist/rasp/hooks/include.js +79 -0
- package/dist/rasp/hooks/include.js.map +1 -0
- package/dist/rasp/hooks/marks.d.ts +2 -0
- package/dist/rasp/hooks/marks.js +16 -0
- package/dist/rasp/hooks/marks.js.map +1 -0
- package/dist/rasp/hooks/process.d.ts +22 -0
- package/dist/rasp/hooks/process.js +191 -0
- package/dist/rasp/hooks/process.js.map +1 -0
- package/dist/rasp/hooks/sinks.d.ts +54 -0
- package/dist/rasp/hooks/sinks.js +329 -0
- package/dist/rasp/hooks/sinks.js.map +1 -0
- package/dist/rasp/hooks/template.d.ts +21 -0
- package/dist/rasp/hooks/template.js +152 -0
- package/dist/rasp/hooks/template.js.map +1 -0
- package/dist/rasp/iast-rules.d.ts +82 -0
- package/dist/rasp/iast-rules.js +240 -0
- package/dist/rasp/iast-rules.js.map +1 -0
- package/dist/rasp/iast-scope.d.ts +29 -0
- package/dist/rasp/iast-scope.js +54 -0
- package/dist/rasp/iast-scope.js.map +1 -0
- package/dist/rasp/iast.d.ts +81 -0
- package/dist/rasp/iast.js +272 -0
- package/dist/rasp/iast.js.map +1 -0
- package/dist/rasp/index.d.ts +52 -0
- package/dist/rasp/index.js +280 -0
- package/dist/rasp/index.js.map +1 -0
- package/dist/rasp/lexers.d.ts +32 -0
- package/dist/rasp/lexers.js +444 -0
- package/dist/rasp/lexers.js.map +1 -0
- package/dist/rasp/middleware.d.ts +155 -0
- package/dist/rasp/middleware.js +568 -0
- package/dist/rasp/middleware.js.map +1 -0
- package/dist/rasp/model-output.d.ts +14 -0
- package/dist/rasp/model-output.js +107 -0
- package/dist/rasp/model-output.js.map +1 -0
- package/dist/rasp/normalize.d.ts +23 -0
- package/dist/rasp/normalize.js +140 -0
- package/dist/rasp/normalize.js.map +1 -0
- package/dist/rasp/reporter.d.ts +60 -0
- package/dist/rasp/reporter.js +230 -0
- package/dist/rasp/reporter.js.map +1 -0
- package/dist/rasp/rule-expr.d.ts +236 -0
- package/dist/rasp/rule-expr.js +1253 -0
- package/dist/rasp/rule-expr.js.map +1 -0
- package/dist/rasp/template.d.ts +53 -0
- package/dist/rasp/template.js +336 -0
- package/dist/rasp/template.js.map +1 -0
- package/dist/rasp/types.d.ts +110 -0
- package/dist/rasp/types.js +51 -0
- package/dist/rasp/types.js.map +1 -0
- package/dist/rasp/vpatch.d.ts +55 -0
- package/dist/rasp/vpatch.js +120 -0
- package/dist/rasp/vpatch.js.map +1 -0
- package/dist/register.js +52 -11
- package/dist/register.js.map +1 -1
- package/dist/semantic-convention.d.ts +2 -0
- package/dist/semantic-convention.js +5 -0
- package/dist/semantic-convention.js.map +1 -1
- package/dist/types.d.ts +96 -0
- package/dist/zero-code.d.ts +8 -0
- package/dist/zero-code.js +38 -0
- package/dist/zero-code.js.map +1 -0
- package/package.json +18 -2
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import { Guard } from './base';
|
|
26
26
|
import { Pipeline } from './pipeline';
|
|
27
|
+
import { type ResolvedProtect } from '../protect/mode';
|
|
27
28
|
type Extractor = (arg: any) => string;
|
|
28
29
|
export declare function extractOpenAIInput(kwargs: Record<string, any>): string;
|
|
29
30
|
export declare function extractOpenAIOutput(response: any): string;
|
|
@@ -31,14 +32,43 @@ export declare function extractAnthropicInput(kwargs: Record<string, any>): stri
|
|
|
31
32
|
export declare function extractAnthropicOutput(response: any): string;
|
|
32
33
|
export declare function extractGenericInput(kwargs: Record<string, any>): string;
|
|
33
34
|
export declare function extractGenericOutput(response: any): string;
|
|
35
|
+
export interface GuardedMethod {
|
|
36
|
+
npmPackage: string;
|
|
37
|
+
protoPath: string[];
|
|
38
|
+
methodName: string;
|
|
39
|
+
extractInput: Extractor;
|
|
40
|
+
extractOutput: Extractor;
|
|
41
|
+
}
|
|
42
|
+
export declare const GUARDED_METHODS: GuardedMethod[];
|
|
34
43
|
/** @internal exported for tests */
|
|
35
|
-
export declare function applyPreflight(pipeline: Pipeline, kwargs: Record<string, any>, extractInput: Extractor): Record<string, any>;
|
|
44
|
+
export declare function applyPreflight(pipeline: Pipeline, kwargs: Record<string, any>, extractInput: Extractor, protect?: ResolvedProtect): Record<string, any>;
|
|
36
45
|
/**
|
|
37
46
|
* Each choice and text block is redacted on its own, so none is left holding
|
|
38
47
|
* the original text or another block's.
|
|
39
48
|
*
|
|
40
49
|
* @internal exported for tests
|
|
41
50
|
*/
|
|
42
|
-
export declare function applyPostflight(pipeline: Pipeline, response: any, extractOutput: Extractor): any;
|
|
43
|
-
export declare function
|
|
51
|
+
export declare function applyPostflight(pipeline: Pipeline, response: any, extractOutput: Extractor, protect?: ResolvedProtect): any;
|
|
52
|
+
export declare function resolveProto(moduleExports: any, protoPath: string[]): any;
|
|
53
|
+
export type AutoGuardReport = {
|
|
54
|
+
/** npm packages whose provider methods were wrapped. */
|
|
55
|
+
wrapped: string[];
|
|
56
|
+
/** Required packages that were not wrapped: not installed, or not resolvable from this module (an ESM-only resolution). */
|
|
57
|
+
missing: string[];
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Wraps every installed provider the SDK knows. With Shield Protect in
|
|
61
|
+
* enforced mode the pipeline fails closed (failOpen is overridden, with a
|
|
62
|
+
* warning when it was set), and a package named in `required` that could
|
|
63
|
+
* not be wrapped throws ProtectReadinessError: protected startup fails
|
|
64
|
+
* rather than running unguarded.
|
|
65
|
+
*
|
|
66
|
+
* Supported module loading: CommonJS `require`, and ESM `import` of a
|
|
67
|
+
* provider whose package resolves to the same CommonJS build (openai and
|
|
68
|
+
* @anthropic-ai/sdk do under Node's default conditions). An ESM-only
|
|
69
|
+
* resolution loads a class this function never sees; name the package in
|
|
70
|
+
* `required` so enforced mode fails rather than silently not wrapping it,
|
|
71
|
+
* or use protectTool() which needs no patching.
|
|
72
|
+
*/
|
|
73
|
+
export declare function setupAutoGuards(guards: Guard[], failOpen?: boolean, protect?: ResolvedProtect): AutoGuardReport;
|
|
44
74
|
export {};
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* Must stay in sync with: sdk/python/src/shield360/guard/_integration.py
|
|
25
25
|
*/
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.GUARDED_METHODS = void 0;
|
|
27
28
|
exports.extractOpenAIInput = extractOpenAIInput;
|
|
28
29
|
exports.extractOpenAIOutput = extractOpenAIOutput;
|
|
29
30
|
exports.extractAnthropicInput = extractAnthropicInput;
|
|
@@ -32,24 +33,40 @@ exports.extractGenericInput = extractGenericInput;
|
|
|
32
33
|
exports.extractGenericOutput = extractGenericOutput;
|
|
33
34
|
exports.applyPreflight = applyPreflight;
|
|
34
35
|
exports.applyPostflight = applyPostflight;
|
|
36
|
+
exports.resolveProto = resolveProto;
|
|
35
37
|
exports.setupAutoGuards = setupAutoGuards;
|
|
36
38
|
const base_1 = require("./base");
|
|
37
39
|
const pipeline_1 = require("./pipeline");
|
|
40
|
+
const mode_1 = require("../protect/mode");
|
|
41
|
+
/** The text in a message's content: a string, or the text parts of a list of blocks. */
|
|
42
|
+
function contentText(content) {
|
|
43
|
+
if (typeof content === 'string')
|
|
44
|
+
return content ? [content] : [];
|
|
45
|
+
if (!Array.isArray(content))
|
|
46
|
+
return [];
|
|
47
|
+
const out = [];
|
|
48
|
+
for (const block of content) {
|
|
49
|
+
if (typeof block === 'string')
|
|
50
|
+
out.push(block);
|
|
51
|
+
else if (block && typeof block === 'object' && typeof block.text === 'string')
|
|
52
|
+
out.push(block.text);
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
38
56
|
function extractOpenAIInput(kwargs) {
|
|
39
57
|
const messages = kwargs.messages || kwargs.input || [];
|
|
40
|
-
if (typeof messages === 'string')
|
|
41
|
-
return messages;
|
|
42
58
|
const parts = [];
|
|
43
|
-
|
|
59
|
+
// The Responses API's instructions are a system prompt: scanned like one.
|
|
60
|
+
if (typeof kwargs.instructions === 'string' && kwargs.instructions)
|
|
61
|
+
parts.push(kwargs.instructions);
|
|
62
|
+
if (typeof messages === 'string')
|
|
63
|
+
parts.push(messages);
|
|
64
|
+
else if (Array.isArray(messages)) {
|
|
44
65
|
for (const m of messages) {
|
|
45
|
-
if (typeof m === 'object' && m !== null)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
parts.push(content);
|
|
49
|
-
}
|
|
50
|
-
else if (typeof m === 'string') {
|
|
66
|
+
if (typeof m === 'object' && m !== null)
|
|
67
|
+
parts.push(...contentText(m.content));
|
|
68
|
+
else if (typeof m === 'string')
|
|
51
69
|
parts.push(m);
|
|
52
|
-
}
|
|
53
70
|
}
|
|
54
71
|
}
|
|
55
72
|
return parts.join(' ');
|
|
@@ -89,6 +106,8 @@ function extractOpenAIOutput(response) {
|
|
|
89
106
|
function extractAnthropicInput(kwargs) {
|
|
90
107
|
const messages = kwargs.messages || [];
|
|
91
108
|
const parts = [];
|
|
109
|
+
// The system prompt is input too: a string, or text blocks.
|
|
110
|
+
parts.push(...contentText(kwargs.system));
|
|
92
111
|
if (Array.isArray(messages)) {
|
|
93
112
|
for (const m of messages) {
|
|
94
113
|
if (typeof m === 'object' && m !== null) {
|
|
@@ -187,7 +206,7 @@ function extractGenericOutput(response) {
|
|
|
187
206
|
}
|
|
188
207
|
return '';
|
|
189
208
|
}
|
|
190
|
-
|
|
209
|
+
exports.GUARDED_METHODS = [
|
|
191
210
|
// OpenAI
|
|
192
211
|
{ npmPackage: 'openai', protoPath: ['OpenAI', 'Chat', 'Completions', 'prototype'], methodName: 'create', extractInput: extractOpenAIInput, extractOutput: extractOpenAIOutput },
|
|
193
212
|
{ npmPackage: 'openai', protoPath: ['OpenAI', 'Responses', 'prototype'], methodName: 'create', extractInput: extractOpenAIInput, extractOutput: extractOpenAIOutput },
|
|
@@ -240,15 +259,51 @@ function redactMessages(pipeline, value, phase) {
|
|
|
240
259
|
return m;
|
|
241
260
|
});
|
|
242
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Shield Protect: what a mode does with a pipeline result, and with a
|
|
264
|
+
* pipeline that failed. No mode (legacy): a DENY throws, as it always did.
|
|
265
|
+
* observe: recorded, the call goes on. warn: as observe, and logged.
|
|
266
|
+
* enforced: a DENY throws; a failed pipeline throws (fail closed), whatever
|
|
267
|
+
* failOpen says.
|
|
268
|
+
*/
|
|
269
|
+
function evaluateUnder(pipeline, text, phase, protect) {
|
|
270
|
+
const mode = protect?.mode;
|
|
271
|
+
const bound = pipeline.scanBound();
|
|
272
|
+
if ((0, mode_1.refuses)(mode) && bound > 0 && text.length > bound) {
|
|
273
|
+
throw new mode_1.ProtectDeniedError('oversized', `Shield360 Protect refused the call: ${text.length} characters is more than its guards scan (${bound}); send less.`);
|
|
274
|
+
}
|
|
275
|
+
let result;
|
|
276
|
+
try {
|
|
277
|
+
result = pipeline.evaluate(text, phase);
|
|
278
|
+
}
|
|
279
|
+
catch (e) {
|
|
280
|
+
if ((0, mode_1.refuses)(mode)) {
|
|
281
|
+
throw new mode_1.ProtectDeniedError('guard_failed', 'Shield360 Protect refused the call: a guard failed and enforced mode does not run unchecked calls.');
|
|
282
|
+
}
|
|
283
|
+
throw e;
|
|
284
|
+
}
|
|
285
|
+
if (result.action === base_1.GuardAction.DENY) {
|
|
286
|
+
if (mode === undefined || (0, mode_1.refuses)(mode))
|
|
287
|
+
throw new base_1.GuardDeniedError(result);
|
|
288
|
+
if (mode === 'warn')
|
|
289
|
+
console.warn(`[shield360] Protect (warn mode): the call would have been refused at ${phase}: ${result.explanation}`);
|
|
290
|
+
// observe / warn: recorded by the pipeline's own span event; the call goes on.
|
|
291
|
+
return { ...result, action: base_1.GuardAction.WARN };
|
|
292
|
+
}
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
243
295
|
/** @internal exported for tests */
|
|
244
|
-
function applyPreflight(pipeline, kwargs, extractInput) {
|
|
296
|
+
function applyPreflight(pipeline, kwargs, extractInput, protect) {
|
|
245
297
|
const inputText = extractInput(kwargs);
|
|
246
298
|
if (!inputText)
|
|
247
299
|
return kwargs;
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
300
|
+
// A streamed completion cannot be inspected after the fact. Enforced mode
|
|
301
|
+
// with postflight guards refuses it rather than let the response through
|
|
302
|
+
// unread; with preflight-only guards the stream is fine.
|
|
303
|
+
if ((0, mode_1.refuses)(protect?.mode) && kwargs.stream === true && pipeline.hasPhase(base_1.GuardPhase.POSTFLIGHT)) {
|
|
304
|
+
throw new mode_1.ProtectDeniedError('streaming', 'Shield360 Protect refused a streamed completion: postflight guards cannot inspect a stream. Call without stream, or configure preflight-only guards.');
|
|
251
305
|
}
|
|
306
|
+
const result = evaluateUnder(pipeline, inputText, 'preflight', protect);
|
|
252
307
|
if (result.action === base_1.GuardAction.REDACT && result.transformedText !== null) {
|
|
253
308
|
for (const key of ['messages', 'input', 'prompt', 'text']) {
|
|
254
309
|
if (key in kwargs) {
|
|
@@ -269,14 +324,11 @@ function redactTextField(pipeline, obj, field) {
|
|
|
269
324
|
*
|
|
270
325
|
* @internal exported for tests
|
|
271
326
|
*/
|
|
272
|
-
function applyPostflight(pipeline, response, extractOutput) {
|
|
327
|
+
function applyPostflight(pipeline, response, extractOutput, protect) {
|
|
273
328
|
const outputText = extractOutput(response);
|
|
274
329
|
if (!outputText)
|
|
275
330
|
return response;
|
|
276
|
-
const result = pipeline
|
|
277
|
-
if (result.action === base_1.GuardAction.DENY) {
|
|
278
|
-
throw new base_1.GuardDeniedError(result);
|
|
279
|
-
}
|
|
331
|
+
const result = evaluateUnder(pipeline, outputText, 'postflight', protect);
|
|
280
332
|
if (result.action === base_1.GuardAction.REDACT && result.transformedText !== null) {
|
|
281
333
|
try {
|
|
282
334
|
if (Array.isArray(response?.choices) && response.choices.length > 0) {
|
|
@@ -322,11 +374,27 @@ function resolveProto(moduleExports, protoPath) {
|
|
|
322
374
|
}
|
|
323
375
|
return obj;
|
|
324
376
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
377
|
+
/**
|
|
378
|
+
* Wraps every installed provider the SDK knows. With Shield Protect in
|
|
379
|
+
* enforced mode the pipeline fails closed (failOpen is overridden, with a
|
|
380
|
+
* warning when it was set), and a package named in `required` that could
|
|
381
|
+
* not be wrapped throws ProtectReadinessError: protected startup fails
|
|
382
|
+
* rather than running unguarded.
|
|
383
|
+
*
|
|
384
|
+
* Supported module loading: CommonJS `require`, and ESM `import` of a
|
|
385
|
+
* provider whose package resolves to the same CommonJS build (openai and
|
|
386
|
+
* @anthropic-ai/sdk do under Node's default conditions). An ESM-only
|
|
387
|
+
* resolution loads a class this function never sees; name the package in
|
|
388
|
+
* `required` so enforced mode fails rather than silently not wrapping it,
|
|
389
|
+
* or use protectTool() which needs no patching.
|
|
390
|
+
*/
|
|
391
|
+
function setupAutoGuards(guards, failOpen = true, protect) {
|
|
392
|
+
let effectiveFailOpen = failOpen;
|
|
393
|
+
if ((0, mode_1.refuses)(protect?.mode) && failOpen) {
|
|
394
|
+
console.warn('[shield360] Protect: enforced mode fails closed; guardFailOpen is ignored.');
|
|
395
|
+
effectiveFailOpen = false;
|
|
396
|
+
}
|
|
397
|
+
const pipeline = new pipeline_1.Pipeline({ guards, failOpen: effectiveFailOpen });
|
|
330
398
|
try {
|
|
331
399
|
const Shield360Config = require('../config').default;
|
|
332
400
|
Shield360Config.guardPipeline = pipeline;
|
|
@@ -334,8 +402,8 @@ function setupAutoGuards(guards, failOpen = true) {
|
|
|
334
402
|
catch {
|
|
335
403
|
// config not available
|
|
336
404
|
}
|
|
337
|
-
|
|
338
|
-
for (const { npmPackage, protoPath, methodName, extractInput, extractOutput } of GUARDED_METHODS) {
|
|
405
|
+
const wrapped = new Set();
|
|
406
|
+
for (const { npmPackage, protoPath, methodName, extractInput, extractOutput } of exports.GUARDED_METHODS) {
|
|
339
407
|
try {
|
|
340
408
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
341
409
|
const mod = require(npmPackage);
|
|
@@ -345,19 +413,25 @@ function setupAutoGuards(guards, failOpen = true) {
|
|
|
345
413
|
const original = proto[methodName];
|
|
346
414
|
proto[methodName] = async function (...args) {
|
|
347
415
|
let params = args[0] || {};
|
|
348
|
-
params = applyPreflight(pipeline, params, extractInput);
|
|
416
|
+
params = applyPreflight(pipeline, params, extractInput, protect);
|
|
349
417
|
args[0] = params;
|
|
350
418
|
const response = await original.apply(this, args);
|
|
351
|
-
return applyPostflight(pipeline, response, extractOutput);
|
|
419
|
+
return applyPostflight(pipeline, response, extractOutput, protect);
|
|
352
420
|
};
|
|
353
|
-
|
|
421
|
+
wrapped.add(npmPackage);
|
|
354
422
|
}
|
|
355
423
|
catch {
|
|
356
424
|
// module not installed, skip silently
|
|
357
425
|
}
|
|
358
426
|
}
|
|
359
|
-
|
|
360
|
-
|
|
427
|
+
const missing = (protect?.required ?? []).filter((pkg) => !wrapped.has(pkg));
|
|
428
|
+
(0, mode_1.setProtectState)({ mode: protect?.mode, wrapped: Array.from(wrapped), missing });
|
|
429
|
+
if (wrapped.size > 0) {
|
|
430
|
+
console.log(`[shield360] Auto-guards: wrapped ${wrapped.size} provider package(s): ${Array.from(wrapped).join(', ')}`);
|
|
431
|
+
}
|
|
432
|
+
if ((0, mode_1.refuses)(protect?.mode) && missing.length) {
|
|
433
|
+
throw new mode_1.ProtectReadinessError(missing, `Shield360 Protect: enforced mode requires guards on ${missing.join(', ')}, which could not be wrapped (not installed, or not resolvable as CommonJS). Protected startup refused.`);
|
|
361
434
|
}
|
|
435
|
+
return { wrapped: Array.from(wrapped), missing };
|
|
362
436
|
}
|
|
363
437
|
//# sourceMappingURL=integration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/guard/integration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/guard/integration.ts"],"names":[],"mappings":"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"}
|
package/dist/guard/pipeline.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Must stay in sync with: sdk/python/src/shield360/guard/_pipeline.py
|
|
5
5
|
*/
|
|
6
|
-
import { Guard, PipelineResult } from './base';
|
|
6
|
+
import { Guard, GuardPhase, PipelineResult } from './base';
|
|
7
7
|
export interface PipelineOptions {
|
|
8
8
|
guards?: Guard[];
|
|
9
9
|
failOpen?: boolean;
|
|
@@ -13,6 +13,15 @@ export declare class Pipeline {
|
|
|
13
13
|
private readonly _failOpen;
|
|
14
14
|
constructor(opts?: PipelineOptions);
|
|
15
15
|
get guards(): Guard[];
|
|
16
|
+
/** Whether any guard runs in `phase`. */
|
|
17
|
+
hasPhase(phase: GuardPhase): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* The most characters every guard in the pipeline reads: the smallest
|
|
20
|
+
* positive maxScanLength, or 0 when every guard reads everything. Text
|
|
21
|
+
* past it is scanned in part by at least one guard; Shield Protect's
|
|
22
|
+
* enforced mode refuses such text instead.
|
|
23
|
+
*/
|
|
24
|
+
scanBound(): number;
|
|
16
25
|
evaluate(text: string, phase?: string): PipelineResult;
|
|
17
26
|
/**
|
|
18
27
|
* Apply every redacting guard to `text` and return the result.
|
package/dist/guard/pipeline.js
CHANGED
|
@@ -17,6 +17,20 @@ class Pipeline {
|
|
|
17
17
|
get guards() {
|
|
18
18
|
return [...this._guards];
|
|
19
19
|
}
|
|
20
|
+
/** Whether any guard runs in `phase`. */
|
|
21
|
+
hasPhase(phase) {
|
|
22
|
+
return this._guards.some((g) => g.supportsPhase(phase));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The most characters every guard in the pipeline reads: the smallest
|
|
26
|
+
* positive maxScanLength, or 0 when every guard reads everything. Text
|
|
27
|
+
* past it is scanned in part by at least one guard; Shield Protect's
|
|
28
|
+
* enforced mode refuses such text instead.
|
|
29
|
+
*/
|
|
30
|
+
scanBound() {
|
|
31
|
+
const bounds = this._guards.map((g) => g.maxScanLength).filter((n) => n > 0);
|
|
32
|
+
return bounds.length ? Math.min(...bounds) : 0;
|
|
33
|
+
}
|
|
20
34
|
evaluate(text, phase = 'preflight') {
|
|
21
35
|
const validPhases = Object.values(base_1.GuardPhase);
|
|
22
36
|
if (!validPhases.includes(phase)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/guard/pipeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/guard/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/guard/report.d.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* When `init` is given a Shield360 URL and API key (or SHIELD360_URL /
|
|
5
5
|
* SHIELD360_API_KEY), every guard decision other than allow is sent to
|
|
6
6
|
* `/api/guard/events`: which guard, what it did, the kind of data found, in
|
|
7
|
-
* which app,
|
|
7
|
+
* which app (its service name, as its telemetry reports it), on which host.
|
|
8
|
+
* Never the text that was checked.
|
|
8
9
|
*
|
|
9
10
|
* With each report go the values found, masked, and fingerprinted with the
|
|
10
11
|
* organisation's key (fetched from `/api/guard/config`), so a reviewer can see
|
|
@@ -16,8 +17,26 @@
|
|
|
16
17
|
*
|
|
17
18
|
* Must stay in sync with: sdk/python/src/shield360/guard/_report.py
|
|
18
19
|
*/
|
|
20
|
+
import type { Guard } from './base';
|
|
19
21
|
import { Finding } from './findings';
|
|
20
22
|
export declare const EVENT_NAME = "shield360.guard.decision";
|
|
23
|
+
export type GuardEventsTransportOptions = {
|
|
24
|
+
/** What the batch is, for the warning when it cannot be delivered. */
|
|
25
|
+
label?: string;
|
|
26
|
+
attempts?: number;
|
|
27
|
+
/** Delay before retry n is retryDelayMs * n. */
|
|
28
|
+
retryDelayMs?: number;
|
|
29
|
+
fetchImpl?: typeof fetch;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Posts one batch to `/api/guard/events`: the transport guard reports, the
|
|
33
|
+
* heartbeat and runtime-protection (RASP) events share. Retries a few times,
|
|
34
|
+
* gives up on a refusal, and never throws. Resolves to whether it was accepted.
|
|
35
|
+
*/
|
|
36
|
+
export declare function postGuardEvents(endpoint: string, apiKey: string, payload: {
|
|
37
|
+
resource: Record<string, string>;
|
|
38
|
+
events: unknown[];
|
|
39
|
+
}, options?: GuardEventsTransportOptions): Promise<boolean>;
|
|
21
40
|
/** Starts reporting when both a URL and a key are given. Returns whether it did. */
|
|
22
41
|
export declare function configureGuardReports(opts: {
|
|
23
42
|
url?: string;
|
|
@@ -25,6 +44,10 @@ export declare function configureGuardReports(opts: {
|
|
|
25
44
|
applicationName: string;
|
|
26
45
|
environment: string;
|
|
27
46
|
sdkVersion?: string;
|
|
47
|
+
/** The guards init was given: with them, a heartbeat says which run and in which mode. */
|
|
48
|
+
guards?: readonly Guard[];
|
|
49
|
+
/** False turns the heartbeat off (as does SHIELD360_GUARD_HEARTBEAT=false). */
|
|
50
|
+
heartbeat?: boolean;
|
|
28
51
|
}): boolean;
|
|
29
52
|
/** Queues one decision. Allow decisions are not evidence of anything. */
|
|
30
53
|
export declare function reportGuardDecision(guardName: string, action: string, classification: string, phase: string, findings?: Finding[]): void;
|
package/dist/guard/report.js
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* When `init` is given a Shield360 URL and API key (or SHIELD360_URL /
|
|
6
6
|
* SHIELD360_API_KEY), every guard decision other than allow is sent to
|
|
7
7
|
* `/api/guard/events`: which guard, what it did, the kind of data found, in
|
|
8
|
-
* which app,
|
|
8
|
+
* which app (its service name, as its telemetry reports it), on which host.
|
|
9
|
+
* Never the text that was checked.
|
|
9
10
|
*
|
|
10
11
|
* With each report go the values found, masked, and fingerprinted with the
|
|
11
12
|
* organisation's key (fetched from `/api/guard/config`), so a reviewer can see
|
|
@@ -19,6 +20,7 @@
|
|
|
19
20
|
*/
|
|
20
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
22
|
exports.EVENT_NAME = void 0;
|
|
23
|
+
exports.postGuardEvents = postGuardEvents;
|
|
22
24
|
exports.configureGuardReports = configureGuardReports;
|
|
23
25
|
exports.reportGuardDecision = reportGuardDecision;
|
|
24
26
|
exports.flushGuardReports = flushGuardReports;
|
|
@@ -26,6 +28,7 @@ exports.resetGuardReports = resetGuardReports;
|
|
|
26
28
|
const crypto_1 = require("crypto");
|
|
27
29
|
const os_1 = require("os");
|
|
28
30
|
const findings_1 = require("./findings");
|
|
31
|
+
const heartbeat_1 = require("./heartbeat");
|
|
29
32
|
exports.EVENT_NAME = 'shield360.guard.decision';
|
|
30
33
|
const BATCH = 100;
|
|
31
34
|
const FLUSH_MS = 2000;
|
|
@@ -41,6 +44,7 @@ class Reporter {
|
|
|
41
44
|
this.sending = Promise.resolve();
|
|
42
45
|
/** Settles once the fingerprint key has been fetched (or could not be). */
|
|
43
46
|
this.keyReady = Promise.resolve();
|
|
47
|
+
this.beat = null;
|
|
44
48
|
this.timer = setInterval(() => void this.flush(), FLUSH_MS);
|
|
45
49
|
// Never keep a process alive just to report.
|
|
46
50
|
this.timer.unref?.();
|
|
@@ -62,33 +66,73 @@ class Reporter {
|
|
|
62
66
|
return this.sending;
|
|
63
67
|
}
|
|
64
68
|
async post(batch) {
|
|
65
|
-
|
|
66
|
-
|
|
69
|
+
await postGuardEvents(this.endpoint, this.apiKey, { resource: this.resource, events: batch }, { label: 'guard report' });
|
|
70
|
+
}
|
|
71
|
+
/** Sends a heartbeat now and then about every five minutes (heartbeat.ts). Never throws. */
|
|
72
|
+
startHeartbeat(guards, sdkVersion) {
|
|
73
|
+
const send = () => {
|
|
67
74
|
try {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${this.apiKey}` },
|
|
71
|
-
body,
|
|
72
|
-
});
|
|
73
|
-
if (res.ok)
|
|
74
|
-
return;
|
|
75
|
-
if ([400, 401, 403, 413].includes(res.status)) {
|
|
76
|
-
console.warn(`Shield360 rejected guard reports: HTTP ${res.status}`);
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
75
|
+
this.add({ name: heartbeat_1.HEARTBEAT_EVENT_NAME, time: new Date().toISOString(), attrs: (0, heartbeat_1.heartbeatAttrs)(guards, this.applicationName, sdkVersion) });
|
|
76
|
+
void this.flush().catch(() => undefined);
|
|
79
77
|
}
|
|
80
78
|
catch {
|
|
81
|
-
//
|
|
79
|
+
// a heartbeat is never worth an error in the app
|
|
82
80
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
this.beat = setTimeout(send, (0, heartbeat_1.nextDelay)());
|
|
82
|
+
this.beat.unref?.();
|
|
83
|
+
};
|
|
84
|
+
send();
|
|
86
85
|
}
|
|
87
86
|
close() {
|
|
88
87
|
clearInterval(this.timer);
|
|
88
|
+
if (this.beat)
|
|
89
|
+
clearTimeout(this.beat);
|
|
90
|
+
this.beat = null;
|
|
89
91
|
return this.flush();
|
|
90
92
|
}
|
|
91
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Posts one batch to `/api/guard/events`: the transport guard reports, the
|
|
96
|
+
* heartbeat and runtime-protection (RASP) events share. Retries a few times,
|
|
97
|
+
* gives up on a refusal, and never throws. Resolves to whether it was accepted.
|
|
98
|
+
*/
|
|
99
|
+
async function postGuardEvents(endpoint, apiKey, payload, options = {}) {
|
|
100
|
+
const label = options.label ?? 'guard report';
|
|
101
|
+
const attempts = options.attempts ?? ATTEMPTS;
|
|
102
|
+
const delay = options.retryDelayMs ?? 500;
|
|
103
|
+
const send = options.fetchImpl ?? globalThis.fetch;
|
|
104
|
+
if (typeof send !== 'function')
|
|
105
|
+
return false;
|
|
106
|
+
let body;
|
|
107
|
+
try {
|
|
108
|
+
body = JSON.stringify(payload);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
for (let attempt = 0; attempt < attempts; attempt++) {
|
|
114
|
+
try {
|
|
115
|
+
const res = await send(endpoint, {
|
|
116
|
+
method: 'POST',
|
|
117
|
+
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${apiKey}` },
|
|
118
|
+
body,
|
|
119
|
+
});
|
|
120
|
+
if (res.ok)
|
|
121
|
+
return true;
|
|
122
|
+
if ([400, 401, 403, 413].includes(res.status)) {
|
|
123
|
+
console.warn(`Shield360 rejected ${label}s: HTTP ${res.status}`);
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// retried below
|
|
129
|
+
}
|
|
130
|
+
if (attempt + 1 < attempts)
|
|
131
|
+
await new Promise((r) => setTimeout(r, delay * (attempt + 1)));
|
|
132
|
+
}
|
|
133
|
+
console.warn(`Could not deliver ${payload.events.length} ${label}(s) to Shield360`);
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
92
136
|
/** Findings go out fingerprinted if the key has arrived since they were made. */
|
|
93
137
|
function serialise(event) {
|
|
94
138
|
const { findings, ...rest } = event;
|
|
@@ -122,6 +166,8 @@ function configureGuardReports(opts) {
|
|
|
122
166
|
'user.name': user,
|
|
123
167
|
'deployment.environment': opts.environment,
|
|
124
168
|
'service.version': opts.sdkVersion || '',
|
|
169
|
+
// The app, by the service name its telemetry uses (security per app).
|
|
170
|
+
'service.name': opts.applicationName,
|
|
125
171
|
})) {
|
|
126
172
|
if (v)
|
|
127
173
|
resource[k] = v;
|
|
@@ -130,6 +176,8 @@ function configureGuardReports(opts) {
|
|
|
130
176
|
const base = opts.url.replace(/\/+$/, '');
|
|
131
177
|
reporter = new Reporter(`${base}/api/guard/events`, opts.apiKey, resource, opts.applicationName);
|
|
132
178
|
reporter.keyReady = fetchFingerprintKey(base, opts.apiKey);
|
|
179
|
+
if (opts.guards?.length && (0, heartbeat_1.heartbeatEnabled)(opts.heartbeat))
|
|
180
|
+
reporter.startHeartbeat(opts.guards, opts.sdkVersion || '');
|
|
133
181
|
return true;
|
|
134
182
|
}
|
|
135
183
|
/** The organisation's fingerprint key; without it findings are masked only. */
|
|
@@ -162,6 +210,7 @@ function reportGuardDecision(guardName, action, classification, phase, findings
|
|
|
162
210
|
attrs: {
|
|
163
211
|
'shield360.guard.event_id': (0, crypto_1.randomUUID)().replace(/-/g, ''),
|
|
164
212
|
'shield360.guard.client': reporter.applicationName,
|
|
213
|
+
'shield360.guard.app': reporter.applicationName,
|
|
165
214
|
'shield360.guard.action': action,
|
|
166
215
|
'shield360.guard.target': phase,
|
|
167
216
|
'shield360.guard.kinds': kinds,
|
package/dist/guard/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/guard/report.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/guard/report.ts"],"names":[],"mappings":"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"}
|