beddel 0.1.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 +297 -0
- package/dist/agents/agentRegistry.d.ts +68 -0
- package/dist/agents/agentRegistry.d.ts.map +1 -0
- package/dist/agents/agentRegistry.js +222 -0
- package/dist/agents/agentRegistry.js.map +1 -0
- package/dist/agents/formatter-agent.d.ts +10 -0
- package/dist/agents/formatter-agent.d.ts.map +1 -0
- package/dist/agents/formatter-agent.js +49 -0
- package/dist/agents/formatter-agent.js.map +1 -0
- package/dist/agents/genkit-agent.d.ts +12 -0
- package/dist/agents/genkit-agent.d.ts.map +1 -0
- package/dist/agents/genkit-agent.js +119 -0
- package/dist/agents/genkit-agent.js.map +1 -0
- package/dist/agents/i18n-messages.d.ts +17 -0
- package/dist/agents/i18n-messages.d.ts.map +1 -0
- package/dist/agents/i18n-messages.js +92 -0
- package/dist/agents/i18n-messages.js.map +1 -0
- package/dist/agents/index.d.ts +10 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +26 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/pipeline.d.ts +15 -0
- package/dist/agents/pipeline.d.ts.map +1 -0
- package/dist/agents/pipeline.js +45 -0
- package/dist/agents/pipeline.js.map +1 -0
- package/dist/agents/schema-factory.d.ts +40 -0
- package/dist/agents/schema-factory.d.ts.map +1 -0
- package/dist/agents/schema-factory.js +121 -0
- package/dist/agents/schema-factory.js.map +1 -0
- package/dist/agents/translation-validators.d.ts +26 -0
- package/dist/agents/translation-validators.d.ts.map +1 -0
- package/dist/agents/translation-validators.js +77 -0
- package/dist/agents/translation-validators.js.map +1 -0
- package/dist/agents/translator-agents.d.ts +184 -0
- package/dist/agents/translator-agents.d.ts.map +1 -0
- package/dist/agents/translator-agents.js +613 -0
- package/dist/agents/translator-agents.js.map +1 -0
- package/dist/agents/types/translation.types.d.ts +100 -0
- package/dist/agents/types/translation.types.d.ts.map +1 -0
- package/dist/agents/types/translation.types.js +3 -0
- package/dist/agents/types/translation.types.js.map +1 -0
- package/dist/agents/validator-agent.d.ts +42 -0
- package/dist/agents/validator-agent.d.ts.map +1 -0
- package/dist/agents/validator-agent.js +122 -0
- package/dist/agents/validator-agent.js.map +1 -0
- package/dist/audit/auditTrail.d.ts +55 -0
- package/dist/audit/auditTrail.d.ts.map +1 -0
- package/dist/audit/auditTrail.js +93 -0
- package/dist/audit/auditTrail.js.map +1 -0
- package/dist/compliance/gdprEngine.d.ts +44 -0
- package/dist/compliance/gdprEngine.d.ts.map +1 -0
- package/dist/compliance/gdprEngine.js +178 -0
- package/dist/compliance/gdprEngine.js.map +1 -0
- package/dist/compliance/lgpdEngine.d.ts +51 -0
- package/dist/compliance/lgpdEngine.d.ts.map +1 -0
- package/dist/compliance/lgpdEngine.js +221 -0
- package/dist/compliance/lgpdEngine.js.map +1 -0
- package/dist/config.d.ts +78 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +77 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +17 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +40 -0
- package/dist/errors.js.map +1 -0
- package/dist/firebase/tenantManager.d.ts +84 -0
- package/dist/firebase/tenantManager.d.ts.map +1 -0
- package/dist/firebase/tenantManager.js +378 -0
- package/dist/firebase/tenantManager.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +118 -0
- package/dist/index.js.map +1 -0
- package/dist/integration/secure-yaml-runtime.d.ts +68 -0
- package/dist/integration/secure-yaml-runtime.d.ts.map +1 -0
- package/dist/integration/secure-yaml-runtime.js +245 -0
- package/dist/integration/secure-yaml-runtime.js.map +1 -0
- package/dist/parser/secure-yaml-parser.d.ts +62 -0
- package/dist/parser/secure-yaml-parser.d.ts.map +1 -0
- package/dist/parser/secure-yaml-parser.js +234 -0
- package/dist/parser/secure-yaml-parser.js.map +1 -0
- package/dist/performance/autoscaling.d.ts +100 -0
- package/dist/performance/autoscaling.d.ts.map +1 -0
- package/dist/performance/autoscaling.js +339 -0
- package/dist/performance/autoscaling.js.map +1 -0
- package/dist/performance/benchmark.d.ts +104 -0
- package/dist/performance/benchmark.d.ts.map +1 -0
- package/dist/performance/benchmark.js +514 -0
- package/dist/performance/benchmark.js.map +1 -0
- package/dist/performance/index.d.ts +14 -0
- package/dist/performance/index.d.ts.map +1 -0
- package/dist/performance/index.js +35 -0
- package/dist/performance/index.js.map +1 -0
- package/dist/performance/monitor.d.ts +126 -0
- package/dist/performance/monitor.d.ts.map +1 -0
- package/dist/performance/monitor.js +324 -0
- package/dist/performance/monitor.js.map +1 -0
- package/dist/performance/streaming.d.ts +82 -0
- package/dist/performance/streaming.d.ts.map +1 -0
- package/dist/performance/streaming.js +287 -0
- package/dist/performance/streaming.js.map +1 -0
- package/dist/runtime/audit.d.ts +240 -0
- package/dist/runtime/audit.d.ts.map +1 -0
- package/dist/runtime/audit.js +641 -0
- package/dist/runtime/audit.js.map +1 -0
- package/dist/runtime/declarativeAgentRuntime.d.ts +123 -0
- package/dist/runtime/declarativeAgentRuntime.d.ts.map +1 -0
- package/dist/runtime/declarativeAgentRuntime.js +576 -0
- package/dist/runtime/declarativeAgentRuntime.js.map +1 -0
- package/dist/runtime/isolatedRuntime.d.ts +119 -0
- package/dist/runtime/isolatedRuntime.d.ts.map +1 -0
- package/dist/runtime/isolatedRuntime.js +425 -0
- package/dist/runtime/isolatedRuntime.js.map +1 -0
- package/dist/runtime/schemaCompiler.d.ts +35 -0
- package/dist/runtime/schemaCompiler.d.ts.map +1 -0
- package/dist/runtime/schemaCompiler.js +151 -0
- package/dist/runtime/schemaCompiler.js.map +1 -0
- package/dist/runtime/simpleRuntime.d.ts +57 -0
- package/dist/runtime/simpleRuntime.d.ts.map +1 -0
- package/dist/runtime/simpleRuntime.js +187 -0
- package/dist/runtime/simpleRuntime.js.map +1 -0
- package/dist/security/dashboard.d.ts +89 -0
- package/dist/security/dashboard.d.ts.map +1 -0
- package/dist/security/dashboard.js +300 -0
- package/dist/security/dashboard.js.map +1 -0
- package/dist/security/hardening.d.ts +130 -0
- package/dist/security/hardening.d.ts.map +1 -0
- package/dist/security/hardening.js +414 -0
- package/dist/security/hardening.js.map +1 -0
- package/dist/security/index.d.ts +128 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +353 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/monitor.d.ts +88 -0
- package/dist/security/monitor.d.ts.map +1 -0
- package/dist/security/monitor.js +356 -0
- package/dist/security/monitor.js.map +1 -0
- package/dist/security/scanner.d.ts +104 -0
- package/dist/security/scanner.d.ts.map +1 -0
- package/dist/security/scanner.js +298 -0
- package/dist/security/scanner.js.map +1 -0
- package/dist/security/score.d.ts +150 -0
- package/dist/security/score.d.ts.map +1 -0
- package/dist/security/score.js +983 -0
- package/dist/security/score.js.map +1 -0
- package/dist/security/test-security.d.ts +22 -0
- package/dist/security/test-security.d.ts.map +1 -0
- package/dist/security/test-security.js +154 -0
- package/dist/security/test-security.js.map +1 -0
- package/dist/security/threatDetector.d.ts +39 -0
- package/dist/security/threatDetector.d.ts.map +1 -0
- package/dist/security/threatDetector.js +354 -0
- package/dist/security/threatDetector.js.map +1 -0
- package/dist/security/validation.d.ts +69 -0
- package/dist/security/validation.d.ts.map +1 -0
- package/dist/security/validation.js +286 -0
- package/dist/security/validation.js.map +1 -0
- package/dist/server/api/clientsRoute.d.ts +9 -0
- package/dist/server/api/clientsRoute.d.ts.map +1 -0
- package/dist/server/api/clientsRoute.js +71 -0
- package/dist/server/api/clientsRoute.js.map +1 -0
- package/dist/server/api/endpointsRoute.d.ts +8 -0
- package/dist/server/api/endpointsRoute.d.ts.map +1 -0
- package/dist/server/api/endpointsRoute.js +76 -0
- package/dist/server/api/endpointsRoute.js.map +1 -0
- package/dist/server/api/graphql.d.ts +9 -0
- package/dist/server/api/graphql.d.ts.map +1 -0
- package/dist/server/api/graphql.js +180 -0
- package/dist/server/api/graphql.js.map +1 -0
- package/dist/server/errors.d.ts +19 -0
- package/dist/server/errors.d.ts.map +1 -0
- package/dist/server/errors.js +42 -0
- package/dist/server/errors.js.map +1 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +24 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/kvStore.d.ts +27 -0
- package/dist/server/kvStore.d.ts.map +1 -0
- package/dist/server/kvStore.js +128 -0
- package/dist/server/kvStore.js.map +1 -0
- package/dist/server/runtimeSecurity.d.ts +28 -0
- package/dist/server/runtimeSecurity.d.ts.map +1 -0
- package/dist/server/runtimeSecurity.js +85 -0
- package/dist/server/runtimeSecurity.js.map +1 -0
- package/dist/server/types.d.ts +53 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +8 -0
- package/dist/server/types.js.map +1 -0
- package/dist/types/executionContext.d.ts +16 -0
- package/dist/types/executionContext.d.ts.map +1 -0
- package/dist/types/executionContext.js +3 -0
- package/dist/types/executionContext.js.map +1 -0
- package/package.json +77 -0
- package/src/agents/agentRegistry.ts +272 -0
- package/src/agents/image-agent.yaml +86 -0
- package/src/agents/joker-agent.yaml +47 -0
- package/src/agents/translator-agent.yaml +80 -0
- package/src/audit/auditTrail.ts +134 -0
- package/src/compliance/gdprEngine.ts +209 -0
- package/src/compliance/lgpdEngine.ts +268 -0
- package/src/config.ts +179 -0
- package/src/errors.ts +35 -0
- package/src/firebase/tenantManager.ts +443 -0
- package/src/index.ts +125 -0
- package/src/integration/secure-yaml-runtime.ts +341 -0
- package/src/parser/secure-yaml-parser.ts +273 -0
- package/src/performance/autoscaling.ts +495 -0
- package/src/performance/benchmark.ts +644 -0
- package/src/performance/index.ts +34 -0
- package/src/performance/monitor.ts +469 -0
- package/src/performance/streaming.ts +317 -0
- package/src/runtime/audit.ts +907 -0
- package/src/runtime/declarativeAgentRuntime.ts +836 -0
- package/src/runtime/isolatedRuntime.ts +572 -0
- package/src/runtime/schemaCompiler.ts +228 -0
- package/src/runtime/simpleRuntime.ts +201 -0
- package/src/security/dashboard.ts +462 -0
- package/src/security/hardening.ts +560 -0
- package/src/security/index.ts +439 -0
- package/src/security/monitor.ts +490 -0
- package/src/security/scanner.ts +368 -0
- package/src/security/score.ts +1138 -0
- package/src/security/threatDetector.ts +481 -0
- package/src/security/validation.ts +365 -0
- package/src/server/api/clientsRoute.ts +92 -0
- package/src/server/api/endpointsRoute.ts +97 -0
- package/src/server/api/graphql.ts +249 -0
- package/src/server/errors.ts +38 -0
- package/src/server/index.ts +6 -0
- package/src/server/kvStore.ts +152 -0
- package/src/server/runtimeSecurity.ts +102 -0
- package/src/server/types.ts +60 -0
- package/src/types/executionContext.ts +16 -0
- package/tools/seed.ts +365 -0
- package/tools/test-endpoints.ts +174 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Security scanner for YAML parsing
|
|
4
|
+
* Comprehensive vulnerability detection and security analysis
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SecurityScanner = void 0;
|
|
8
|
+
exports.quickSecurityScan = quickSecurityScan;
|
|
9
|
+
exports.validateSecurityBasic = validateSecurityBasic;
|
|
10
|
+
const score_1 = require("./score");
|
|
11
|
+
const validation_1 = require("./validation");
|
|
12
|
+
const hardening_1 = require("./hardening");
|
|
13
|
+
class SecurityScanner {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.scanHistory = [];
|
|
16
|
+
this.validator = new validation_1.SecurityValidator();
|
|
17
|
+
this.hardening = (0, hardening_1.createSecurityHardening)();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Executa scanning completo de segurança
|
|
21
|
+
*/
|
|
22
|
+
async scan(obj) {
|
|
23
|
+
const startTime = Date.now();
|
|
24
|
+
// Validação de segurança básica
|
|
25
|
+
const validationResult = this.validator.validateObject(obj);
|
|
26
|
+
// Cálculo de score de segurança
|
|
27
|
+
const securityScore = (0, score_1.calculateSecurityScore)(obj);
|
|
28
|
+
// Aplica hardening e detecção
|
|
29
|
+
const hardeningResult = this.hardening.harden(obj);
|
|
30
|
+
// Verifica se é seguro
|
|
31
|
+
const isSecure = validationResult.valid && hardeningResult.secure && securityScore.score >= 60;
|
|
32
|
+
// Monta resultado final
|
|
33
|
+
const result = {
|
|
34
|
+
secure: isSecure,
|
|
35
|
+
score: securityScore.score,
|
|
36
|
+
grade: securityScore.grade,
|
|
37
|
+
vulnerabilities: securityScore.vulnerabilities,
|
|
38
|
+
warnings: this.extractWarnings(validationResult, securityScore),
|
|
39
|
+
recommendations: securityScore.recommendations,
|
|
40
|
+
details: {
|
|
41
|
+
timestamp: Date.now(),
|
|
42
|
+
objectId: this.generateObjectId(obj),
|
|
43
|
+
size: this.estimateObjectSize(obj),
|
|
44
|
+
depth: this.calculateMaxDepth(obj),
|
|
45
|
+
complexity: this.estimateComplexity(obj),
|
|
46
|
+
riskLevel: securityScore.riskLevel,
|
|
47
|
+
scanDuration: Date.now() - startTime
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
// Adiciona ao histórico
|
|
51
|
+
this.scanHistory.push(result);
|
|
52
|
+
// Mantém apenas os últimos 50 scans
|
|
53
|
+
if (this.scanHistory.length > 50) {
|
|
54
|
+
this.scanHistory = this.scanHistory.slice(-50);
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Rápida validação de segurança
|
|
60
|
+
*/
|
|
61
|
+
quickValidate(obj) {
|
|
62
|
+
const result = this.validator.validateObject(obj);
|
|
63
|
+
return {
|
|
64
|
+
isValid: result.valid,
|
|
65
|
+
warnings: result.warnings.length,
|
|
66
|
+
errors: result.errors.length
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Análise aprofundada de risco
|
|
71
|
+
*/
|
|
72
|
+
analyzeRisk(obj) {
|
|
73
|
+
const securityScore = (0, score_1.calculateSecurityScore)(obj);
|
|
74
|
+
const riskFactors = [];
|
|
75
|
+
if (securityScore.score < 70) {
|
|
76
|
+
riskFactors.push('Low security score');
|
|
77
|
+
}
|
|
78
|
+
if (securityScore.vulnerabilities.length > 0) {
|
|
79
|
+
riskFactors.push('Active vulnerabilities detected');
|
|
80
|
+
}
|
|
81
|
+
if (securityScore.vulnerabilities.some(v => v.severity === 'high' || v.severity === 'critical')) {
|
|
82
|
+
riskFactors.push('High/critical severity vulnerabilities');
|
|
83
|
+
}
|
|
84
|
+
const validation = this.validator.validateObject(obj);
|
|
85
|
+
if (!validation.valid) {
|
|
86
|
+
riskFactors.push('Security validation failures');
|
|
87
|
+
}
|
|
88
|
+
if (validation.stats.maxDepth > 500) {
|
|
89
|
+
riskFactors.push('Deep object nesting detected');
|
|
90
|
+
}
|
|
91
|
+
if (validation.stats.totalKeys > 10000) {
|
|
92
|
+
riskFactors.push('Large object size');
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
riskLevel: securityScore.riskLevel,
|
|
96
|
+
factors: riskFactors,
|
|
97
|
+
score: securityScore.score
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Gera relatório de segurança
|
|
102
|
+
*/
|
|
103
|
+
generateReport(obj) {
|
|
104
|
+
const securityScore = (0, score_1.calculateSecurityScore)(obj);
|
|
105
|
+
let report = '=== SECURITY SCAN REPORT ===\n\n';
|
|
106
|
+
report += `✅ Status: ${securityScore.score >= 60 ? 'SECURE' : 'INSECURE'}\n`;
|
|
107
|
+
report += `📊 Score: ${securityScore.score}/100 (${securityScore.grade})\n`;
|
|
108
|
+
report += `🎯 Risk Level: ${securityScore.riskLevel}\n`;
|
|
109
|
+
report += `📦 Object Size: ${this.formatBytes(this.estimateObjectSize(obj))}\n`;
|
|
110
|
+
report += `📐 Max Depth: ${this.calculateMaxDepth(obj)}\n\n`;
|
|
111
|
+
if (securityScore.vulnerabilities.length > 0) {
|
|
112
|
+
report += '🔴 VULNERABILITIES DETECTED:\n';
|
|
113
|
+
securityScore.vulnerabilities.forEach(vuln => {
|
|
114
|
+
report += ` • [${vuln.severity.toUpperCase()}] ${vuln.type}: ${vuln.description}\n`;
|
|
115
|
+
report += ` Path: ${vuln.path}\n`;
|
|
116
|
+
report += ` CWE: ${vuln.cweId}\n`;
|
|
117
|
+
report += ` Fix: ${vuln.remediation}\n\n`;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (securityScore.recommendations.length > 0) {
|
|
121
|
+
report += '💡 RECOMMENDATIONS:\n';
|
|
122
|
+
securityScore.recommendations.forEach(rec => {
|
|
123
|
+
report += ` • ${rec}\n`;
|
|
124
|
+
});
|
|
125
|
+
report += '\n';
|
|
126
|
+
}
|
|
127
|
+
const stats = this.validator.validateObject(obj).stats;
|
|
128
|
+
report += '📈 STATISTICS:\n';
|
|
129
|
+
report += ` • Total Keys: ${stats.totalKeys}\n`;
|
|
130
|
+
report += ` • Max Value Length: ${stats.maxValueLength} bytes\n`;
|
|
131
|
+
report += ` • Data Types: ${Object.entries(stats.dataTypes)
|
|
132
|
+
.map(([type, count]) => `${type}: ${count}`)
|
|
133
|
+
.join(', ')}\n`;
|
|
134
|
+
report += `\n🎯 Confidence: ${securityScore.confidence}%\n`;
|
|
135
|
+
return report;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Estatísticas do histórico de scans
|
|
139
|
+
*/
|
|
140
|
+
getScanHistory() {
|
|
141
|
+
if (this.scanHistory.length === 0) {
|
|
142
|
+
return {
|
|
143
|
+
totalScans: 0,
|
|
144
|
+
averageScore: 0,
|
|
145
|
+
secureScans: 0,
|
|
146
|
+
insecureScans: 0,
|
|
147
|
+
averageRiskLevel: 'UNKNOWN'
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const totalScans = this.scanHistory.length;
|
|
151
|
+
const secureScans = this.scanHistory.filter(s => s.secure).length;
|
|
152
|
+
const averageScore = this.scanHistory.reduce((sum, s) => sum + s.score, 0) / totalScans;
|
|
153
|
+
// Calcula risco médio
|
|
154
|
+
const riskOrder = ['LOW', 'MEDIUM', 'HIGH', 'CRITICAL'];
|
|
155
|
+
const riskScores = this.scanHistory.map(s => riskOrder.indexOf(s.details.riskLevel));
|
|
156
|
+
const avgRiskIndex = Math.round(riskScores.reduce((a, b) => a + b) / totalScans);
|
|
157
|
+
const averageRiskLevel = riskOrder[Math.min(avgRiskIndex, riskOrder.length - 1)];
|
|
158
|
+
return {
|
|
159
|
+
totalScans,
|
|
160
|
+
averageScore: Math.round(averageScore),
|
|
161
|
+
secureScans,
|
|
162
|
+
insecureScans: totalScans - secureScans,
|
|
163
|
+
averageRiskLevel
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Extrai warnings dos resultados
|
|
168
|
+
*/
|
|
169
|
+
extractWarnings(validationResult, securityScore) {
|
|
170
|
+
const warnings = [];
|
|
171
|
+
// Warnings da validação
|
|
172
|
+
validationResult.warnings?.forEach((warning) => {
|
|
173
|
+
warnings.push(`${warning.path}: ${warning.message}`);
|
|
174
|
+
});
|
|
175
|
+
// Warnings do score de segurança
|
|
176
|
+
if (securityScore.score < 80) {
|
|
177
|
+
warnings.push(`Low security score: ${securityScore.score}/100`);
|
|
178
|
+
}
|
|
179
|
+
if (securityScore.vulnerabilities.length > 0) {
|
|
180
|
+
warnings.push(`${securityScore.vulnerabilities.length} vulnerabilities detected`);
|
|
181
|
+
}
|
|
182
|
+
return warnings;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Estima tamanho do objeto
|
|
186
|
+
*/
|
|
187
|
+
estimateObjectSize(obj) {
|
|
188
|
+
try {
|
|
189
|
+
return JSON.stringify(obj).length * 2; // UTF-16 chars
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return 0;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Calcula profundidade máxima
|
|
197
|
+
*/
|
|
198
|
+
calculateMaxDepth(obj) {
|
|
199
|
+
const calculateDepth = (current, depth = 0) => {
|
|
200
|
+
if (typeof current !== 'object' || current === null) {
|
|
201
|
+
return depth;
|
|
202
|
+
}
|
|
203
|
+
let maxDepth = depth;
|
|
204
|
+
for (const value of Object.values(current)) {
|
|
205
|
+
maxDepth = Math.max(maxDepth, calculateDepth(value, depth + 1));
|
|
206
|
+
}
|
|
207
|
+
return maxDepth;
|
|
208
|
+
};
|
|
209
|
+
return calculateDepth(obj);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Estima complexidade do objeto
|
|
213
|
+
*/
|
|
214
|
+
estimateComplexity(obj) {
|
|
215
|
+
const depth = this.calculateMaxDepth(obj);
|
|
216
|
+
const keys = this.countTotalKeys(obj);
|
|
217
|
+
if (depth > 500 || keys > 5000)
|
|
218
|
+
return 'very_high';
|
|
219
|
+
if (depth > 200 || keys > 1000)
|
|
220
|
+
return 'high';
|
|
221
|
+
if (depth > 100 || keys > 500)
|
|
222
|
+
return 'medium';
|
|
223
|
+
return 'low';
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Conta chaves totais
|
|
227
|
+
*/
|
|
228
|
+
countTotalKeys(obj) {
|
|
229
|
+
const countKeys = (current) => {
|
|
230
|
+
if (typeof current !== 'object' || current === null) {
|
|
231
|
+
return 0;
|
|
232
|
+
}
|
|
233
|
+
if (Array.isArray(current)) {
|
|
234
|
+
return current.reduce((sum, item) => sum + countKeys(item), 0);
|
|
235
|
+
}
|
|
236
|
+
let total = Object.keys(current).length;
|
|
237
|
+
for (const value of Object.values(current)) {
|
|
238
|
+
total += countKeys(value);
|
|
239
|
+
}
|
|
240
|
+
return total;
|
|
241
|
+
};
|
|
242
|
+
return countKeys(obj);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Gera ID único do objeto
|
|
246
|
+
*/
|
|
247
|
+
generateObjectId(obj) {
|
|
248
|
+
try {
|
|
249
|
+
const str = JSON.stringify(obj);
|
|
250
|
+
let hash = 0;
|
|
251
|
+
for (let i = 0; i < str.length; i++) {
|
|
252
|
+
const char = str.charCodeAt(i);
|
|
253
|
+
hash = ((hash << 5) - hash) + char;
|
|
254
|
+
hash = hash & hash; // Converte para inteiro de 32 bits
|
|
255
|
+
}
|
|
256
|
+
return Math.abs(hash).toString(36);
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
return 'unknown';
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Formata bytes
|
|
264
|
+
*/
|
|
265
|
+
formatBytes(bytes) {
|
|
266
|
+
if (bytes < 1024)
|
|
267
|
+
return `${bytes}B`;
|
|
268
|
+
if (bytes < 1024 * 1024)
|
|
269
|
+
return `${(bytes / 1024).toFixed(2)}KB`;
|
|
270
|
+
return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Reinicializa o scanner
|
|
274
|
+
*/
|
|
275
|
+
reset() {
|
|
276
|
+
this.scanHistory = [];
|
|
277
|
+
this.validator = new validation_1.SecurityValidator();
|
|
278
|
+
this.hardening = (0, hardening_1.createSecurityHardening)();
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
exports.SecurityScanner = SecurityScanner;
|
|
282
|
+
/**
|
|
283
|
+
* Função auxiliar para realizar scan rápido
|
|
284
|
+
*/
|
|
285
|
+
async function quickSecurityScan(obj) {
|
|
286
|
+
const scanner = new SecurityScanner();
|
|
287
|
+
return await scanner.scan(obj);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Função auxiliar para validar segurança básica
|
|
291
|
+
*/
|
|
292
|
+
function validateSecurityBasic(obj) {
|
|
293
|
+
const scanner = new SecurityScanner();
|
|
294
|
+
const validator = new validation_1.SecurityValidator();
|
|
295
|
+
const result = validator.validateObject(obj);
|
|
296
|
+
return result.valid;
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/security/scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security score calculator for YAML parsing
|
|
3
|
+
*/
|
|
4
|
+
declare class SecurityScoreImpl implements SecurityScoreCalculator {
|
|
5
|
+
private vulnerabilities;
|
|
6
|
+
private hardeningFeatures;
|
|
7
|
+
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* Calcula o score de segurança completo
|
|
10
|
+
*/
|
|
11
|
+
calculate(obj: any): SecurityScoreResult;
|
|
12
|
+
/**
|
|
13
|
+
* Analisa vulnerabilidades no objeto
|
|
14
|
+
*/
|
|
15
|
+
private analyzeVulnerabilities;
|
|
16
|
+
/**
|
|
17
|
+
* Analisa injeção de código
|
|
18
|
+
*/
|
|
19
|
+
private analyzeCodeInjection;
|
|
20
|
+
/**
|
|
21
|
+
* Analisa referências circulares
|
|
22
|
+
*/
|
|
23
|
+
private analyzeCircularReferences;
|
|
24
|
+
/**
|
|
25
|
+
* Detecta referências circulares recursivamente
|
|
26
|
+
*/
|
|
27
|
+
private detectCircularRecursive;
|
|
28
|
+
/**
|
|
29
|
+
* Analisa deep nesting
|
|
30
|
+
*/
|
|
31
|
+
private analyzeDeepNesting;
|
|
32
|
+
/**
|
|
33
|
+
* Calcula profundidade máxima
|
|
34
|
+
*/
|
|
35
|
+
private calculateMaxDepth;
|
|
36
|
+
/**
|
|
37
|
+
* Analisa vulnerabilidades de tamanho
|
|
38
|
+
*/
|
|
39
|
+
private analyzeSizeVulnerabilities;
|
|
40
|
+
/**
|
|
41
|
+
* Calcula tamanho aproximado do objeto em bytes
|
|
42
|
+
*/
|
|
43
|
+
private calculateObjectSize;
|
|
44
|
+
/**
|
|
45
|
+
* Analisa conteúdo malicioso
|
|
46
|
+
*/
|
|
47
|
+
private analyzeMaliciousContent;
|
|
48
|
+
/**
|
|
49
|
+
* Analisa hardening implementado
|
|
50
|
+
*/
|
|
51
|
+
private analyzeHardening;
|
|
52
|
+
/**
|
|
53
|
+
* Adiciona uma vulnerabilidade encontrada
|
|
54
|
+
*/
|
|
55
|
+
private addVulnerability;
|
|
56
|
+
/**
|
|
57
|
+
* Adiciona uma feature de hardening
|
|
58
|
+
*/
|
|
59
|
+
private addHardeningFeature;
|
|
60
|
+
/**
|
|
61
|
+
* Estima score CVSS baseado na severidade
|
|
62
|
+
*/
|
|
63
|
+
private estimateCvssScore;
|
|
64
|
+
/**
|
|
65
|
+
* Calcula o score final de segurança
|
|
66
|
+
*/
|
|
67
|
+
private calculateFinalScore;
|
|
68
|
+
/**
|
|
69
|
+
* Calcula impacto de uma vulnerabilidade
|
|
70
|
+
*/
|
|
71
|
+
private impactForVulnerability;
|
|
72
|
+
/**
|
|
73
|
+
* Calcula o grau baseado no score
|
|
74
|
+
*/
|
|
75
|
+
private calculateGrade;
|
|
76
|
+
/**
|
|
77
|
+
* Calcula a categoria baseada no grau
|
|
78
|
+
*/
|
|
79
|
+
private calculateCategory;
|
|
80
|
+
/**
|
|
81
|
+
* Calcula o nível de risco baseado no score
|
|
82
|
+
*/
|
|
83
|
+
private calculateRiskLevel;
|
|
84
|
+
/**
|
|
85
|
+
* Obtém recomendações baseadas no score
|
|
86
|
+
*/
|
|
87
|
+
getRecommendations(score: number): string[];
|
|
88
|
+
/**
|
|
89
|
+
* Calcula a confiança no resultado
|
|
90
|
+
*/
|
|
91
|
+
calculateConfidence(): number;
|
|
92
|
+
/**
|
|
93
|
+
* Calcula score de componente específico
|
|
94
|
+
*/
|
|
95
|
+
calculateComponentScore(component: string): number;
|
|
96
|
+
/**
|
|
97
|
+
* Obtém CWE ID para tipos de vulnerabilidade
|
|
98
|
+
*/
|
|
99
|
+
private getCweForVulnerability;
|
|
100
|
+
/**
|
|
101
|
+
* Reinicia o estado do calculador
|
|
102
|
+
*/
|
|
103
|
+
private resetState;
|
|
104
|
+
}
|
|
105
|
+
export interface SecurityScoreResult {
|
|
106
|
+
score: number;
|
|
107
|
+
grade: SecurityGrade;
|
|
108
|
+
category: SecurityCategory;
|
|
109
|
+
vulnerabilities: SecurityVulnerability[];
|
|
110
|
+
hardeningApplied: HardeningFeature[];
|
|
111
|
+
recommendations: string[];
|
|
112
|
+
riskLevel: RiskLevel;
|
|
113
|
+
confidence: number;
|
|
114
|
+
}
|
|
115
|
+
export type SecurityGrade = 'A' | 'B' | 'C' | 'D' | 'F';
|
|
116
|
+
export type SecurityCategory = 'EXCEPTIONAL' | 'GOOD' | 'ACCEPTABLE' | 'LIMITED' | 'INSECURE';
|
|
117
|
+
export type RiskLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
118
|
+
export interface SecurityVulnerability {
|
|
119
|
+
id: string;
|
|
120
|
+
type: VulnerabilityType;
|
|
121
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
122
|
+
description: string;
|
|
123
|
+
path: string;
|
|
124
|
+
remediation: string;
|
|
125
|
+
cweId?: string;
|
|
126
|
+
cvssScore?: number;
|
|
127
|
+
}
|
|
128
|
+
export interface HardeningFeature {
|
|
129
|
+
name: string;
|
|
130
|
+
status: 'applied' | 'partial' | 'not_applied';
|
|
131
|
+
effectiveness: number;
|
|
132
|
+
description: string;
|
|
133
|
+
}
|
|
134
|
+
export type VulnerabilityType = 'XSS' | 'SQL_INJECTION' | 'CODE_INJECTION' | 'TEMPLATE_INJECTION' | 'PATH_TRAVERSAL' | 'XXE' | 'LDAP_INJECTION' | 'COMMAND_INJECTION' | 'INSECURE_DESERIALIZATION' | 'CIRCULAR_REFERENCE' | 'DEEP_NESTING' | 'OVERSIZED_PAYLOAD' | 'CREDENTIAL_LEAK' | 'PII_EXPOSURE' | 'MALICIOUS_CONTENT';
|
|
135
|
+
export interface SecurityScoreCalculator {
|
|
136
|
+
calculate(obj: any): SecurityScoreResult;
|
|
137
|
+
calculateComponentScore(component: string): number;
|
|
138
|
+
getRecommendations(score: number): string[];
|
|
139
|
+
calculateConfidence(result: SecurityScoreResult): number;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Função auxiliar para calcular segurança
|
|
143
|
+
*/
|
|
144
|
+
export declare function calculateSecurityScore(obj: any): SecurityScoreResult;
|
|
145
|
+
/**
|
|
146
|
+
* Função auxiliar para obter recomendações
|
|
147
|
+
*/
|
|
148
|
+
export declare function getSecurityRecommendations(score: number): string[];
|
|
149
|
+
export { SecurityScoreImpl as SecurityScore };
|
|
150
|
+
//# sourceMappingURL=score.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/security/score.ts"],"names":[],"mappings":"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"}
|